目标检测难题 | 小目标检测策略汇总

大家好,在计算机视觉中,检测小目标是最有挑战的问题之一,本文给出了一些有效的策略。

从无人机上看到的小目标

为了提高模型在小目标上的性能,本文推荐以下技术:

  • 提高图像采集的分辨率

  • 增加模型的输入分辨率

  • tile你的图像

  • 通过增强生成更多数据

  • 自动学习模型anchors

  • 过滤掉无关的类别

小目标问题困扰着世界各地的目标检测模型。查一下最近的模型在COCO上的评估结果,YOLOv3,EfficientDet和YOLOv4:

查看AP_S、AP_M、AP_L以了解最新的模型

以Efficient为例,小目标的AP只有12%,大目标的AP为51%。这几乎是五倍的差异,检测小物体如此困难要归结于模型,目标检测模型通过在卷积层中对像素进行聚合来形成特征。

图片

物体检测中的特征聚合

在网络的末端,基于损失函数进行预测,损失函数根据预测值和ground truth之间的差异对所有像素进行加和。

图片

YOLO中的损失函数

如果ground truth框不大,则在进行训练时信号会很小。此外,小物体最有可能有数据标记错误,他们的识别可能被忽略,从经验和理论上讲小物体是很难的。

提升图像采集的分辨率

这其实都是分辨率的问题。

非常小的物体的边界框中可能只包含几个像素,这意味着增加图像的分辨率可以增加探测器可以从那个小盒子中形成的丰富特征,这是非常重要的。

因此,我们建议尽可能提高采集图像的分辨率。

提高模型的输入分辨率

一旦有了更高分辨率的图像,就可以放大模型的输入分辨率。警告:这将导致大型模型需要更长的时间来训练,并且开始部署时,也会更慢地进行推断,可能需要实验来找出速度与性能之间的正确权衡。

在训练YOLOv4中,可以通过改变配置文件中的图像大小来轻松缩放输入分辨率。

[net] 
batch=64 
subdivisions=36 
width={YOUR RESOLUTION WIDTH HERE} 
height={YOUR RESOLUTION HEIGHT HERE} 
channels=3 
momentum=0.949 
decay=0.0005 
angle=0 
saturation = 1.5 
exposure = 1.5 
hue = .1  
learning_rate=0.001 
burn_in=1000 
max_batches=6000 
policy=steps 
steps=4800.0,5400.0 
scales=.1,.1

同时也可以在训练YOLOv5中通过改变训练命令中的图像尺寸参数来轻松缩放输入分辨率:

!python train.py --img {YOUR RESOLUTON SIZE HERE} --batch 16 --epochs 10 --data '../data.yaml' --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results  --cache

对图像进行Tiling

检测小物体的另一个重要策略是将图像切割后形成batch,这个操作叫做tile,作为预处理步骤。tile可以有效地将检测器聚焦在小物体上,但允许保持所需的小输入分辨率,以便能够运行快速推断。

tile图像作为预处理步骤

如果在训练中使用tile,重要的是要记住,也需要在推理时tile你的图像。

通过增强生成更多数据

数据增强从基本数据集生成新的图像,这对于防止模型过拟合训练集非常有用。

一些特别有用的小物体检测增强包括随机裁剪、随机旋转和马赛克增强。

自动学习模型Anchors

Anchors是模型学会预测的与之相关的原型边界框。也就是说,anchors可以预先设置,有时对你的训练数据不是最优的。最好根据手头的任务自定义调优它们,YOLOv5模型会根据自定义数据自动为你完成这项工作,所需要做的就是开始训练。

Analyzing anchors... anchors/target = 4.66, Best Possible Recall (BPR) = 0.9675. Attempting to generate improved anchors, please wait... WARNING: Extremely small objects found. 35 of 1664 labels are < 3 pixels in width or height. Running kmeans for 9 anchors on 1664 points... thr=0.25: 0.9477 best possible recall, 4.95 anchors past thr n=9, img_size=416, metric_all=0.317/0.665-mean/best, past_thr=0.465-mean: 18,24,  65,37,  35,68,  46,135,  152,54,  99,109,  66,218,  220,128,  169,228 Evolving anchors with Genetic Algorithm: fitness = 0.6825: 100%|██████████| 1000/1000 [00:00<00:00, 1081.71it/s] thr=0.25: 0.9627 best possible recall, 5.32 anchors past thr n=9, img_size=416, metric_all=0.338/0.688-mean/best, past_thr=0.476-mean: 13,20,  41,32,  26,55,  46,72,  122,57,  86,102,  58,152,  161,120,  165,204

