在服务器上利用nvidia-docker进行mxnet-ssd训练

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:退出容器,停止容器,重新进入容器,在训练就可以了。

猜你喜欢

转载自blog.csdn.net/weixin_39608351/article/details/82182383