目标检测:caffe-ssd编译、训练和测试全过程记录

个人微信公众号:AI研习图书馆,欢迎关注~

深度学习知识及资源分享,学习交流,共同进步~

1. 引言

SSD是一个端到端的网络,既借鉴了Faster RCNN中anchor boxes的概念、又借鉴了YOLO将检测转化为回归的思想,在它们的基础上,提出“从多层layer的feature maps上分别得到bounding box以实现多尺度检测”的思想,在速度和精度上都取得了卓越的表现。

现在,我们就在caffe框架下,来简单复现一下SSD网络。

2. 实现

2.1 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

如果没有报错,则编译成功!
如果报错,根据错误提示,参考我的其它博客,即可解决!

2.2 下载数据集

这里采用官方使用数据集进行试实验,如果需要制作自己的数据集实验,请参看我的另一篇博客,voc数据集制作教程。
链接:制作自己的VOC数据教程

  1. 预训练模型下载:
    可在caffe-ssd GitHub项目首页链接中下载,也可在以下网盘下载,更快一点。

    链接: https://pan.baidu.com/s/1nuGojSP 密码: v9bg

  2. 下载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

注: 请按照以上顺序解压

2.3 生成lmdb文件

这里,我把pycaffe的环境加入~/.bashrc文件中:

export PYTHONPATH=$PYTHONPATH:..../caffe/python
source  ~/.bashrc

进入到caffe 的根目录下:

./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh

2.4 训练过程及在线演示

1、训练数据集

打开caffe/examples/ssd/ssd_pascal.py,看到gpus=‘0,1,2,3’ 要改成gpus=‘0’

具体怎么看自己gpu id?

nvidia-smi

目标检测:caffe-ssd编译、训练和测试全过程记录_第1张图片
修改下 batch_size=1和 test_batch_size=1 (显存太小了,所以把网格设小点,根据自己显卡承受能力修改,能跑起来即可)

目标检测:caffe-ssd编译、训练和测试全过程记录_第2张图片
注意:迭代数增加,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

       *********************************************

目标检测:caffe-ssd编译、训练和测试全过程记录_第3张图片

您的支持,是我不断创作的最大动力~

欢迎点赞关注留言交流~

深度学习,乐此不疲~

个人微信公众号,精彩不断,欢迎关注~

目标检测:caffe-ssd编译、训练和测试全过程记录_第4张图片

你可能感兴趣的:(目标检测,算法实验,计算机视觉)