过滤掉无关的类别

类别管理是提高数据集质量的一项重要技术。如果有一个类与另一个类明显重叠,应该从数据集中过滤掉这个类。也许在处理中,认为数据集中的小物体不值得检测,可能希望将其拿掉。

综上所述,正确地检测小物体确实是一项挑战。本文讨论了一些策略来改善小物体探测器,即:

  • 提高图像采集的分辨率

  • 增加模型的输入分辨率

  • tile你的图像

  • 通过增强生成更多数据

  • 自动学习模型anchors

  • 过滤掉无关的类别

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

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

相关文章

3DMAX初级小白班第一课:菜单栏介绍

基本介绍 这里不可能一个一个选项全部教给大家&#xff08;毕竟之后靠实操慢慢就记住了&#xff09;&#xff0c;只说一些相对需要注意的设置。 自定义-热键编辑器-热键设置 这里有你所需要的全部快捷键 自定义-自定义UI启动布局 将UI布局还原到启动的位置 自定义-通用单…

【Linux配置yum源以及基本yum指令】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、yum是什么&#xff1f; 二、什么是软件包&#xff1f; 三、三种安装软件包的方式 四、yum的相关操作 4.1、搜索软件 4.2、安装软件 4.3、卸载软件 4.4、那…

操作系统-进程的概念,组成,特征(PCB 程序如何运行)

文章目录 总览进程的概念进程的组成-PCBPCB中存放的内容程序是如何运行的进程的组成-程序段&#xff0c;数据段进程的特征小结 总览 进程的概念 任务管理器&#xff1a;显示运行的进程 打开qq前后 打开三个qq&#xff0c;有三个进程 进程的组成-PCB PCB包含进程的很多信息 …

AI搜索引擎Perplexity来了,谷歌等老牌搜索引擎或许会有新的威胁?

Perplexity AI 是一家 AI 搜索初创公司&#xff0c;它通过结合内容索引技术和大型语言模型的推理能力&#xff0c;提供更便捷和高效的搜索体验。另外&#xff0c;最近很火的小兔子Rabbit R1硬件AI设备中的搜索功能正是这家公司的杰作。在短短一年半的时间里&#xff0c;一个企业…

51单片机1-6

目录 单片机介绍 点亮一个LED 流水灯参考代码 点亮流水LEDplus版本 独立按键 独立按键控制LED亮灭 静态数码管 静态数码管显示 动态数码管显示 模块化编程 调试工具 矩阵键盘 矩阵键盘显示数据 矩阵键盘密码锁 学习B站江协科技课程笔记。 安装keil&#xff0c;下…

Hotspot源码解析-第21章-引用处理器和JNI句柄初始化

第21章-引用处理器和JNI句柄初始化 21.1 引用处理器初始化 这一节主要是对软引用处理器使用前的各重要属性初始化&#xff0c;为GC时对引用处理前的使用做准备&#xff0c;使用细节会在GC专题中讲。函数的调用入口在init.cpp->referenceProcessor_init() 21.1.1 referenc…

文件的上传下载

文件的上传下载 文件上传依赖配置 文件上传的最大值文件请求的最大值临时文件存储路径Controller方法一方法二 文件下载方法一方法二 文件上传 今天工作中需求涉及到文件的上传和下载&#xff0c;Spring Boot提供了Multipart文件上传的支持。Multipart是HTTP协议中的一种方式&…

cmd命令指南

dir: 显示当前目录中的文件和子文件夹列表。 cd: 更改当前目录。使用 “cd <目录路径>” 来导航到指定的目录&#xff0c;或使用 “cd …” 返回上一级目录。 md: 创建新的文件夹。例如&#xff0c;使用 “md <文件夹名称>” 来创建一个新的文件夹。 rd: 删除文…

Qt配置OpenCV

首先安装好Qt Createor&#xff0c;CMake&#xff0c;OpenCV,我本次使用的是Qt6.3.4和OpenCV4.6.0 Qt Creator清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qtcreator/OpenCV官网下载: https://opencv.org/releases/ 一. 编译OpenCV 首先使用Qt C…

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…

