在对象检测领域,谷歌大脑团队不久前发布了EfficientDet模型,挑战了YOLOv3作为实时对象检测的首选模型,并推动了对象检测模型的边界。撰写了一系列文章,比较了YOLOv3和EfficientDet,并在自定义数据上训练了这两种模型,取得了令人印象深刻的结果。建议使用Roboflow模型库,以轻松地将这些模型从COCO数据集适应到特定领域。
YOLOv4的发布显示了在COCO数据集上的平均精度均值(mAP)和每秒帧数(FPS)分别提高了10%和12%。在这篇文章中,将通过深入研究YOLOv4中使用的数据增强技术的细节,来看看们是如何实现这一突破的。
Mosaic Augmentation的创始人Glenn Jocher发布了一个新的YOLO训练框架,名为YOLOv5。可能还想看看关于YOLOv5与YOLOv4的比较的文章。这篇文章将解释新YOLOv5框架的一些优点。
数据增强在计算机视觉中的重要性并不新鲜。查看一月份的文章,解释了图像预处理和增强对计算机视觉的重要性。YOLOv4的在他们的论文中包含了一系列贡献,称之为“免费的工具包”。这些是可以采取的一系列步骤,可以在不增加推理时间的情况下提高模型的性能。
这些技术大多数通过改进数据管理和数据增强来改进和扩展训练集,使模型能够接触到原本看不见的场景。在计算机视觉中,数据增强是关键,以充分利用数据集,而最新的研究继续验证这一假设。
YOLOv4的引用了许多技术,最终激发了他们包含“免费的工具包”。下面提供一个概述。使用Roboflow免费增强数据,使用Roboflow管理数据集,标记数据,并转换为26多种格式,以使用不同的模型。Roboflow免费提供高达10,000张图像,基于云,并且团队使用方便。
作为计算机视觉增强方法的图像失真包括改变图像的亮度、对比度、饱和度和噪声。例如,在计算机视觉中写了关于模糊数据增强的文章。Roboflow可以轻松调整图像亮度。
# 示例代码:调整图像亮度
import cv2
image = cv2.imread('path_to_image.jpg')
brighter_image = cv2.convertScaleAbs(image, alpha=1.5, beta=0)
cv2.imwrite('brighter_image.jpg', brighter_image)
几何失真包括随机缩放、裁剪、翻转和旋转。这些类型的增强可能特别棘手,因为边界框也受到影响,必须更新。例如,已经写了关于如何在计算机视觉中使用随机裁剪数据增强的文章。Roboflow会为任何转换更新图像注释。
作为计算机视觉增强方法的图像遮挡包括随机擦除,这是用随机值或训练集的平均像素值替换图像区域的数据增强技术。通常,它是用擦除图像的比例和擦除区域的宽高比来实现的。从功能上讲,这成为一种正则化技术,防止模型记忆训练数据和过拟合。
Cutout - 在训练期间遮蔽正方形区域。Cutout区域仅从CNN的第一层隐藏。这与随机擦除非常相似,但是在叠加的遮挡中有一个恒定的值。目的是类似的:减少过拟合。
Hide and Seek - 将图像划分为SxS的网格补丁。每个补丁都有一定概率(p_hide)被隐藏。这允许模型学习对象的样子,而不是只学习对象的单个部分。
Grid Mask - 以网格方式隐藏图像的区域。与Hide and Seek类似,这迫使模型学习构成单个对象的各个部分。
MixUp - 图像对及其标签的凸叠加。
现在将访问YOLOv4在训练期间部署的数据增强策略。研究过程以一系列实验为特点,因此可以想象们尝试了许多没有进入最终论文的策略。这进一步证明了在自定义视觉任务的自己的训练/测试集上探索各种数据增强策略的重要性。
CutMix - 通过从一张图像中剪切部分并将其粘贴到增强图像上来组合图像。图像的剪切部分迫使模型学习基于大量特征进行预测。
Mosaic数据增强 - Mosaic数据增强将4张训练图像合并为一张,以一定的比例(而不是CutMix中的只有两个)。Mosaic是YOLOv4中引入的第一个新的数据增强技术。这允许模型学习如何以比正常更小的尺度识别对象。它在训练中也非常有用,可以显著减少对大批量大小的需求。
类别标签平滑 - 类别标签平滑不是图像操作技术,而是对类别标记的直观更改。通常,边界框的正确分类表示为类别的一位热向量[0,0,0,1,0,0,...],并且基于这种表示计算损失函数。
然而,当模型对接近1.0的预测过于确定时,它通常是错误的,过拟合,并且在某种程度上忽视了其他预测的复杂性。基于这种直觉,将类别标签表示编码为在一定程度上表示不确定性的值是更合理的。自然地,选择0.9,因此[0,0,0,0.9, 0....]来表示正确的类别。
自对抗训练(SAT) - 这种技术使用模型的状态来通知漏洞,通过转换输入图像。首先,图像通过正常的训练步骤传递。然后,而不是通过权重反向传播,损失信号被用来以对模型最有害的方式改变图像。
在训练的后期,模型被迫面对这个特别困难的例子并从中学习。在这里介绍的技术中,这可能是最不直观的,也是最接近建模方面的。
现在对YOLOv4中使用的所有数据增强技术有了全面的了解!
很高兴看到模型性能的进步同样关注数据增强和模型架构。在看到YOLOv4与YOLOv3在数据增强方面的差别后,怀疑这些“免费的工具包”技术对任何架构都可能是有用的。
因此,在Roboflow,正在使一键增强数据与最先进的增强技术变得容易。处理转换图像和更新边界框的最优化方式,以便可以专注于领域问题,而不是操纵图像的脚本。
Roboflow使数据增强变得简单。免费试用。
想把理论付诸实践吗?试试教程,了解如何训练YOLOv4。