本文为个人学习过程中所记录笔记,便于梳理思路和后续查看用,如有错误,感谢批评指正!
BACKBONE
与yolox不同,采用ELAN-Darknet作为backbone,并且在轻量化模型中采用RepCOnv代替部分3x3卷积。
数据集增强
与yolox相比,edgeyolo采用了加强版数据集增强。yolox采用图b中的数据集增强方法,本文中采用多组mosaic进行mixup,分组数量可以根据数据集中单个图片中平均标签数量的丰富度来设置。作者考虑到coco数据集和VisDrone2019-DET数据集中含有丰富的标签,将mosaic组数设为2。
Decoupled Head
与yolox相比,同样采用解耦头,但是采用了一个更轻量化的解耦头,同时,采用结构重参数化的手段,减少推理时间。经过实验对比结果如下:
针对小目标检测的优化,损失函数
整个训练分为三个过程,第一个过程中采用常规损失函数,iou损失采用giou损失,分类损失和置信度损失采用平衡交叉熵损失,规则损失置于0。第二阶段,在数据集增强即将结束阶段,分类损失和置信度损失采用如下损失函数:
第三阶段与YOLOX 一样,关闭数据集增强,在规则损失采用L1损失。将giou损失改为ciou损失。
两个数据集上的结果如下所示:
分割标签的使用
当没有分割标签时,图片旋转后,会通过画一个没有倾斜并穿过四个点的方框作为要最终的标签。该方法会包括更多无效的背景信息。因此在使用coco训练时会利用分割标签得到更准确的旋转后的标注。当开启数据增强,损失进入稳定下降阶段时,使用分割标签可以带来2%-3%的AP显著提升(仅限于在当前数据集增强还为结束阶段)。最终,即使不用分割标签,最终AP降低仅为0.04%。
损失函数的选取
实践证明,focal loss在本文方法中中起着副作用。
giou损失可以提高小目标检测的效果,但是大目标检测效果会降低,最终ciou损失能取得最好的效果。如下所示:
应用实践
实际视频流输入,建议将模型输入尺寸按照视频流分辨率等比例缩放,提高计算利用率。
最后采用个人数据集实际测试了一下,无论采用加强版数据集增强还是不采用加强版数据集增强的效果都不如yolox。