ThinkPHP5.0.0~5.0.23路由控制不严谨导致的RCE

本次我们继续以漏洞挖掘者的视角&#xff0c;来分析thinkphp的RCE 敏感函数发现 在调用入口函数&#xff1a;/ThinkPHP_full_v5.0.22/public/index.php 时 发现了框架底层调用了\thinkphp\library\think\App.php的app类中的incokeMethod方法 注意传递的参数&#xff0c;Refle…

shopee最新选品:Shopee平台上的最新选品策略和方法

在Shopee平台上进行选品是卖家们必须经历的重要步骤。通过精心选择和定位产品&#xff0c;卖家可以提高产品的市场接受度和销售业绩。然而&#xff0c;要在竞争激烈的电商市场中脱颖而出&#xff0c;并不是一件容易的事情。本文将介绍一些在Shopee平台上进行最新选品时可以采用…

打造专业级ChatGPT风格聊天界面:SpringBoot与Vue实现动态打字机效果,附完整前后端源码

大家好&#xff0c;今天用SpringBoot、vue写了一个仿ChatGPT官网聊天的打字机效果。 所有代码地址:gitee代码地址 &#xff0c;包含前端和后端&#xff0c;可以直接运行 使用本技术实现的项目&#xff1a;aicnn.cn&#xff0c;欢迎大家体验 如果文章知识点有错误的地方&#xf…

Elasticsearch 查询超过10000 的解决方案 - Python

文章目录 Elasticsearch 查询超过10000 的解决方案 - Python法1&#xff1a;修改 设置 max_result_size &#xff08;不推荐&#xff09;法2&#xff1a; scroll 分页法3&#xff1a; search_after 分页 Elasticsearch 查询超过10000 的解决方案 - Python 法1&#xff1a;修改…

【源码】医院绩效管理系统,针对医、护、技、药、管不同岗位,可设置不同的核算方法、核算参数

医院绩效管理系统源码 医院绩效管理系统以国家医院绩效管理考核政策法规为依据&#xff0c;结合医院管理实践&#xff0c;以经济管理指标为核心&#xff0c;医疗质量、安全、效率、效益管理为重点&#xff0c;特别强调持续改进&#xff08;PDCA&#xff09;管理理念。实现医院绩…

《WebKit 技术内幕》学习之九(1): JavaScript引擎

1 概述 1.1 JavaScript语言 说起JavaScript语言&#xff0c;又要讲一个典型的从弱小到壮大的奋斗史。起初&#xff0c;它只是一个非常不起眼的语言&#xff0c;用来处理非常小众的问题。所以&#xff0c;从设计之初&#xff0c;它的目标就是解决一些脚本语言的问题&#xff…

[Android] Android架构体系(2)

文章目录 Bionic精简对系统调用的支持:不支持 System V IPC:有限的 Pthread 功能:有限支持C:不再支持本地化和/或宽字符:Bionic新增的特性系统属性硬编码写死的UID/GID内置了DNS解析硬编码写死的服务和协议 硬件抽象层Linux内核匿名共享内存(ASHMem)BinderLoggerION 内存管理内…

ZXing开源库生成二维码

引言 二维码&#xff08;QR Code&#xff09;作为一种快速、高容量、高密度的矩阵条码&#xff0c;已经在各行各业得到广泛应用。ZXing&#xff08;Zebra Crossing&#xff09;是一款由Google开源的Java二维码生成和解析库&#xff0c;提供了丰富的功能和易于使用的API。本篇博…

wikijs在启动项目时遇到的问题Database Initialization Error: create table “migrations“

问题 使用PostgreSQL安装wikijs过程中&#xff0c;启动项目运行node server时&#xff0c;会报错如下&#xff1a; error: Database Initialization Error: create table "migrations" ("id" serial primary key, "name" varchar(255), "b…

西瓜书学习笔记——Boosting(公式推导+举例应用)

文章目录 引言AdaBoost算法AdaBoost算法正确性说明AdaBoost算法如何解决权重更新问题&#xff1f;AdaBoost算法如何解决调整下一轮基学习器样本分布问题&#xff1f;AdaBoost算法总结实验分析 引言 Boosting是一种集成学习方法&#xff0c;旨在通过整合多个弱学习器来构建一个…