[关闭]
@wanghuijiao 2020-09-15T18:10:50.000000Z 字数 6567 阅读 5284

基于 Yolov4 和 Yolov4-tiny 的 Human Detector 训练记录

网络训练


序言

基本信息

1、Human Detector 使用步骤

  1. 拉取 Human Detector 代码 HD03分支

    git clone https://git.d.com/wanghuijiao/darknet.git

  2. 下载 pretrained model:

    • 新建 backup 文件夹,并将以下 pretrained model 权重文件放入。
  3. 编译:

  4. 视频 demo 测试:

    • 以 HD_yolov4_tiny 为例,通过以下命令对测试视频 tslist.mp4(提取码:h21b) 进行检测,并输出保存为 tiny_yolov4_demo.mp4。

      ./darknet detector demo data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg backup/human_detector_yolov4-tiny-custom_best.weights -ext_output tslist.mp4 -i 0 -thresh 0.30 -out_filename tiny_yolov4_demo.mp4

      • data/obj.data 中可进行测试集配置
      • cfg/human_detector_yolov4-tiny-custom.cfg 是模型的配置文件
      • ./backup/human_detector_yolov4-tiny-custom_best.weights 是上述下载的 pretrained model
      • -ext_output 是在画面中显示检测 bbox
      • -i 输入视频,默认为 0
      • -thresh 检测出的 bbox 阈值,低于该阈值的 bbox 框将不被显示在画面中
      • -out_filename 是输出视频的命名
    • 假如视频帧率太大不方便查看,可用以下命令将其转换为帧率为 10 的视频片段。

      ffmpeg -y -r 30 -i tiny_yolov4_demo.mp4 -r 10 tiny_yolov4_demo_fps10.mp4

    • 可以直接运行 video_tiny.sh & video_yolov4.sh 脚本分别对 HD_yolov4_tiny 和 HD_yolov4 进行测试。

  5. 测试模型性能:

    • 以 HD_yolov4_tiny 为例,测试模型精度 mAP (mean average precisions):

      ./darknet detector map data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg ./backup/human_detector_yolov4-tiny-custom_best.weights

      • 可直接运行 map_yolov4.sh & map_tiny.sh 进行测试
    • 以 HD_yolov4_tiny 为例,测试模型速度FPS:

      ./darknet detector demo data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg backup/human_detector_yolov4-tiny-custom_best.weights tslist.mp4 -benchmark

      • 运行 fps_yolov4.sh & fps_tiny.sh 进行测试

2、自定义数据集训练 Yolov4 & Yolov4-tiny

2.1 准备文件

  1. 修改 cfg/coco.data 为 cfg/obj.data

    classes = 1
    train = /hdd01/wanghuijiao/darknet/data/train2017_human.txt
    valid = /hdd01/wanghuijiao/darknet/data/val2017_human.txt
    names = ./data/obj.names
    backup = ./backup
    eval=coco

  2. 修改 data/coco.name,新文件命名为 data/obj.names,删除除person之外的其他 79 类标签,最终 obj.name 文件内容为:

    person

  3. (HD_yolov4)修改 yolov4.cfg,新文件命名为 whj_yolov4.cfg,修改以下行:

    width=512 (需被32整除)
    height=512(需被32整除)
    subdivisions=8 (若 run time error,则改成16)
    max_batches=6000(=2000*检测类别数,注意:该数需不少于6000,且不少于训练图像数量)
    steps=4800,5400 (max_batches的80%,90%)

    • 修改 3 个 [yolo] 层的 classes=1
    • 修改 3 个 [yolo] 层前 3 个 [convolutional] 层的 filters=255 为 filters=(classes+5)*3=18

    3`.(HD_yolov4_tiny)修改 cfg/yolov4-tiny-custom.cfg, 新文件命名为 human_detector_yolov4-tiny-custom.cfg,修改以下行:

    width=512 (需被32整除)
    height=512(需被32整除)
    subdivisions=8 (若 run time error,则改成16)
    max_batches=6000(=2000*检测类别数,注意:该数需不少于6000,且不少于训练图像数量)
    steps=4800,5400 (max_batches的80%,90%)

  4. (HD_yolov4)csdarnet53-omega.conv.105 -这是在ImageNet上预训练过的 darknet53 网络前105层:

    • 下载 csdarknet53-omega_final.weights
    • 取前105层

      ./darknet partial cfg/csdarknet53-omega.cfg csdarknet53-omega_final.weights csdarknet53-omega.conv.105 105


    4`. (HD_yolov4_tiny)yolov4-tiny.conv.29

    • 下载 yolov4-tiny 预训练权重的前29层。

