【目标检测论文阅读笔记】Multi-scene small object detection with modified YOLOv4

Abstract. 

        小目标检测的应用存在于我们日常生活中的许多不同场景中,该课题也是目标检测与识别研究中最难的问题之一。因此,提高小目标检测精度不仅在理论上具有重要意义,在实践中也具有重要意义。然而,当前的检测相关算法在这项任务中效率低下;因此在本研究中,提出了一种基于YOLOv4模型的 广义改进算法。在常规的 跨阶段局部网络(CSPNet)的 “ADD” 和 “Concat” 层之后,增加了一种 混合注意力模块(MA),以加强目标的空间和通道特征信息;然后使用 膨胀卷积模块(DC)扩展目标小物体周围的感受野信息

多项数值实验表明,这种与其算法相关的改进模型在 Pascal VOC 和 VISDRONE 数据集 (mAP@0.5) 上实现了更高的平均测试精度。与YOLOv4相比,这些性能评估指标分别提升了3.23%和2.88%。在输入图像大小设置为416*416的条件下 对YOLOv4网络结构进行改进后,模型在Pascal VOC数据集上的平均准确率达到87.58%,在VISDRONE数据集上达到26.12%。这些结果表明,在不影响实时性能的情况下,该方法在识别小物体方面明显优于原始检测算法


1. Introduction

        目标检测是计算机视觉领域中一个重要但困难的课题,广泛应用于智能监控和无人驾驶车辆导航等任务[1]。由于大多数物体在日常生活中以小或微小物体的形式出现,因此这种检测的任务已被世界各地的学者研究。以前,图像的特征和分类器经常用于构建此任务中的数学模型 [2]。但是,这种方法会导致 检测精度低 和 泛化性能弱的问题。结果,很难达到高精度。在ImageNet大规模视觉识别挑战赛(ILSVRC)的比赛中,AlexNet[3]在2012年以84.6%的Top-5精度夺冠后,基于深度学习的目标检测算法引起了广泛关注。一般来说,这个策略由两部分组成;第一部分包括 两阶段检测算法,其余部分包括 单阶段检测算法。这些两阶段检测算法通常首先在目标周围生成许多候选区域,然后通过分类和回归选择最合适的区域。典型案例有经典的RCNN[4]、Faster-RCNN[5] 和 Mask-RCNN[6]。单阶段回归算法直接定位目标。经典的单阶段算法是 YOLO [7] 和 SSD [8]。

        针对 小目标检测中 分辨率低、特征表达能力弱 等问题,Hou等[9]引入了YOLOv4-TIA网络,利用 三元组注意力机制 改进CSPDarknet53网络,并在路径聚合网络Path Aggregation Network[10]( PANet)中 加入跳跃连接 skip connections 以获得更多的特征信息。

        尽管这些研究在小目标检测方面取得了相当大的成就,但仍然存在以下问题(1)特征图分辨率 和 小目标的特征 会因为过多的下采样而受到严重破坏; (2) 小目标样本少,尺寸小,容易被忽略

        针对上述问题,在本研究中,我们对 YOLOv4 网络进行了相关修改,以适应小目标检测。在 YOLOv4 [11] 算法中,无论目标是大、中还是小,都将相同的权重分配给通道特征图。该操作可能会忽略小物体的特征图数量有限的问题,这 不利于小目标检测的精度。为了提高小物体的检测精度,我们 在原始的 YOLOv4 网络中引入了一种 MA,以 增强小目标的通道和空间特征权重。第 2 节中介绍的 YOLOv4 网络通过多次下采样获取语义信息,这可能会降低图像的分辨率并减少物体的特征信息,从而导致错误的小物体检测。因此,我们在 CSPDarknet53 网络中嵌入了一个 DC,以 提高特征图的分辨率 并 减少特征信息的丢失。第 3 节详细介绍了提出的修改网络和算法。第 4 节介绍了两个典型数据集的实验结果,证明了所提出方法的有效性。第 5 节给出了结论和讨论。


