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) 开始训练

具体结果还在等待。。。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