darknet(yolov2)移植到caffe框架

yolov2到caffe的移植主要分两个步骤:
一、cfg,weights转换为prototxt,caffemodel
1.下载源码:
git clone https://github.com/marvis/pytorch-caffe-darknet-convert.git

2.安装pytorch,使用conda指令:(需要有torch模块)
conda install pytorch torchvision cuda80 -c soumith [这里cuda换成自己对应的版本]

3.cd pytorch-caffe-darknet-conver目录
输入命令:python darknet2caffe cfg/*.cfg cfg/*.weights cfg/*.prototxt cfg/*.caffemodel
注意:这里如果cfg文件中存在route层,则需要修改其对应部分。(这里只针对route层存在2个参数的情况)
[
        elif block['type'] == 'route':
            #pdb.set_trace()
            prev_layer_id1 = layer_id + int(block['layers'][:2])
            prev_layer_id2 = layer_id + int(block['layers'][-2:])
            bottom1 = topnames[prev_layer_id1]
            bottom2 = topnames[prev_layer_id2]
            route_layer = OrderedDict()
            route_layer['bottom'] = [bottom1, bottom2]
            if block.has_key('name'):
                route_layer['top'] = block['name']
                route_layer['name'] = block['name']
            else:
                route_layer['top'] = 'layer%d-route' % layer_id
                route_layer['name'] = 'layer%d-route' % layer_id
            route_layer['type'] = 'Concat'
            layers.append(route_layer)
            bottom = route_layer['top']
            topnames[layer_id] = bottom
            layer_id = layer_id + 1
]

如此便得到相应的prototxt文件和caffemodel文件

二、caffe实现darknet的训练
1.下载caffe-yolov2源码:
git clone https://github.com/gklz1982/caffe-yolov2.git

2.对caffe-yolov2进行编译,编译方式同编译caffe一致

3.将自己的VOC格式数据拷贝至./data/yolo/VOCdevkit下
(1) python get_list.py -- 获得相应的trainval.txt和test_2007.txt
(2) sh convert.sh -- 生成需要训练的lmdb格式数据(需要修改convert.sh的内部参数)
(3) 修改label_map.txt文件

4.修改prototxt等相关文件,开始训练
(1) cd ./examples/yolo
(2) mkdir dense-yolo_v1
(3) 将根据cfg和weights生成的prototxt以及caffemodel文件拷贝至dense-yolo_v1文件夹下
(4) 对照../darknet_v3/gnet_region_train_darknet_v3.prototxt修改自己的prototxt,一个是修改data层,另外一个是region层。
(5) 同理对solver文件等。
(6) 将../darknet_v3/train_darknet_v3.sh拷贝至dense-yolo_v1文件夹下,修改相关参数
(7) sh train_darknet.sh
(8) 开始训练

具体结果还在等待。。。

原文地址:https://www.cnblogs.com/yyxf1413/p/9469111.html