深度学习-小目标检测训练技巧

news2024/10/7 12:21:57

 强烈感谢 公众号CVHub 提供的文章思路,该文章仅作为学习记录。

导读 

        小目标检测是计算机视觉领域中的一个极具挑战性的问题。随着深度学习和计算机视觉领域的不断发展,越来越多的应用场景需要对小目标进行准确的检测和识别。本文将从小目标的定义、意义和挑战等方面入手,全面介绍小目标检测的各种解决方案。

定义

        小目标检测广义是指在图像中检测和识别尺寸较小、面积较小的目标物体。通常来说,小目标的定义取决于具体的应用场景,但一般可以认为小目标是指尺寸小于 32*32 像素的物体,如下图 COCO 数据集的定义。当然,对于不同的任务和应用,小目标的尺寸和面积要求可能会有所不同。 

在 COCO 数据集中,针对三种不同大小(small,medium,large)的图片提出了测量标准,其包含大约 41% 的小目标(area<32×32), 34% 的中等目标(32×32<area<96×96), 和 24% 的大目标(area>96×96)。其中,小目标的 AP 是很难提升的! 

意义

        小目标检测的意义在于它可以提高技术的应用范围,同时可以帮助大家更好地理解图像中的细节信息。此外,小目标检测其实在我们日常生活中的许多领域均有广泛的应用,例如交通监控、医学影像分析、无人机航拍等。举个例子:

  • 在交通监控领域,小目标检测可用于识别交通信号灯、车牌等。

  • 在医学影像分析领域,小目标检测可用于识别微小的肿瘤细胞等。

  • 在自动驾驶领域,小目标检测可用于识别微小的障碍物,以弥补激光雷达难以探测的窘况。

挑战

        做过检测任务的同学应该很清楚这一点,那便是小目标检测其实一直是一个极具挑战性的问题。下面随便举几个小例子给大家感受下:

  1. 小目标通常在图像中占据很小的区域,深度学习算法其实很难提取到有效的信息,更别提传统的特征提取方法。举个例子,对于一个室内会议场景,假设我们的摄像头装在左上角的上方区域,如果此时你训练完一个检测模型应用上去,会观察到在远离镜头的对角线区域其检测效果相对其它区域来说一般会差很多的,特别容易造成漏检和误检。

  2. 小目标并不具备常规尺寸目标的纹理、颜色等丰富的细节特征,这使得小目标的检测更加困难,而且容易被模型误认为是“噪声点”。

  3. 小目标其实有时候不好定义,以最简单的行人和车辆为例,不妨看下面这张图片:

        大致划分了下,其中绿色框范围的目标其实是很容易标注的,主要是红色方框范围内的目标。大部分目标像素占比很小,标也不是,不标也不是,当然你可以采用ignore标签不计算损失或者干脆直接将这块区域mask掉,但现实就是很多情况下这种“小目标”其实很大概率会被漏打标,太多的话很容易造成训练曲线“抖动”。

解决方案

        今天,让我们重点来聊聊如何解决小目标检测的难题。大家应具备批判性思维,根据实际情况针对性的采取合适的方式。

        需要注意的是,双阶段目标检测算法由于存在RoI Pooling之类的操作, 因此小目标的特征会被放大,其特征轮廓也更为清晰,因此检出率通常也会更高。但本文还是主要围绕发展比较成熟的单阶段目标检测算法展开。

增大输入图像分辨率

        图像分辨率,当之无愧是最大的罪魁祸首,想象一下,一张图像如果分辨率太小,假设我们就下采样32倍,理论上小于这个像素的目标信息基本就会完全丢失。因此,当处理小目标检测时,由于目标物体尺寸过小,通常需要将输入图像的分辨率提高,以便更好地捕捉目标的细节。通过提升输入图像分辨率,可以提高小目标检测的准确性和召回率,从而更好地识别和跟踪目标物体。