2. 基于YOLOv4的小目标检测模型

        YOLOv4算法结合了近年来优秀的算法思想。它将 CSPNet [12] 集成到Darknet53中,不仅通过 截断梯度流 策略 避免不同层网络学习重复的梯度信息,而且消除了 计算瓶颈 并 减少了内存消耗。 YOLOv4算法 采用mish激活函数降低了计算成本,使梯度传播更加高效。此外,它还利用 Squeeze and Excitation Net [13] (SENet) 来 增强对象的特征图权重。最后,该算法将 CSPDarknet53 视为骨架网络。在 YOLOv4 的瓶颈部分,原来的 特征金字塔网络(FPN)被空间金字塔池化[14](SPP)层的路径聚合网络(PANet)所取代。该模块在一定程度上减轻了目标位置信息和轮廓轮廓信息的特征损失。 detection head用的是原来YOLOv3算法中的那个。

        在输入端,如果图像尺寸为416*416,则会被分成三种不同尺寸的网格图像,分别为13*13、26*26和52*52,分别对应小、中、大目标。下面的图 1 展示了 YOLOv4 网络的结构。我们将继续利用经典算法进行研究,并引入MA模块来完善该算法在小目标检测中的应用


3. YOLOv4-MA网络

3.1. DC

        膨胀卷积 Dilated convolution [15] 通过在特征图上 注入“空洞” 来扩大感受野不仅提高了下采样时 特征图的分辨率,还保留了更多的特征信息常规的卷积的计算公式为: 

在等式(1)中,O(m,n)表示点(m,n)处的原始像素值,H(m,n)表示卷积核。 膨胀卷积 的计算公式为: 

式(2)中,l为 dilation ratio 扩张比,用于描述普通卷积核的扩张比。 HD(m,n) 是膨胀卷积核。 膨胀卷积的示意图如图2所示,其中卷积核大小为3*3,膨胀率为1。

        YOLOv4网络在YOLOv3网络中引入了一些优秀的算法,因此 在以大中型物体为主的数据集上取得了较高的准确率。但是,经过多次下采样处理后,小目标的分辨率和特征信息会被削减,从而削弱了模型的能力。因此,为了提高小目标的检测率,我们 将 膨胀卷积 嵌入到 CSPDarknet53 网络中,以 提高小物体的分辨率 并 获取更多的特征信息。卷积核大小为3*3,stride为1,dilation ratio为2。将经过膨胀卷积后大小为 208*208*64 的特征图与原始特征图进行拼接,得到这个结果再次与后面的内核进行卷积。改进后的结构如下图3所示


3.2. MA

        注意力机制的主要作用是集中在特征图中有用的信息,有利于获取对象的全局信息。 YOLOv4 网络平等对待每个特征图,这可能不利于小目标检测。因此,为了提高这种检测的精度,受 SENet 和卷积块注意模块 [16] (CBAM) 的启发,我们设计了一种 MA 来改进 CSPDarknet53 网络,我们将修改后的网络命名为 YOLOv4-MA。网络结构如图4所示。

        具体来说,我们 首先在通道维度上以“Concat”的方式连接 通道特征图和空间特征图。其次,我们通过 应用大小为 1*1 的卷积核提取每个特征图的权重,并将它们输入到 sigmoid 函数中以计算它们的最终权重。最后,我们 将最终的权重值乘以原始特征图,输出最终的特征图

        为了展示 MA 相对于原始 SENet 和 CBAM 的优越性,我们应用 Grad-cam 技术来比较 MA、SENet 和 CBAM 对两组不同小目标的注意效果。它们的热图如图5所示。因此,MA不仅增强了物体的纹理和形状特征,还扩展了小物体的空间位置特征结合MA的CSPDarknet53网络结构 如下图6所示。


4. 实验结果与分析

        数值实验在两个数据集上进行:PASCAL VOC 2007+2012 和 VISDRONE 2019 数据集。 PASCAL VOC 数据集总共包含 27088 张图像和 20 个类别。 VISDRONE 数据集总共包含 10 个类别的 8629 张图像

        为了公平比较,我们遵循官方评估协议,例如 mAP 和每秒帧数 (FPS)。 mAP和FPS的计算公式为:

