详细解读 | 如何改进YOLOv3使其更好应用到小目标检测(比YOLO V4高出4%)(一)

简介: 详细解读 | 如何改进YOLOv3使其更好应用到小目标检测(比YOLO V4高出4%)(一)

1简介


小目标由于分辨率低、体积小,很难被检测到。而小目标检测性能差主要是由于网络模型的局限性和训练数据集的不平衡所造成的。

为了获得可靠的语义信息,很多目标检测器试图叠加越来越多的池化和降采样操作,使得在前向传播中逐渐丢失像素数较少的微小目标特征,因此降低了微小目标的检测性能。

FPN 通过水平融合低分辨率特征图和高分辨率特征图,在一定程度上缓解了信息扩散问题。但是,直接融合不同密度的信息会引起语义冲突,限制了多尺度特征的表达,使微小目标容易淹没在冲突信息中。

同时,在目前的经典公共数据集中,微小目标的标注数量远远少于较大目标的标注数量。因此,在训练过程中,网络的收敛方向不断向较大目标倾斜,导致微小目标性能较差。

因此,作者认为从以上2个方面来提高微小目标的检测性能是可行的。

针对微小目标的特征分散和层间语义差异的问题,本文提出了一种结合上下文增强和特征细化的特征金字塔复合神经网络结构。提出的算法框架如图1所示。

图1

它与上下文增强模块(CAM)和特征细化模块(FRM)相结合。CAM融合多尺度扩张卷积特征,获取丰富的上下文信息进行特征增强。FRM在通道和空间维度上引入特征细化机制来抑制冲突信息,防止微小目标淹没在冲突语义信息中。同时,为了保证网络在训练过程中不会向较大目标倾斜,提出了一种Copy-Reduction-Paste的方法来增加训练中微小目标丢失的比例。


2相关工作


2.1 经典方法

大家都知道目标检测是一项基础的计算机视觉任务,它包含分类和定位2个部分,而定位则可以看作是一个回归问题。

在早期,手工设计的特征被广泛应用于目标检测。但是,手工设计的特征是一种浅层特征,其也在基于深度学习的特征出现后逐渐被取代。

  • R-CNN作为两阶段算法的先驱,利用不同大小的先验框对不同大小的目标进行匹配,然后通过CNN选择候选区域;
  • 为了减少训练时间,Fast R-CNN提取整个图像的特征图,然后利用空间金字塔池化和RoI池化生成区域特征并筛选候选区域;
  • 为了进一步提高小目标的精度,E-FPN提出了一种超分辨率特征金字塔结构来放大小目标特征。与两阶段网络相比,单阶段网络速度较快,但精度相对较低;
  • SSD在图像上密集放置Anchor以获取Bounding Box,同时充分利用不同尺度的特征来检测更小的目标。
  • YOLOV3基于特征金字塔有3个输出分别选择大、中、微小物体进行检测,大大提高了微小物体的检测性能。
  • 还有一些学者在FPN中引入了高分辨率Attention机制,以挖掘微小目标中最有用信息。本文就是YOLOV3作为Baseline,并在此基础上进行改进。
  • RefineDet引入了新的损失函数,解决了简单样本和困难样本之间的不平衡问题。

近年来,基于Anchor-Free架构的检测器越来越受欢迎。虽然目标检测算法在不断发展和替换,但在微小目标检测领域并没有大的突破,小目标的检测精度依旧很低。

2.2 多尺度特征融合

利用多尺度特征融合是提高小目标检测精度的有效方法。SSD是首次尝试用多尺度特征来预测目标的位置和类别。

FPN从上到下融合不同粒度的相邻特征也极大地提高了特征的表达能力。大量类似FPN的变异结构如下:

  • PANet在FPN的基础上增加了额外的自下向上连接,更有效地将信息从底层传输到上层。
  • NAS-FPN通过神经结构搜索技术搜索出一种新的连接方法。
  • Bi-FPN改进了PANet的连接方式,提高了PANet的效率,并在连接点引入了简单的Attention机制。

上述结构虽然大大提高了网络的多尺度表达能力,但忽略了不同尺度特征之间冲突信息的存在,缺乏上下文信息可能会阻碍性能的进一步提高,特别是对于微小目标很容易被冲突信息淹没。

本文充分考虑了冲突信息和上下文信息对检测精度的影响。

2.3 数据增强

训练集的预处理一直是深度学习中不可缺少的一部分,如 Rotation、deformation、Random Erasure、Random Occlusion、Illumination Distortion以及MixUp 等。

近年来,人们提出了几种针对微小目标的数据增强方法。将4幅图像按相同尺寸拼接在一起,以提高反馈引导下的微小目标检测性能。

还有人试图通过Copy-Paste小目标到原始图像来实现小目标的数据增强。该方法只能增加微小目标的数量,而不能增加包含微小目标的训练图像的数量。也会在一定程度上造成训练的不平衡。由于大目标广泛分布在训练中,而本文保证了小目标对训练损失的贡献,使训练更加均衡。

相关文章
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
20841 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
设计模式 数据可视化 测试技术
实践中的面向对象的例子
【7月更文挑战第1天】本文介绍面向对象编程注重代码的可理解性、重用和维护。例如,设计一个显示时间、温度等的设备,用户无需关心内部工作,这就是封装;如果需要多个设备,可通过多态创建不同实例;而继承则允许共享通用功能,如所有时钟都继承自计时器基类。
456 0
实践中的面向对象的例子
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
655 2
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
19868 0
|
12月前
|
安全 区块链 数据安全/隐私保护
介绍一下PoW机制的优缺点
介绍一下PoW机制的优缺点
|
分布式计算 自然语言处理 监控
大数据Spark对SogouQ日志分析
大数据Spark对SogouQ日志分析
526 0
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与CUDA:加速深度学习模型训练的最佳实践
【8月更文第27天】随着深度学习应用的广泛普及,高效利用GPU硬件成为提升模型训练速度的关键。PyTorch 是一个强大的深度学习框架,它支持动态计算图,易于使用且高度灵活。CUDA (Compute Unified Device Architecture) 则是 NVIDIA 开发的一种并行计算平台和编程模型,允许开发者直接访问 GPU 的并行计算能力。本文将详细介绍如何利用 PyTorch 与 CUDA 的集成来加速深度学习模型的训练过程,并提供具体的代码示例。
1361 1
|
机器学习/深度学习 固态存储 数据挖掘
【YOLO系列】YOLOv3论文超详细解读(翻译 +学习笔记)
【YOLO系列】YOLOv3论文超详细解读(翻译 +学习笔记)
2451 1
【YOLO系列】YOLOv3论文超详细解读(翻译 +学习笔记)
|
机器学习/深度学习 测试技术 API
【Python-Keras】Keras搭建神经网络模型的Model解析与使用
这篇文章详细介绍了Keras中搭建神经网络模型的`Model`类及其API方法,包括模型配置、训练、评估、预测等,并展示了如何使用Sequential模型和函数式模型来构建和训练神经网络。
487 1
|
算法 小程序 Java
图像中二维码的检测和定位
图像中二维码的检测和定位
1732 0
图像中二维码的检测和定位