TPH-YOLOv5简述

引言

  无人机捕获场景下的目标检测技术已广泛应用于植物保护、野生动物保护和城市监测等实际应用中,在无人机捕获的图像上的目标检测性能,并为上述众多的应用提供洞察力。本文专注于在无人机上的目标检测性能提升,并服务于上述应用。
  近年来,基于深度卷积神经网络的目标检测任务取得了显著进展,一些著名的基准数据集,如MS COCO和PASCAL VOC,推动了目标检测应用的发展,然而,以往的深度卷积神经网络大多是针对自然场景图像设计的。直接应用之前的模型来处理无人机捕获场景下的目标检测任务主要有三个问题,如图1所示。
在这里插入图片描述
  首先,由于无人机的飞行高度变化较大,目标规模变化较大。其次,无人机捕获的图像包含高密度的物体,这导致了物体之间的遮挡。第三,无人机拍摄的图像由于覆盖面积大,往往包含混乱的地理元素。上述三个问题使得无人机捕获图像的目标检测非常具有挑战性
  在目标检测任务中,YOLO系列在单级探测器中起着重要作用。本文提出了基于YOLOv5(Glenn Jocher, Alex Stoken, Jirka Borovec, NanoCode012, Ayush Chaurasia, TaoXie, Liu Changyu, Abhiram V , Laughing, tkianai, yxNONG, Adam Hogan, lorenzomammana, AlexWang1900, Jan Hajek, Laurentiu Diaconu, Marc,Y onghye Kwon, oleg, wanghaoyang0106, Yann Defretin,Aditya Lohia, ml5ah, Ben Milanko, Benjamin Fineran, Daniel Khromov, Ding Yiwei, Doug, Durgesh, and Francisco Ingham. ultralytics/yolov5: v5.0 - YOLOv5-P6 1280 models, AWS, Supervise.ly and Y ouTube integrations, Apr. 2021.(文章里是这样引用的))的改进模型TPH-YOLOv5来解决上述三个问题。TPH-YOLOv5的检测流程框架如图2所示。
在这里插入图片描述
  和原版本一样,分别使用CSPDarknet53和PANet作为骨干网络和neck部分,TPH-YOLOv5共包含四个检测头,分别用于微小、小、中、大物体的检测,采用CBAM沿着通道维度和空间维度依次生成注意力图,以寻找大覆盖图像中的注意区域。与YOLOv5相比,本文改进的TPH-YOLOv5可以更好地处理无人机捕获的图像。
为了进一步提高TPH-YOLOv5的性能,本文采用了很多Trick,在推理过程中增加了多尺度测试(ms-testing)和多模型集成策略,另外为了解决分类能力较差的问题,本文提出了咨询了的分类器,该分类器从数据中心裁剪的图像块作为分类的训练集。

相关工作

  Data Augmentation:数据增强的有效性在于扩展数据集,使模型对不同环境下获得的图像具有较高的鲁棒性。光度失真和几何失真被研究人员广泛使用,对于光度失真,本文对图像的色相、饱和度和值进行了调整,在处理几何失真时,本文添加了随机缩放、裁剪、平移、剪切和旋转。除了上述的全局像素增强方法外,还有一些比较独特的数据增强方法,利用多幅图像进行数据增强,比如MixUp(《mixup: Beyond empirical risk minimization,2017》)、CutMix(《Cutmix: Regularization strategy to train strong classifiers with localizable features,2019》)、Mosaic(《Yolov4: Optimal speed and accuracy of object detection》)。MixUp从训练图像中随机选取两个样本进行随机加权求和,样本的标签也对应于加权求和;不同于通常使用零像素“黑布”遮挡图像的遮挡工作,CutMix使用另一个图像的区域来覆盖被遮挡的区域;Mosaic是CutMix的改进版。拼接四幅图像,极大地丰富了被检测物体的背景。此外,批处理归一化计算每层上4张不同图像的激活统计量。
