zoukankan      html  css  js  c++  java
  • 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) 开始训练

    具体结果还在等待。。。

  • 相关阅读:
    Java学习第六篇:集合类
    Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
    Java学习第四篇:数组,排序,查找
    Java学习第三篇:类的三大特征,抽象类,接口,final关键字
    Java学习第二篇:类,对象,成员属性,成员方法,构造方法,类变量,类方法
    Java学习第一篇:变量,数据类型,运算符,流程控制(简介)
    (转)学习使用Jmeter做压力测试(三)--数据库测试
    (转)学习使用Jmeter做压力测试(一)--压力测试基本概念
    Xcode-项目模板修改
    过程式编程 drawShapes
  • 原文地址:https://www.cnblogs.com/yyxf1413/p/9469111.html
Copyright © 2011-2022 走看看