yolov4 darknet 源码学习笔记(一) yolov4.cfg文件各参数含义

本文详细解析了Yolov4darknet的配置文件,包括网络参数、数据增强策略、CSPnet、SPP模块和FPN结构。重点介绍了batch_size、学习率策略、CSPnet的设计以及YOLO层的配置。此外,还探讨了cutmix和mosaic数据增强技术在模型训练中的应用。
摘要由CSDN通过智能技术生成

yolov4 darknet 源码学习笔记(一)cfg文件各参数含义

paper: https://arxiv.org/abs/2004.10934
github: https://github.com/AlexeyAB/darknet
感谢AlexeyAB大神分享

[net]

网络参数模块

batch=64 # batch size
subdivisions=8 # batch size 细分,训练中每次推理batch/subdivisions(64/8)幅图片,计算loss时使用batch(64)幅累加

Training

#width=512
#height=512
width=608 # 输入图片统一尺寸为608 *608 *3
height=608
channels=3
momentum=0.949 # 动量 加速学习,特别是处理高曲率、小但一致的梯度,或是带噪声的梯度。动量算法累计之前梯度指数级衰减的移动平均,并且继续沿着该方向移动。详细公式请见《花书》第8章第三节
decay=0.0005 # 权重衰减正则项,防止过拟合
angle=0 # 旋转角度,数据增强参数
saturation = 1.5 # 数据增强参数HSV彩色模型:饱和度
exposure = 1.5 # 曝光度
hue=.1 # 色调

learning_rate=0.0013 # 学习率 ,学习率设置机制:https://zhuanlan.zhihu.com/p/28893986
burn_in=1000 # 迭代次数>burn_in*3时,使用policy策略
max_batches = 500500 # 最大迭代次数
policy=steps # 学习率调整策略:CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOM, SGDR
steps=400000,450000
scales=.1,.1 # steps 和scales为学习率调整策略参数。当迭代到400000次时,学习率衰减10倍;当迭代到450000次时,学习率再衰减10倍

#cutmix=1 #是否使用cutmix数据增强
mosaic=1 # 是否使用mosaic数据增强

#:104x104 54:52x52 85:26x26 104:13x13 for 416

第一个卷积层

[convolutional]
batch_normalize=1 #使用batch_normalize
filters=32 #卷积核输出通道32,此层输入尺寸=608×608×3,输出尺寸=608×608×32,总共参数=333*32
size=3 #卷积核尺寸,3×3
stride=1 #卷积步长1
pad=1 # 边界填充1
activation=mish # 激活函数

Backbone中5个CSPnet层,特征图大小一次从608变为304->152->76->38->19。为避免篇幅过长,本文仅展示第一个CSPnet

CSPnet

[convolutional]
batch_normalize=1
filters=64
size=3
stride=2
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=32
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=mish

[shortcut] # add层
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=mish

[route] # 等于常说的cancat层
layers = -1,-7