在TPH-YOLOv5中,结合了MixUp、Mosaic和传统方法进行数据增强。
  Multi-Model Ensemble Method in Object Detection:深度学习神经网络是一种非线性方法。它们提供了更大的灵活性,并可以根据训练数据量的比例进行扩展。这种灵活性的一个缺点是,它们通过随机训练算法进行学习,这意味着它们对训练数据的细节非常敏感,每次训练时可能会发现一组不同的权重,从而导致不同的预测。这给了神经网络一个高方差,减少神经网络模型方差的一个成功方法是训练多个模型而不是单一模型,并结合这些模型的预测。针对不同的目标检测模型,有三种不同的集成盒方法: NMS、soft-NMS、 WBF(《Weighted boxes fusion: Ensembling boxes from different object detection models,2021》)。在NMS方法中,如果boxes IoU大于某个阈值,则认为它们属于同一个对象。对于每个对象,NMS只留下一个置信度最高的box,Soft-NMS根据IoU值对相邻边界盒的置信度设置衰减函数,而不是完全将其置信度评分设为零并将其删除。WBF的工作原理与NMS不同。NMS和Soft-NMS都排除了一些框,而WBF将所有框合并形成最终结果。因此,它可以解决模型中所有不准确的预测。我们使用WBF对最终模型进行集成,其性能明显优于NMS。
  Object Detection:基于CNN的目标检测器可以分为多种类型:(1)一阶段检测器:YOLOX, FCOS, DETR,Scaled-YOLOv4,EfficientDet。(2)二阶段检测器:VFNet(《Varifocalnet: An iou-aware dense object detector,2021》), CenterNet2(《Probabilistictwo-stagedetection》,2021)。(3)Anchor-based:Scaled-YOLOv4, YOLOv5。(4)Anchor-free:CenterNet, YOLOX, RepPoints(《Reppoints: Point set representation for object detection,2019》)。一些探测器是专门为无人机设计的:RRNet, PENet, CenterNet等。
  Backbone:骨干网络包括VGG[42]、ResNet、DenseNet、MobileNet、EfficientNet、CSPDarknet53、Swin Transformer等。
  Neck: 常用的Neck块有:FPN、PANet、NAS-FPN、BiFPN、ASFF(《Learning spatial fusion for single-shot object detection,2019》)、SFAM(《M2det: A single-shot object detector based on multi-level feature pyramid network,2019》),还有一部分额外的块比如SPP、ASPP、RFB、CBAM。
  Head:作为一个分类网络,骨干网络无法完成定位任务,Head负责通过主干提取的特征图检测目标的位置和类别。(后面文章就写的很水,写一阶段和二阶段方法,但是方法和之前Object Detection那一节写的没有重复,之前就疑惑为什么不提到YOLO和R-CNN,原来是把YOLO和R-CNN系列放到这里来写了。我觉得这一块可以完全按照YOLOv4的写法,把Backbone、Neck以及Head这块放入Object Detection中写,而不是平行结构写)

方法

  YOLOv5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种不同型号。一般情况下,YOLOv5分别采用CSPDarknet53架构,以SPP层为骨干,PANet为Neck, YOLO为检测头,为了进一步优化整个结构,本文以YOLOv5作为基线代码,使用VisDrone2021 作为数据集,用Mosaic和MixUp作为数据增强策略,由于YOLOv5x的性能最高,所以本文使用YOLOv5x来追求最好的检测性能,此外,根据无人机的特点,对常用的光度畸变和几何畸变参数进行了调整。
  TPH-YOLOv5的框架如图3所示,本文修改了原来的YOLOv5,使其专一于VisDrone2021数据集。
在这里插入图片描述
  Prediction head for tiny objects:本文研究了VisDrone2021数据集,发现包含了很多非常小的实例,所以增加了一个用于微小物体检测的预测头(图3的头1),结合其他三个预测头,四头结构可以缓解剧烈的目标尺度变化带来的负面影响。该检测头是由低层高分辨率的特征图生成的,对微小物体更加敏感,增加检测头后,虽然计算和存储成本增加,但对微小物体的检测性能变高。
  Transformer encoder block:受Transformer的启发,本文用Transformer编码块替换YOLOv5原始版本的卷积块和CSP瓶颈块,其结构如图4所示。
在这里插入图片描述

  与CSPDarknet53中原有的瓶颈块相比,本文认为变压器编码器块可以捕获全局信息和丰富的上下文信息,每个变压器编码器包含两个子层,第一子层为多头注意层,第二子层(MLP)为全连接层。每个子层之间使用残差连接,变压器编码器块增加了捕获不同本地信息的能力,它还可以利用自注意机制来挖掘特征表征潜能。在VisDrone2021数据集中,变压器编码器块在高密集对象上有更好的性能。
  基于YOLOv5,本文只在头部部分应用变压器编码器块,形成transformer Prediction head (TPH)和backbone端,因为网络末端的特征图分辨率较低,将TPH应用于低分辨率特征图可以降低昂贵的计算和存储成本,此外当放大输入图像的分辨率时,可以选择去除早期层的一些TPH块来进行训练。
  Convolutional block attention module (CBAM):CBAM是一个简单但有效的注意力模块。它是一个轻量级模块,可以集成到最著名的CNN架构中,并且可以以端到端方式进行训练。给定一个特征映射,CBAM将沿着通道和空间两个独立维度依次推断出注意力映射,然后将注意力映射与输入特征映射相乘,以执行自适应特征细化。CBAM模块的结构如图5所示。在无人机捕获的图像中,大覆盖区域总是包含令人困惑的地理元素。使用CBAM可以提取注意区域,以帮助TPH-YOLOv5抵制令人困惑的信息,并关注有用的目标对象。
