yolov2到caffe的移植主要分兩個步驟:
1、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文件
2、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) 開始訓練python
具體結果還在等待。。。git