YOLOv3 || 1. 使用自己的数据集训练yolov3

前言:

yolo系列的论文阅读
论文阅读 || 深度学习之目标检测 重磅出击YOLOv3
论文阅读 || 深度学习之目标检测yolov2
论文阅读 || 深度学习之目标检测yolov1

该篇讲解的工程连接是:
tensorflow的yolov3:https://github.com/YunYang1994/tensorflow-yolov3

自己对该工程的解析博客:
YOLOv3 || 1. 使用自己的数据集训练yolov3
YOLOv3 || 2. dataset.py解析
YOLOv3 || 3. dataset.py的多进程改造
YOLOv3 || 4. yolov3.py 网络结构的搭建和loss的定义
YOLOv3 || 5. train.py
YOLOv3 || 6. anchorboxes的获取 kmeans.py
YOLOv3 || 7. yolov3的pb文件的测试

该篇博客介绍了tensorflow实现yolov3工程的如何训练自己的数据。
链接中的Quick start,只需要照其操作,即可正确的运行demo。

原工程使用的是COCO数据集训练的神经网络。这里主要记录说明的是如何训练自己的数据集。

1 训练VOC训练集

1.1 下载数据集并解压

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
.
将3个压缩文件下载,并按照一定的文件顺序放置:


VOC          # path: /home/gg/Mount/2020/DL/VOC(自己电脑上设置的路径)
── test
  └──VOCdevkit
  └──VOC2007 (from VOCtest_06-Nov-2007.tar)
── train
   └──VOCdevkit
    └──VOC2007 (from VOCtrainval_06-Nov-2007.tar)
    └──VOC2012 (from VOCtrainval_11-May-2012.tar)


在这里插入图片描述

1.2 生成训练所需文件

打开终端运行:python scripts/voc_annotation.py --data_path /home/gg/Mount/2020/DL/VOC

会生成3个文件:voc.names、voc_train.txt、voc_test.txt


tensorflow-yolov3-master          
── data
  └──classes
     └──voc.names
  └──dataset
     └──voc_train.txt
     └──voc_test.txt


在这里插入图片描述
.

  • voc.name文件保存的内容是类别:
      aeroplane
      bicycle
      boat
      … …
      tvmonitor
  • voc_train.txt:
      image_path x_min, y_min, x_max, y_max, class_id x_min, y_min ,…, class_id
      例:
      xxx/xxx.jpg 18.19,6.32,424.13,421.83,20 323.86,2.65,640.0,421.94,20
      xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14
  • voc_test.txt: 与voc_train.txt格式一样

1.3 进行训练

  • 修改config.py的配置
      __C.YOLO.CLASSES = “./data/classes/voc.names”
      __C.TRAIN.ANNOT_PATH = “./data/dataset/voc_train.txt”
      __C.TEST.ANNOT_PATH = “./data/dataset/voc_test.txt”

  • 开始训练

    • 方式1:直接训练。打开终端并运行
        python train.py
        tensorboard --logdir ./data
    • 方式2:在工程提供的预训练模型上微调
        cd checkpoint
        wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
        tar -xvf yolov3_coco.tar.gz
        cd …
        python convert_weight.py --train_from_coco
        python train.py

注意

脚本convert_weight.py,当终端命令为

  • python convert_weight.py:将训练好的神经网络(使用coco数据集训练的模型)的全部结构,进行convert。可以进行图片的目标检测的测试
  • python conver_weight.py --train_from_coco:将训练好的神经网络,除去每个输出模块的最后一层的结构和参数,进行convert。用于自己数据集的训练
    COCO数据集有80类;自己数据集的分类,有自己的类别数量。两种不同的数据集,搭建的网络结构的最后一层不同。所以,无法将COCO数据集训练的神经网络模型,直接加载到自己数据集训练的神经网络。"–train_from_coco"参数,就是去除输出模块的最后一层结构,这样转化的模型,就不会受到最后一层网络的参数的影响。

1.4 测试

  • 修改config.py的配置
    __C.TEST.WEIGHT_FILE = "./checkpoint/*** "
  • 打开终端,运行测试代码
       python evaluate.py
       cd mAP
       python main.py -na

    在路径【./data/detaction/】下保存这测试图的预测结果。
    VOC数据集的mAP展示效果为:

    在这里插入图片描述

2 训练自己的数据集

训练自己的数据集,与上述训练VOC数据集的区别之处在于:数据集的准备,voc.names、voc_train.txt、voc_test.txt的生成

2.1 对图片进行数据标注

标注软件推荐【精灵标注助手】http://www.jinglingbiaozhu.com/,下载并安装。该软件简单易使用。
避免数据存放路径中存在中文,否则python中导入会报错:‘gbk’ codec can’t decode byte 0xa2…
标注界面:
在这里插入图片描述
导出的格式支持多种选择,这里选择【pascal-voc】。文件内容为

... ...
<size>
   <width>500</width>
   <height>320</height>
   <depth>3</depth>
</size>

<segmented>0</segmented>
   <object>
   <name>二哈</name>
   <pose>Unspecified</pose>
   <truncated>0</truncated>
   <difficult>0</difficult>
   <bndbox>
       <xmin>108</xmin>
       <ymin>40</ymin>
       <xmax>294</xmax>
       <ymax>292</ymax>
   </bndbox>
</object>
   <object>
   <name>二哈</name>
   <pose>Unspecified</pose>
   <truncated>0</truncated>
   <difficult>0</difficult>
   <bndbox>
       <xmin>254</xmin>
       <ymin>32</ymin>
       <xmax>491</xmax>
       <ymax>317</ymax>
   </bndbox>
</object>
</annotation>

1.2 其余工作

  • 对脚本 voc_annotation.py 进行改造,运行生成voc.names、voc_train.txt、voc_test.txt
  • 修改config.py 内的 相关路径和文件名。
  • 训练和预测部分与【voc数据集的训练】通流程。

啊发发

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值