Caffe-SSD MobileNetan配置及训练自己的数据集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lukaslong/article/details/84552130

1. Caffe-SSD

Mobilenet是替换了SSD中的VGG网络层,因此要首先安装caffe-ssd,参考之前的博客进行配置

https://blog.csdn.net/lukaslong/article/details/81390276

此处建议先不急着编译,转到第3节,添加DepthwiseConvolution后再进行编译。

2. MobileNet

首先把chuanqi大神的项目克隆到本地:

git clone https://github.com/chuanqi305/MobileNet-SSD.git

得到MobileNet-SSD文件夹(本人是clone到$HOME/Documents/下),其中重要文件简介如下:

    template 存放4个网络定义的公用模板,可以由gen.py脚本修改并生成
    MobileNetSSD_deploy.prototxt 运行网络定义文件
    solver_train.prototxt 网络训练超参数定义文件
    solver_test.prototxt 网络测试超参数定义文件
    train.sh 网络训练脚本
    test.sh 网络测试脚本
    gen_model.sh 生成自定义网络脚本(调用template文件夹内容)
    gen.py 生成公用模板脚本(暂不用)
    demo.py 实际检测脚本(图片存于images文件夹)
    merge_bn.py 合并bn层脚本,用于生成最终的caffemodel

另外项目已经包含了已经训练好的模型,mobilenet_iter_73000.caffemodel可以直接通过demo.py使用

打开demo.py,修改caffe_root为自己的caffe根目录,我的是$HOME/Documents/caffe/,然后运行:

python demo.py

会报错:CUDNN_STATUS_NOT_INITIALIZED,原因是计算力不够。

理论上Mobilenet的运行速度应该是VGGNet的数倍,但实际运行下来并非如此,前一章中,即使是合并bn层后的MobileNet-SSD也只比VGG-SSD快那么一点点,主要的原因是Caffe中暂时没有实现depthwise convolution,目前都是用的group。这里group相当于一个for循环,需要依次计算,如果能使用深度卷积,那就可以一次性计算完,节省不少时间。

3. DepthwiseConvolution

上一节提到,本应更快的Mobilenet却在普通电脑上跑步起来,因此有了DepthwiseConvolution

首先克隆项目到本地:(同样是在$HOME/Documents/下)

git clone https://github.com/yonghenglh6/DepthwiseConvolution.git

将项目中的depthwise_conv_layer.hpp,depthwise_conv_layer.cpp和depthwise_conv_layer.cu这三个文件放到SSD(即caffe)的相应位置中,这里的操作是从基础卷积类中派生了深度卷积这个类,此处并不需要对caffe.proto文件进行修改。稍后,需要重新编译Caffe,这样才能识别新增的depthwise convolution layer。

接下来需要修改MobileNetSSD_deploy.prototxt,将其中所有名为convXX/dw(XX代指数字)的type从”Convolution”替换成”DepthwiseConvolution”,总共需要替换13处,从conv1/dw到conv13/dw,然后把“engine: CAFFE”都注释掉,这个新的网络文件可以另存为MobileNetSSD_deploy_depth.prototxt。在运行网络的时候,caffemodel模型不用动,只需要指定新的prototxt文件和含有depthwise convolution layer的Caffe即可。

此时再运行第2节中的demo.py方可正常运行。

4. 训练

参考我之前的博客https://blog.csdn.net/lukaslong/article/details/81509855

将数据集分成训练集和测试集的Python脚本:

或参考https://blog.csdn.net/Chris_zhangrx/article/details/80458515

另外本文参考了https://blog.csdn.net/Jesse_Mx/article/details/78680055

猜你喜欢

转载自blog.csdn.net/lukaslong/article/details/84552130