增大模型输入尺寸

        图像缩放是另一种常用的解决方案,同样可以提高小目标检测的精度。常见的做法便是直接开启“多尺度训练”,设置比较大的尺寸范围。不过,增大模型输入尺寸可能会导致模型计算量的增加和速度的降低。因此,大家在使用时需要权衡精度和效率之间的平衡。通常需要根据实际需求和可用资源进行调整,以找到最佳的模型输入尺寸。

        同样地,在推理时也可以视情况开启测试时增强Test Time Augmentation, TTA,特别是打比赛的时候。

特征融合

多尺度特征融合

        由于小目标的尺寸较小,其特征信息往往分布在图像的多个尺度中,因此需要在多个尺度的特征图中进行融合,以提高模型对小目标的感知能力。常见的多尺度特征融合方法包括 Feature Pyramid Networks, FPN 和 Path Aggregation Network, PAN 等。

长跳跃连接

        长跳跃连接是指将不同层级的特征图进行融合的一种方法,可以帮助模型更好地捕捉不同层级的特征信息。众所周知,浅层特征图的细节信息丰富但语义信息较弱,深层特征图则与之相反。因此,在小目标检测中,可以将低层级的特征图和高层级的特征图进行融合,以增强对小目标的定位能力。

注意力机制

        注意力机制是一种能够将模型的注意力集中到重要区域的技术,可以通过对特征图进行加权处理,将更多的注意力集中到小目标所在的区域,从而提高对小目标的检测能力。常见的注意力机制包括SENetSKNet等。

关于注意力的各种骚操作,请直接在微信公众号 CVHub 后台检索 《一文带你看尽深度学习中的各种注意力机制》,或者直接加小编微信好友:cv_huber,发送电子版给您。

数据增强

        数据增强是在保持数据本身不变的前提下,通过对数据进行随机变换来增加数据样本的数量和多样性,从而提高模型的泛化能力和鲁棒性。对于小目标检测任务,数据增强可以通过以下几种方式来解决:

尺度变换

        对于小目标而言,其尺寸往往较小,因此可以通过对原始图像进行缩放或放大的操作来增加数据样本的尺度变化。例如,可以将原始图像缩小一定比例,从而得到多个尺寸较小的图像样本。

随机裁剪

        对于包含小目标的图像,在不改变目标位置的情况下,可以通过随机裁剪的方式得到多个不同的图像样本,以增加数据的多样性。此外,可以使用非矩形的裁剪方式,例如多边形裁剪,来更好地适应小目标的不规则形状。

高级组合

        这一块大家伙最熟悉的可能是 YOLO 中的 Mosaic 增强,其由多张原始图像拼接而成,这样每张图像会有更大概率包含小目标。此外,我们还可以通过诸如 Copy-Paste 的办法将各类小目标充分的“复制-黏贴”,从而增加小目标的“曝光度”,提升他们被检测的概率。

关于数据增强的各种骚操作,请直接在微信公众号 CVHub 后台检索 《一文带你看尽深度学习中的各种数据增强》,或者直接加小编微信好友:cv_huber,发送电子版给您。

大图切分

Tiling

   Tiling是一种对大图进行切分的有效预处理操作,上图为在Roboflow平台上的演示。通过tile可以有效地让目标检测网络更好的聚焦在小物体上,同时允许我们保持所需的小输入分辨率,以便能够运行快速推断。不过需要注意的是,在推理时也理应保持输入的一致性。

SAHI

        Tiling 算是比较老旧的技术,目前笔者强烈推荐的还是Slicing Aided Hyper Inference, SAHI,即切片辅助超级推理,是一个专用于小目标检测的推理框架,理论上可以集成到任意的目标检测器上,无需进行任何微调。该方法目前已被多个成熟的目标检测框架和模型集成进去,如YOLOv5Detectron2MMDetection等。

损失函数

加权求和

这个非常好理解,就是我们可以自行定义小目标检测的尺寸,由于我们有 GT,因此在计算 Loss 的时候可以人为地对小目标施加更大的权重,让网络更加关注这部分。

