1. yolov5的模型结构
yolov5s, yolov5m, yolov5l, yolov5x, 它们通过深度depth和宽度width两个控制因子来缩放
核心架构:输入端input、骨干网络backbone、颈部neck、检测头head。
输入端input:
对训练和推理友好的策略:
Mosaic数据增强:
数据增广策略,随机将4张训练图片,通过随机缩放、裁剪、排布的方式拼接成一张新的图片。丰富背景和小目标、提高训练效率。
自适应锚框计算:
训练时,会基于你传入的数据集标签,自动重新计算预设的锚框Anchor Boxes尺寸。这保证了模型一开始就有针对特定数据集的、较好的先验框,从而加速收敛。
自适应图片缩放:
在推理阶段,yolov5会将图片缩放到标准尺寸,如640x640。为了减少黑边带来的计算冗余,它会采用一种"letterbox"的自适应缩放技术,通过计算最小缩放比例,并对长宽进行补边,尽可能地保持图像原始比例,减少信息丢失。
骨干网络Backbone:
主要用于从输入图像中提取丰富的特征。它是在CSPNet(Cross Stage Partial Network)思想的基础上构建的,称为CSPDarkNet。
Focus结构(在V6.0版本后被简化):
在早期的V5版本中,第一个模块是Focus。它通过将输入图像的像素切片,每隔一个像素取一个值,得到4个独立的特征层,然后将它们拼接起来。这个过程将信息从宽度和高度维度集中到了通道维度,没有信息丢失,但计算量相对较大。
在V6.0及以后的版本中,Focus层被一个更简洁、高效的6x6卷积层所替代。这个改动简化了模型结构,并且利用现代GPU和计算库对卷积的优化,获得了更好的速度和精度平衡。