[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=mish

End CSPnet




##########################

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

SPP

[maxpool]
stride=1
size=5

[route]
layers=-2

[maxpool]
stride=1
size=9

[route]
layers=-4

[maxpool]
stride=1
size=13

[route]
layers=-1,-3,-5,-6

End SPP

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

FPN

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[upsample]
stride=2

[route]
layers = 85

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[route]
layers = -1, -3

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[upsample]
stride=2

[route]
layers = 54

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[route]
layers = -1, -3

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

End FPN

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

##########################

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

YOLO 层

[yolo]
mask = 0,1,2 # 使用anchor的索引,0,1,2表示使用下面定义的anchors中的前三对anchors
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80 # 类别数目
num=9 # anchors对数
jitter=.3 # 数据增强手段,缩放抖动系数,对原始图片进行宽高方向上的插值缩放(两方向上缩放系数不一定相同)
ignore_thresh = .7 # iou>ignore_thresh认为是正样本
truth_thresh = 1 # 真实框的iou值
scale_x_y = 1.2 # 为加快收敛,在anchor->预测框过程中,将中心点偏移范围0-1,映射到-0.1-1.1
iou_thresh=0.213 # 如果某个真实框和某个anchor的iou大于此阈值,则这个anchor负责预测这个真是框
cls_normalizer=1.0 # 计算分类损失的正则化系数,计算分类梯度时的衰减系数
iou_normalizer=0.07 # 计算边界回归损失的正则化系数,计算边界回归梯度时的衰减系数
iou_loss=ciou # 边界框回归损失函数,支持: MSE, IOU Loss, GIOU Loss, DIOU Loss, CIOU Loss.
nms_kind=greedynms # nms种类,支持:CORNERS_NMS,GREEDY_NMS,DIOU_NMS
beta_nms=0.6 # diou_nms 超参
max_delta=5 # 在iou loss 不是MSE时(iou loss: IOU, GIOU, MSE, DIOU, CIOU),dx, dy, dh, dw的取值范围[-max_delta, max_delta]

PAN

[route]
layers = -4

[convolutional]
batch_normalize=1
size=3
stride=2
pad=1
filters=256
activation=leaky

[route]
layers = -1, -16

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

End PAN

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=512
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 3,4,5
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
scale_x_y = 1.1
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6
max_delta=5

PAN

[route]
layers = -4

[convolutional]
batch_normalize=1
size=3
stride=2
pad=1
filters=512
activation=leaky

[route]
layers = -1, -37

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

End PAN

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 6,7,8
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1 # 是否使用随机多尺度训练
scale_x_y = 1.05
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6
max_delta=5

如有错误欢迎指出,谢谢观看!

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MATLAB是一种功能强大的数学计算软件,支持深度学习和计算机视觉开发。而YOLOv4是一种在计算机视觉领域被广泛使用的目标检测算法,并且是当前性能最好的目标检测算法之一。而Darknet则是一个由YOLOv4作者开发的开源深度学习框架,它支持YOLOv4等多种神经网络模型。 在MATLAB中,通过使用深度学习工具箱,可以轻松地训练和测试YOLOv4神经网络模型。此外,MATLAB还提供了很多辅助工具,如数据分析、图像预处理、图像增强等,这些工具可以帮助用户更好地处理图像数据,提高模型的精度和效率。此外,MATLAB还支持可视化工具,以便用户更直观地了解模型的性能和结果。 使用Darknet可以轻松地搭建YOLOv4神经网络模型,并进行训练和部署。Darknet提供了可视化工具来检查神经网络结构和各种层的输出,这有助于用户理解模型和以更好的方式进行训练和优化。此外,Darknet还提供了广泛的文档和示例代码,使用户可以逐步了解如何使用这个框架来进行深度学习开发。 总之,MATLAB和Darknet都是非常强大的工具,可以帮助用户轻松地开发和优化YOLOv4模型。通过结合这两个工具,可以实现更高效、准确和稳定的目标检测功能。 ### 回答2: Matlab YOLOv4 Darknet是基于深度学习的目标检测算法和工具,可用于图像分析和计算机视觉应用。该工具基于循环神经网络实现的YOLOv4模型和开源神经网络框架Darknet,可以检测和识别多个物体类型,包括人、车、动物、建筑物等。与传统的目标检测算法相比,YOLOv4具有更高的准确性和速度,对于大规模数据和复杂场景的处理效果更加优秀。 Matlab YOLOv4 Darknet不仅提供了基于预训练模型的目标检测功能,还支持用户自定义数据集和模型训练。用户可以通过提供图像数据集和标注信息,进行训练模型并优化模型参数,以满足特定应用场景的要求。此外,Matlab YOLOv4 Darknet还具备可视化功能,可以直观地展示神经网络的结构、模型训练和测试结果等。 总之,Matlab YOLOv4 Darknet是一种功能强大的目标检测工具,可以满足研究、开发和生产等不同领域的需求。它的应用范围包括智能交通、安防监控、医学影像等多个行业,对于提高数据处理和视觉分析的可靠性和效率有着重要作用。 ### 回答3: Yolov4是一种基于深度学习技术的目标检测算法,它能够快速且准确地识别图像中的不同物体,并对它们进行分类。同时,利用深度卷积神经网络的优点,Yolov4能够处理复杂的图像场景,完成精准的目标检测任务。 在实现Yolov4算法时,Matlab和Darknet是两个常用的工具。Matlab是一种面向科学计算的高级编程语言,拥有强大的图像处理和深度学习库,可以快速开发复杂的算法。Darknet则是一个轻量级的深度学习框架,适用于处理大量的图像数据,具有优秀的性能和高效的计算速度。 使用Matlab和Darknet来实现Yolov4算法能够带来多方面的好处。这两个工具都拥有许多可用的函数和库,可以快速构建和训练深度卷积神经网络。Matlab还可以通过可视化的方式来展示算法的结果和性能,帮助用户更好地理解和分析数据。而Darknet则具有高效的并行计算能力,可以处理大量的图像数据,适用于需要高效处理数据的场景。 总之,使用Matlab和Darknet来实现Yolov4算法是一种高效且准确的方式,可以支持大量的图像处理和深度学习任务,并能够在不同的场景中获得优秀的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值