Stitcher

   Stitcher是早几年出的产物,其出自《Stitcher: Feedback-driven Data Provider for Object Detection》一文。作者通过统计分析观察到,小目标之所以检测性能很差是因为在训练时对损失的贡献很小(要么漏检要么漏标)。因此,文章中提出了一种基于训练时动态反馈的机制,即根据计算出来的损失,自动决定是否要进行图像拼接的操作。

其它

下面简单整理一些有代表性的小目标检测文章。

2023

  • TinyDet: Accurate Small Object Detection in Lightweight Generic Detectors

  • YOLO-Drone: Airborne real-time detection of dense small targets from high-altitude perspective

2022

  • Towards Large-Scale Small Object Detection: Survey and Benchmarks

2020

  • Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network

2019

  • Augmentation for small object detection

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

被抄袭声明

我&#xff08;受害者&#xff09;的博客主页&#xff1a; ChuckieZhu的博客_CSDN博客-MATLAB,Python,Django领域博主 抄袭者&#xff08;施害者&#xff09;博客主页&#xff1a; 洋洋菜鸟的博客_CSDN博客-python实例,数学建模,python基础领域博主 问题说明&#xff1a; …

优思学院|什么是六西格玛?一文解答你对六西格玛最常见的疑问

什么是六西格玛&#xff1f; 六西格玛&#xff08;Six Sigma&#xff09;是一种管理方法和质量改进体系&#xff0c;旨在减少组织过程中的变异性&#xff0c;提高业务绩效&#xff0c;并实现客户满意度的持续提升。它是由美国Motorola公司在20世纪80年代发展起来的&#xff0c…

公司新来了个测试开发,据说是00后,上来一顿操作给我惊呆了.....

开年公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给公司…

Roxel 创世 NFT 作品集

Roxel 宇宙中的 Roxel 机器人、复古未来主义设备和生动机器的集合。在 Roxel 游戏的第一关「The Ascension」中&#xff0c;与它们一起玩耍或对抗&#xff0c;解锁访问独家内容。 该系列于北京时间 6 月 5 日晚上 11 点在 The Sandbox 市场平台上线。 作品一览 巨大的机械挖掘机…

QT学习之旅 - 自定义控件

文章目录 QT中horizontalLayout组件中调整长度在其他组件中使用自定义控件关于ComboBox控件关于QStringList ico添加失败获取windows端口号pro文件(添加)cpp文件(添加) 关于表格设置背景布(ui界面)设置网格.h文件 我们选择 widget 以上是选QT Froms的模板 我们可以选择QT设计师…

基于html+css的图展示124

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Python 基于招聘数据可视化界面

1 简介 随着国内的经济不断的快速发展&#xff0c;现在学生的就业压力也在逐年增加&#xff0c;网络上的招聘信息非常的丰富&#xff0c;但是对于学生而言岗位是否适合&#xff0c;自身技能是否满足企业需要等仍然需要进一步的进行研究。本次的开发就是帮助应届毕业生在选择工…

012 - STM32学习笔记 - DMA_存储器到存储器

011 - STM32学习笔记 - DMA直接存储器 1、DMA简介 我们知道stm32在实际应用过程中具有很强大的功能&#xff0c;包含数据的采集、处理、逻辑功能的运算等&#xff0c;因此stm32一直在处理大量的事务&#xff0c;但是在实际使用过程中&#xff0c;我们知道有些事情实际上不需要…

探索智慧文旅:沉浸式VR导览与个性化数字人带你畅游景区

导语&#xff1a; 随着科技的不断进步和智能化的兴起&#xff0c;智慧文旅已经成为旅游业的新趋势。在这个数字化时代&#xff0c;旅游体验已经不再局限于传统的观光和游玩&#xff0c;而是通过创新科技为游客提供了全新的旅行方式和更加丰富的体验。 在智慧文旅中&#xff0c…

Pycharm配置远程调试

