greedy_zero 2021-08-21 16:36 采纳率: 71.4%
浏览 564
已结题

如何缩短yolov4训练图片所需要的时间

在训练yolov4检测目标的时候,训练12张图片竟然需要18个小时,请教以下在不考虑升级硬件的情况下,是修改.cfg档案内的什么参数还是降低照片的分辨率和大小?

  • 写回答

1条回答 默认 最新

  • StjpStjp 2021-08-21 16:41
    关注

    1、修改cfg文件中设置 random=1 ,多尺度训练

    2、提高网络分辨率,修改cfg文件中的尺寸(height=608,width=608 或者 任何32的倍数),这将会提高精度,尺寸越大,会提高小目标的精度。

    3、检查要检测的每个目标在数据集中是否都被强制标记 - 数据集中的所有目标都应该有标签。大部分训练的问题是数据集中有错误标签

    4、我的loss很高,map很低,训练错了吗?

    ​ 在训练命令结尾加上 -show_imgs,训练是否能看到正确的目标标注框,如果不能——你的训练数据是错误的

    5、保证样本的多样性。对于您想要检测的每个对象 - 在训练数据集中必须有至少1个相似且大致相同的对象:形状、对象的侧面、相对大小、旋转角度、倾斜、光照。理想情况下,数据集应包括在以下方面各不相同的对象:缩放,旋转,照明,从不同的侧面,在不同的背景上。

    6、希望您的训练数据集包括您不想检测的 未标记对象的图像

    7、标记物体最好的方法是什么:只标记物体可见的部分,还是标记物体可见和重叠的部分,还是标记比整个物体稍多一点(有一点间隙)?按你喜欢的方式标记-你希望它如何被检测到,就如何标记

    8、对于训练的每张图片中有大量的目标,在.cfg文件最后的yolo层或region层加上max = 200或更高的值,YoloV3可以检测到的全局最大对象数为0.0615234375* (宽度 * 高度),其中宽度和高度是cfg-file中[net]部分的参数

    9、yolov4.cfg文件 对于小目标的训练(小目标是指:在图像被调整到416x416后小于16x16的目标)

    设置 layers = 23 而不是 layers = 54 :https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L895

    设置 stride = 4 而不是 https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L892

    设置 stride = 4 而不是 https://github.com/AlexeyAB/darknet/blob/6f718c257815a984253346bba8fb7aa756c55090/cfg/yolov4.cfg#L989

    10、for training for both small and large objects use modified models:

    Full-model: 5 yolo layers https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg
    Tiny-model: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg
    YOLOv4: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4-custom.cfg
    11、如果您训练模型将左右对象区分为单独的类(比如,在路牌上左转/右转,左转/右转)需要禁用翻转数据增强:https://github.com/AlexeyAB/darknet/blob/3d2d0a7c98dbc8923d9ff705b81ff4f7940ea6ff/cfg/yolov3.cfg#L17

    12、一般规则-你的训练数据集应该包括这样一组相对大小的对象,你想检测:

    13、每一个:对象的模型,侧面,力,比例,每30度的转弯和倾角-这些是不同的对象从内部的神经网络的视角。因此,要检测的不同对象越多,就应该使用越复杂的网络模型。

    14、为了使检测框更加准确,可以在每个[yolo]层中添加3个参数ignore_thresh = .9 iou_normalizer=0.5 iou_loss=giou,它将增加mAP@0.9,但减少mAP@0.5

    为了加速训练(降低检测精度),在cfg文件中设置第136层的param stopbackward=1

    15、除非你是神经检测网络的专家 - 否则需要根据数据集的宽度和高度重新计算anchers从cfg-file:

    ./darknet detector calc_anchors data/voc.data -num_of_clusters 6 -width 608 -height 608

    16、通过在你的。cfg文件中设置(高度=608,宽度=608)或(高度=832,宽度=832)或(32的任意倍数)来增加网络分辨率——这增加了精度并使它能够增强小目标检测

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月31日
  • 已采纳回答 8月23日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?