ubuntu下配置SSD网络全过程

       The Single Shot Detector(SSD)是 UNC Chapel Hill(北卡罗来纳大学教堂山分校) 的 Wei Liu 大神在2016的ECCV上面提出的,论文题目《SSD:Single Shot MultiBox Detector》,项目代码地址:https://github.com/weiliu89/caffe/tree/ssd

        网址里面有详细的配置运行步骤,这里简单的做下整理,本人环境ubuntu 16.04 LTS,显卡GTX 760,中间出现过一些问题,但是通过百度基本都解决了,后面会给出可能出现问题以及解决方案:

      (1)安装

         假设你下载了源代码并解压到文件夹$caffe-ssd注意$caffe-ssd是你的caffe-ssd绝对路径,因人而异,依次执行以下命令:

         #进入到你源码的文件夹下,因人而异

          cd  $caffe-ssd

          #Modify Makefile.config according  to  your Caffe installation.

          cp Makefile.config.example Makefile.config

          make -j8

          #这里非常重要,就是將$caffe-ssd/python路径添加到PYTHONPATH

          #注意这里需要永久添加,不然下次你重启后,这个设置就失效了,参考方法如下:

          #在ubuntu终端下输入下列命令

          gedit /etc/profile

          #在打开的文件后面添加下面一行代码,特别注意$caffe-ssd是你的caffe-ssd绝对路径,因人而异:

          export PYTHONPATH=$caffe-ssd/python:$PYTHONPATH

          #然后在ubuntu终端输入以下命令,目的是使刚才的修改立即生效,而不用重启电脑

          source /etc/profile

          #然后在ubuntu终端下回到$caffe-ssd目录,执行以下命令:

          make py

          make test -j8

          #下面这一条命令可选

          make runtest -j8

       (2)准备

        1、下载VGGNet,地址:fully convolutional reduced (atrous) VGGNet,如果下载地址进不去,就去最上面的源码网站下载,比较容易找到的,假设你存放在目录$caffe-ssd/models/VGGNet下。

         2、下载VOC2007和VOC2012数据集,默认情况下存放在$HOME/data/这里是特别重要的,本人没有存放在这里,所以下面的步骤(3)操作就不是很方便,需要自己在相应的脚本文件中修改路径,所以建议存在默认的$HOME/data/下,这个也比较容易找到。

         # 下载压缩包数据

        cd $HOME/data

        wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

        wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar

        wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

        # 解压数据

        tar -xvf VOCtrainval_11-May-2012.tar

        tar -xvf VOCtrainval_06-Nov-2007.tar

        tar -xvf VOCtest_06-Nov-2007.tar

     (3)创建LMDB文件

       cd $caffe-ssd

       #在data/VOC0712下创建trainval.txt,test.txt与test_name_size.txt

       ./data/VOC0712/create_list.sh

      ./data/VOC0712/create_data.sh

     (4)训练和验证

       # It will create model definition files and save snapshot models in:

       #   - $CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/

       # and job file, log file, and the python script in:

       #   - $CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/

       # and save temporary evaluation results in:

       #   - $HOME/data/VOCdevkit/results/VOC2007/SSD_300x300/

       # It should reach 77.* mAP at 120k iterations.  

       #如果你只是想看看SSD的效果,下面这条命令可以先不执行

       python examples/ssd/ssd_pascal.py

       # 当然上述这条命令可能出现一些问题,要学会看错误,找到最早报错的地方,然后一个一个的解决,一般来说,你遇到的问题大多网上都能查得到,你需要的是组织好的你语言,然后百度搜索,比如:

       1.找不到“VGG_ILSVRC_16_layers_fc_reduced.caffemodel”,下载地址VGG_ILSVRC_16_layers_fc_reduced.caffemodel 然后将其放到你的$caffe-ssd/models/VGGNet目录下。

       2.报类似“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”的错误

        解决方法:将ssd_pascal.py文件中第332行gpus = "0,1,2,3"的GPU选择改为gpus = "0",后面的1,2,3都删掉即可。再次训练即可。

       3.报类似“Check failed: error == cudaSuccess (2 vs. 0)  invalid ...”的错误

          解决方法:将ssd_pascal.py文件中第338行batch_size=32和accum_batch_size=32改小一倍或两倍,本人改成了batch_size=8和accum_batch_size=8好像才可以运行,不然会报错。

        如果你没有时间训练,你可以在源代码那个网页下载预训练模型,地址:

        如果你想测试你训练的模型

        python example/ssd/score_ssd_pascal.py

        如果上面都没有问题的话,可以通过网络摄像头或者已有的视频进行测试了。

        # webcam

        python examples/ssd/ssd_pascal_webcam.py

       效果如下(实验室自己的摄像头随便拍的):

       

       # 已有视频

       python examples/ssd/ssd_pascal_video.py

       效果如下:

       


      当然这里只是大概介绍了下,具体细节可以参考源代码给出的网站。本人只是个菜鸟,自己动手尝试配置了下玩一玩,在这之后也把yolo3配置了下,也比较容易配置,感兴趣的可以试试。地址:https://github.com/pjreddie/darknet

       安装步骤可以参考上述网址最下面的第二行,里面有详细的操作步骤。



猜你喜欢

转载自blog.csdn.net/sinat_33718563/article/details/79727439