美文网首页
用原生版的darknet训练自己的yolov3模型

用原生版的darknet训练自己的yolov3模型

作者: 未来真好 | 来源:发表于2019-08-13 11:43 被阅读0次

    一、采集数据。

    采集好的数据如下图所示:

    由于训练模型需要至少50张以上,所以需要对以上数据做数据增强(PS:建议从颜色、饱和度、亮度等方面进行)。

    二、制作sku清单。

    根据系统上的sku信息对上面的图制作清单xls,如下图所示。

    三、下载精灵标注工具进行图片标注。

    请查看图片标注流程。(PS:标注完后,记得导出pascal-voc数据哦。)

    四、利用darknet版的yolov3来训练自己的数据模型。

    (1)进入darknet源码路径VOC下,cp一份以VOCdevkit_自定义后缀名。如下图所示:

    (ps:注意观察文件命名格式,有木有发现啥哈)

    (2)首先看到的是下图所示:

    voc_label.py:处理voc图片文件与xml的,同时会生成下边的train.txt文件。

    train.txt:要训练的图片路径。

    sku_chongqing_qiaokeli_dic.txt:sku标注的字典文件。

    VOC2007:所有的图片、xml都是放在这个文件夹下。

    3)接着打开VOC2007,你会看到如下图:

    其中SegmentationObject和SegmentationClass这两个文件,我们不用管。

    labels:图片标注文件都是在这个下边。最开始是空的,执行完上层的voc_label.py后,才会生成相应标注文件。

    JPEGImages:训练的图片都是在这下边,通过Xftp将要训练的图片拉进来。

    Annotations:训练的xml都是在这下边,通过Xftp将要参与训练的xml拉进来。

    在/ImageSets/Main路径下,有个test.txt,这个是存了xml的文件名,也是imageid,这个文件在voc_label.py中有用到。

    等JPEGImages和Annotations的文件都拉进来后,根据自己的实际路径修改voc_label.py,修改完后执行python voc_label.py,接着就会生成train.txt和labels下边的一些数据文件。

    4)接着修改darknet下cfg和data文件下的信息。

    首先cfg文件夹下:

    voc.data :cp一份并自定义命名,接着修改该文件内容:

    classes是要训练的图片有多少种sku品类。train是要训练的数据路径,一般是由voc_label.py生成的。names是要训练的图片标签路径,将自己要训练的图片标签文件放至data目录下。backup是模型训练后存放模型的路径。如图所示:

    yolov3-wumei.cfg:cp 一份并自定义命名,接着修改其内容。打开cfg文件后,搜索下yolo,调至yolo附近,如下

    yolo附近有两个字段需要修改,filters=(classes+5)*3,classes就是sku种类数。

    voc_wumei.names:cp一份并自定义命名,修改其中的内容为自己的数据标签。

    另外根据硬件配置和自己数据的实际情况来修改steps。如下所示:

    一般一个货架标注26张图片,通过数据增强2倍,最终共78张,训练10000steps大概7-8小时后即可收敛。当然可以试试训练5000steps看看模型效果。

    5)接着就可以训练模型了,命令如下:

    前台执行:

    ./darknet detector train cfg/voc_wumei.data cfg/yolov3-wumei.cfg darknet53.conv.74

    后台执行:

    nohup ./darknet detector train cfg/voc_wumei.data cfg/yolov3-wumei.cfg darknet53.conv.74 params1 > /dev/null 2>&1 &

    (后台执行:记得记录程序的pid,可以终端输入nvidia-smi查看)

    相关文章

      网友评论

          本文标题:用原生版的darknet训练自己的yolov3模型

          本文链接:https://www.haomeiwen.com/subject/ycevjctx.html