原文链接 在搞深度学习的时候&#xff0c;我们在本地开发&#xff0c;但是需要在服务器去运行工程&#xff0c;所以需要使用Pycharm进行远程配置&#xff0c;可以实现本地代码自动同步到服务器&#xff0c;并在本地使用服务器的解释器。 条件&#xff1a;需要使用专业版Pycha…

【webrtc】SDP: rtcp-mux

https://w3c.github.io/webrtc-pc/ RTCRtcpMuxPolicy 是关于传输rtcp包的ice地址收集的 默认是必须开启的。 rtcpMuxPolicy of type RTCRtcpMuxPolicy, defaulting to “require”. Indicates which rtcp-mux policy to use when gathering ICE candidates.

ESXi 7.0 U3m Cisco (思科) 定制版 OEM Custom Installer CD

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

centos7安装 Miniconda

Miniconda是什么 Miniconda是一个轻量级的Anaconda发行版&#xff0c;它是一个Python环境管理器和软件包管理器。Anaconda是一个科学计算和数据科学的Python发行版&#xff0c;而Miniconda是Anaconda的精简版本&#xff0c;只包含了基本的组件。 按照以下步骤下载和安装Minicon…

软测量技术论文

软测量技术论文篇一 软测量技术在污水处理中的应用 摘要&#xff1a;近年来软测量技术的研究主要是基于人工神经网络&#xff0c;它对非线性问题有较好的处理能力&#xff0c;对求解结果有较好的泛化能力&#xff0c;由于实际生活中严格意义上的线性系统并不多见&#xff0c…

【实现微信红包效果】前端CSS实现微信红包打开效果(附源码下载)

【写在前面】上次领了一分钱微信红包后就在想如何实现红包打开翻转效果&#xff0c;微信带来最大的一个里程碑就是红包功能的开发&#xff0c;以至于出现这个现象&#xff0c;一块钱掉地上都不一定有人捡&#xff0c;但是微信群里抢到1分钱还得说一声谢谢老板&#xff0c;更有甚…

Win11 RTX 4090显卡深度学习环境配置(Nvidia显卡驱动、CUDA11.7.0)

Win11 RTX 4090显卡深度学习环境配置&#xff08;Nvidia显卡驱动、CUDA11.7.0&#xff09; 1. 简介2. 安装Anaconda3. 安装Pycharm4. 安装CUDA11.7.04.1 安装4.2 测试4.3 CUDA卸载 5. PyTorch安装5.1 PyTorch安装5.2 安装CUDA相关软件包5.3 测试 1. 简介 PyTorch分为CPU版本和…

并查集详解及应用

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。 文章目录 并查集优化方法 例题&#xff1a;合并集合code 例题&#xff1a;连通块中点的数量code 模板总结例题&#xff1a;食…

(链表) 143. 重排链表 ——【Leetcode每日一题】

❓143. 重排链表 难度&#xff1a;中等 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L 0 L_0 L0​ → L 1 L_1 L1​ → … → L n − 1 L_{n-1} Ln−1​ → L n L_n Ln​ 请将其重新排列后变为&#xff1a; L 0 L_0 L0​ → L n L_n Ln​ →…

hudi系列-文件系统视图(FileSystemView)

hudi表的数据一直在演变过程中,存储在文件系统中的数据文件也在不断增加和版本迭代,hudi提供了表级别的文件系统视图(filesystem view)来简单、直观地了解表中的数据分布情况、数据文件的状态和变化,以及数据的版本控制信息。文件系统视图提供了以下一些功能: 获取最新的ba…

如何看待分层测试?

分层测试分了个寂寞&#xff1f; 分层测试这个风吹了好多年&#xff0c;不分层都不好意思说自己是专业测试。各互联网公司更是对此乐此不疲&#xff0c;测试架构、测试平台&#xff0c;搞了一套又一套&#xff0c;然而。。。 理想总是丰满&#xff0c;现实总是骨干&#xff0…