式(3)中,c表示目标类别的个数,Pi 表示 第i个目标的检测精度。式(4)中,frameCount表示帧数,elapsedTime表示检测时间。

        本实验使用的训练和测试平台为Intel(R) I7-8700 CPU、GeForce RTX1080-Ti GPU。软件包基于Ubuntu 18.04、Python 3.7、PyTorch 1.4.0深度学习框架。 CUDA版本为10.2,CUDNN版本为7.5。训练过程的初始学习率为0.001。每25次迭代后,学习率下降到原来的0.1倍,动量为0.9,衰减系数为0.0005。使用 Adam 优化器,batch value 设置为 4,训练 Epochs 设置为 100 次。

        我们比较了改进后的 YOLOv4 网络与 YOLOv3 和 v5 网络、SSD 和 Faster-RCNN 网络在 VOC 和 VISDRONE 测试集上的性能。这里,mAP@0.5 表示置信度为 0.5 时的平均精度,FPS 表示模型的检测速度。实验结果如下表1所示。根据表1的结果,提出的YOLOv4-MA算法 在VOC和VISDRONE测试集上分别比原YOLOv4算法提高了3.23%和2.88%。然后,我们将表 1 中的次优算法与每个数据集上的 YOLOv4-MA 算法进行比较。我们的算法在 VISDRONE 和 VOC 测试集上的精度分别提高了 1.53% 和 2.19% mAP@0.5。表明所提出的YOLOv4-MA算法可以在保证实时性的前提下提高小目标检测的精度

        为了直观地比较 YOLOv4-MA 和 YOLOv4算法,下图7展示了他们在VOC和VISDRONE数据集上的结果对比。在图 7 中,YOLOv4-MA 算法可以实现比之前版本更高的置信度。因此,实验结果证明了我们提出的 YOLOv4-MA 算法的有效性


5. Conclusion

        为了提高小目标的检测精度,我们 对YOLOv4算法提出了两类改进。首先,我们将 DC 嵌入到骨干网络中,以提高小物体的分辨率,以获得更多的特征信息。其次,我们 引入 MA 来增强小目标的特征权重。实验结果表明,提出的方法在 PASCAL VOC 和 VISDRONE 数据集上的 mAP@0.5 指数分别比原始 YOLOv4 算法高 3.23% 和 2.88%。在未来的研究中,建议对模型进行剪枝以在不损失精度的情况下提高检测率。此外,可以将不同场景下的更多数据作为增强策略引入训练阶段,以泛化模型的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node.js学习笔记——Express.js

一、express介绍 express是一个基于Node.js平台的极简、灵活的WEB应用开发框架,官方网址:https://www.expressjs.com.cn/ 二、express使用 2.1express下载 express本身是一个npm包,所以可以通过npm安装。 npm init npm i express 2.2expr…

Java接口

目录 抽象类 抽象类的概述 如何使用抽象类 抽象类的使用 抽象特征 关于抽象需要注意的几个事情 接口(interface) 常量 如何实现接口 接口与接口多继承 接口的注意事项 抽象类 抽象类的概述 父类中的方法,被它的子类们重写,子类各自的实现都不…

《花雕学AI》02:人工智能挺麻利,十分钟就为我写了一篇长长的故事

ChatGPT最近火爆全网,上线短短两个多月,活跃用户就过亿了,刷新了历史最火应用记录,网上几乎每天也都是ChatGPT各种消息。国内用户由于无法直接访问ChatGPT,所以大部分用户都无缘体验。不过呢,前段时间微软正…

Vulnhub:DC-3靶机

kali:192.168.111.111 靶机:192.168.111.250 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.250 通过nmap得知目标CMS为Joomla 3.7.0 漏洞利用 搜索发现该版本存在sql注入 利用sqlmap获取目标后台用户密码 sqlmap -u &…

测试行业3年经验,面试想拿 17K,HR说你只值 8K,该如何回答或者反驳?

面试最尴尬的不是被拒绝,而是直接说你不值那个价格... 最近朋友在面试的时候,HR 突然来了句:你只值 7K。朋友后面和我说了这个事。我想如果是我处在这种情况下,自己并不能很好地回答或者反驳。不知道大家会怎么回答或者反驳&…

基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结(针对华为逻辑岗实习笔试)

基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结 文章目录基于vivado(语言Verilog)的FPGA学习(4)——FPGA选择题总结1. 消除险象2. 建立时间和保持时间3.ISE4.DMA5.仿真器6…

【Linux】-- 权限和Shell运行原理

目录 Shell的运行原理 用户切换 su - / su sudo 权限 chmod chown chgrp 八进制方法修改文件属性 目录权限 粘滞位 umask 自定义默认权限 Shell的运行原理 广义上,Linux发行版 Linux内核 外壳程序 Linux 从广义上来理解它是一个操作系统 而从狭义上…

