1.登录服务器,安装docker和nvidia-docker,服务器中已有mxnet镜像,直接run一个容器。
2.数据集的挂载,先将本地数据集挂载到服务器上,利用sshfs命令,见上篇文章;run容器的时候,用-v命令将服务器的挂载点挂载到容器中。
3.修改配置文件:
(1):修改ssd/tools下边的prepare_dataset.py中的命令,改为相应路径 指明
(2):修改ssd/dataset/names/pascal_voc.names文件的名称,要和标注是的label名一样。
(3):修改train.py中的 --train-path 、--train-list data_shape =300; batch_size = 32; begin_epoch =0; end_epoch=240;
(4)修改ssd/config/config_reader.py中的path,改为JPEGImages的绝对路径。
mxnet-ssd训练总流程:
1.写程序显示每张图片,并按‘y’能保存到相应的路径下,以此挑出符合条件的图片
2.将跳出的图片放到voc2007的jpegimages文件夹中
3.labelimage软件处理成.xml文件
4.编程实现train.txt test.txt trainval.txt val.txt。最重要的是训练和验证,验证集是在训练的时候验证模型。
5.将vgg16放到model下,数据集放到data下,修改names,用来检测.xml中各标签的数量。
6.生成.lst .rec
7.修改train.py的batch-size,data-shape,分类数量和名称,然后训练
8.评估,用训练数据
9.deploy,便于c++调用
10.写c++批量预测图片
出错:
(1)运行python train.py,出现mxnet.base.mxneterror: src/io/local_filesys.cc:86 localfilesystem /data error:no such file or directory
solve:进入train.py中,删除/data中的‘/’。
(2)python train.py 出错:error:no image in imdb
solve: 修改ssd/dataset/names/pascal_voc.names文件的名称,要和标注是的label名一样。
(3):python train.py 出错:index3 is out of bounds for axis 1 with size 3
数据集的错误,.xml文件数量和JPEGImages文件夹中数量不一样。
solve:找到JPEGImages文件夹中有而Annotation文件夹中没有的图片,删除!
(4)cudaMalloc failed: out of memory
solve:退出容器,停止容器,重新进入容器,在训练就可以了。