YOLO_v3训练与编译环境搭建

Posted by Jinming Qiao on April 1, 2021
YOLO_v3训练与编译环境搭建

时间:2021-03-14 13:00:00

实现:YOLO_v3训练与编译环境搭建—重点部分

姓名:乔金明


下载代码

  • 下载的是darknet而非YOLOv3本,因为YOLOv3只是基于darknet这个backbone而构建的应用于目标检测的专用网络,而基于darknet构建的网络很多,YOLOv3只是其中之一。

  • $ git clone https://github.com/pjreddie/darknet
    

代码编译

  • 默认编译出来的binary是跑在CPU上的(也就是说不能通过GPU和CUDA来并行计算),且不支持OpenCV(也就是说不具备摄像头读图等功能)

  • $ cd darknet
    $ make
    
  • 改动Makefile再进行make,获取以上两种功能

  • # 改动内容为:
        GPU=1
        ...
        OPENCV=1
        ...
    
  • GPU=1意味着使用Nvidia的卡及其CUDA,所以必须保证系统有卡,且安装了CUDA

  • OPENCV=1也需要你的系统安装了OpenCV库,,它不需要额外的硬件支持

验证模型

  • 验证编译好的binary可用,先拿YOLOv3提供方训练好的权重进行预测

  • wget https://pjreddie.com/media/files/yolov3.weights
    
  • 对自带的图片dog.jpg进行目标检测

  • $ ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
    或者
    $ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
    

训练测试文件

  • cfg/coco.data代表的是coco数据集的信息,我们在训练的时候需要它提供的提供“图片们存放的位置”,“类别名字有哪些”等信息,在测试的时候虽然不需要图片存放信息但是需要它给出的“类别名字有哪些”的信息,即data/names.list
  • cfg/yolov3.cfg给出的是网络的结构,训练的超参数等信息。当然训练和测试都需要。

数据集准备

  • 首先下载VOC2007和VOC2012数据集。实际上VOC2012包含的是从2008年到2012年的数据

  • wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
    wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
    wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
    tar xf VOCtrainval_11-May-2012.tar
    tar xf VOCtrainval_06-Nov-2007.tar
    tar xf VOCtest_06-Nov-2007.tar
    

训练数据

  • 修改cfg/voc.data文件,这样训练的时候才能知道你的要训练多少类别(classes),训练集存放在哪(train),验证集存放在哪(valid),类别名类别文件用哪一个(names),训练出来的中间文件和输出的权重文件存放在哪个目录(backup)

  • classes= 20
    train  = /home/dzi/YOLOv3/darknet/train.txt
    valid  = /home/dzi/YOLOv3/darknet/2007_test.txt
    names = data/voc.names
    backup = backup
    
  • batch=64和subdivisions=16,分别表示每次迭代用64张图片,在计算机处理的时候,每次输送16张进去。这两个参数能大则大,跟内存和显存有关。

  • max_batches = 30000,learning_rate=0.001, steps=10000,20000, scales=.1,.1 初始学习率为0.001,在迭代到10000次时,学习率衰减为0.0010.1,在迭代到20000次时,学习率继续衰减为0.0010.1*0.2, 迭代到30000次停止训练。

  • $ ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74