深度学习知识及资源分享,学习交流,共同进步~
SSD是一个端到端的网络,既借鉴了Faster RCNN中anchor boxes的概念、又借鉴了YOLO将检测转化为回归的思想,在它们的基础上,提出“从多层layer的feature maps上分别得到bounding box以实现多尺度检测”的思想,在速度和精度上都取得了卓越的表现。
现在,我们就在caffe框架下,来简单复现一下SSD网络。
首先,下载caffe-ssd,安装并编译。
https://github.com/weiliu89/caffe.git
git checkout ssd
跟编译caffe-master 是一样的,进入到caffe的根目录里:
cp Makefile.config.example Makefile.config
进入Makefile.config,设置如下,我们需要使用USE_CUDNN(前提你安装了CUDNN)
配置文件中其他地方的修改和caffe-master相同,相同机器可以直接拷贝使用,这里提供修改文件的教程,我的另一篇博客,和caffe一样修改,链接:修改配置文件教程
修改完成后,在caffe-ssd根目录,进行编译:
cd caffe-ssd
suso make all -j16
sudo make test -j16
sudo make runtest -j16
sudo make pycaffe
如果没有报错,则编译成功!
如果报错,根据错误提示,参考我的其它博客,即可解决!
这里采用官方使用数据集进行试实验,如果需要制作自己的数据集实验,请参看我的另一篇博客,voc数据集制作教程。
链接:制作自己的VOC数据教程
预训练模型下载:
可在caffe-ssd GitHub项目首页链接中下载,也可在以下网盘下载,更快一点。
链接: https://pan.baidu.com/s/1nuGojSP 密码: v9bg
下载VOC2007、VOC2012数据集
官网下载比较慢了,已经上传到了百度云。
下载链接: https://pan.baidu.com/s/1mhVjuSo 密码: 8nm7
在home主目录下:
mkdir data
cd data
把刚才下载的数据解压到data目录下
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
注: 请按照以上顺序解压
这里,我把pycaffe的环境加入~/.bashrc文件中:
export PYTHONPATH=$PYTHONPATH:..../caffe/python
source ~/.bashrc
进入到caffe 的根目录下:
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
1、训练数据集
打开caffe/examples/ssd/ssd_pascal.py,看到gpus=‘0,1,2,3’ 要改成gpus=‘0’
具体怎么看自己gpu id?
nvidia-smi
修改下 batch_size=1和 test_batch_size=1 (显存太小了,所以把网格设小点,根据自己显卡承受能力修改,能跑起来即可)
注意:迭代数增加,loss应该是逐渐减小,不然就容易发散了。
大概迭代到10000次,会test下,把test_batch_size设置为1,不然会出现显存溢出的情况。
2、测试模型
把训练好的模型进行测试,这里总共迭代了240000次。
修改里面相应路径,即可运行。如果和作者一样路径,则无需修改。
python examples/ssd/score_ssd_pascal.py
一般的情况下,训练完成,map在0.7左右。
可以根据SSD文件下,相应测试代码,进行在线实时检测,视频检测,以及一般的图片检测。
1.测试单张图片
测试程序为/examples/ssd/ssd_detect.py,运行之前,我们需要修改相关路径代码,ssd_detect.py作如下修改(#部分为修改内容):
parser.add_argument('--labelmap_file',
default='data/VOC0712/labelmap_voc.prototxt')#**修改为你的路径**
parser.add_argument('--model_def',
default='models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt')#**修改为你的路径**
parser.add_argument('--image_resize', default=300, type=int)
parser.add_argument('--model_weights',
default='models/VGGNet/VOC0712/SSD_300x300/'#**修改为你的路径**
'VGG_VOC0712_SSD_300x300_iter_120000.caffemodel')
parser.add_argument('--image_file', default='examples/images/fish-bike.jpg')#**修改为你的路径**
上述修改完成后,在caffe(ssd)根目录下运行:
Python ./example/ssd/ssd_detect.py
在caffe根目录下会生成检测结果图像。
2.批量检测多张图片
修改ssd_detect.py的代码,加个for循环即可。
代码链接:https://download.csdn.net/download/yu734390853/10275197
*********************************************
您的支持,是我不断创作的最大动力~
欢迎点赞,关注,留言交流~
深度学习,乐此不疲~
个人微信公众号,精彩不断,欢迎关注~