YOLO—V4———爬坑记

YOLO-v4爬坑总结(ubuntu)

yolo-v4的github
yolo-v4的论文
yolo-v3的github

一、安装

1.下载

  1. mkdir YOLO-V4
  2. cd YOLO-V4
  3. git clone https://mirrors.tuna.tsinghua.edu.cn/centos/7.8.2003/isos/x86_64/
  4. cd darknet

2.环境配置

环境要求

  1. CMake >= 3.12
    cmake这个版本,在Ubuntu直接用apt get install cmake 版本都不够,可以用apt search cmake看看版本有没有,没有的话就在链接里下吧,下最新的稳定版本,是个压缩包,解压,根据README指导的操作,执行脚本.bootstrap && sudo make,make install,看版本cmake --version
  2. CUDA >=10.0
  3. OpenCV >= 2.4
  4. cuDNN >= 7.0
  5. gcc

编译

  1. 在darknet文件夹中,运行./build.sh
  2. 根据自己电脑的情况编辑darknet文件夹下的Makefile文件,其中:
    GPU=1使用CUDA进行构建以通过使用GPU加速(CUDA应该在中/usr/local/cuda)
    CUDNN=1使用cuDNN v5-v7进行构建,以通过使用GPU加速培训(cuDNN应该在中/usr/local/cudnn)
    CUDNN_HALF=1 为Tensor Core构建(在Titan V / Tesla V100 / DGX-2及更高版本上)加速检测3倍,训练2倍,老黄家20系列显卡以上应该支持这个。
    OPENCV=1 使用OpenCV 4.x / 3.x / 2.4.x进行构建-允许检测来自网络摄像机或网络摄像机的视频文件和视频流
    DEBUG=1 调试Yolo版本
    OPENMP=1 使用OpenMP支持进行构建以通过使用多核CPU来加速Yolo
  3. 写好Makefile之后运行make

3.常规使用

准备

  1. 先下个预训练权重(针对MS COCO数据集)yolov4.weights
  2. 在下个权重对应的配置文件yolov4.cfg

操作命令
3. Yolo v4 COCO- 检测图片:./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25
4. 输出对象的坐标:./darknet detector test cfg/coco.data yolov4.cfg yolov4.weights -ext_output dog.jpg
5. Yolo v4 COCO- 视频:./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
6. Yolo v4 COCO-网络摄像头0:./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
7. Yolo v4-保存结果视频文件res.avi:./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights test.mp4 -out_filename res.avi

3.训练自己的数据集

  1. 下载预训练权重yolov4.conv.137

  2. 创建名为yolo-obj.cfg的文件,其中内容与yolov4-custom.cfg相同

    以下对其更改

    1. 将行批次更改为 batch=64
      将线路细分更改为 subdivisions=16
      这样每次训练的图像数量就是64/16=4
    2. max_batches改为 类别数 * 2000
      (classes * 2000)
      【最小也要有6000】
      【不能少于训练图像的数量】
    3. steps=0.8 * max_batches,0.9 * max_batches
      比如steps=4800,5400
    4. 设置网络大小width=416 height=416或任何32的值的倍数
    5. 更改 [yolo]下的classes为自己的类别数,一共有三个要改
    6. 更改每一个yolo层前,上一卷积层的filters=255,filters=(classes + 5)x3一共也有三个要改
  3. 创建obj.names文件,每行写一个类别名
    例如:

cat
dog
tiger

  1. 创建obj.data,内容为

classes= 2
train = data/train.txt
valid = data/test.txt
names = data/obj.names
backup = backup/

  1. 数据集的准备(和yolo-v3一样)
    图像数据集(.jpg)+标注的数据( )(.txt)放在同一个文件夹中,名字相同,只有后缀不同。
  2. 创建train.txt,和test.txt 着俩里面放着图片的信息,格式为

data/obj/img1.jpg
data/obj/img2.jpg
data/obj/img3.jpg

开始训练

./darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137
具体路径自己改

训练一个自己的Tiny-yolo-v4

yolov4的backbone有29层卷积(其实我觉得是30层),去官网下一个yolov4-tiny.conv.29
相应的cfg也要改,改成这里里面的各个参数咋变看上面说的。
其他步骤不变,训练命令如下
./darknet detector train OWN/obj.data OWN/yolov4-tiny.cfg OWN/yolov4-tiny.conv.29

你可能感兴趣的:(目标检测)