目标检测tph-yolov5:基于transformer的改进yolov5的无人机目标检测(代码片段)

zstar-_ zstar-_     2022-11-30     581

关键词:

简介

最近在使用VisDrone作为目标检测任务的数据集,看到了这个TPH-YOLOv5这个模型在VisDrone2021 testset-challenge数据集上的检测效果排到了第五,mAP达到39.18%。

于是开始阅读它的论文,并跑一跑的它的代码。
论文地址:https://arxiv.org/pdf/2108.11539.pdf
项目地址:https://github.com/cv516Buaa/tph-yolov5
VisDrone数据集下载:https://pan.baidu.com/s/1JzRTeSi_LgdUVhwtbWhA_w?pwd=8888

解决问题

TPH-YOLOv5旨在解决无人机影像中存在的两个问题:

  • 因无人机在不同的高度飞行,物体的尺度变化剧烈
  • 高速和低空飞行对排列密集的物体带来了运动模糊。

主要改进

TPH-YOLOv5是在YOLOv5的基础上做了下列改进:

  • 1、新增了一个检测头来检测更小尺度的物体
  • 2、用transformer prediction heads(TPH)替换原来的预测头部
  • 3、将CBAM集成到YOLOv5中,帮助网络在大区域覆盖的图像中找到感兴趣的区域。
  • 4、其它一系列小tricks

新的检测头


新的检测头不难理解,之前在我的这篇博文【目标检测】YOLOv5针对小目标检测的改进模型/添加帧率检测也提到过这个改进想法。

改进后的网络整体结构图如下:

TPH

作者使用了一个Transformer Encoder来代替一些卷积和CSP结构,将Transformer在视觉中应用,也是目前的主流趋势,Transformer具有独特的注意力机制,效果比原先更好。

CBAM


CBAM(Convolutional Block Attention Module)是作者提出的一种新的设计结构。如图所示,一张特征图被输入到下一个处理单元前,会先并行计算它的通道注意力和空间注意力,然后将其进行融合重塑,这样会让后面的处理单元更加注意到(focus on)有价值的目标区域。

总结,这篇是国人写的论文,论文结构和思路都非常符合中国人的认知习惯,读起来很顺畅。

实战

下面我将使用TPH-YOLOv5对Visdron数据集进行训练。由于代码是根据YOLOv5进行修改的,所以熟悉YOLOv5的读者能够非常轻松的跑通。

值得注意的是,作者提供了两个模型结构,第一个是yolov5l-xs-tph.yaml这个模型结构,并没有用到CBAM,只是在YOLOv5 6.0版本上新增了一个检测头,我估计是消融实验用到的。如果需要跑最好的效果,应该使用yolov5l-xs-tr-cbam-spp-bifpn.yaml这个模型结构。

同时,作者提供了两个预训练模型,之后我会放在文末供读者下载。

我是用Visdron数据集训练100epoch之后,拿网上一段视频来进行检测,和YOLOv5 5.0,6.1版本的结果做对比,效果如下面这个视频所示。

YOLOv5/TPH-YOLOv5检测效果对比测试

B站Link:https://www.bilibili.com/video/BV17a411u7JD
(前往B站一键三连体验更佳)

可以看到实际效果还是比较明显的,TPH-YOLOv5对于密集人群的识别效果有明显提升。
测试视频我也分享出来:https://pan.baidu.com/s/1jgTonbDYmONkqvLjhLPpRQ?pwd=8888
使用其它模型的测试效果可以@我一下让我康康。

另附测试数据:

算法mAP@.5mAP@.5:.95s
yolov5-5.034.9%20.6%
yolov5-6.133.1%18.7%
tph-yolov537.4%21.7%

注:只是100个epoch的得到的best.pt的测试结果,并未达到最优性能。

代码备份

另附TPH-YOLOv5代码本地备份(包含作者提供的两个预训练权重):https://pan.baidu.com/s/15mVle5Exghu3jJMFyl9Lyg?pwd=8888

tph-yolov5|基于transformer的yolov5小目标检测器|四头加注意力(代码片段)

...xiv.org/pdf/2108.11539.pdf项目地址:https://github.com/cv516Buaa/tph-yolov5在无人机捕获的场景中进行对象检测是最近的一项热门任务。由于无人机总是在不同的高度航行,物体尺度变化剧烈,给网络优化带来了负担。此外,... 查看详情

dotav1.5数据集:基于航空图像的大规模目标检测数据集

参考技术A  目标检测是计算机视觉任务中一个具有挑战性的方向。尽管在过去十年中目标检测在自然场景中有了重大突破,但是在航拍图像的进展是十分缓慢的,这不仅是因为地球表面相同类别物体的规模、方向和形状... 查看详情

4.基于深度学习的目标检测算法的综述(转)

