您的位置:首页 > 其它

SSD:Single Shot MultiBox Detector 心得 (持续更新中。。。)

2016-07-13 11:02 537 查看
对于文章代码的一些理解, 以此来省去用A4纸记录的苦恼

SSD文章链接:http://arxiv.org/pdf/1512.02325v2.pdf

SSD代码链接:https://github.com/weiliu89/caffe/tree/ssd

一:先说说代码配置编译遇到的问题:

(1)按照代码教程编译caffe 都通过了,运行creat_lis.py通过,但是运行creat_data.py时提示  AttributeError: 'module' object has no attribute 'LabelMap'

方法:添加环境变量"export PYTHONPATH=/path/to/CaffeSSD/python:$PYTHONPATH"然后"source ~/.bashrc"

(2) 运行creat_data.py提示 undefine cudnn_v4

方法: 重新链接一下cudnn . 祥见欧新宇配置caffe教程 ”安装配置nVidia
cuDNN 加速Caffe模型运算“部份。

(3)
运行 python
某个py 文件时提示:

    Traceback (most recent call last):
     File "examples/ssd/ssd_pascal.py", line 4, in <module>
      import caffe
     ImportError: No module named caffe

方法:在那个py文件里加入import sys
sys.path.append("/home/duan/caffe-ssd/python")

二:数据集处理部分

为了能直接用别人的代码处理自己的数据,就需要知道怎样处理数据集

(1)需要生成trainval.txt等文件, 运行 "cd$CAFFE_ROOT"以及 "./data/VOC0712/create_list.sh"
文件内容格式为:[图片路径 对应的xml文件路径]

(2)生成lmdb文件, 运行"./data/VOC0712/create_data.sh"(核心代码为"/build/tools/convert_annoset"中所提到的convert_annoset部分,会在后续讲解)

三:训练模型

code中使用VOC2007和2012的train_val数据集进行训练和验证,使用VOC2012的test进行测试

训练模型的代码为 "python
examples/ssd/ssd_pascal.py"(主目录为caffe-ssd)

训练的模型保存在
"$CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/"

job file, log file, python script 保存在
"$CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/"

我60k迭代后的mAP=0.71534

四:测试模型

对整个测试集的测试:(默认使用最后存储的模型)
python examples/ssd/score_ssd_pascal.py


对单张图片测试检测效果:

作者提供两种测试文件:cpp和ipynp文件

我们使用ipynp文件, 文件路径为:examples/ssd_detect.ipynb

步骤:

启动Terminal:"ctrl+alt+t".
转到主文件目录,并取得root权限:"cd
caffe-ssd"."sudo su" 否则会出错
Permission denied: "/root/data/VOCdevkit/results/VOC2007/SSD_300x300/Main"


启动ipython/jupyter notebook: "ipython notebook",找到ipynb文件。
按照给定的代码"shift+enter"走下来即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息