关于Map类的使用小结

目录 1. 常用Map类和区别 2. HashMap工作原理 2.1 Put()执行过程 2.2 扩容机制 3. ConcurrentHashMap 3.1 工作原理 3.2 JDK7分段锁的优缺点 1. 常用Map类和区别 Map类包含:HashMap、HashTable、LinkedHashMap、TreeMap。 1) 从功能上区分。 HashMap&…

多线程进阶学习11------CountDownLatch、CyclicBarrier、Semaphore详解

CountDownLatch ①. CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞 ②. 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞) ③. 计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行 public static void m…

SpringBoot学习笔记上

文章目录1 SpringBoot1.1 SpringBoot介绍1.2 SpringBoot创建的三种方式1.3SpringBootApplication注解1.4 SpringBoot的配置文件1.5多环境配置1.6 使用jsp1.7 ComnandLineRunner 接口 , ApplcationRunner接口2 Web组件2.1 拦截器2.2 Servlet2.3 过滤器Filter2.4 字符…

gpt3官网中文版-人工智能软件chat gpt安装

GPT-3(Generative Pre-trained Transformer 3)是一种自然语言处理模型,由OpenAI研发而成。它是GPT系列模型的第三代,也是目前最大、最强大的自然语言处理模型之一,集成了1750亿个参数,具有广泛的使用场景&a…

Flutter Row 实例 —— 新手礼包

大家好,我是 17。 本文在 3.31 日全站综合热榜第一。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交…

靠近用户侧和数据,算网融合实现极致协同

游弋自如的生产力,在边缘。IMMENSE、36氪|作者 1846年1月,纽约。 一行长短不一的电码顺着通讯线路飞往130公里开外的费城,这是华尔街的巨头们首次使用电报传输讯息,更具有金钱意味的是,电力通讯的成功&am…

【蓝桥杯集训·周赛】AcWing 第96场周赛

文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…

路由策略实验

运行OSPF协议 [R1]ospf 1 router-id 1.1.1.1 [R1-ospf-1]area 0 [R1-ospf-1-area-0.0.0.0]network 192.168.12.1 0.0.0.0 [R1-ospf-1-area-0.0.0.0]network 192.168.13.1 0.0.0.0 [R2]ospf 1 router-id 2.2.2.2 [R2-ospf-1]area 0 [R2-ospf-1-area-0.0.0.0]network 192.168.…

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署

抖音已经成为了当今最为流行的短视频平台之一,拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者来说,如何从这些视频资源中挖掘出有效的信息,进而提升自己的品牌、产品或者内容的曝光度,就成为了一个非常重要的问题…

一次通过.frm和.ibd恢复mysql数据表的过程

1、导出.frm和.ibd文件 2、安装Mysql的Utilities 3、执行命令(实际恢复的表) mysqlfrm --diagnostic ./stat_vehicle_mileage.frm4、复制Sql,添加ROW_FORMATCOMPACT(需要检测生成的Sql语句是否可用) CREATE TABLE …

Android开发-Android常用组件-ProgressBar进度条

4.8 ProgressBar进度条 常用属性 android:max 进度条的最大值 android:progress 进度条已完成进度值 android:progressDrawable 设置轨道对应的Drawable对象 android:indeterminate 如果设置成true,则进度条不精确显示进度 android:indeterminateDrawable …

YOLO算法改进指南【算法解读篇】:2.如何训练自己的数据集

我们接着上一篇文章配置完YOLOv5需要的环境后,今天我们试着用YOLOv5训练自己的数据。(在开始本教程前,记得先跑一遍入门篇,确保环境是正常的) 有图有真相,先看看我的运行结果 【YOLOv5 源码地址】 🚀 我的环境: 语言环境:Python3.8编译器:PyCharm深度学习环境: to…

2021蓝桥杯真题格点(填空题) C语言/C++

问题描述 如果一个点(x,y) 的两维坐标都是整数, 即 x∈Z 且 y∈Z, 则称这个点为 一个格点。 如果一个点 (x,y) 的两维坐标都是正数, 即 x>0 且 y>0, 则称这个点在 第一象限。 请问在第一象限的格点中, 有多少个点(x,y) 的两维坐标乘积不超过 2021 , 即x⋅y≤2021 。 掟…