1、caffe下yolo系列的实现
1.1 caffe-yolo-v1
我的github代码 点击打开链接
参考代码 点击打开链接
yolo-v1 darknet主页 点击打开链接
上面的caffe版本较老。对新版的cudnn支持不好,可能编译出错,需要修改 cudnn.hpp头文件在次进行编译,
修改后的cudnn.hpp文件,可在我的github主页找到。
步骤:
0、voc数据集转换成 caffe下数据库格式文件,上述github也有记录;
1、可以根据yolov1-cfg网络配置文件写出caffe的网络配置文件prototex格式 ;
2、使用模型参数转换工具,将yolov1.weights 转换成 caffemodel格式 ;
3、可以使用 测试网络gnet_test.prototxt 训练配置成参数gnet_solver.prototxt 训练网络gnet_train.prototxt
基于上述换成的模型参数的基础上进行训练;
4、注意原作者给出的 yolov1.weights yolov1-cfg是 在voc数据集上训练的,目标种类20;
1.2 caffe-yolo-v2
我的github代码 点击打开链接
参考代码 点击打开链接
yolo-v2 darknet主页 点击打开链接
步骤上述 yolo-v1-caffe的步骤类似。
需要注意的是,原作者给出的有好多种网络框架以及对应的网络参数权重文件
常用的是 基于voc数据集(20类) 和 coco数据集(80类)不过这些的网络主题没什么区别,主要是最后几层网络分类输出是类别数量不同,卷积核数量有所不同。
1.3 caffe-yolo-v3 后面补上
2、SSD目标检测框架
2.1、原作者VGG16-SSD
我的github代码 点击打开链接
原作caffe代码 点击打开链接
VGG16框架 以及SSD结构请参考上述github以及网络资源和论文等资料
步骤:
0、创建符合ssd的训练图片数据库文件
参考原作caffe代码
./data/VOC0712/create_list.sh
1、使用作者提供的 ssd_pascal.py 文件生成基于pascal VOC数据集的 VGG16-SSD目标检测的
一系列配置文件,包括训练、测试、检测网络框架prototex文件
以及训练参数文件 ssd_33_solver.prototxt
还有 目标检测脚本 ssd_detect.py
2、预训练模型权重文件可下载VGG_ILSVRC_16_layers_fc_reduced.caffemodel 点击打开链接 casdn上也有
3、使用 VGG_VOC0712_SSD_300x300.sh 脚本进行训练
2.2、squeezeNet-SSD
我的 github参考 点击打开链接
SqueezeNet-V1 V2 原作者caffe参考 点击打开链接
参考原作者 VGG16-SSD 的网络配置文件以及 squeezeNet的网路配置文件
写出自己的 squeezeNet-SSD配置文件。
注意 网络的前部分 squeezeNet的各层名字应该与 squeezeNet的网路配置文件相同,
这样可以基于 squeezeNet的权重文件进行训练。
2.3、MobileNet-SSD
我的 github参考 点击打开链接
MobileNet
步骤:
参考原作者 VGG16-SSD 的网络配置文件以及 MobileNet 的网路配置文件
写出自己的 MobileNet-SSD配置文件。这也有V1和V2版本
注意点与上面的一样。
2、4 shuffleNet-ssd
参考:
shuffleNet caffe代码 点击打开链接
通道重排层的 三个文件 :
shuffle_channel_layer.cpp
shuffle_channel_layer.cu
shuffle_channel_layer.hpp
修改 caffe.proto文件
message LayerParameter {
...
optional ShuffleChannelParameter shuffle_channel_param = 164;
...
}
...
message ShuffleChannelParameter {
optional uint32 group = 1[default = 1]; // The number of group
}
重新编译
make clean
make all -j
make pycaffe
这里需要注意的是:
组通道卷积DW卷积起始就是分组卷积的特殊情况,当分组数量等于 输入数据的通道数量时。
有的 shufflenet 除了添加了
shuffle_channel层 ,还添加了
DW卷积层 其实这里可以不用,
就用普通的卷积层代替,添加一个group参数,且数值为 上一层的输出通道数量