51c视觉~YOLO~合集6~
我自己的原文哦~ https://blog.51cto.com/whaosoft/12830685
一、其他yolo
1.1 Spiking-YOLO
使用常规深度神经网络到脉冲神经网络转换方法应用于脉冲神经网络域时,性能下降的很多,深入分析后提出了可能的解释:一是来自逐层归一化的效率低,二是用于leaky-ReLU函数的负激活缺乏表示。
在过去的十年中,深度神经网络(DNNs)在各种应用中表现出显著的性能。当我们试图解决更艰难和最新的问题时,对计算和电力资源的需求增加已经成为不可避免的。
Spiking neural networks(SNNs)作为第三代神经网络,由于其事件驱动(event-driven)和低功率特性,引起了广泛的兴趣。
然而,SNN很难训练,主要是因为它们的神经元复杂的动力学和不可微的尖峰操作。此外,它们的应用仅限于相对简单的任务,如图像分类。
在今天的分享中,作者研究了SNN在一个更具挑战性的回归问题(即对象检测)。通过深入分析,引入了两种新的方法:channel-wise normalization和signed neuron with imbalanced threshold,这两种方法都为深度SNN提供了快速的信息传输。因此,提出了第一个基于尖峰的目标检测模型,称为Spiking-YOLO。
尽管SNN有很多好处,但目前仅能处理相对简单的任务,由于神经元复杂的动态性以及不可导的操作,暂时没有一个可扩展的训练方法。DNN-to-SNN是近期广泛的SNN训练方法,该方法将目标DNN转化成SNN的中间DNN网络进行训练,然后转成SNN并复用其训练的参数,在小数据集分类上能达到不错的性能,但是在大数据集上分类结果不太理想
论文打算使用DNN-to-SNN转化方法将SNN应用到更复杂的目标检测领域中,图片分类只需要选择分类就好,而目标检测则需要神经网络进行高度准确的数字预测,难很多。在深入分析后,论文实现YOLO的转换主要面临以下两个问题:
- 常用的SNN归一化方法过于低效,导致脉冲发射频率过低。由于SNN需要设定阈值进行脉冲发射,所以要对权值进行归一化,这样有利于阈值的设定,而常用的SNN归一化方法在目标检测中显得过于低效,后面会详细阐述
- 在SNN领域,没有高效leaky-ReLU的实现,因为要将YOLO转换为SNN,YOLO中包含大量leaky-ReLU,这是很重要的结构,但目前还没有高效的转换方法
来自韩国的比较冷门或者前沿一点的文章,研究方向是脉冲神经网络(Spiking Neural Networks)与YOLO算法的融合,发现韩国人特别擅长对YOLO,SSD等算法进行魔改啊。
- 提出一种在深度SNN中能够进行快速精确信息传输的Spiking-YOLO算法。这是第一次将深度SNN成功应用于目标检测任务的工作;
- 为深度SNN开发了一种成为逐通道归一化的精细归一化技术。所提出的方法使得在多个神经元中更高的发射率成为可能,这促成了快速并且精确的信息传输;
- 提出了一种新颖的方法,其特点在于具有不平衡阈值的带符号神经元,这些神经元让SNNs中的leakyReLU得以实现。这给深度SNN应用于各种模型和应用创造了机会。
新框架
Channel-wise data-based normalization
基于数据的逐通道归一化
传统的脉冲神经网络中,需要确保神经元根据其输入大小产生脉冲序列,其中权值和阈值电压分别负责神经元激活的充足度和平衡度,这会导致要么欠激活要么过激活,从而使信息丢失和性能不佳。
作者深入分析并证明了细粒度的通道正则化可以通过极小的激活来提高神经元的发射率。换句话说,非常小的激活被正确归一化,将在更短的时间内准确地传输信息。文章认为通道正则化的应用可以带来更快更准确的深度SNN,这将使深度SNN应用于更高级机器学习问题成为可能。
上图展示了通过layer-norm后的各层每个channel的最大激活值,蓝色和红色的线分别为每层的平均激活值和最小激活值。可以看到每层的归一化后的激活值偏差较大,总体而言,layer-norm使得神经元的channel偏向激活不足,这在仅需选择分类的图片分类任务是不被察觉的,但对于需要预测准确值的检测任务的回归则不一样。比如传递0.7,则需要在10个timestep脉冲7次,0.007则需要在1000timestep脉冲7次。当tempstep本身就很少时,过低的发射率可能会因发射不到足够的脉冲而导致信息丢失。
Proposed normalization method
整个流程如下:
具体的逻辑如上图和算法,channel-wise的归一化方法能够消除激活值特别小的问题,即得到更高但合适的发射频率,在短时间内也能准确地传递信息。
具有不平衡阈值特征的带符号神经元
引入了一种具有不平衡阈值(即IBT)的带符号神经元,它不仅可以对正负激活进行解释,还可以对leakyReLU负激活值区域的渗漏项进行补偿。如下图所示,作者增加了另外一个Vth负责对负激活响应。
其中,具有IBT的带符号神经元的基本动力学公式如下所示。
通过使用上述具有IBT的带符号神经元,可以在SNN中使用leakyReLU,从而将各种DNN模型转换为广泛应用的SNN。
实验结果与评估
作者使用Tiny YOLO的实时目标检测模型,在脉冲神经网络中实现最大池化层和BN层。模型在PASCAL VOC2007和2012上训练,在PASCAL VOC2007上测试。所有代码基于Tensorflow Eager框架,在V100的GPU上进行实验。
文章通过实验的设计验证并分析了使用通道正则化和有符号神经元的IBT存在的用处。如下图所示,当通道正则化和有符号神经元都使用时,脉冲-YOLO能够达到51.61%的mAP,这个性能比较高了。
此外,逐层正则化的mAP仅仅46.98%,而通道正则化优势明显,收敛速度也更快。如果不使用本文提出的这两种方法,Spiking-YOLO无法检测目标,如果仅仅使用有符号神经元的话,mAP仅仅7.3%,这表明有符号神经元可以补偿leakyReLU的不足项,并且在解决深度SNN中这种高数值精度问题中起着关键作用。
在上图中,作者还在两种输出编码方案上进行了额外的对比实验,一种基于累计Vth,一种基于脉冲数量。实验结果表明基于Vth的输出编码方案在解释尖峰序列时将更精确,也体现出收敛更快的特点。
实验的目的是无损地将Tiny-YOLO的转移为SNN,结果如上图所示,使用channel-norm和IBT能有效地提升性能,且使用的timestep更少。
Spiking-YOLO,第一个SNN模型,通过在non-trivial datasets、PASCALVOC和MSCO上获得与原始DNN相似的结果来成功地执行目标检测。
Spikingjelly官方文档:
代码 https://github.com/fangwei123456/spikingjelly
另一个兄弟的仓库 https://github.com/HaoyuYao
1.2 Fast YOLO
目标检测被认为是计算机视觉领域中最具挑战性的问题之一,因为它涉及场景中对象分类和对象定位的组合。今天分享这个框架有点陈旧,但精髓!
目标检测被认为是计算机视觉领域中最具挑战性的问题之一,因为它涉及场景中对象分类和对象定位的组合。最近,与其他方法相比,深度神经网络 (DNN) 已被证明可以实现卓越的目标检测性能,其中YOLOv2是基于DNN的最先进技术之一。
目标检测方法在速度和准确性方面。尽管YOLOv2可以在强大的GPU上实现实时性能,但在计算能力和内存有限的嵌入式计算设备上利用这种方法进行视频中的实时目标检测仍然非常具有挑战性。
在今天分享中,有研究者提出了一个名为Fast YOLO的新框架,这是一个快速的You Only Look Once框架,它可以加速YOLOv2以便能够以实时方式在嵌入式设备上执行视频中的目标检测。
首先,利用进化深度智能框架来进化YOLOv2网络架构,并产生一个优化的架构(这里称为O-YOLOv2),其参数减少了2.8倍,IOU下降了约2%。为了在保持性能的同时进一步降低嵌入式设备的功耗,在提出的Fast YOLO框架中引入了一种运动自适应推理方法,以降低基于时间运动特性的O-YOLOv2深度推理的频率。实验结果表明,与原始YOLOv2相比,所提出的Fast YOLO框架可以将深度推理的数量平均减少38.13%,视频中目标检测的平均加速约为3.3倍,导致Fast YOLO运行在Nvidia Jetson TX1嵌入式系统上平均约为18FPS。
提出的Fast YOLO框架分为两个主要部分:i)优化的YOLOv2架构,以及ii运动自适应推理(见上图)。对于每个视频帧,由带有参考帧的视频帧组成的图像堆栈被传递到1×1卷积层。卷积层的结果是一个运动概率图,然后将其送入运动自适应推理模块以确定是否需要深度推理来计算更新的类概率图。正如介绍中提到的,主要目标是引入一个视频中的目标检测框架,该框架可以在嵌入式设备上更快地执行,同时减少资源使用,从而显着降低功耗。通过利用这种运动自适应推理方法,深度推理的频率大大降低,并且仅在必要时执行。
深度神经网络的主要挑战之一,尤其是在将它们用于嵌入式场景时,是网络架构设计。设计过程通常由人类专家执行,他探索大量网络配置,以在建模精度和参数数量方面为特定任务找到最佳架构。寻找优化的网络架构目前通常作为超参数优化问题来解决,但这种解决问题的方法非常耗时,而且大多数方法对于大型网络架构来说要么在计算上难以处理,要么导致次优解决方案不够嵌入式使用。
例如,超参数优化的一种常用方法是网格搜索,其中检查大量不同的网络配置,然后选择最佳配置作为最终的网络架构。然而,为视频中的目标检测而设计的深度神经网络(如YOLOv2)具有大量参数,因此在计算上难以搜索整个参数空间以找到最佳解决方案。
因此,研究者没有利用超参数优化方法来获得基于YOLOv2的最佳网络架构,而是利用专为提高网络效率而设计的网络优化策略。特别是,研究者利用进化深度智能框架来优化网络架构,以合成满足嵌入式设备内存和计算能力限制的深度神经网络。
为了进一步降低处理器单元的功耗,用于视频中的嵌入式目标检测,研究者利用了这样一个事实,即并非所有捕获的视频帧都包含唯一信息,因此不需要对所有帧进行深度推理。因此,研究者引入了一种运动自适应推理方法来确定特定视频帧是否需要深度推理。通过在必要时使用前面介绍的O-YOLOv2网络进行深度推理,这种运动自适应推理技术可以帮助框架减少对计算资源的需求,从而显着降低功耗系统以及处理速度的提高。
实验
1.3 Mamba YOLO
yolo又来了~~ 能超越所有YOLO系列模型?
Mamba-YOLO,它基于SSM,为YOLO系列在目标检测方面建立了新的基准。实验结果显示 Mamba-YOLO 在一般目标检测任务中非常有竞争力,在 MSCOCO 上的 mAP 比 baseline YOLOv8 高出 8.1%。
在深度学习技术快速进步的推动下,YOLO系列为实时物体探测器树立了新的基准。研究人员在YOLO的基础上不断探索重新参数化、高效层聚合网络和无锚技术的创新应用。为了进一步提高检测性能,引入了基于Transformer的结构,显著扩展了模型的感受野,并实现了显著的性能增益。然而,这种改进是有代价的,因为自注意机制的平方复杂性增加了模型的计算负担。幸运的是,状态空间模型(SSM)作为一种创新技术的出现有效地缓解了平方复杂性带来的问题。鉴于这些进展,我们介绍了一种新的基于SSM的目标检测模型Mamba YOLO。Mamba YOLO不仅优化了SSM基础,而且专门适用于目标检测任务。考虑到SSM在序列建模中的潜在局限性,如感受野不足和图像定位较弱,我们设计了LSBlock和RGBlock。这些模块能够更精确地捕捉局部图像相关性,并显著增强模型的稳健性。在公开的基准数据集COCO和VOC上的大量实验结果表明,Mamba YOLO在性能和竞争力方面都超过了现有的YOLO系列模型,展示了其巨大的潜力和竞争优势。
开源链接:https://github.com/HZAI-ZJNU/Mamba-YOLO
总结来说,本文的主要贡献如下:
- 我们提出了基于SSM的Mamba YOLO,为YOLO在目标检测中建立了一个新的基线,并为未来基于SSM开发更高效、更有效的检测器奠定了坚实的基础。
- 我们提出了ODSSBlock,其中LS Block有效地提取输入特征图的局部空间信息,以补偿SSM的局部建模能力。通过重新思考MLP层的设计,我们将门控聚合的思想与具有残差连通性的有效卷积相结合,提出了RG块,有效地捕获了局部依赖性并增强了模型的鲁棒性。
- 我们设计了一组不同规模的Mamba YOLO(微小/基本/大型)模型,以支持不同规模和规模的任务部署,并在COCO和VOC两个数据集上进行了实验,如图1所示,这表明与现有最先进的方法相比,我们的Mamba YOLO实现了显著的性能改进。
相关工作回顾
Real-time Object Detectors
YOLOv1到YOLOv3是YOLO系列的早起工作,它们的性能改进都与主干网的改进密切相关,使DarkNet得到了广泛的应用。YOLOv4引入了大量残差结构设计提出的CSPDaknet53骨干网,有效降低了计算冗余,实现了高性能的特征表达和高效的训练。YOLOv7提出了E-ELAN结构,以在不破坏原有模型的情况下增强模型能力。Yolov8结合了前几代YOLO的特点,采用了具有更丰富梯度流的C2f结构,重量轻,在考虑准确性的同时适应不同的场景。最近,Gold Yolo引入了一种名为GD(Gather and Distribute)的新机制,该机制通过自注意操作实现,以解决传统特征金字塔网络和Rep PAN的信息融合问题,并成功实现了SOTA。事实上,传统的细胞神经网络由于其局部感受野和层次结构设计,在图像尺度变化剧烈、背景复杂和多视角干扰等挑战方面存在一定的局限性。
End-to-end Object Detectors
DETR首次将Transformer引入到对象检测中,使用了Transformer编码器-解码器架构,该架构绕过了传统的手工组件,如锚生成和非最大值抑制,将检测视为一个简单的集成预测问题。可变形DETR引入了可变形注意力,这是Transformer注意力的一种变体,用于对参考位置周围的稀疏关键点集进行采样,解决了DETR在处理高分辨率特征图方面的局限性。DINO集成了混合查询选择策略、可变形注意力和注入噪声的演示训练,并通过查询优化提高了性能。RT-DETR提出了一种混合编码器来解耦尺度内交互和跨尺度融合,以实现高效的多尺度特征处理。然而,DETR在训练收敛性、计算成本和小目标检测方面存在挑战,YOLO序列在小模型领域仍然是精度和速度平衡的SOTA。
Vision State Space Models
状态空间模型是近年来研究的热点。基于对SSM的研究,Mamba在输入大小上表现出线性复杂性,并解决了Transformer在建模状态空间的长序列上的计算效率问题。在广义视觉主干领域,Vision Mamba提出了一种基于SSM的纯视觉主干模型,标志着Mamba首次被引入视觉领域。VMamba引入了交叉扫描模块,使模型能够对2D图像进行选择性扫描增强视觉处理,并展示了在图像分类任务上的优势。LocalMamba专注于视觉模型的窗口扫描策略,优化视觉信息以捕获局部依赖关系,并引入动态扫描方法来搜索不同层的最佳选择。MambaOut探讨了Mamba架构在视觉任务中的必要性,指出SSM对于图像分类任务不是必要的,但它对于遵循长序列特征的检测和分割任务的价值值得进一步探索。在下游视觉任务中,Mamba 也被广泛应用于医学图像分割和遥感图像分割的研究。受VMamba在视觉任务领域取得的显著成果的启发,本文首次提出了Mamba YOLO,这是一种新的SSM模型,旨在考虑全局感觉场,同时展示其在目标检测任务中的潜力。
方法
准备工作
源于状态空间模型(SSM)的结构化状态空间序列模型S4和Mamba都源于一个连续系统,该系统通过隐式潜在中间状态将单变量序列映射到输出序列中。这种设计不仅桥接了输入和输出之间的关系,而且封装了时间动态。该系统的数学定义如下:
Mamba通过使用固定的离散化规则fA和fB将该连续系统应用于离散时间序列数据,以将参数A和B分别转换为其离散对应物,从而将系统更好地集成到深度学习架构中。用于此目的的常用判断方法是零阶保持(ZOH)。离散版本可以定义如下:
转换后,模型通过线性递归形式进行计算,其定义如下:
整个序列变换也可以用卷积形式表示,其定义如下:
整体结构
Mamba YOLO的体系结构概述如图2所示。我们的目标检测模型分为ODMamba主干部分和颈部部分。ODMamba由简单Stem、下采样block组成。在neck,我们遵循PAN-FPN的设计,使用ODSBlock模块而不是C2f来捕获更梯度丰富的信息流。主干首先通过Stem模块进行下采样,得到分辨率为H/4、W/4的2D特征图。因此,所有模型都由ODSBlock和VisionVue合并模块组成,用于进一步的下采样。在颈部,我们采用了PAFPN的设计,使用ODSSBlock代替C2f,其中Conv全权负责下采样。
Simple Stem:Modern Vision Transformers(ViTs)通常使用分割块作为其初始模块,将图像划分为不重叠的片段。该分割过程是通过核大小为4、步长为4的卷积运算来实现的。然而,最近的研究,如EfficientFormerV2的研究表明,这种方法可能会限制ViT的优化能力,影响整体性能。为了在性能和效率之间取得平衡,我们提出了一种精简的语音层。我们使用两个步长为2、内核大小为3的卷积,而不是使用不重叠的补丁。
Vision Clue Merge:虽然卷积神经网络(CNNs)和视觉Transformer(ViT)结构通常使用卷积进行下采样,但我们发现这种方法会干扰SS2D在不同信息流阶段的选择性操作。为了解决这一问题,VMamba分割2D特征图,并使用1x1卷积来降低维度。我们的研究结果表明,为状态空间模型(SSM)保留更多的视觉线索有利于模型训练。与传统的尺寸减半相比,我们通过以下方式简化了这一过程:1)删除规范;2) 拆分维度图;3) 将多余的特征图附加到通道维度;4) 利用4倍压缩逐点卷积进行下采样。与使用步长为2的3x3卷积不同,我们的方法保留了SS2D从上一层选择的特征图。
ODSS Block
如图4所示,ODSS Block是Mamba YOLO的核心模块,它在输入阶段经过一系列处理,使网络能够学习到更深入、更丰富的特征表示,同时通过批量归一化保持训练推理过程的高效和稳定。
扫描扩展、S6块和扫描合并是SS2D算法的三个主要步骤,其主要流程如图3所示。扫描扩展操作将输入图像扩展为一系列子图像,每个子图像表示特定的方向,并且当从对角视点观察时,扫描扩展操作沿着四个对称方向进行处理,这四个方向分别是自上而下、自下而上、左右和单词从右到左。这样的布局不仅全面覆盖了输入图像的所有区域,而且通过系统的方向变换为后续的特征提取提供了丰富的多维信息库,从而提高了图像特征多维捕捉的效率和全面性。然后,在S6块操作中将这些子图像提交给特征提取,并且最后通过扫描合并操作,将这些子图像合并在一起以形成与输入图像相同大小的输出图像。
LocalSpatial Block
ResGated Block
实验结果
在VOC0712数据集上进行Mamba YOLO以进行消融实验,测试模型为Mamba YOLO-T。我们的结果表2显示,线索合并为状态空间模型(SSM)保留了更多的视觉线索,也为ODSS块结构确实是最优的断言提供了证据。
RGBlock通过逐像素获取全局相关性和全局特征来捕获逐像素的局部相关性。关于RG块设计的细节,我们还考虑了多层感知基础之上的三种变体:1)卷积MLP,它将DW-Conv添加到原始MLP;2) Res卷积MLP,其以残差级联方式将DW-Conv添加到原始MLP;3) 门控MLP,一种在门控机制下设计的MLP变体。图5说明了这些变体,表3显示了原始MLP、RG块和VOC0712数据集中每个变体的性能,以验证我们使用测试模型Mamba YOLO-T对MLP分析的有效性。我们观察到,卷积的引入并不能有效提高性能,其中在图5(d)门控MLP的变体中,其输出由两个元素乘法的线性投影组成,其中一个由残差连接的DWConv和门控激活函数组成,这实际上使模型能够通过分层结构函数传播重要特征。该实验表明,在处理复杂图像任务时,引入的卷积性能的提高与门控聚合机制非常相关,前提是它们适用于残差连通性的情况。
为了评估我们提出的基于ssm的Mamba YOLO架构的优越性和良好的可扩展性,我们将其应用于除目标检测领域外的实例分割任务。我们采用Mamba YOLO-T之上的v8分割头,并在COCOSeg数据集上对其进行训练和测试,通过Bbox AP和Mask AP等指标评估模型性能。Mamba YOLO-T-seg在每种尺寸上都显著优于YOLOv5和YOLOv8的分割模型。RTMDet基于包含深度卷积大内核的基本构建块,在动态标签分配过程中引入软标签来计算匹配成本,并在几个视觉任务中表现出出色的性能,Mamba YOLO-T-seg与Tiny相比,在Mask mAP上仍保持2.3的优势。结果如表4和图8所示。
其他可视化:
结论
在本文中,我们重新分析了CNN和Transformer架构在目标检测领域的优缺点,并指出了它们融合的局限性。基于此,我们提出了一种基于状态空间模型架构设计并由YOLO扩展的检测器,我们重新分析了传统MLP的局限性,并提出了RG块,其门控机制和深度卷积残差连通性被设计为使模型能够在分层结构中传播重要特征。此外,为了解决Mamba架构在捕获局部依赖性方面的局限性,LSBlock增强了捕获局部特征的能力,并将它们与原始输入融合,以增强特征的表示,这显著提高了模型的检测能力。我们的目标是建立一个新的YOLO基线,前提是Mamba YOLO具有高度竞争力。我们的工作是对Mamba 架构在实时目标检测任务中的首次探索,我们也希望为该领域的研究人员带来新的想法。
-------
1.4 CRAS-YOLO
这是多类别船舶检测与分类模型 , 搬来大佬的啊 仅自学用
目前,基于卫星图像的多类别船舶检测和分类由于在军事和民用领域的重要应用而备受关注。
坐者团队在FUSAR船舶数据集和SimpleCopyPaste方法的基础上生成了一个新的Artificial-SAR-Vessel数据集中。我们进一步提出了一种新的多类船检测,称为CRAS-YOLO,它由卷积块注意力模块(CBAM)、感受野块(RFB)和基于YOLOv5s的自适应空间特征融合(ASFF)组成。CRAS-YOLO改进了基于路径聚合网络(PANet)的特征金字塔网络,该网络集成了RFB特征增强模块和ASFF特征融合策略,以获得更丰富的特征信息,并实现多尺度特征的自适应融合。同时,在骨干中增加了CBAM,以准确定位船只位置,提高检测能力。
结果证实,CRAS-YOLO模型的准确度、召回率和平均准确度(mAP)(0.5)分别高达90.4%、88.6%和92.1%。所提出的模型在另一个Sar船舶检测(SSDD)数据集中的精度、召回率和mAP得分分别高达97.3%、95.5%和98.7%,也优于先前的研究结果。
如今,深度学习已经突破了传统目标检测算法的瓶颈,成为检测的主流算法。深度学习方法不需要在SAR图像中分离海洋和陆地,只需要通过标记的数据集进行训练,在目标检测方面具有很大的优势。目前流行的目标检测算法有两种类型。一种是基于区域推荐的两阶段目标检测算法,其中代表性的方法有基于区域的卷积神经网络(R-CNN)、Fast R-CNN和Faster R-CNN。其主要思想是利用选择性搜索方法来生成建议区域,然后在建议区域中进行回归分类。另一种是一阶段目标检测算法,它将检测问题简化为回归问题,只需要卷积神经网络就可以直接获得目标的类概率和位置坐标。代表性算法包括YOLO、SSD、Retina-Net等。YOLO系列算法通常比其他算法更快,对小目标检测效果良好。它们是经典的一阶段检测方法,通常比其他算法具有更快的识别速度,并且在小目标检测中表现出优异的检测能力。
迄今为止公开发布的上述SAR船舶探测数据集大多只包含船舶位置数据,缺乏船舶类别数据。同时,唯一一个名为SRSDD的公共多类别船舶检测数据集存在严重的类别不平衡问题,严重影响了船舶检测的准确性。因此,我们在研究中,基于FusarShip数据集和HAISI-1卫星拍摄的海面远程合成孔径雷达(SAR)图像的组合,生成了一个新的数据集,称为Artificial-SAR-Vessel据集。创新性地将SimpleCopyPaste方法引入到数据集的构建中,希望对SAR船舶检测数据集进行补充,为船舶检测数据缺乏的问题提供新的解决方案。
新研究框架介绍
作者研究的CRAS-YOLO是为了在给定SAR图像的情况下,在精确定位船只位置和提高检测能力方面提供高性能而形成的。下图中的流程图显示了所提出的CRAS-YOLO是如何开发的。
首先,生成了Artificial-SAR-Vessel数据集。其次,通过在YOLOv5s网络中添加CBAM、RFB和ASFF,形成了所提出的CRAS-YOLO模型。接下来,给出了性能度量,以评估所提出的模型与其他模型相比的性能。最后,将所开发的CRAS-YOLO模型应用于基于卫星图像的船舶探测。
在我们的研究中,提出的CRAS-YOLO船舶检测和分类模型基于YOLOv5s,通过在PANet(RA PANet)中添加RFB和ASFF来改进FPN,以获得更丰富的特征信息,并实现多尺度特征的自适应融合。拟议的CRAS-YOLO还将CBAM集成到网络的颈部。CRAS-YOLO的完整网络结构如下图所示。
注意机制主要包括空间注意和渠道注意。SE和ECA是渠道关注机制的代表。CA是空间注意机制的代表。CBAM融合了通道和空间注意力机制,具有良好的性能。我们将CBAM插入颈部结构中,以实现更有效的特征提取。从下图中,CBAM通过通道模块和空间模块提取特征信息,并使用串行结构融合特征信息。
从下图中,首先,输入特征图通过通道模块生成通道权重,并将获得的权重与输入相乘以生成通道图。接下来,将通道特征图导入空间模块以生成空间权重,并将权重与导入的特征图相乘以生成空间图。最后,将最终的加权特征图和原始输入逐元素相加,得到最终的输出结果,详细的CBAM结构如图所示。
浅层滤波器提取的特征包含更具体的特征信息。因此,我们在浅层集成了CBAM,以从浅层特征图中学习和选择重要特征,提高船舶的定量性能。
SAR图像特征图的可视化。(a) 通过滤波器从RA PANet的骨干网络中提取的特征图的可视化。(b) 从浅层到深层的小型船舶特征图的可视化。
RFB特征增强模块网络结构
ASFF网络结构
实验及可视化
CRAS-YOLO与其他模型的实验结果比较
基于CRAS-YOLO模型的船舶检测结果:上面三张分别是复杂海岸背景下的船舶测试结果,下面三张分别是深海中稀疏分布的船舶测试成果。
1.5 Drone-YOLO
这是一种有效的无人机图像目标检测, 无人机图像中的目标检测是各个研究领域的重要基础。然而,无人机图像带来了独特的挑战,包括图像尺寸大、检测对象尺寸小、分布密集、实例重叠和照明不足,这些都会影响对象检测的有效性。
这是一系列基于YOLOv8模型的多尺度无人机图像目标检测算法,旨在克服与无人机图像目标检测相关的特定挑战。为了解决大场景大小和小检测对象的问题,我们对YOLOv8模型的颈部组件进行了改进。具体而言,我们采用了三层PAFPN结构,并结合了一个使用大规模特征图为小型目标量身定制的检测头,显著增强了算法检测小型目标的能力。此外,我们将夹层融合模块集成到颈部上下分支的每一层中。这种融合机制将网络特征与低级特征相结合,提供了关于不同层检测头处物体的丰富空间信息。我们使用深度可分离进化来实现这种融合,它平衡了参数成本和大的感受野。在网络主干中,我们使用RepVGG模块作为下采样层,增强了网络学习多尺度特征的能力,并优于传统的卷积层。
所提出的Drone-YOLO方法已在消融实验中进行了评估,并在VisDrone2019数据集上与其他最先进的方法进行了比较。结果表明,我们的Drone-YOLO(L)在目标检测的准确性方面优于其他基线方法。与YOLOv8相比,我们的方法在mAP0.5指标上实现了显著改进,VisDrone2019测试增加了13.4%,VisDrone 2019-val.增加了17.40%。此外,只有5.25M参数的参数高效Drone-YOLO(tiny)在数据集上的性能与9.66M参数的基线方法相当或更好。这些实验验证了Drone-YOLO方法在无人机图像中目标检测任务中的有效性。
在过去的15年里,随着无人机控制技术的逐渐成熟,无人机遥感图像以其成本效益和易获取性成为低空遥感研究领域的重要数据源。在此期间,深度神经网络方法得到了广泛的研究,并逐渐成为图像分类、目标检测和图像分割等任务的最佳方法。然而,目前应用的大多数深度神经网络模型,如VGG、RESNET、U-NET、PSPNET,主要是使用手动收集的图像数据集开发和验证的,如VOC2007、VOC2012、MS-COCO,如下图所示。
与人工拍摄的真是图像相比,从无人机获得的图像显示出显著差异。这些无人机拍摄的图像如下:
除了这些图像数据特征外,无人机遥感目标检测方法还有两种常见的应用场景。第一个涉及使用大型台式计算机进行飞行后数据处理。无人机飞行后,捕获的数据在台式计算机上进行处理。第二个涉及飞行过程中的实时处理,无人机上的嵌入式计算机实时同步处理航空图像数据。该应用程序通常用于无人机飞行期间的避障和自动任务规划。因此,应用神经网络的目标检测方法需要满足每个场景的不同要求。对于适用于台式计算机环境的方法,需要高检测精度。对于适用于嵌入式环境的方法,模型参数需要在一定范围内才能满足嵌入式硬件的操作要求。在满足操作条件后,该方法的检测精度也需要尽可能高。
因此,无人机遥感图像中目标检测的神经网络方法需要能够适应这些数据的特定特征。它们的设计应满足飞行后数据处理的要求,可以提供高精度和召回率的结果,或者它们应设计为具有较小规模参数的模型,可以部署在嵌入式硬件环境中,用于无人机上的实时处理。
下图显示了我们提出的Drone-YOLO(L)网络模型的架构。该网络结构是对YOLOv8-l模型的改进。在网络的主干部分,我们使用RepVGG结构的重新参数化卷积模块作为下采样层。在训练过程中,这种卷积结构同时训练3×3和1×1卷积。在推理过程中,两个卷积核被合并为一个3×3卷积层。这种机制使网络能够在不影响推理速度或扩大模型大小的情况下学习更稳健的特征。在颈部,我们将PAFPN结构扩展到三层,并附加了一个小尺寸的物体检测头。通过结合所提出的三明治融合模块,从网络主干的三个不同层特征图中提取空间和信道特征。这种优化增强了多尺度检测头收集待检测对象的空间定位信息的能力。
如下图所示,我们提出了sandwich-fusion(SF),这是一种三尺寸特征图的新融合模块,它优化了目标的空间和语义信息,用于检测头。该模块应用于颈部自上而下的层。该模块的灵感来自YOLOv6 3.0【YOLOv6 v3.0: A Full-Scale Reloading】中提出的BiC模型。SF的输入如图所示,包括主干较低阶段、相应阶段和较高阶段的特征图。目标是平衡低级特征的空间信息和高级特征的语义信息,以优化网络头部对目标位置的识别和分类。
项目中,我们使用Ubuntu 20.04作为操作系统,Python 3.8、PyTorch 1.16.0和Cuda 11.6作为软件环境。实验采用NVIDIA 3080ti图形卡作为硬件。神经网络的实现代码是在Ultralytics 8.0.105版本的基础上修改的。在项目中的训练、测试和验证过程中使用的超参数保持一致。训练epoch被设置为300,并且输入到网络中的图像被重新缩放到640×640。在下面列出的一些结果中,所有YOLOv8和我们提出的Drone-YOLO网络都具有来自我们检测结果。在这些落地中,这些网络都没有使用预训练参数。
在嵌入式应用实验中,我们使用NVIDIA Tegra TX2作为实验环境,该环境具有256核NVIDIA Pascal架构GPU,提供1.33 TFLOPS的峰值计算性能和8GB的内存。软件环境为Ubuntu 18.04 LTS操作系统、NVIDIA JetPack 4.4.1、CUDA 10.2和cuDNN 8.0.0。
在VisDrone2019-test测试效果
基于NVIDIA Tegra TX2的结果
Drone-YOLO实际效果
左边是Yolov8的结果,可以看出红色框中大部分目标没有检测出来
1.6 BFD-YOLO
外观缺陷不仅影响了建筑的美观,也影响了其功能。此外,它们还可能危及行人、居住者和财产。我们基础到目前很多老破小社区建筑都有该现象,现在迫切需要AI实时监测,提高居民安全环境。
现有的基于深度学习的方法在识别速度和模型复杂性方面面临一些挑战。为了保证建筑外墙缺陷检测的准确性和速度,我们研究了了一种改进的YOLOv7方法BFD-YOLO。首先,将YOLOv7中原有的ELAN模块替换为轻量级的MobileOne模块,以减少参数数量并提高推理速度。其次,在模型中加入了坐标注意力模块,增强了特征提取能力。接下来,使用SCYLLA-IoU来加快收敛速度并增加模型的召回率。最后,我们扩展了开放数据集,构建了一个包括三个典型缺陷的建筑立面损伤数据集。BFD-YOLO基于该数据集展示了卓越的准确性和效率。与YOLOv7相比,BFD-YOLO的精度和mAP@.5分别提高了2.2%和2.9%,同时保持了相当的效率。实验结果表明,该方法在保证实时性的前提下,获得了较高的检测精度。
外墙缺陷的存在是建筑运营阶段的一个紧迫问题,通常归因于机械和环境因素。典型的缺陷表现为混凝土剥落、装饰剥落、构件裂缝、大规模变形、瓷砖损伤、潮湿损坏等。这些缺陷会影响外观,降低建筑物的使用寿命。更严重的是,外墙坠物可能会造成安全事故和无法弥补的损失。结构损伤检测是结构健康监测的一个组成部分,对确保建筑物的安全运行至关重要。作为结构损伤检测的一个组成部分,建筑外墙缺陷的检测可以使政府和管理层准确了解建筑外墙的综合状况,从而有助于制定合理的维修方案。这是降低建筑维护成本、延长建筑使用寿命和减轻外墙损坏影响的有效方法。许多国家和地区正在制定定期标准化目视检查的政策。建筑外墙缺陷的检测已成为建筑维护的关键组成部分。
目视检查是评估建筑外观状况的一种简单可靠的方法。传统的建筑外观检查通常需要专业人员带着专用工具到达检查地点,在那里使用视觉观察、锤击和其他技术进行评估。这些方法依赖于检查员的专业知识和经验,这是主观的、危险的和低效的。由于建筑数量的增加和规模的扩大,人工目视检查方法已不足以满足大规模检查的要求。随着技术的进步,许多新方法(如激光扫描、3D热成像和SLAM)正被用于通过无人机和机器人平台进行外墙损伤检测。与传统技术相比,这些新方法更方便、更安全,但耗时且成本高。因此,这些方法在满足大规模检查的需求方面也面临挑战。因此,有必要开发一种更精确、更有效的表面缺陷检测方法,以提高检测效率并降低计算成本。
建筑外墙缺陷有多种类型,不同的检测方法都适用。常见的类型包括裂缝、剥落和墙体空鼓。对于裂纹,有更多的研究使用语义分割进行检测。对于墙体空鼓,敲击法和红外热像法应用更为广泛。我们经过调研和研究,选择了适合目标检测方法且易于构建数据集的缺陷类型。数据集中的图像主要来自通过手机、摄像机和无人机拍摄的建筑立面图像。此外,一些来自互联网和公共数据集的图像也被用于扩展。所有图像的宽度在1000到3000像素之间,高度在2000到5000像素之间。该数据集由三个建筑外墙缺陷组成:分层、剥落和瓷砖损失。总共收集了1907张原始图像,其中包含约2%的背景图像。背景图像是添加到数据集中以减少错误位置的没有缺陷的图像。训练集、验证集和测试集按照7:2:1的比例进行划分。下图显示了数据集中的缺陷示例。
从左到右分别是分层、剥落和瓷砖损耗
Data Augmentation
在神经网络的模型训练中经常需要大量的数据。然而,获取建筑外墙缺陷的图像相对困难,并且在收集的数据中存在类别不平衡的问题。为了减轻这个问题的影响,我们将数据扩充技术应用于训练数据。数据扩充是对原始数据执行各种转换的常用技术。它被广泛应用于深度学习领域,以系统地生成更多的训练数据。数据扩充可以帮助模型学习更多的数据变化,防止其过度依赖特定的训练样本。监督数据增强技术包括几何变换(例如,翻转、旋转、缩放、裁剪等)和像素变换(例如噪声、模糊、亮度调整、饱和度调整等)。
新设计框架
它可以分为主干和头。主干网络的功能是提取特征。YOLOv7的原始主干由几个CBS、MP和ELAN模块组成。CBS是一个由卷积核、批处理规范化和SiLU激活函数组成的模块。议员由MaxPooling和CBS组成。改进后的主干网用MobileOne模块取代了ELAN模块以提高速度,并在每个MobileOne模件后面添加了一个协调注意力模块。所提出的改进方法能够关注输入图像中的显著特征并抑制外来信息,从而有效地提高检测精度。
网络的头是一个PaFPN结构,它由一个SPPPCC、几个ELAN2、CatConv和三个RepVGG块组成。ELAN的设计采用了梯度路径设计策略。与数据路径设计策略相比,梯度路径设计策略侧重于分析梯度的来源和组成,以设计有效利用网络参数的网络架构。该策略的实现可以使网络架构更加轻量级。ELAN和ELAN2之间的区别在于它们的通道数量不同。将结构重新参数化方法应用于RepVGG区块。该方法采用多分支训练结构和单分支推理结构来提高训练性能和推理速度。在输出三个特征图后,头通过三个RepConv模块生成三个不同大小的预测结果。
项目落地效果
建立了一个实验平台来训练模型并进行测试。实验平台的硬件和软件配置如下表所示。
在训练中,SGD用于模型训练,动量为0.937,权重衰减率为0.0005。Lr0和lrf分别设置为00.1和0.1,这意味着初始学习率为0.01,最终学习率为初始学习率的0.1倍。此外,为了使模型更好地拟合数据,还进行了五个epoch的热身训练。预热训练方法允许模型在最初的几个时期内稳定下来,然后以预设的学习速率进行训练,以更快地收敛。所有训练都是用150个epoch进行的,批次大小设置为16。
1.7 PE-YOLO
本文将PENet与YOLOv3结合,构建了一个名为PE-YOLO的端到端的暗目标检测框架。PE-YOLO采用端到端的联合训练方法,并且只使用普通的检测损失来简化训练过程。
论文链接:https://arxiv.org/abs/2307.10953
代码链接:https://github.com/XiangchenYin/PE-YOLO
当前的目标检测模型在许多基准数据集上取得了良好的结果,但在暗光条件下检测目标仍然是一个巨大的挑战。为了解决这个问题,作者提出了金字塔增强网络(PENet)并将其与YOLOv3结合,构建了一个名为PE-YOLO的暗光目标检测框架。首先,PENet使用拉普拉斯金字塔将图像分解为4个具有不同分辨率的组件。
具体来说,作者提出了一个细节处理模块(DPM)来增强图像的细节,其中包括上下文分支和边缘分支。此外,作者提出了一个低频增强滤波器(LEF)来捕获低频语义并防止高频噪声。
PE-YOLO采用端到端的联合训练方法,并且只使用普通的检测损失来简化训练过程。作者在暗光条件下的目标检测数据集ExDark上进行实验,以展示作者方法的有效性。结果表明,与其他暗光检测器和暗光增强模型相比,PE-YOLO取得了先进的结果,分别达到了78.0%的mAP和53.6的FPS,可以适应不同的暗光条件下的目标检测。
近年来,卷积神经网络(CNN)的出现推动了目标检测领域的发展。大量的检测器被提出,针对基准数据集的性能也取得了令人满意的结果。然而,大多数现有的检测器都是在高质量图像和正常条件下进行研究的。而在实际环境中,往往存在许多恶劣的光照条件,如夜晚、暗光和曝光不足,导致图像质量下降,从而影响了检测器的性能。视觉感知模型使得自动系统能够理解环境并为后续任务(如轨迹规划)奠定基础,这需要一个稳健的目标检测或语义分割模型。
图1是一个暗光目标检测的示例。可以发现,如果能够适当地增强图像,并根据环境条件恢复原始模糊目标的更多潜在信息,那么目标检测模型就能够适应不同的暗光条件,这也是模型在实际应用中面临的重大挑战。
目前,已经提出了许多方法来解决暗场景中的鲁棒性问题。许多暗光增强模型被提出来恢复图像细节,减少恶劣光照条件的影响。然而,暗光增强模型的结构较为复杂,这不利于图像增强后检测器的实时性能。这些方法大多数不能与检测器进行端到端的训练,需要有配对的暗光图像和正常图像进行监督学习。
在暗光条件下的目标检测也可以看作是域自适应问题。一些研究者采用对抗学习将模型从正常光到暗光进行转换。但是他们关注的是数据分布的匹配,忽略了暗光图像中所包含的潜在信息。近几年,一些研究者提出了使用可微分图像处理(DIP)模块来增强图像,并以端到端的方式训练检测器。然而,DIP是传统的方法,如白平衡,对图像的增强效果有限。
为了解决以上问题,本文作者提出了一种金字塔增强网络(PENet),用于增强暗光图像并捕获有关目标的潜在信息。作者将PENet与YOLOv3结合,构建了一个名为PE-YOLO的端到端的暗目标检测框架。在PENet中,作者首先使用拉普拉斯金字塔将图像分解为多个不同分辨率的组成部分。在金字塔的每个尺度上,作者提出了细节处理模块(DPM)和低频增强滤波器(LEF)来增强这些组成部分。
DPM由上下文分支和边缘分支组成,上下文分支通过捕获远距离依赖关系全局增强组成部分,而边缘分支增强组成部分的纹理。LEF使用动态低通滤波器来获取低频语义信息,防止高频噪声以丰富特征信息。作者在模型训练过程中只使用正常的检测损失来简化训练过程,无需对图像进行清晰的标注。
作者在暗光目标检测数据集ExDark上验证了作者方法的有效性,结果显示与其他暗目标检测器和暗光增强模型相比,PE-YOLO取得了先进的结果,分别达到78.0%的mAP和53.6的FPS,适用于暗场景中的目标检测。
作者的贡献可以总结如下:
- 作者构建了一个金字塔增强网络(PENet),用于增强不同的暗光图像。作者提出了详细处理模块(DPM)和低频增强滤波器(LEF)来增强图像组成部分。
- 通过将PENet与YOLOv3结合,作者提出了一个端到端训练的暗目标检测框架PE-YOLO,以适应暗光条件。在训练过程中,作者只使用正常的检测损失。
- 与其他暗目标检测器和暗光增强模型相比,作者的PE-YOLO在ExDark数据集上取得了先进的结果,实现了令人满意的准确性和速度。
相关方法
目标检测
目标检测模型可以分为3类:
- 一阶段模型
- 两阶段模型
- 基于Anchor-Free的模型
Faster RCNN 不再通过选择性搜索获得区域建议,而是通过区域提议网络(RPN)来实现。它使得候选区域提议、特征提取、分类和回归在同一个网络中端到端地进行训练。Cai等人提出了Cascade RCNN,它将多个检测头级联起来,当前级别将对前一级别的回归和分类结果进行改进。YOLOv3 提出了新的特征提取网络DarkNet-53。借鉴了特征金字塔网络(FPN)的思想,YOLOv3采用了多尺度特征融合。此外,最近出现了基于Anchor-Free的检测器,它们放弃了Anchor,并将其改变为基于关键点的检测。
暗光增强
暗光增强任务的目标是通过恢复图像细节和校正颜色失真来改善人类的视觉感知,并为目标检测等高级视觉任务提供高质量的图像。Zhang等人提出了Kind,它可以通过不同亮度级别的成对图像进行训练,而无需真实的GT。Guo等人提出了Zero DCE,它将暗光增强任务转化为图像特定曲线估计问题。Lv等人提出了多分支暗光增强网络MBLLEN,它在不同级别提取特征,并通过多分支融合生成输出图像。Cui等人提出了自适应照明Transformer(IAT),通过动态查询学习构建端到端的Transformer。暗光增强模型恢复图像细节后,会提高检测器的效果。然而,大多数暗光增强模型较为复杂,对检测器的实时性能有很大影响。
恶劣条件下的目标检测
在恶劣条件下的目标检测对于机器人的鲁棒感知至关重要,因此出现了一些针对恶劣条件的鲁棒目标检测模型。有些研究人员通过无监督领域自适应将检测器从源域迁移到目标域,以适应恶劣环境。刘等人提出了IA-YOLO,它通过自适应地增强每个图像来提高检测性能。他们使用了一个可微分图像处理(DIP)模块来适应恶劣天气,并使用一个小型卷积神经网络(CNN-PP)来调整DIP的参数。在IA-YOLO的基础上,Kalwar等人提出了GDIP-YOLO。GDIP提出了一个门控机制,允许多个DIP并行操作。Qin等人提出了检测驱动的增强网络(DENet),用于恶劣天气条件下的目标检测。Cui等人提出了用于暗光条件下的多任务自动编码转换(MAET),探索了光照转换背后的潜在空间。
本文方法
暗图像由于暗光干扰导致能见度较差,这影响了检测器的性能。为了解决这个问题,作者提出了金字塔增强网络(PENet)并联合YOLOv3构建了一个暗物体检测框架PE-YOLO。PE-YOLO框架的概览如图2所示。
PE-YOLO概述
PENet通过拉普拉斯金字塔将图像分解成不同分辨率的组件。在PENet中,作者通过提出的细节处理模块(DPM)和低频增强滤波器(LEF)来增强每个尺度的组件。
其中, Down表示下采样, Gaussian表示高斯滤波器,高斯核的大小为5×5。在每个高斯金字塔操作后,图像的宽度和高度减半,这意味着分辨率是原始图像的1/4。显然,高斯金字塔的下采样操作是不可逆的。为了在上采样后恢复原始的高分辨率图像,需要恢复丢失的信息,这些丢失的信息构成了拉普拉斯金字塔的组件。拉普拉斯金字塔的定义如下:
作者通过拉普拉斯金字塔获得了不同尺度的4个组件,如图3所示。作者发现拉普拉斯金字塔从底部到顶部更关注全局信息,而从顶部到底部更关注局部细节。它们都是在图像下采样过程中丢失的信息,也是作者PENet增强的目标。作者通过细节处理模块(DPM)和低频增强滤波器(LEF)来增强这些组件,DPM和LEF的操作是并行的。
作者将在下一节中介绍DPM和LEF。通过分解和重建拉普拉斯金字塔,PENet可以变得轻量且有效,这有助于提高PE-YOLO的性能。
细节信息增强
作者提出了一个细节处理模块(DPM)来增强拉普拉斯金字塔中的组件,它由上下文分支和边缘分支组成。
DPM的详细信息如图4所示。上下文分支通过捕捉远程依赖性来获取上下文信息,并全局增强组件。边缘分支使用两个不同方向的Sobel算子来计算图像梯度,获取边缘并增强组件的纹理。
上下文分支
作者使用残差块来在获取远程依赖性之前和之后处理特征,并且残差学习允许丰富的低频信息通过跳过连接进行传递。第一个残差块将特征的通道从3变为32,第二个残差块将特征的通道从32变为3。捕捉场景中的全局信息已被证明对于低级别的视觉任务(如暗光增强)是有益的。
上下文分支的结构如图4所示,其定义如下:
Edge branchSobel算子是一种离散算子,它同时使用了高斯滤波和差分求导。它通过计算梯度近似来找到边缘。作者在水平和垂直方向上都使用Sobel算子来通过卷积滤波器重新提取边缘信息,并使用残差来增强信息的流动。该过程表示为:
低频增强滤波器
在每个尺度的分量中,低频分量包含了图像中的大部分语义信息,它们是检测器预测的关键信息。为了丰富重建图像的语义信息,作者提出了低频增强滤波器(LEF)来捕捉组成部分中的低频信息。LEF的细节如图5所示。
实验
实验结果
为了验证PE-YOLO的有效性,作者在ExDark数据集上进行了许多实验。首先,作者将PE-YOLO与其他暗光增强模型进行比较。由于暗光增强模型缺乏检测能力,作者将使用与PE-YOLO相同的检测器对所有增强后的图像进行实验。
作者将mAP的IoU阈值设置为0.5,并且性能比较结果如表1所示。作者发现直接在YOLOv3之前使用暗光增强模型并没有显著提高检测性能。作者的PE-YOLO在mAP上比MBLLEN和Zero-DCE分别高出1.2%和1.1%,取得了最佳结果。
作者将不同暗光增强模型的检测结果进行了可视化,如图6所示。作者发现虽然MBLLEN和Zero DCE可以显著提高图像的亮度,但它们也会放大图像中的噪声。PE-YOLO主要捕捉暗光图像中目标的潜在信息,同时抑制高频组件中的噪声,因此PE-YOLO具有更好的检测性能。
作者将PE-YOLO与其他暗光检测器进行了性能比较,如表2所示。此外,作者还可视化了暗光检测器和PE-YOLO的检测结果,如图7所示,清楚地展示了PE-YOLO在目标检测方面更准确。与使用LOL数据集进行预训练的DENet和IAT-YOLO相比,PE-YOLO在mAP上高出0.7%和0.2%,而且作者的PE-YOLO在FPS上几乎是最高的。以上数据表明,PE-YOLO更适用于在暗光条件下检测物体。
消融实验
为了分析PE-YOLO中每个组件的有效性,作者进行了消融研究,结果如表3所示。在采用上下文分支后,PE-YOLO的mAP从76.4%增加到77.0%,表明捕捉远程依赖关系对于增强有效。在采用边缘分支后,mAP从77.0%增加到77.6%,表明边缘分支可以增强组件的纹理,并增强增强图像的细节。在采用LEF后,mAP从77.6%增加到78.0%,表明捕捉低频分量有助于获得图像中的潜在信息。
最后,作者的模型在mAP上从76.4%提高到78.0%,仅降低了0.4个FPS。
1.8 Q-YOLO
与近年来大规模视觉transformers(ViTs)的巨大进步相比,基于卷积神经网络(CNNs)的大规模模型仍处于早期状态。Q-YOLO用于实时目标检测的高效推理
实时物体检测在各种计算机视觉应用中起着至关重要的作用。然而,由于高计算和内存需求,在资源受限的平台上部署实时目标检测器带来了挑战。本文描述了一种低比特量化方法来构建高效的onr-stage检测器,称为Q-YOLO,它可以有效地解决传统量化YOLO模型中由激活分布不平衡引起的性能下降问题。Q-YOLO引入了一种完全端到端的训练后量化(PTQ)流水线,该流水线具有精心设计的基于单边直方图(UH)的激活量化方案,该方案通过最小化均方误差(MSE)量化误差来通过直方图分析确定最大截断值。
在COCO数据集上的大量实验证明了Q-YOLO的有效性,优于其他PTQ方法,同时在精度和计算成本之间实现了更有利的平衡。这项研究有助于推动在资源有限的边缘设备上高效部署对象检测模型,实现实时检测,同时减少计算和内存开销。
实时物体检测是各种计算机视觉应用中的关键组成部分,如多物体跟踪、自动驾驶和机器人。实时物体探测器的发展,特别是基于YOLO的检测,在精度和速度方面取得了显著的性能。
回归正文,例如,YOLOv7-E6目标检测器在COCO 2017上实现了55.9%的mAP,在速度和精度方面均优于基于变换器的检测器SWINL级联掩码R-CNN和基于卷积的检测器ConvNeXt XL级联掩码R-CNN。尽管它们取得了成功,但对于资源有限的边缘设备(如移动CPU或GPU)上的实时目标检测器来说,推理过程中的计算成本仍然是一个挑战,限制了它们的实际使用。
在网络压缩方面已经做出了大量努力来实现高效的在线推理。方法包括增强网络设计、进行网络搜索、网络修剪和网络量化。尤其是量化,通过使用低位格式表示网络,在人工智能芯片上的部署变得非常流行。有两种主流的量化方法,量化感知训练(QAT)和训练后量化(PTQ)。尽管QAT通常比PTQ获得更好的结果,但它需要在量化过程中对所有模型参数进行训练和优化。对预训练数据和大量GPU资源的需求使得QAT的执行具有挑战性。另一方面,PTQ是用于量化实时目标检测的更有效的方法。
为了检查实时目标检测的低位量化,首先使用最先进的目标检测器YOLOv5建立PTQ基线。通过对COCO 2017数据集的实证分析,观察到量化后的性能显著下降,如上表所示。例如,采用Percentile的4位量化YOLOv5s仅实现7.0%mAP,与原始实值模型相比,导致30.4%的性能差距。
发现量化YOLO的性能下降可归因于激活分布的不平衡。如下图所示,观察到接近下限的值的高浓度,并且在零以上的发生率显著降低。当使用诸如MinMax之类的固定截断值时,以极低的概率表示激活值将在有限的整数位宽内消耗相当多的比特,从而导致信息的进一步丢失。
鉴于上述问题,我们介绍了Q-YOLO,一种用于实时目标检测的完全端到端PTQ量化架构,如下图所示。
Q-YOLO量化YOLO模型的主干、颈部和头部模块,同时对权重采用标准MinMax量化。为了解决激活分布不平衡的问题,引入了一种新的方法,称为基于单边直方图的(UH)激活量化。UH通过直方图迭代地确定使量化误差最小化的最大截断值。该技术显著减少了校准时间,并有效地解决了量化引起的差异,优化了量化过程以保持稳定的激活量化。通过减少激活量化中的信息损失,确保了准确的目标检测结果,从而实现了精确可靠的低比特实时目标检测性能。
网络量化过程。首先回顾了训练后量化(PTQ)过程的主要步骤,并提供了详细信息。首先,使用全精度和浮点算法对权重和激活进行训练或将网络提供为预训练模型。随后,权重和激活的数值表示被适当地变换用于量化。最后,将完全量化的网络部署在整数算术硬件上或在GPU上模拟,在保持合理精度水平的同时,能够在减少内存存储和计算需求的情况下进行高效推理。
量化范围设置。量化范围设置是建立量化网格的上限和下限限幅阈值的过程,分别表示为u和l。范围设置中的关键权衡在于两种类型的误差之间的平衡:剪裁误差和舍入误差。如下等式所述。
当数据被截断以适应预定义的网格限制时,会出现剪裁错误。这样的截断导致信息损失和所得到的量化表示的精度降低。另一方面,由于舍入操作过程中引入的不精确性,会出现舍入误差,如下等式所述。
这种误差可能随着时间的推移而累积,并对量化表示的总体精度产生影响。以下方法在两个量之间提供了不同的权衡。
MinMax
在实验中使用MinMax方法进行权重量化,其中削波阈值lx和ux公式化为:
这样就不会产生剪切错误。然而,这种方法对异常值很敏感,因为强异常值可能会导致过多的舍入误差。
均方误差(MSE)
缓解大异常值问题的一种方法是采用基于MSE的范围设置。在该方法中,确定使原始张量和量化张量之间的均方误差(MSE)最小化的lx和ux:
Unilateral Histogram-based (UH) Activation Quantization
为了解决激活值不平衡的问题,提出了一种新的方法,称为基于单边直方图的(UH)激活量化。首先通过校准数据集对正向传播后的激活值进行了实证研究。如上面的图所示,在下界附近观察到值的集中分布,同时在零以上出现的次数明显减少。对活化值的进一步分析表明,-0.2785的经验值作为下限。这种现象可归因于YOLO系列中频繁使用Swish(SILU)激活功能。
实验及可视化激活值量化对称分析的比较。不对称表示使用非对称激活值量化方案,而对称表示激活值的对称量化。
为了实际验证量化方案带来的加速效益,在GPU和CPU平台上进行了推理速度测试。对于GPU,选择了常用的GPU NVIDIA RTX 4090和NVIDIA Tesla T4,它们通常用于计算中心的推理任务。由于CPU资源有限,只测试了英特尔的产品i7-12700H和i9-10900,这两款产品都具有x86架构。对于部署工具,选择了TensorRT和OpenVINO。整个过程包括将torch框架中的权重转换为具有QDQ节点的ONNX模型,然后将它们部署到特定的推理框架中。推理模式设置为单图像串行推理,图像大小为640x640。由于目前大多数推理框架只支持对称量化和8位量化,不得不选择对称的8位量化方案,这导致与非对称方案相比,精度下降幅度极小。如下表所示,加速度非常显著,尤其是对于较大的YOLOv7模型,其中使用GPU时的加速比甚至超过了全精度模型的3倍。这表明在实时检测器中应用量化可以带来显著的加速。
1.9 Gold-YOLO
这里本文提出了一种全新的信息交互融合机制:信息聚集-分发机制(Gather-and-Distribute Mechanism)。该机制通过在全局上融合不同层次的特征得到全局信息,并将全局信息注入到不同层级的特征中,实现了高效的信息交互和融合。超越现有的YOLO系列!华为诺亚提出Gold-YOLO,聚集-分发机制
NeurIPS23论文地址:
https://arxiv.org/abs/2309.11331
PyTorch代码:
https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO
MindSpore 代码:
https://gitee.com/mindspore/models/tree/master/research/cv/Gold_YOLO
YOLO系列模型面世至今已有8年,由于其优异的性能,已成为目标检测领域的标杆。在系列模型经过十多个不同版本的改进发展逐渐稳定完善的今天,研究人员更多关注于单个计算模块内结构的精细调整,或是head部分和训练方法上的改进。但这并不意味着现有模式已是最优解。
当前YOLO系列模型通常采用类FPN方法进行信息融合,而这一结构在融合跨层信息时存在信息损失的问题。针对这一问题,我们提出了全新的信息聚集-分发(Gather-and-Distribute Mechanism)GD机制,通过在全局视野上对不同层级的特征进行统一的聚集融合并分发注入到不同层级中,构建更加充分高效的信息交互融合机制,并基于GD机制构建了Gold-YOLO。在COCO数据集中,我们的Gold-YOLO超越了现有的YOLO系列,实现了精度-速度曲线上的SOTA。
精度和速度曲线(TensorRT7)
精度和速度曲线(TensorRT8)
传统YOLO的问题
在检测模型中,通常先经过backbone提取得到一系列不同层级的特征,FPN利用了backbone的这一特点,构建了相应的融合结构:不层级的特征包含着不同大小物体的位置信息,虽然这些特征包含的信息不同,但这些特征在相互融合后能够互相弥补彼此缺失的信息,增强每一层级信息的丰富程度,提升网络性能。
原始的FPN结构由于其层层递进的信息融合模式,使得相邻层的信息能够充分融合,但也导致了跨层信息融合存在问题:当跨层的信息进行交互融合时,由于没有直连的交互通路,只能依靠中间层充当“中介”进行融合,导致了一定的信息损失。之前的许多工作中都关注到了这一问题,而解决方案通常是通过添加shortcut增加更多的路径,以增强信息流动。
然而传统的FPN结构即便改进后,由于网络中路径过多,且交互方式不直接,基于FPN思想的信息融合结构仍然存在跨层信息交互困难和信息损失的问题。
Gold-YOLO:全新的信息融合交互机制
Gold-YOLO架构
因此我们提出了一种全新的信息交互融合机制:信息聚集-分发机制(Gather-and-Distribute Mechanism)。该机制通过在全局上融合不同层次的特征得到全局信息,并将全局信息注入到不同层级的特征中,实现了高效的信息交互和融合。在不显著增加延迟的情况下GD机制显著增强了Neck部分的信息融合能力,提高了模型对不同大小物体的检测能力。
GD机制通过三个模块实现:信息对齐模块(FAM)、信息融合模块(IFM)和信息注入模块(Inject)。
- 信息对齐模块负责收集并对齐不同层级不同大小的特征
- 信息融合模块通过使用卷积或Transformer算子对对齐后的的特征进行融合,得到全局信息
- 信息注入模块将全局信息注入到不同层级中
在Gold-YOLO中,针对模型需要检测不同大小的物体的需要,并权衡精度和速度,我们构建了两个GD分支对信息进行融合:低层级信息聚集-分发分支(Low-GD)和高层级信息聚集-分发分支(High-GD),分别基于卷积和transformer提取和融合特征信息。
此外,为了促进局部信息的流动,我们借鉴现有工作,构建了一个轻量级的邻接层融合模块,该模块在局部尺度上结合了邻近层的特征,进一步提升了模型性能。我们还引入并验证了预训练方法对YOLO模型的有效性,通过在ImageNet 1K上使用MAE方法对主干进行预训练,显著提高了模型的收敛速度和精度。
实验结果
我们在COCO数据集上测试了模型的精度,并使用Tesla T4+TensorRT 7测试了模型的速度,结果显示我们的Gold-YOLO在精度-速度曲线上取得了当前的SOTA结果。
同时我们针对Gold-YOLO中不同分支和结构对模型精度和速度的影响,进行了相应的消融实验。
为了验证GD机制在不同模型和任务中的鲁棒性,我们还进行了以下实验
- 实力分割任务
将Mask R-CNN中的Neck部分替换为GD,并在COCO instance 数据集上进行训练和测试
model | Neck | FPS | Bbox mAP | Bbox mAP:50 | Segm mAP | Segm mAP:50 |
MaskRCNN-ResNet50 | FPN | 21.6 | 38.2 | 58.8 | 34.7 | 55.7 |
MaskRCNN-ResNet50 | AFPN | 19.1 | 36.0 | 53.6 | 31.8 | 50.7 |
MaskRCNN-ResNet50 | PAFPN | 20.2 | 37.9 | 58.6 | 34.5 | 55.3 |
MaskRCNN-ResNet50 | GD | 18.7 | 40.7 | 59.5 | 36.0 | 56.4 |
- 语义分割任务
将PointRend 中的Neck部分替换为GD,并在Cityscapes 数据集上进行训练和测试
model | Neck | FPS | mIoU | mAcc | aAcc |
PointRend-ResNet50 | FPN | 11.21 | 76.47 | 84.05 | 95.96 |
PointRend-ResNet50 | GD | 11.07 | 78.54 | 85.60 | 96.12 |
pointrend-ResNet101 | FPN | 8.76 | 78.3 | 85.705 | 96.23 |
PointRend-ResNet101 | GD | 11.07 | 80.01 | 86.15 | 96.34 |
- 不同的目标检测模型
将 EfficientDet 中的Neck部分替换为GD,并在COCO数据集上进行训练和测试
model | Neck | FPS | AP |
EfficientDet | BiFPN | 6.0 | 34.4 |
EfficientDet | GD | 5.7 | 38.8 |
2.0 ADA-YOLO
一种内存高效的 ADA-YOLO 模型,该模型利用新颖的架构和训练策略来增强医学图像中多目标检测的鲁棒性。通过在各种数据集上的实验,证明了 ADA-YOLO 在处理医学图像中的遮挡相关挑战方面具有优越性能。模型在准确局部化和分类多个目标方面,即使在遮挡条件下也表现出卓越性能。YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
生物医学图像分析中的目标检测和定位至关重要,尤其是在血液学领域,检测和识别血细胞对于诊断和治疗决策至关重要。虽然基于注意力的方法在各个领域中目标检测方面取得了显著的进展,但由于医学影像数据集的独特挑战,其在医学目标检测中的应用受到了限制。
为了解决这个问题,作者提出了一种名为ADA-YOLO的轻量级但有效的医学目标检测方法,该方法将注意力机制与YOLOv8架构相结合。作者提出的这种方法通过自适应头模块利用动态特征定位和并行回归进行计算机视觉任务。
作者在BCCD(血液细胞计数和检测)数据集上进行了实证实验,以评估ADA-YOLO的有效性。结果表明,在BCCD数据集上,与YOLOv8相比,ADA-YOLO在mAP(平均平均精确率)方面取得了更好的性能,而所需的资源比YOLOv8少3倍以上。这表明作者提出的这种方法是有效的。
此外,作者提出的这种方法具有轻量级的特点,使其适合在资源受限的环境中部署,例如移动设备或边缘计算系统,最终可能提高血液学领域的诊断和治疗结果。
1 Introduction
近年来,目标检测技术取得了显著的进展,使得可以实现对解剖结构、病变或异常的自动识别和定位。多年来,目标检测方法取得了重大的进步,这是由于大规模的带有标注的数据集的出现和深度学习技术的开发所驱动的。这些技术在改善医疗诊断和治疗结果方面展示出巨大的潜力。
在深度学习出现之前,医学影像中的目标检测传统方法依赖于手工特征和机器学习算法。这些方法,如模板匹配、边缘检测器、活性形状模型和变形模型,受到复杂结构、类间变异性以及有限泛化能力的影响。随着卷积神经网络(CNNs)的出现,目标检测发生了翻天覆地的变化,使得可以从原始图像数据端到端地学习特征表示,从而引领了基于深度学习的目标检测框架的发展,并取得了显著的性能改进。
基于区域的Faster R-CNN 是第一批成功的基于深度学习的目标检测框架之一,并在医学影像领域得到应用,用于检测肿瘤、器官和解剖标志。例如,Wang等人开发了 ChestX-ray8 数据库,这是一个用于弱监督分类和定位胸部疾病的胸片 X 光的大型数据集。他们的研究展示了深度学习算法准确检测肺结节的潜力,其准确率达到了令人印象的 97.3%。Gulshan 等人开发了一种深度学习算法,在检测糖尿病视网膜病变方面实现了 94% 的准确率。这展示了目标检测技术作为早期检测和诊断该条件的工具的潜力。其他潜在的应用已经得到一定程度的探索。单次方法如 YOLO 和 SSD 实现了实时推理速度,并已应用于病变检测、细胞检测和器官定位。
基于注意的方法,这些方法选择性地关注图像的相关区域以提高检测准确性,在医学目标检测中最近开始受到关注,利用特定领域的知识和规范来提高检测性能。迁移学习,涉及在大规模数据集(如 ImageNet)上预训练的模型上微调,在医学影像数据集上即使有限的数据训练也促进了各种医学应用中强大和准确的检测器的发展。
虽然目标检测技术在医学领域具有巨大的潜力,但也需要解决一些挑战。其中,一个挑战是训练深度学习算法需要大量带有标注的数据。收集和标注医学数据可能耗时且昂贵。其次,深度学习算法的可解释性仍然是一个问题,因为理解这些算法的决策过程对于医学专业人士来说可能是具有挑战性的。
简而言之,本文的主要贡献如下:
- 提出了一个轻量级但强大的目标检测模型,称为ADA-YOLO,其有效性已经通过实证实验得到证明,该模型在 mAP(平均平均精确率)方面可以超过 YOLOv8,同时还能在精确度和召回率指标之间实现惊人的平衡;同时,在训练过程中,该模型具有内存效率,这展示了其在便携式场景和云边协作中的巨大潜力。
- 深入研究了 YOLOv8 架构的复杂性,并设计了一个高效的目标检测组件,称为 自适应头(AH),它结合了 动态视觉特征定位(DVF)和 联合引导回归模块(JGR),使得边界框回归和分类预测可以并行计算,从而实现更精确的物体定位,进而提高检测精度,同时由于并行机制,实现了更好的计算效率。
- 在广泛的实验中,证明了所提出的框架在多类图像分类方面具有卓越的性能,同时也展示了它在处理多尺度目标检测任务方面的能力,打破了 YOLOx 模型在面临小物体、重叠和类别不平衡现象时的技术瓶颈。
2 Related Work
R-CNN
基于区域的卷积神经网络,简称 R-CNNs,是深度学习模型中用于图像目标检测的一种流行类别。R-CNN 架构的基本思想是首先使用选择性搜索算法在图像中识别感兴趣区域(RoIs)。这些 RoIs 然后被输入到卷积神经网络(CNN)中以提取特征。提取的特征被用于分类物体并改进 RoIs。原始的 R-CNN 模型是由 [7] 提出的,并在当时的目标检测基准测试上实现了最先进的性能。然而,由于它需要为每个 RoI 运行 CNN,因此其计算复杂度成为了瓶颈,使其在实时应用中不切实际。为了提高效率和准确性,后续的一些工作已经解决了这个局限性。
快速 R-CNN [13] 通过添加 RoI 池化层改进了原始 R-CNN,这使得网络可以进行端到端的训练。这意味着分类和边界框回归可以一起学习,而不是像原始 R-CNN 那样分别学习。此外,快速 R-CNN 消除了将 RoIs 转换为固定大小的需求,这是原始 R-CNN 中的一个重要限制,导致特征表示不佳。
R-CNN 的另一个重大改进是在 2016 年提出的 Faster R-CNN。Faster R-CNN 引入了一个 Region Proposal Network(RPN),它可以直接从图像特征中学习目标 Proposal ,从而消除了单独选择搜索算法的需要。RPN 被训练成输出一组候选目标边界框,这些边界框作为后续的 CNN 的 RoIs。通过在 RPN 和 CNN 之间共享卷积特征,Faster R-CNN 实现了比以前 R-CNN 模型更快的计算和更高的准确率与实时性能。
除了 Fast R-CNN 和 Faster R-CNN,还有许多其他 R-CNN 变体已经创建出来,每个都有独特的贡献。例如,由 Kaiming He 等人于 2017 年提出的 Mask R-CNN,将 R-CNN 模型扩展到也可以执行实例分割。这涉及到为每个目标实例预测一个掩码,除了其边界框。因此,可以检测出复杂的形状和被遮挡的目标实例,这在仅使用边界框检测是做不到的。
级联 R-CNN 是一种使用级联 R-CNN 改进目标 Proposal 准确性的变体。级联 R-CNN 的第一阶段产生大量具有高召回率但低精确度的 Proposal 。这些 Proposal 随后通过后续阶段逐步改进,以逐渐提高召回率和精确度。
尽管 R-CNNs 取得了成功,但仍然存在一些局限性和挑战。其中一个局限性是它们的计算要求。虽然 Fast R-CNN 和 Faster R-CNN 一定程度上解决了这个局限性,但它们仍然需要大量的计算资源,使其在低功耗设备上的实时应用不适用。
为了克服这个挑战,研究行人正在开发更高效的 R-CNNs,例如 EfficientDet 和 YOLOv8,它们可以在有限的计算资源下实现高精度。另一个与小目标检测相关的挑战是,R-CNNs 往往难以检测小物体,这可能导致假阴性或不准确的边界框。解决这个问题需要像图像金字塔这样的方法,涉及在不同分辨率下缩放输入图像,或者将多尺度特征集成在一起,以更好地捕捉小物体。
Yolov8 Model
2.2.1 Model Architecture
YOLOv8
Backbone。 YOLOv8 中的 Backbone 网络充当特征提取器,通常使用卷积神经网络(CNN)架构,如 Darknet、CSPDarknet 或 CSPDarknet-tiny 等。它的主要功能是从输入图像中提取特征,这些特征用于后续的任务,如目标检测。
通过一系列卷积和池化操作, Backbone 网络逐步减少特征图的空间维度,同时增加这些特征图的深度。这个过程旨在捕捉不同层次的特征,有效允许神经网络捕捉和表示输入图像中不同复杂性和尺度的特征。
Neck。颈是一个可选组件,用于进一步处理 Backbone 网络提取的特征图。其主要目的是集成不同层次的特征信息,以提高目标检测的性能。通常,颈包括各种操作,如卷积、上采样和下采样,旨在合并具有不同分辨率的特征图。这种集成是为了提高网络捕捉目标物体上下文和详细信息的能力。
Head。在目标检测任务中,头是一个关键组件,负责生成边界框、分类概率和目标属性。头通常由卷积层和全连接层组成,用于从特征图中提取与检测到的物体位置和分类标签相关的信息。生成的边界框可能需要经过后处理步骤,如非极大值抑制,以获得最终的目标检测结果。
2.2.2 Prediction
对于每个单元格,YOLO 预测边界框及其置信度分数。这些预测包括边界框的预测中心坐标(x, y)、预测的宽度和高度(w, h)以及置信度(置信度分数)。其中,预测的中心坐标是相对于单元格上左角的上标值,单位是细胞大小与图像大小的比值。
预测的宽度和高度是归一化的比率,以整个图像的宽度和高度(即 w 和 h 分别除以图像 w 和 h,使得最终的 w 和 h 落在 0 到 1 的范围内)。YOLO 将目标检测视为回归问题,允许卷积神经网络结构直接从输入图像中预测边界框和分类概率。
2.2.3 Loss Function
为了更好地表述类别不平衡的情况,将DFL集成到原始 YOLOv8 框架中。DFL 是一种增强版的 Focal Loss,旨在解决机器学习任务中的类别不平衡问题,尤其是在目标检测和分类的背景下。DFL 旨在通过根据样本的类别为其分配不同的权重并提供一个可调整的超参数的有效方法来处理不平衡的数据集。
DFL 的数学表达式如下:
Ensemble learning
集成学习通过结合多个单个模型的预测来提高模型的泛化性能,这些模型可以是同质的或异质的,并且可以分别使用不同的数据集进行训练。集成学习的优点在于,它可以利用每个模型的优势,以实现更好的预测准确性。
此外,当多个模型集成在一起时,可以应用某些策略,如投票或加权求和,来进一步增强集成模型的性能。
在深度学习和集成学习相结合之前,传统集成学习模型主要使用了决策树、支持向量机(SVMs)、k-近邻方法(k-NN)等。然而,这些模型存在一定的局限性,如无法表达复杂的非线性关系或有效地处理大规模数据集,导致在实际应用中性能受限。
随着深度学习的发展,人们开始探索将深度学习模型与集成学习相结合,希望通过深度学习模型良好的特征学习和拟合能力来提高集成学习的性能。这样的深度集成学习模型可以更好地处理复杂的非线性关系,表达复杂的模式,并有效地处理大规模数据集。
基于模型集成的方法。Bagging 和 Boosting 方法涉及训练多个模型并组合它们。Bagging 通过引入随机性来减少过拟合,而 Boosting 则调整权重以提高鲁棒性;Stacking 和基于负相关的方法:这两种方法都涉及将多个基础模型合并为一个元模型。Stacking 训练多个基础模型并使用元模型集成输出,而基于负相关的方法则引入具有负相关性的模型以降低方差并提高泛化性。
基于模型复杂度的方法。显式集成神经网络训练多个神经网络模型并显式地组合它们的输出。这创建了更强大的元模型;隐式集成神经网络涉及训练单个模型,并通过微调其参数创建多个“子模型”,然后将它们的输出组合在一起。这种方法也可以提高泛化性。
基于训练数据的方法。基于袋ging和boosting的方法指的是处理训练数据的方法。Bagging 引入了重采样技术来随机抽样训练数据,从而减少过拟合。Boosting 调整权重以使每个模型专注于前一个模型中具有更高错误率的样本,以更好地泛化;Stacking 和基于负相关的方法采用了多种类型的模型。Stacking 引入了多个基础模型以形成元模型,而另一个方法则创建了具有负相关性的模型以降低方差。
基于算法方面的方法。Boosting 和 Stacking 在算法层面上相似。Boosting 通过加权技术优化算法性能,而 Stacking 通过将多个算法结合到一个新颖的算法结构中,整合不同的算法优势。基于神经网络的方法同时训练和调整神经网络模型,包括显式和隐式技术。如前所述,显式技术涉及直接训练多个神经网络模型并组合它们,而隐式技术涉及微调单个神经网络模型的参数并在此基础上构建。
为了充分发挥集成学习的优势,作者主要采用堆叠方法,并在第4节中进行实验。
3 Methodology
YOLOv8 Object Detection Algorithm
图3显示了 YOLOv8 的详细架构。YOLOv8 采用了与前一个模型 YOLOv5 类似的 Backbone 网络,但在 CSPLayer(现在称为 C2f 模块)方面取得了显著改进。这个模块的主要目标是通过融合高层次特征和上下文信息来提高检测精度。YOLOv8 框架使用单个神经网络同时预测边界框和分类概率,简化了目标检测过程。与基于 Anchor 点的机制和特征金字塔网络相结合,YOLOv8 特别擅长在不同尺度下检测目标。
YOLOv8 在医学目标检测中的工作流程包括几个关键步骤。首先,将输入的医学图像进行预处理,以确保与 YOLOv8 模型兼容。然后,图像经过神经网络,其中特征提取和目标检测以统一的方式进行。YOLOv8 将输入图像分成网格,并分配每个网格单元的边界框,预测目标类别和置信度分数。值得注意的是,使用多个 Anchor 框增强了模型准确定位和分类不同大小物体的能力。
后续处理步骤,例如非极大值抑制,可以进一步优化输出,确保冗余检测被消除,并保留最准确的边界框。
在医学目标检测的背景下,YOLOv8 具有几个优势。其实时处理能力使其适用于需要及时检测的应用,例如在医学图像中识别异常。此外,模型处理多类别检测的能力和在不同成像条件下的鲁棒性使其在具有复杂视觉数据的医学场景中具有有效性。
然而,将 YOLOv8 适应于医学影像的细微之处需要考虑特定的挑战,例如需要专业数据集和微调以适应 YOLOv8。此外,计算机视觉和医学专家之间的持续研究和合作对于进一步优化 YOLOv8 的性能至关重要。
Adaptive Head
作者提出了一种基于 YOLOv8 的有效架构,该架构通过一个可适应的 Head 进行微调,该 Head 针对下游任务进行自适应。在标准的计算机视觉任务中, Head 将问题建模为基于 Anchor 点的预测。
具体而言,检测模型使用 Anchor 框,这些 Anchor 框是不同大小和长宽比预定义的边界框。通过预测这些 Anchor 框的偏移量和缩放因子, Head 能够准确地定位各种大小和形状的物体。在实际场景中,这种特性由于输入尺寸的多样性和随机性,可能比简单的检测方法更具有优势。例如,当输入尺寸多样且随机时,非自适应的检测方法可能需要数十次图像预处理或超参数调整才能适应输入。
相反,作者的方法可以自动地根据输入形状动态生成 Anchor 框,称为动态视觉特征定位。这使得模型能够适应不同的输入分辨率和长宽比,使其在检测不同场景下的物体时更加通用和鲁棒。与 [27] 不同,作者删除了激活层,以保留更多的信息在中间张量中,以更好地完全捕捉传递语义,同时提高了一定的计算效率。
同样重要的是,由于预定义的边界框属性,检测问题被简化为一个简单的回归问题,即关于尺度和偏移量的回归。动态 Anchor 框设置使得模型能够挖掘图像中存在的细粒度信息。该架构也利用动态视觉特征定位(DVF)模块来提高训练稳定性和收敛速度,如图所示。DVF模块对预测的边界框坐标进行自适应正则化,使模型能够学习为不同物体大小适当调整预测框的大小。
联合引导回归模块(JGRM)是同时计算分类和边界框任务中的联合分数的关键组件。作者观察到不同目标目标之间的性能(或分数)存在很大差异,这导致了归纳偏差现象,原因是分类预测和边界框回归的分离。这可能导致在复杂场景中检测器的鲁棒性降低。例如,给定一个具有不同类型和不同大小的细胞的图像,模型可能会首先检测边界框,然后将分类预测结果融合,在此过程中产生了间隙。
简而言之,在复杂检测环境中分别训练边界框回归和分类预测是不可能的。受到 [28] 的启发,作者采用分布聚焦损失来优化目标检测中存在的回归任务。它是一种基于边界框和类别预测分别训练的经典交叉熵函数的改进版本。
正如前面提到的,动态视觉特征定位(DVF)旨在为图像特征提供更精确的近似值,这个想法类似于 [29],设计了一个复杂的注意力机制来增强检测器的特征表示,考虑到不同的特征空间位置、任务等。在处理一个属于实值空间、具有维度 L、S 和 C 的特征张量 F 的上下文中,作者考虑应用自注意力机制。这些机制旨在通过关注数据的有关方面来增强特征表示。
4 Experiments
Dataset Description
BCCD 数据集是一个全面且有益的图像集合,包含 12,500 张高分辨率显微镜图像,这些图像是由专业血液学家 captured 的。该数据集提供了血细胞形态的多样化范围,包括正常和异常细胞,并捕获了各种形状、大小和染色特征。图像代表了四种主要类型的血细胞:红细胞(RBCs)、白细胞(WBCs)、血小板,以及这些细胞的组合。每个图像都有精确的边界框标注,指示每个细胞的类型和位置。
与此同时,当适用时,相应的元数据,如细胞计数、分布和诊断信息等,可以提供对数据的更全面分析。标注作为训练和评估算法的真实标签,确保了准确的标签。研究行人和从业者可以使用这个数据集进行各种应用,包括细胞计数、细胞分类和异常检测。它作为评估图像处理算法和针对血细胞分析的机器学习技术的性能的基准。
因此,BCCD 数据集在血液学领域的医学诊断、研究和教育方面具有潜在的先进性。它使得可以开发出能够协助医疗保健专业行人快速、准确地分析血细胞的自动化系统,这可以引领临床决策的改善和患者护理的提高。
探索数据集可以对模型输入有一个概述,这涉及到观察图像的代表样本并分析元数据,例如细胞类型和异常的分布。为了说明类别的分布,作者在图 3 中绘制了一个直方图。在图中,显然 'RBC' 类占最大比例,数量约为 2500,其次是 'WBC' 类和 'Platelets' 类。
Image Preprocessing
在分析数据集之前,对图像进行预处理是非常重要的步骤。这包括将图像缩放到确保图像尺寸一致,归一化像素值以考虑光线和对比度的变化,以及根据实验目标考虑其他预处理技术,如去噪或直方图均衡化。预处理是必要的,以提高数据的质量并减少噪声,以便进行准确的分析。
通常,预处理是通过以下三种方式进行的:
几何变换:这涉及诸如旋转、缩放、裁剪和镜像等操作,用于在不同尺度或角度下改变图像的大小和方向,用于训练和测试。
滤波和降噪:应用各种滤波和降噪算法,如高斯滤波和中值滤波,以减少噪声并提高图像质量。
颜色调整和对比增强:这包括调整图像的亮度、对比度、饱和度和色调,以增强其视觉吸引力和可识别性。
Experiment Protocols
本论文的实验包括硬件和软件配置。分布式训练环境使用英特尔 11 代酷睿 i7-11800H CPU 和 NVIDIA RTX 3050Ti 以及 32.0 GB VRAM(视频随机访问内存)。在软件配置方面,使用 PyTorch 2.1.0 进行多进程任务并利用 GPU。
Evaluation Metrics
评估指标包括几个组成部分:精确率、召回率和 mAP(平均平均精确率)。
精确率:精确率是模型做出正面预测的准确性指标。它量化了所有做出正面预测中真实阳性预测的比例。公式如下:
Results
实验结果如下:与 Faster R-CNN(快速 R-CNN)、SSD(快速 SSD)、YOLOv5(YOLO v5)、YOLOv7(YOLO v7)和 YOLOv8(YOLO v8)等基准相比,提出的 ADA-YOLO 方法。
RT-DETR(实时检测 Transformer)是一种基于 Transformer 架构和端到端学习的新颖目标检测方法,与基于区域 Proposal 的传统目标检测方法(如 Faster R-cnn)不同。RT-DETR 试图通过完全消除手动设计组件(如 Anchor 框和非极大值抑制)来使目标检测的训练和推理更加简单和高效。RT-DETR 使用自注意力机制全局编码一组特征向量,并引入一个特殊的"类别嵌入"向量来表示没有目标的地点。
在训练过程中,RT-DETR 最小化预测框与实际框之间的损失,同时尝试将"无目标"向量匹配到实际无目标位置。这种端到端学习方法使得 RT-DETR 避免了传统目标检测方法中需要手动调整的超参数,并易于应用于具有不同大小和数量的目标检测任务。
ADA-YOLO 模型针对医学影像中的多目标检测,解决了物体遮挡或截断等在医学影像中常见的挑战性问题。如图 4 所示,提出的检测方法可以成功检测到任何大小的红细胞缺失,与基准相比是一个很大的改进。ADA-YOLO 在所有类别中具有 0.918 的召回率,优于基准。
结果展示了 ADA-YOLO 在医学目标检测中揭示更多阳性实例的能力。通过更准确地识别出更高的真实阳性病例比例,即使存在遮挡,作者的模型也能显著提高疾病检测,减少诊断错误,并可以转化为更早、更准确的诊断。
与此同时,除了卓越的定量性能外,ADA-YOLO 在内存使用方面也非常高效。为了证明这一点,主要实验已经进行,并显示 YOLOv8 模型预测所有样本需要 26.9 MB 的内存和 35.1 GFLOPs 的计算能力,而作者的方法只需要 8.7MB 的内存,比 YOLOv8 节省了 3 倍的内存,并仅计算了 9.4 GFLOPs。
作者的模型在内存使用方面的出色效率是精心设计和优化的结果。通过有策略地实现紧凑而强大的架构特征,作者可以预期该模型在便携式医疗设备、边缘计算环境和资源受限的医疗设置中的实际应用,最终提高高级医学影像分析的可用性和负担能力。
5 Performances on Other Datasets
为了进一步证明 ADA-YOLO 的性能,作者在 MAR20 数据集上进行了地面实验,并将在图 6 中可视化结果。首先,作者按照第 4.1 节中提到的类似 Pipeline 预处理输入图像,然后进行模型训练,最后在测试数据集上进行推理。
MAR20 目标检测数据集是一个综合的带有标注图像集合,旨在促进目标检测算法的训练和评估。它涵盖了各种实际场景,包括城市街道景观、自然景观和室内环境,确保了数据集适用于各种实际设置。该数据集中的每个图像都带有多个物体类别的精确位置和边界框信息,如行人、车辆和交通标志。
这种详细的标注为算法训练和评估提供了有价值的支持。该数据集的独特之处在于,它包括了真实场景,增强了数据集的实用性,使开发行人可以评估算法的鲁棒性和泛化能力。MAR20 数据集适合训练和评估各种目标检测算法。
与 YOLOv8 相比,作者的模型由于其经济内存消耗和在大数据集上的同等性能而具有可适应性。在本实验中,作者可以观察到 ADA-YOLO 在 MAR20 数据集上具有竞争力的结果,所有类别的精度达到 85%,在某些类别(如 A12)的预测准确率甚至可以达到 99.4%。从结果中,作者提出的方法的优点突出:模型参数较少,内存空间较小,但作者的模型可以达到与 Baseline 相同的性能。
值得注意的是,该实验只包含一组超参数,在模型微调后,作者认为其性能可以更好,最终可以大大超过 Naive 方法,如图 7(a) 所示。如第 2.2.3 节所述,总体损失分为三个组成部分:边界框损失、分布对焦损失和分类损失。从图中可以看出,随着训练周期增加,模型损失和作者的模型(橙色线)损失都持续减小并收敛到某个位置,而作者的模型(橙色线)所需的参数较少,内存使用较少。这种现象强烈地表明了新颖架构的积极影响。
6 Conclusions and Future Work
在本文中,作者提出了一个内存高效的 ADA-YOLO 模型,该模型利用新颖的架构和训练策略来增强医学图像中多目标检测的鲁棒性。通过在各种数据集上的实验,证明了 ADA-YOLO 在处理医学图像中的遮挡相关挑战方面具有优越性能。模型在准确局部化和分类多个目标方面,即使在遮挡条件下也表现出卓越性能,因此,由于其创新的 Adaptive Head 设计,它在计算机辅助诊断检测方面具有广阔的未来。
然而,这项工作也有一些局限性:首先,大数据集仍然需要消耗大量的训练和推理时间,这可能取决于实际环境中的硬件;其次,模型可解释性可能是一个潜在的副作用。通过智能利用深度机制和领域知识,如多模型嵌入,模型可以变得更加可靠和可解释,为作者的未来工作铺平道路。
7 Conclusions and Future Work
在本文中,作者提出了一种内存高效的 ADA-YOLO 模型,该模型利用新颖的架构和训练策略来增强医学图像中多目标检测的鲁棒性。通过在各种数据集上的实验,证明了 ADA-YOLO 在处理医学图像中的遮挡相关挑战方面具有优越性能。模型在准确局部化和分类多个目标方面,即使在遮挡条件下也表现出卓越性能,因此,由于其创新的 Adaptive Head 设计,它在计算机辅助诊断检测方面具有广阔的未来。
然而,这项工作也有一些局限性:首先,大数据集仍然需要消耗大量的训练和推理时间,这可能取决于实际环境中的硬件;其次,模型可解释性可能是一个潜在的副作用。通过智能利用深度机制和领域知识,如多模型嵌入,模型可以变得更加可靠和可解释,为作者的未来工作铺平道路。
2.1 Micro-YOLO
带来 探索目标检测压缩模型的有效方法
论文地址:https://www.scitepress.org/Papers/2021/102344/102344.pdf
深度学习模型在目标检测的性能上取得了重大突破。然而,在传统模型中,例如Faster R-CNN和YOLO,由于计算资源有限和功率预算紧张,这些网络的规模使其难以部署在嵌入式移动设备上。
深度学习领域的加速发展极大地促进了目标检测的发展,其在人脸检测、自动驾驶、机器人视觉和视频监控等方面的广泛应用。随着目标检测的蓬勃发展,近年来提出了几种深度卷积神经网络模型,例如R-CNN、SSD和YOLO等。然而,随着网络变得越来越复杂,这些模型的规模不断增加,这使得在现实生活中将这些模型部署到嵌入式设备上变得越来越困难。因此,开发一种高效快速的物体检测模型以在不影响目标检测质量的情况下减小参数大小至关重要。
随着目标检测网络系列不断变得更加复杂,减少权重参数和计算成本变得很重要。模型压缩方法分为低秩分解、知识蒸馏、剪枝和量化,其中剪枝已被证明是通过去除冗余参数来降低网络复杂度的有效方法(A survey of model compression and acceleration for deep neural networks)。
为了解决目标检测网络问题,有几种最先进的工作技术可以减少YOLO架构中的参数数量。(YOLO-LITE: a real-time object detection algorithm optimized for non-GPU computers) 开发了YOLO-Lite网络,其中从YOLOv2-tiny中删除了批量归一化层以加速目标检测。该网络在PASCAL VOC 2007和COCO数据集上分别实现了33.81%和12.26%的mAP。(Yolo nano: a highly compact you only look once convolutional neural network for object detection) 创建了一个高度紧凑的网络YOLO-nano,它是一个基于YOLO网络的8位量化模型,并在PASCAL VOC 2007数据集上进行了优化。该网络在PASCAL VOC 2007数据集上实现了3.18M模型大小和69.1%mAP。
因此,研究者就提出了一种新的基于轻量级CNN的目标检测模型,即基于YOLOv3-Tiny的Micro-YOLO,它在保持检测性能的同时显着减少了参数数量和计算成本。研究者建议将YOLOv3-tiny网络中的卷积层替换为深度分布偏移卷积(DSConv:https://arxiv.org/abs/1901.01928v1)和带有squeeze和excitation块的移动反向瓶颈卷积 (MBConv:主要源自于EfficientNet),并设计渐进式通道级剪枝算法以最小化数量参数并最大化检测性能。因此,与原始YOLOv3-tiny网络相比,所提出的Micro-YOLO网络将参数数量减少了3.46倍,乘法累加操作(MAC)减少了2.55倍,同时在COCO数据集上评估的mAP略微减少了0.7%。
Micro-YOLO 为了减小网络的大小,研究者探索了可选择的轻量级卷积层来替代YOLO网络中的卷积层Conv。MobileNet网络采用两个轻量级卷积层(a)DSConv和(b)MBConv。
如上图(a) 所示,DSConv执行两种类型的卷积:(i) 深度卷积和 (ii) 逐点卷积,这可以显著降低网络的模型大小和计算成本。上图(b) 所示,MBConv的结构是一个1×1的channel expansion卷积,然后是深度卷积和一个1×1的channel reduction层。它利用squeeze和excitation块,这是一个分支,由squeeze阶段的全局平均池化操作和excitation阶段的两个小FC层组成在深度卷积和通道之间还原层。由于输出通道的数量不等于输入通道的数量,研究者在MBConv中移除了残差连接,MBConv层在输入和输出处提供紧凑的表示,同时在内部将输入扩展到更高维的特征空间以增加非线性变换的表达能力。因此,与DSconv层相比,MBconv层提供了更好的压缩网络,而不会降低检测精度。
这些层之间的计算成本,即Conv层(Cs)、DSConv层(Cds)和MBConv层(Cmb)可以分别用以下公式表示:
其中k表示内核大小,Cin表示输入通道数,Cout表示输出通道数,W和H表示特征图的宽度和高度,α和β分别表示MBConv中的扩展因子和缩减因子。
Progressive Channel Pruning
在确定新提出的Micro-YOLO网络的架构后,研究者可以通过使用剪枝技术进一步减少权重参数。在提出的工作中,研究者采用了粗粒度剪枝,因为DSConv和MBConv层主要由1×1内核大小组成,这为细粒度剪枝留下了最小的空间。(Rethinking the value of network pruning) 表明修剪后的架构本身,而不是一组继承的“重要”权重,对最终模型的效率更重要,这表明在某些情况下修剪可能是有用的一种架构搜索范式。因此,研究者提出了一种渐进式剪枝方法来在修改后的网络中搜索“更薄”的架构。具体伪代码流程如下:
实验
新提出的框架图
不同卷积类型和相同内核大小的不同输入通道所需的参数数量
不同卷积类型的参数量
内核大小探索结果。不同的条形表示内核大小的不同组合。为简单起见,仅以红色显示最佳内核大小组合
最后看下检测效果:
2.2 Poly-YOLO
首先还是道歉啊 原谅这个 小小搬运工~~~ 搬运工又来了 发现了一个又说自己更快更精确的 yolo~~ 主要解决了Yolov3两大问题
论文地址:https://arxiv.org/pdf/2005.13243.pdf
源代码:https://gitlab.com/irafm-ai/poly-yolo
YOLOv3改进版!与YOLOv3相比,Poly-YOLO的训练参数只有其60%,但mAP却提高了40%!并提出更轻量的Poly-YOLO Lite。
一、背景
目标检测是一个过程,其中包含感兴趣对象的所有重要区域都被限制而忽略背景。通常,目标以一个框为边界,框用其左上角的空间坐标及其宽度和高度表示。这种方法的缺点是对于形状复杂的物体,边界框还包括背景,由于边界框没有紧紧包裹物体,背景会占据很大一部分区域。这种行为会降低应用在边界框上的分类器的性能,或者可能无法满足精确检测的要求。为了避免这个问题,Faster R-CNN或RetinaNet等经典检测器被修改为Mask R-CNN或RetinaMask的版本。这些方法还可以推断实例分割,即边界框中的每个像素都被分类为对象/背景类。这些方法的局限性在于它们的计算速度,它们无法在非高层硬件上达到实时性能。
我们关注的问题是创建一个具有实例分割和中层显卡实时处理能力的精确检测器。
Poly-Yolo实例分割案例
目标检测模型可以分为两组,两级和一级检测器。两级检测器将过程拆分如下。在第一阶段,提出感兴趣的区域(RoI),在随后的阶段,在这些候选的区域内进行边界框回归和分类。一级检测器一次预测边界框及其类别。两级检测器在定位和分类精度方面通常更精确,但在处理方面比一级检测器慢。这两种类型都包含用于特征提取的主干网络和用于分类和回归的头部网络。通常,主干是一些SOTA网络,例如ResNet或ResNext,在ImageNet或OpenImages上进行了预训练。尽管如此,一些方法 也从头开始尝试训练。
今天分享的框架提出了性能更好的YOLOv3新版本,并扩展了名为Poly-YOLO。Poly-YOLO建立在YOLOv3的原始思想的基础上,并消除了它的两个弱点:标签重写和anchor分配不平衡。
Poly-YOLO使用stairstep上采样通过hypercolumn技术聚合轻型SE-Darknet-53主干网中的特征来减少问题,并产生高分辨率的单尺度输出。与YOLOv3相比:Poly-YOLO的可训练参数只有60%,但mAP却提高了40%。更少参数和更低输出分辨率的Poly-YOLO Lite,具有与YOLOv3相同的精度,但体积小三倍,速度快两倍,更适用于嵌入式设备。
今天主要就是说怎么解决Yolov3两大问题。
左图说明了输入图像上的 YOLO 网格,黄点表示检测到的对象的中心。右图说明了检测结果。
第一个问题:标签重写
标签重写是指由于yolo特有的网格负责预测bbox的特点,可能会出现两个物体分配给了同一个anchor,导致仅仅有一个物体被保留负责预测,另一个物体被当做背景忽略了。当输入分辨率越小,物体越密集,物体的wh大小非常接近时候,标签重写现象比较严重。如上图所示,红色表示被重写的bbox,可以看出27个物体有10个被重写了。
具体来说,以416 *416大小的图像为例,在图像分辨率随着卷积下降到13 * 13的特征图大小时,这时候特征图一个像素点的对应是32*32大小的图像patch。而YOLOV3在训练时候,如果出现相同两个目标的中心位于同一个cell,且分配给同一个anchor,那么前面一个目标就会被后面目标重写,也就是说两个目标由于中心距离太近以至于在特征图上将采样成为同一个像素点的时候,这时候其中有个目标会被重写而无法进行到训练当中。
这种现象在coco数据上不明显的原因是bbox分布比较均匀,不同大小物体会分配到不同预测层,标签重写概率比较低。但是在很多实际应用中,比如工业界的特定元件检测时候,物体排布非常紧密,且大小几乎一致,此时就可能会出现标签重写问题了,作者论文指出在Cityscapes数据上该现象也比较明显。
第二个问题:Anchor分配不均衡
yolo系列采用kmean算法聚类得到特定要求的9个anchor,并且以每三个为一组,用于大输出图(检测小物体),中等输出图和小输出图层(检测大物体)的默认anchor。可以看出不同大小的物体会被这三组anchor分配到不同预测层进行预测。
但是这种kmean算法得出的结果是有问题的,在实际项目中也发现了。前面说过大部分特定场景的目标检测数据集,并不是和coco自然场景一样,啥尺度都有,实际项目中大部分物体都是差不多大的,或者说仅仅有特定的几种尺度,此时采用kmean这一套流程就会出现:几乎一样大的物体被强制分到不同层去预测,这个训练方式对网络来说非常奇怪,因为物体和物体之间wh可能就差了一点点,居然强制分层预测,这明显不合理。本文作者生成的仿真数据其实也是这个特点。
作者指出,kmean这种设置,仅仅在:M ∼ U(0, r)情况下采用合理的。其中r是输入图片分辨率,例如416。该式子的意思是物体的大小分布是满足边界为0到r的均匀分布,也就是说在416x416图片上,各种大小尺度的bbox都会存在的情况下,kmean做法是合理的。但是可能大部分场景都是:M ∼ N (0.5r, r),即均值为0.5r,标准差为r的物体分布,如果按照默认的kmean算法对anchor的计算策略,那么由于大部分物体都是中等尺寸物体,会出现其余两个分支没有得到很好训练,或者说根本就没有训练,浪费网络。
三、新框架及解决方法
对于标签重写问题,只能通过要么增加输入图片分辨率大小;要么增加输出特征图大小实现。本文的做法是增加输出特征图大小。
原始的yolov3,输入大小是输出特征图的8/16和32倍,通过上述数据可以发现标签重写比例蛮高的。而通过增加输出特征图大小后可以显著降低重写比例。
对于kmean聚类带来的问题,有两种解决办法:
- kmean聚类流程不变,但是要避免出现小物体被分配到小输出特征图上面训练和大物体被分配到大输出特征图上面训练问题,具体就是首先基于网络输出层感受野,定义三个大概范围尺度,然后设置两道阈值,强行将三个尺度离散化分开;然后对bbox进行单独三次聚类,每次聚类都是在前面指定的范围内选择特定的bbox进行,而不是作用于整个数据集。主要是保证kmean仅仅作用于特定bbox大小访问内即可,就可以避免上面问题了。但是缺点也非常明显,如果物体大小都差不多,那么几乎仅仅有一个输出层有物体分配预测,其余两个尺度在那里空跑,浪费资源。
- 就只有一个输出层,所有物体都是在这个层预测即可。可以避免kmean聚类问题,但是为了防止标签重写,故把输出分辨率调高,此时就完美了。作者实际上采用的是1/4尺度输出,属于高分辨率输出,重写概率很低。
根据上图可以发现:
(1) 网络方面,为了减少参数量,首先减少了通道数目,同时为了提高性能,引入了SE单元来加强特征
(2) 和yolov3的最大区别是输出层是一个,但是也采用了多尺度融合方式
(3) neck部分提出了hypercolumn+stairstep上采样操作
左边是标准的hypercolumn操作,右边是作者提出的。实验表明右边的方式更好,因为loss更低。
通过上述参数设置,作者设计的neck和head较轻,共有37.1M的参数,显著低于YOLOv3的61.5M,Poly-YOLO比YOLOv3的精度更高,在可训练参数减少40%的情况下,mAP精度大概也提高了40%。同时为了进一步提速,作者还设计了lite版本,参数仅仅16.5M,精度和yolov3接近。
四、实验及可视化
左:矩形网格,取自YOLOv3。目标边界框以其中心为中心的单元格预测其边界框坐标。 右图:Poly-YOLO中用于检测多边形顶点的基于圆形扇区的网格。 网格的中心与目标边界框的中心重合。 然后每个圆形扇区负责检测特定顶点的极坐标。 不存在顶点的扇区应产生等于零的置信度。
矩形检测和多边形检测对比
2.3 xYOLO
随着物联网(IoT)、边缘计算和自主机器人等领域的车载视觉处理技术的出现,人们对复合高效卷积神经网络模型在资源受限的硬件设备上进行实时目标检测的需求越来越大。Tiny-YOLO通常被认为是低端设备中速度更快的对象探测器之一,这个也是今天作者工作的基础。
这篇目标检测,在Raspberry PI 3B上实验,Tiny-YOLO可以达到每秒0.14帧的速度,对于足球机器人检测球门和球来说太慢了。今天要说的这个技术,一种改进的YOLO CNN模型xYOLO,它可以在Raspberry PI 3 B上以9.66 FPS的速度实现目标检测,这是通过交换一个可接受的精度来实现的,使网络比Tiny-YOLO快约70倍。在CPU和GPU上也实现了更大的推理速度。此外,还提供了一个带注释的Darknet数据集,用于球门和球的检测。
传统上,在机器人杯类人机器人比赛中,基于颜色分割的技术被用来检测足球场的特征,如球门和球。这些技术是快速和可以实现良好的精度在简单的环境,例如使用橙色的球,控制室内照明和黄色的目标。然而,根据RoboCup 2050年的球门,球队已经看到了自然光照条件(暴露在阳光下)、白色背景的球门和各种颜色的国际足联球。基于颜色分割的技术在这些具有挑战性的场景中无法发挥作用,主要推动了实现多种神经网络方法的竞争。
基于CNN的模型在复杂场景中的目标检测精度方面取得了很大进展。然而,这些基于cnn的高性能计算机视觉系统,虽然比全连接的网络精简得多,但仍然具有相当大的内存和计算消耗,并且只有在高端GPU设备上才能实现实时性。因此,这些型号中的大多数不适合于低端设备,如智能手机或移动机器人。这就限制了它们在实时应用中的应用,比如自主的仿人机器人踢足球,因为有权力和重量方面的考虑。因此,开发轻量级、计算效率高的模型,使CNN能够使用更少的内存和最少的计算资源,是一个活跃的研究领域。
最近发表了大量关于适合于低端硬件设备的目标检测的轻量级深入学习模型的研究论文。这些模型大多基于SSD、SqueezeNet、AlexNet和GoogleNet。在这些模型中,目标检测流水线通常包含预处理、大量卷积层和后处理等几个部分。分类器在图像中的不同位置和多尺度上使用滑动窗口方法或区域候选方法进行评估。这些复杂的目标检测计算量大,因此速度慢。XNOR-Net使用二进制运算的近似卷积,与传统卷积中使用的浮点数相比计算效率高。XNOR网络的一个明显的缺点是类似大小的网络的准确性下降。
另一方面,在you only look once(YOLO),目标检测是一个单一的回归问题。YOLO工作在边界框级别,而不是像素级别,即YOLO同时预测边界框和相关的类概率,从整个图像中在一个“看”。YOLO的一个主要优点是它能够对上下文信息进行编码,因此在混淆目标图像中的背景时出错较少。
“Lighter”版本的YOLO v3,称为Tiny-YOLO,设计时考虑到了速度,并被普遍报道为表现较好的模型之一,在速度和准确性的权衡。Tiny-YOLO有九个卷积层和两个全连接层。实验表明,Tiny-YOLO能够在Raspberry PI 3上实现0.14 FPS,这与实时目标检测相差很远。
从有些文章中的结果可以看出,这些目标检测器不能在计算资源最少的低端硬件上提供实时性能(例如,以Raspberry PI作为计算资源的类人机器人)。在作者使用的机器人中,使用一个计算资源来处理几个不同的过程,例如行走引擎、自我定位等。视觉系统只剩下一个核心来执行所有的目标检测。
新的框架方法
作者提出的网络xYOLO是从YOLO v3 tiny派生而来的,具体而言,使用AlexeyAB的DarkNet,它允许XNOR层,并建立在下图所示的Raspberry PI的基础上,xYOLO在训练和recall中都使用了正常的卷积层和XNOR层。
每年的RoboCup比赛都会带来新的挑战,在比赛开始的时候,模型必须使用收集到的图像进行再训练。因此,作者设计这一网络的方法是将训练时间减少到45分钟以下,以便对不同的网络配置和新的足球场条件进行相对快速的测试。
上图是一个网络的例子,其中的参数太小,以至于无法检测对象。在下图中,这将表现为损失均方误差在不能将损失降低到可接受的值(即1.5以下)的1000次迭代或模型之前没有减少到6以下。一般来说可以得出结论,一个网络是否在训练的前15分钟有一个合理的机会成功。
实验及结果
下面是xYOLO网络的结构:
如下表所示,与其他测试模型相比,xYOLO在计算效率方面取得了更好的性能。
基于仿人足球数据集的目标检测精度结果
观察到上图,模型在训练和未见测试集上都取得了相似的精度。与其他模型相比,Tiny-YOLO实现了更好的目标检测精度。在验证数据集上,xYOLO能够达到约68%的准确率,在测试集上达到约67%,这在考虑到xYOLO的速度和大小时是很好的。
示例目标检测结果由模型产生。左侧:Tiny-YOLO,中间:xYOLO,右侧:Tiny-YOLO-XNOR。当每个网络识别达到检测阈值的对象时,球和球门被标记。可以观察到,xYOLO的目标检测结果优于Tiny-YOLO-XNOR,其结果与Tiny-YOLO具有可比性。
相关文章:
51c视觉~YOLO~合集6~
我自己的原文哦~ https://blog.51cto.com/whaosoft/12830685 一、其他yolo 1.1 Spiking-YOLO 使用常规深度神经网络到脉冲神经网络转换方法应用于脉冲神经网络域时,性能下降的很多,深入分析后提出了可能的解释:一是来自逐层归一化的效率…...
软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护
10.6 大型网站系统架构演化实例 大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,主要解决这类问题。 1. 单体架构 特点: 所有资源(应用程序、数据库、文件)集中在一台服务器上。适用场景: 小型网站&am…...
两数之和(Hash表)
优质博文:IT-BLOG-CN 一、题目 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出"和"为目标值target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元…...
【问题定位记录】哪些情况可能造成403
起因 403是我们平时在http请求中常见的一种错误码,如果有一天别人问你什么情况下可能造成403,我想大家都能想到的一种就是权限问题,比如鉴权失败会造成403。 但实际上不止这一种原因可能造成403,还有一种可能的原因今天就被我遇…...
SmartX分享:SMTX ZBS的纠删码EC与多副本介绍、对比与其他概念(分布式存储)
目录 背景多副本EC相关概念限制工作方式写入读取编辑故障移除硬盘、节点 EC存储配置EC推荐节点数EC的容错能力EC的数据块数k与m的互相限制 EC和多副本的对比其他涉及到全新存储分层的概念可以参考的原文链接: 背景 近期,SmartX的SMTX ZBS 分布式存储 推…...
C++并发与多线程(创建多个线程)
创建和等待多个线程 基础示例 // ConsoleApplication10.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include <vector> #include <map> #include <string> #include <thread> #include <…...
【开发日志】ASP.NET Core Minimal APIs开发日志
后端 实现登录注册 注册API 在数据库中存储/注册账户密码 登录API 检测接收来的账户密码,如果正确,则生成JWT Token返回给客户端 未配置密钥 报错信息,这是我在提交注册请求时,后端报的错,看起来是在生成JWT Token时出现了…...
5G学习笔记之Non-Public Network R18
只是协议的搬运工 目录 0. NPN其它笔记 1. 概述 2. R18增强 2.1 等效SNPN间的移动性管理 2.2 non-3GPP接入SNPN 2.3 Localized Service 2.4 Charging 2.5 Management 0. NPN其它笔记 1. SNPN系列ID和广播消息 1. 概述 NPN,Non-Public Network, 非公共网络…...
sheng的学习笔记-AI-WaveNet模型
Ai目录:sheng的学习笔记-AI目录-CSDN博客 需要先看一下这些文章,作为基础 sheng的学习笔记-AI-残差网络-Residual Networks (ResNets)_神经网络的衰变是什么-CSDN博客 sheng的学习笔记-AI-卷积神经网络_单层卷积神经网络-CSDN博客 sheng的学习笔记-T…...
0002.基于springboot +layui二手物品交易平台
适合初学同学练手项目,部署简单,代码简洁清晰; 注:当前项目架构使用前后端未分离哦! 一、系统架构 前端:layui| html 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven 二、代…...
java集合基础
Java的java.util包主要提供了以下三种类型的集合: List:一种有序列表的集合,例如,按索引排列的Student的List;Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set&…...
如何在NGINX中实现基于IP的访问控制(IP黑白名单)?
大家好,我是锋哥。今天分享关于【如何在NGINX中实现基于IP的访问控制(IP黑白名单)?】面试题。希望对大家有帮助; 如何在NGINX中实现基于IP的访问控制(IP黑白名单)? 1000道 互联网大…...
「Mac玩转仓颉内测版51」基础篇13 - 高阶函数与闭包
本篇详细介绍高阶函数和闭包,这是仓颉语言中实现灵活逻辑的关键工具。高阶函数可将函数作为参数或返回值使用,而闭包能捕获其定义域中的变量,并在后续调用中保持状态。这些概念能让代码更加简洁、灵活,并提升复用性。 关键词 高阶…...
如何与GPT更高效的问答
与GPT进行高效沟通的关键在于提问的方式。通过合理的提问技巧,可以更清晰地表达需求,从而获得更准确的回答。以下是一些实用的建议,帮助你提升与GPT的交流效率。 1. 使用简单明了的语言: 尽量避免使用复杂的术语和行话,…...
【Android】解决 ADB 中 SELinux 设置与 `Failed transaction (2147483646)` 错误
解决 ADB 中 SELinux 设置与 Failed transaction (2147483646) 错误 在使用 ADB 进行开发和调试时,经常会遇到由于 Android 系统安全策略(SELinux)引起的权限问题,尤其是在执行某些操作时,可能会遇到类似 cmd: Failur…...
etcd常用监控
通过部署etcd-exporterPrometheus,然后配置etcd相关告警可以及时发现etcd集群风险 常见监控项目 1. etcd集群无leader Etcd cluster have no leader - alert:EtcdNoLeaderexpr: etcd_server_has_leader 0 for:0mlabels:severity: criticalannotations:summary:Et…...
红日靶场vulnstack 7靶机的测试报告[细节](一)
目录 一、测试环境 1、系统环境 2、注意事项 3、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Redis未授权访问漏洞获取web1靶机系统权限 3、获取docker靶机系统权限 ①Laravel框架漏洞利用getshell ②Laravel主机的提权&&docker容器逃逸 提权…...
【计算机网络】Layer4-Transport layer
目录 传输层协议How demultiplexing works in transport layer(传输层如何进行分用)分用(Demultiplexing)的定义:TCP/UDP段格式: UDPUDP的特点:UDP Format端口号Trivial File Transfer Protocol…...
【conda/cuda/cudnn/tensorrt】一份简洁的深度学习环境安装清单
🚀本文主要总结一下conda、cuda、cudnn、tensorrt的快速安装。至于nvidia显卡驱动的安装,暂且不提。本文适合有一定反复安装经验的读者😂,方便其快速整理安装思路。 NVIDIA Drivers 🌔01conda ⭐️ 注意,c…...
在C语言中,访问结构体的成员时,什么时候用`.`【符号点】,什么时候用符号`->`?
在C语言中,访问结构体成员时,使用.和->的情况取决于你是否通过结构体指针来访问。 .(点运算符):当你有一个结构体变量时,使用点运算符来访问它的成员。例如: struct Person {char name[50];i…...
Java序列化
Java序列化 简单来说: 序列化是将对象的状态信息转换为可以存储或传输的形式(如字节序列)的过程。在 Java 中,通过序列化可以把一个对象保存到文件、通过网络传输到其他地方或者存储到数据库等。最直接的原因就是某些场景下需要…...
Python 方框消除小游戏
import pygame import random# 初始化pygame pygame.init()# 设置屏幕大小 screen pygame.display.set_mode((800, 600))# 设置标题 pygame.display.set_caption("打砖块")# 定义颜色 WHITE (255, 255, 255) BLACK (0, 0, 0) RED (255, 0, 0) GREEN (0, 255, 0)…...
微软 Phi-4:小型模型的推理能力大突破
在人工智能领域,语言模型的发展日新月异。微软作为行业的重要参与者,一直致力于推动语言模型技术的进步。近日,微软推出了最新的小型语言模型 Phi-4,这款模型以其卓越的复杂推理能力和在数学领域的出色表现,引起了广泛…...
OkHttp源码分析:分发器任务调配,拦截器责任链设计,连接池socket复用
目录 一,分发器和拦截器 二,分发器处理异步请求 1.分发器处理入口 2.分发器工作流程 3.分发器中的线程池设计 三,分发器处理同步请求 四,拦截器处理请求 1.责任链设计模式 2.拦截器工作原理 3.OkHttp五大拦截器 一&#…...
前后端跨域问题(CROS)
前端 在src中创建util文件,写request.js文件: request.js代码如下: import axios from axios import { ElMessage } from element-plus;const request axios.create({// baseURL: /api, // 注意!! 这里是全局统一加…...
ctfshow xss
1.web316 看的wp 先在服务器上写一个php文件 <?php$cookie $_GET[cookie];$time date(Y-m-d h:i:s, time());$log fopen("cookie.txt", "a");fwrite($log,$time.: . $cookie . "\n");fclose($log); ?> 获取cookie的值ÿ…...
kafka客户端调用
kafka客户端调用 springboot整合kafkajava调用kafka其他问题 springboot整合kafka 手动提交需要在配置文件配置kafka属性 kafka.listener.ack-mode: manual Component public class MyKafkaListener {Autowiredprivate SaslClient saslClient;//监听所有分区KafkaListener(top…...
Linux 中 sftp 命令基本使用
参考链接 sftp 命令_sftp命令-CSDN博客 登录服务器【必须】 # sftp userNamehost # 例如 sftp root8.138.86.224 上传文件到服务器 使用 sftp 命令可以将本地文件上传到远程主机 # put local_file remote_file # 例如: put E://1.mp4 /root/1.mp4 下载文件 使…...
xtu oj 3个矩形与1个正方形
文章目录 回顾前言代码思路 回顾 xtu oj 神经网络xtu oj 1167 逆序数(大数据)xtu oj 原根xtu oj 不定方程的正整数解xtu oj 最多的可变换字符串xtu oj String Ixtu oj 字母序列xtu oj 分段xtu oj 完全平方数IIxtu oj 连接字符串xtu oj 2021xtu oj 数字x…...
C++ 引用
引用(Reference)是C语言中用于给变量起别名的特性,是一种轻量级的变量访问方式。通过引用,可以对原变量进行操作而不需要直接访问原变量的内存地址。这一特性极大地增强了代码的简洁性和安全性,同时也在参数传递和返回…...
解决几个常见的ASP.NET Core Web API 中多线程并发写入数据库失败的问题
前言 在ASP.NET Core Web API应用程序中,当多个并发线程同时调用新增用户数据的接口时,可能会遇到数据库写入失败的问题。这个问题通常源于多个线程同时访问数据库时,可能会导致以下情况: 数据库连接池耗尽:每个线程…...
让知识更具生命力
在当今快速发展的技术世界中,技术文档的重要性不言而喻。它不仅是知识传递的有效载体,也是团队协作的基石,更是提升产品竞争力的重要工具。然而,编写出一份清晰、完整且实用的技术文档,对于许多开发者和团队来说并非易…...
批量DWG文件转dxf(CAD图转dxf)——c#插件实现
此插件可将指定文件夹及子文件夹下的dwg文件批量转为dxf文件。 (使用方法:命令行输入 “netload” 加载插件,然后输入“dwg2dxf”运行,选择文件夹即可。) 生成dxf在此新建的文件夹路径下,包含子文件夹内的…...
《Django 5 By Example》阅读笔记:p561-p613
《Django 5 By Example》学习第 21 天,p561-p613 总结,总计 53 页。 一、技术总结 1.mixins (1)定义(什么是 mixins?) p570,Mixins are a special kind of multiple inheritance for a class. (2)适用场景(为什么使用?) 1)…...
1. 字符串分割
给定一个非空字符串S,其被N个‘-’分隔成N1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多࿰…...
[SAP ABAP] 将内表数据转换为HTML格式
从sflight数据库表中检索航班信息,并将这些信息转换成HTML格式,然后下载或显示在前端 开发步骤 ① 自定义一个数据类型 ty_sflight 来存储航班信息 ② 声明内表和工作区变量,用于存储表头、字段、HTML内容和航班详细信息以及创建字段目录lt…...
计算机网络-应用层
应用层是咱们日常开发中,最常用到的一层 主要涉及到两种情况: 1.使用大佬们已经创建好的应用层协议(后面再讨论,应用层知名的协议有很多,其中的佼佼者就是 HTTP (后面会出单独的文章来讲解))2.自己定义应用…...
SpringEvent 解决 WebUploader 大文件上传解耦问题
一、SpringEvent涉及的相关组件 为了让不熟悉SpringEvent的朋友对Event也有一个大致的印象。这里还是对SpringEvent对象包含的方法和相关组件的应用进行简单的介绍。 1、 事件(Event) 事件是应用程序中发生的某种事情,可以是用户行为、系统…...
KALI安装操作及过程
以下是在计算机上安装 Kali Linux 的详细教程:(通常我直接使用虚拟机) 解压虚拟机安装包,直接在虚拟机中打开KALI (将内存改为4GB) 初始密码账号:kali 一、准备工作 下载 Kali Linux 镜像文件…...
Scala—“==“和“equals“用法(附与Java对比)
Scala 字符串比较—""和"equals"用法 Scala 的 在 Scala 中, 是一个方法调用,实际上等价于调用 equals 方法。不仅适用于字符串,还可以用于任何类型,并且自动处理 null。 Demo: Java 的 在 J…...
[Flutter] : Clipboard
import package:flutter/material.dart; import package:flutter/services.dart; setData Clipboard.setData(ClipboardData(text: "传入的文字内容")); getData Clipboard.getData(Clipboard.kTextPlain) 记录 | Flutter剪切板-刨根问底做一个可以在后台…...
vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色
项目中需要实现一组预定义查询,每一个查询按钮在选中时右上角显示一个角标,展示当前查询返回的数据条目。 1、text-color="#3785FF" fill="#E6EAF1" 处理选中时的字体颜色和背景色,如上图,分别为蓝色和浅灰色。 2、badge中:value="selectedRadio…...
Dynamics 365 CRM- 后端
Dynamics 365 CRM 后端插件语法示例 public IPluginExecutionContext context null;//上下文 public IOrganizationServiceFactory serviceFactory null;//组织服务工厂对象 public IOrganizationService service null;//Org服务对象//创建执行上下文 context (IPluginExe…...
电脑显示器选购指南2024
选择显示器是五花八门的显示参数,如何选择,以下给出参数说明,及部分参考: 1. 尺寸和分辨率 尺寸(英寸) 根据使用距离和用途选择合适的屏幕尺寸: 21-24 英寸:适合小桌面空间、日常…...
机器学习-多元线性回归
文章目录 代码什么是回归任务什么是多元什么是回归什么是多元线性回归表达式何时使用多元线性回归注意损失函数 代码 https://github.com/FULLK/AI_Study/tree/main/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%A4%9A%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92 什么是回归…...
WEB语义化的新探索:浅析LLMs.txt
【引】有人迷恋使用大模型生成各种有趣的内容, 有人沉醉于大模型相关技术的探索,没有对错,只在于你的乐趣所在。 一项名为 llms.txt 的新提案标志了一些非同寻常的东西的出现: 一个Web网站不仅为人类读者服务,而且为人工智能提供服…...
【经典】制造供应链四类策略(MTS、MTO、ATO、ETO)细说
关注作者 制造供应链的牛鞭问题与复杂问题主要是从两个方面解决,一是同步化供应链消减从需求到供应的放大效应,二是供应链细分,针对不同的客户、不同的需求供应的匹配策略来应对复杂性,更好的满足客户并以最低的总成本来实现。 对…...
RabbitMQ中的Publish-Subscribe模式
在现代分布式系统中,消息队列(Message Queue)是实现异步通信和解耦系统的关键组件。RabbitMQ 是一个功能强大且广泛使用的开源消息代理,支持多种消息传递模式。其中,Publish/Subscribe(发布/订阅࿰…...
简单了解一下 Go 语言的构建约束?
构建约束是一种在 Go 语言中控制源文件编译条件的方法,它可以让您指定某些文件只在特定的操作系统、架构、编译器或 Go 版本下编译,而在其他环境中自动忽略。这样可以方便您针对不同的平台或场景编写不同的代码,实现条件编译的功能。 构建…...
图像融合算法笔记2024 CDTNet
目录 ControlCom-Image-Composition CDTNet-High-Resolution-Image-Harmonization 依赖项: trilinear 效果图: 推理代码ok 只支持linux系统: ControlCom-Image-Composition CDTNet-High-Resolution-Image-Harmonization 开源地址: GitHub - bcmi/CDTNet-High-Reso…...