2.2 准备数据

2.3 训练和测试

  1. 模型训练 (以 HD_yolov4_tiny 为例):

    • 单 GPU:

      ./darknet detector train data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg yolov4-tiny.conv.29 -dont_show -map

      • data/obj.data 中可进行测试集配置
      • cfg/human_detector_yolov4-tiny-custom.cfg 是模型的配置文件
      • ./backup/human_detector_yolov4-tiny-custom_best.weights 是上述下载的 pretrained model
      • yolov4-tiny.conv.29 是2.1中的4`中下载的初始权重,也可以是 backup 中的 XXXX_last.weights,即紧接上一个权重文件继续训练。
      • -dont_show 是指不显示损失函数窗口,单可以通过 chart.png 查看损失函数曲线
      • -map 是在训练过程中计算 mAP 并显示在损失函数曲线上
      • 每 100 个 iteration 会在 backup (默认)文件夹中保存 XXXX_last.weights,每 2000 个 iteration 会保存一个权重模型例如 XXXX_2000.weights
    • 多 GPU:

      ./darknet detector train data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg yolov4-tiny.conv.29 -dont_show -map -gpus 1,2,3,4

      • -gpus 开启多 GPU 训练
  2. 测试单张图片命令

    ./darknet detector test data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg backup/human_detector_yolov4-tiny-custom_best.weights -thresh 0.25 -ext_output data/person.jpg

    • -thresh 检测出的 bbox 阈值,低于该阈值的 bbox 框将不被显示在画面中
    • -ext_output 是在画面中显示检测 bbox
  3. 视频 demo 测试:

    • 以 HD_yolov4_tiny 为例,通过以下命令对测试视频 tslist.mp4(提取码:h21b) 进行检测,并输出保存为 tiny_yolov4_demo.mp4。

      ./darknet detector demo data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg backup/human_detector_yolov4-tiny-custom_best.weights -ext_output tslist.mp4 -i 0 -thresh 0.30 -out_filename tiny_yolov4_demo.mp4

      • -i 输入视频,默认为 0
      • -out_filename 是输出视频的命名
    • 假如视频帧率太大不方便查看,可用以下命令将其转换为帧率为 10 的视频片段。

      ffmpeg -y -r 30 -i tiny_yolov4_demo.mp4 -r 10 tiny_yolov4_demo_fps10.mp4

  4. 测试模型性能:

    • 测试模型精度 mAP (mean average precisions):

      ./darknet detector map your_.data_file your_model_.cfg_file your_pretrained_weights

      • 以 HD_yolov4_tiny 为例:

        ./darknet detector map data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg ./backup/human_detector_yolov4-tiny-custom_best.weights

    • 测试模型速度FPS:

      ./darknet detector demo your_.data_file your_model_.cfg_file your_pretrained_weights test.mp4 -benchmark

      • 以 HD_yolov4_tiny 为例,用 tslist.mp4 测试:

        ./darknet detector demo data/obj.data cfg/human_detector_yolov4-tiny-custom.cfg backup/human_detector_yolov4-tiny-custom_best.weights tslist.mp4 -benchmark

3、性能对比

实验编号/分支名 参数 描述 状态 精度 GPU/CPU 速度(官方GPU:FPS,CPU:无) 模型大小 显存占用
yolov4_80 2017coco; max_batches = 500500; width=512 height=512 源码+pretrained_weight done ap=83.22% 83.0FPS/t>1s (83FPS) 245 MB 1745MB
HD01 2014coco; max_batches = 6000; width=512,height=512; 基于 yolov4 的 human detector (改源码) done ap=60.37% 83.9FPS/t>1s(83FPS) 245 MB 1745MB
HD02 (HD_yolov4 2017coco; max_batches = 70000; train_num: 64115; val_num: 2693; width=512 height=512; 基于 yolov4 的 human detector (改数据格式) done ap=79.30% 82.6FPS/t>1s (83FPS) 245 MB 1745MB
tiny_yolov4_80 2017coco; max_batches = 500500 ;width=512 height=512 源码+pretrained_weight done ap=58.29% 134.0FPS/0.5FPS 23.1 MB 823MB
HD03 (HD_yolov4_tiny) 2017coco; max_batches = 80000; train_num: 64115; val_num: 2693; width=512 height=512 基于 yolo-tiny 的 human detector改数据格式 done ap=65.75% 134.8FPS/0.5FPS 23.1 MB 823MB

- 测试环境:
- GPU:Tesla V100-32GB 4卡
- 服务器:10.0.10.56
- 输入图片分辨率:1920*1080

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注