一。修改caffe源码
1.shuffle_channel_layer.cpp
2.shuffle_channel_layer.cu
3.shuffle_channel_layer.hpp
4.conv_dw_layer.cpp
5.conv_dw_layer.cu
6.conv_dw_layer.hpp
文件下载:百度网盘
将cpp和cu文件放在caffe-path/src/caffe/layers中
将hpp头文件放在caffe-path/include/caffe/layers中
修改caffe-path/src/caffe/proto/caffe.proto
添加
optional ShuffleChannelParameter shuffle_channel_param = 164;
message ShuffleChannelParameter {
optional uint32 group = 1[default = 1]; // The number of group
}
重新编译caffe
mkdir build
cd build
cmake ..
make -j8
make pycaffe
二。修改RON网络,用shufflenet前16层替换VGG16,具体网络见:
百度网盘
train_shufflenet_1x_g3_ron_cudnn320.prototxt
三。截取shufflenet前16层网络作为预训练网络模型
python cutNetwork.py
四。training
#!/usr/bin/env bash
python tools/train_net.py --gpu 0 \
--solver ./ShuffleNet/solver.prototxt \
--imdb voc_2007_trainval+voc_2012_trainval \
--weights ./yesmodel_shufflenet/shufflenet_1x_g3_16layer.caffemodel --batchsize 16 \
--iters 200000