在这里插入图片描述
  MS-testing and model ensemble:本文从模型集成的不同角度训练了五个不同的模型。在推理阶段,首先对单个模型执行MS-testing策略。MS-testing的实现细节如下三个步骤。
  (1)将测试图像缩放到1.3倍。
  (2)分别将图像缩小到1次、0.83次、0.67次。
  (3)水平翻转图像。
  最后向TPH-YOLOv5提供6张不同大小的图像,并使用NMS来融合测试预测。在不同的模型上,进行相同的ms测试操作,并用WBF融合最后5个预测,得到最终结果。
  Self-trained classifier: 用TPH-YOLOv5对VisDrone2021数据集进行训练后,对test-dev数据集进行测试,然后通过可视化失败案例分析结果,得出TPH-YOLOv5定位能力较好,分类能力较差的结论。进一步探索如图6所示的混淆矩阵,观察到一些硬类别,如三轮车和遮阳三轮车的精度非常低。因此,我们提出了一个额外的自训练分类器。首先,通过裁剪ground-truth边界框和调整每个图像补丁的大小到64×64来构建训练集。然后选择ResNet18作为分类器网络。实验结果表明,通过这个自训练的分类器,对AP提高了约0.8% ~ 1.0%
在这里插入图片描述

实验

  实验使用VisDrone2021作为数据集,在Pytorch1.8.1上实现代码,用RTX3090训练65个epoch,batch_size是2。
  Data analysis:如图7所示,由于图像从很高的地方拍摄,所以有很多小物体,当输入尺寸为1536时,342391个标签中有622个标签小于3像素,使用灰色方块覆盖这些小物体,并在处理后的数据集上训练模型时,Map提高了0.2。
在这里插入图片描述
  Ms-testing: 在使用模型进行预测时,还可以应用测试数据集的图像数据增强,使模型能够对多个不同版本的图像进行预测。对增强后的图像进行平均预测,可以获得更好的预测性能,这里将测试图像缩放到三种不同的尺寸,然后水平翻转它们,这样总共得到6张不同的图像。对六幅不同的图像进行测试,并将结果进行融合,得到最终的测试结果。
在这里插入图片描述
  由于在VisDrone2021竞赛服务器上提交的数量有限,本文只在test - set-challenge上获得了4个模型的结果,以及5个模型集成的最终结果,在VisDrone 2021年排行榜上排名第五,比第一名的39.43分低0.25分。表1列出了本文模型的性能,以及去年VisDrone竞赛的得分。
  表2列出了TPH-YOLOv5各个组件的影响。
在这里插入图片描述
  表3展示了本文五个不同模型在每个类别上的最终mAP
在这里插入图片描述

总结

  这篇论文是基于YOLOv5在无人机上应用的论文,数据集是ICCV 2021workshop下的“Vision Meets Drones: A Challenge”,写作上,引言是写无人机检测的困难问题,以及贴出相应场景的图片进行说明,不过论文引用YOLOv5的时候用的不是YOLOv4的论文,而是用的github地址;相关工作的写法和YOLOv4类似,但是没有YOLOv4的清晰,不过从里面知道了最近NMS的改进还有WBF这种方法,网络结构上,它也是对于每一个C3后接上CBAM,然后这篇论文还加入了Vit,而检测头论文里只是在更低层连接了一个,用来检测更小的对象,然后论文还提了一个点Self-trained classifier,这一部分从论文里的描述没有完全理解,我一开始是以为相似的物品特地构建数据集添进去填充样本,多做一些训练,不过原文只是说“cropping the ground-truth bounding boxes and resizing each image patches to 64×64. Then we select ResNet18 as classifier network”,然后就没有多描述了,听起来像是对所有数据处理,所以并不知道具体是怎么做的,不过这里说明问题的方式是利用混淆矩阵,这一部分图片其实是由YOLOv5代码提供的,但放在论文里确实看起来高级一点。

  • 0
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值