4.基于深度学习的目标检测算法的综述(转)原文链接:https://www.cnblogs.com/zyly/p/9250195.html目录一相关研究1、选择性搜索(SelectiveSearch)2、OverFeat二、基于区域提名的方法1、R-CNN 2、SPP-Net3、FastR-CNN4、FasterR-CNN5、R-FCN 三端对端的... 查看详情

基于深度学习的目标检测

基于深度学习的目标检测普通的深度学习监督算法主要用来做分类,分类的目标是要识别出图中所示是一只猫。而在ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)竞赛以及实际的应用中,还包括目标定位和目标检测等任务。其中目... 查看详情

目标检测anchor-free分支:基于关键点的目标检测(代码片段)

目标检测Anchor-free分支:基于关键点的目标检测(最新网络全面超越YOLOv3)https://blog.csdn.net/qiu931110/article/details/89430747目标检测领域最近有个较新的方向:基于关键点进行目标物体检测。该策略的代表算法为:CornerNet和CenterNet。... 查看详情

目标检测基于matlabgui差分法运动目标检测含matlab源码1284期

一、运动目标检测简介0引言近些年来,运动目标的检测,尤其是运动车辆的检测的发展和应用非常广泛。运动目标检测就是从图像序列中检测出运动目标。目前,运动目标的检测主要方法有背景差分法、帧间差分法、光流法3种... 查看详情

目标检测

传统算法:  1.基于boosting:LBP/HOG/...  2.基于SVM:HOG/SIFT+SVM,DPM基于深度学习的方法:  1.基于region:fasterrcnn  2.基于回归:YOLO/SSD  3.Maskrcnn 查看详情

基于区域的目标检测(代码片段)

目标检测,即在一幅图里框出某个目标位置.有2个任务.定位出目标的边界框识别出边界框内的物体的类别Sliding-windowdetectors一种暴力的目标检测方法就是使用滑动窗口,从左到右,从上到下扫描图片,然后用分类器识别窗口中的目标.... 查看详情

基于深度学习的目标检测

...学习监督算法主要是用来做分类,如图1(1)所示,分类的目标是要识别出图中所示是一只猫。而在ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)竞赛以及实际的应用中,还包括目标定位和目标检测等任务。其中目标定位是不仅仅要识... 查看详情

基于深度学习的目标检测研究进展

...个边框(bounding-box)所在的位置。其实刚刚的这个过程就是目标检测,目标检测就是“给定一张图像或者视频帧,找出其中所有目标的位置,并给出每个目标的具体类别”。目标检测对于人来说是再简单不过的任务,但是对于计算... 查看详情

基于深度学习的目标检测算法综述

基于深度学习的目标检测算法综述(一)基于深度学习的目标检测算法综述(二)基于深度学习的目标检测算法综述(三)本文内容原创,作者:美图云视觉技术部检测团队,转载请注明出处目... 查看详情

3d目标检测[看code]voxelrcnnrpn(代码片段)

发现最新的一些3d检测的paper都是基于pvrcnn和voxelrcnn的,不得不对这两个网络的源码过一遍了。CODEBASE基于OpenPCDet 0.5.2先来看VoxelRCNN配置文件。VFE,BACKBONE_3D,MAP_TO_BEV,BACKBONE_2D,DENSE_HEAD与SECOND所用的一致。也就是说用AnchorHEADSingle... 查看详情

基于mmrotate训练自定义数据集做旋转目标检测2022-3-30(代码片段)

...的成员之一。里面包含了rcnn、fasterrcnn、r3det等各种旋转目标的检测模型,适合于遥感图像领域的目标检测。1.MMrotate下载MMrotate包下载:下载链接目录结构如下:2.环境安装所需要的依赖环境:Linux&WindowsPython3.7&#... 查看详情

运动对象检测和描述

运动图像检测基于背景减法目标跟踪,背景分割器:KNN、MOG2和GMGBasicmotiondetectionandtrackingwithPythonandOpenCV使用背景减除进行目标检测用OpenCV实现多目标追踪(C++/Python)通过形态学改善图像过滤,追踪人脸,检测前景/背景区域和深度... 查看详情

谈谈基于深度学习的目标检测网络为什么会误检,以及如何优化目标检测的误检问题

添加链接描述 查看详情

谈谈基于深度学习的目标检测网络为什么会误检,以及如何优化目标检测的误检问题

添加链接描述 查看详情

基于区域的二阶段算法思想和理解综述

...思想和理解综述待办昨天待办decriptiondecription摘要:图像目标检测是图像处理领域的基础。自从2012年CNN的崛起,深度学习在Detection的持续发力,为这个领域带来了变革式的发展。深度学习出现之前,传统的目标检测方法大概分为... 查看详情

mxnet的fasterr-cnn(基于区域提议网络的实时目标检测)《9》(代码片段)

MXNet的FasterR-CNN(基于区域提议网络的实时目标检测)《1》:论文源地址,克隆MXNet版本的源码,安装环境与测试,以及对下载的源码的每个目录做什么用的,做个解释。MXNet的FasterR-CNN(基于区域提议网络的实时目... 查看详情