深度学习论文: EdgeYOLO: An Edge-Real-Time Object Detector及其PyTorch实现
EdgeYOLO: An Edge-Real-Time Object Detector
PDF: https://arxiv.org/pdf/2302.07483.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
EdgeYOLO是一种具有良好精度并且能够在边缘设备上实时运行的目标检测器。
- 设计了一种Anchor-Free目标检测器,该检测器可以在MS COCO2017数据集中实时运行在边缘设备上,准确率为50.6%AP;
- 提出了一种更强大的数据增强方法,进一步确保了训练数据的数量和有效性;
- 模型中使用了可重参化的结构,以减少推理时间;
- 设计了一个损失函数,以提高小目标的精度。
2 EdgeYOLO
2-1 Enhanced-Mosaic & Mixup
常用的数据增强策略如下(a)和(b)所示,但是(a)和(b)由于数据变换,容易包含不含有效目标的图像,此外这种情况的概率随着每个原始图像中标签数量的减少而逐渐增加。
作者因此提出的方法(c),
- 首先,对多组图像使用Mosaic方法(可以根据数据集中单个图片中标签的平均数量的丰富程度来设置组数)。
- 然后,通过Mixup方法将最后一个简单处理的图像与Mosaic处理的图像混合(最后一幅图像的原始图像边界在变换后的最终输出图像的边界内)。
方法(c)有效地增加了图像的丰富性以减轻过度拟合,并确保输出图像必须包含足够的有效信息。
2-2 Lite-Decoupled Head
解耦头首先在FCOS中提出,然后用于其他Anchor-Free目标检测器,如YOLOX。在最后几个网络层使用解耦结构可以加速网络收敛并提高回归性能。
但是由于解耦头采用了导致额外推理成本的分支结构,因此YOLOv6提出了具有更快推理速度的高效解耦头,这将中间3×3卷积层的数量减少到仅一层,同时保持与输入特征图相同的更大数量的通道。
但是这种额外的推理成本随着通道和输入大小的增加也变得更加明显。因此引入重参化的技术增强学习能力的同时加快推理。
2-3 Staged Loss Function
对于目标检测,损失函数一般可以写成如下:
在实验中将训练过程分为三个阶段。
第一阶段,采用最常见的损失函数配置:GIOU损失用于IOU损失,Balanced Cross Entropy loss 用于分类损失和目标损失,调节损失设置为零。
第二阶段,在最后几个Epoch数据扩充时开始,分类损失和目标损失的损失函数由混合随机损失代替:
其中p表示预测结果,t表示GT值,r是0到1之间的随机数。对于一张图像中的所有结果,都有这个结果:
表明在小目标的精度和总精度之间有较好的平衡。
第三阶段,关闭数据扩充,将L1损失设为调节损失,用cIOU损失代替gIOU损失: