当前位置: 首页 > news >正文

【aiy篇】小目标检测综述

小目标检测(Small Object Detection)是指在图像中检测尺寸较小的目标物体,通常是指物体的尺寸小于图像大小的1/10或者更小,COCO为例,面积小于等于1024像素的对象维下目标。小目标检测是计算机视觉领域的一个重要研究方向,具有广泛的应用前景,例如安防监控、智能交通、无人机等。注:此篇会根据后面学的知识不断 更新,欢迎交流回访

背景:

目标检测在过去几年中取得了显著的进展,然而,由于小目标视觉特征较差、噪声较多,小目标检测已成为计算机视觉中最具有挑战性的任务之一。此外,用于小尺寸目标检测的大规模基准测试数据集仍然不够全面。

数据集:

SODA-D和SODA-A,分别关注驾驶场景和空中场景。SODA-D包括24704张高质量交通图像和9个类别的277596个实例。SODA-A收集了2510张高分辨率航空图像,并在9个类中注释了800203个实例。

目前研究现状:

虽然在通用目标检测方面取得了实质性进展,但小目标检测的研究进展相对缓慢,即使是SOTA网络,在检测小目标和正常尺寸目标方面也存在巨大的性能差距。以DyHead为例,DyHead在COCO测试集上小目标的平均精度(mAP)度量仅为28.3%,显著落后于中型和大型目标(分别为50.3%和57.5%)。
这种性能下降有两个原因:

  • 1) 从小物体的有限和扭曲信息中学习适当表征存在固有的困难;
  • 2) 缺乏用于小对象检测的大规模数据集;

最新进展:

  • 数据处理方法
    • 基于重/过采样的方法
    • 自动增强方案
  • 尺度感知方法
    • 分而治之的多尺度检测
    • 自适应定制的训练方案
  • 特征融合方法
    • 自上而下的信息交互
    • 精细特征融合
  • 超分辨率方法
    • 基于学习的尺度扩充
    • 基于GAN的超分辨率框架
  • 上下文建模方法
    • 人类可以有效地利用环境和物体之间的关系或物体之间的相互关系来促进物体和场景的识别。这种捕捉语义或空间关联的先验知识称为上下文,它将证据或线索传递到目标区域之外。上下文信息不仅在人类的视觉系统中至关重要,在场景理解任务中也至关重要。

主要挑战:

1.目标信息丢失
特征提取器通常利用子采样操作来过滤噪声,并降低特征图的空间分辨率,从而不可避免地丢失目标信息。考虑到最终特征仍然保留了足够的信息,这种信息丢失在一定程度上几乎不会影响大中型对象的性能。然而这对小目标来说是致命的,因为检测头很难在高度结构化的表示上给出准确预测,在这种表示中,小物体的微弱信号几乎被消除。

2.噪声特征表示
判别特征对于分类和定位任务都至关重要,小物体通常分辨率低,外观质量差,因此很难从其扭曲的结构中进行区分学习。同时,小对象的区域特征容易受到背景和其他情况的污染,从而进一步将噪声引入学习表示。综上所述,小目标的特征表示容易受到噪声的影响,阻碍后续检测。

3.边界框扰动的低容忍
定位作为检测的主要任务之一,在大多数检测范式中被表述为回归问题,其中定位分支被设计为输出边界框偏移,通常采用联合交集(IoU)度量来评估精度。然而,定位小对象比定位大对象更困难。如图下图所示,与中大型对象(56.6%和71.8%)相比,小对象预测框的微小偏差(沿对角线方向的6个像素)导致IoU显著下降(从100%降至32.5%)。同时,更大的差异(例如,12像素)进一步加剧了这种情况,对于小对象,IoU下降到可怜的8.7%。也就是说,与较大的对象相比,小对象对box扰动的容忍度较低,从而加剧了回归分支的学习。
在这里插入图片描述

主要算法如下:

  • 基于特征金字塔的方法:这种方法通过构建特征金字塔来捕获不同尺度的特征信息,然后将不同尺度的特征信息进行融合以提高目标检测的准确率。常见的基于特征金字塔的方法包括FPN(Feature Pyramid Network)、SSD(Single Shot Detector)等。

  • 基于注意力机制的方法:这种方法通过引入注意力机制来提高小目标的检测性能,例如SENet(Squeeze-and-Excitation Network)、CBAM、SKNet等。

  • 基于联合训练的方法:这种方法通过联合训练来提高小目标的检测性能,例如CornerNet、CenterNet等。

  • 基于弱监督学习的方法:这种方法通过利用弱监督学习技术来减少标注数据的需求,例如WOD(Weakly Supervised Object Detection)等。

  • 基于增强数据的方法:这种方法通过增加数据的多样性和难度来提高小目标的检测性能,例如使用数据增强技术 (随机裁剪、颜色抖动)、增加负样本等。

相关文章:

【aiy篇】小目标检测综述

小目标检测(Small Object Detection)是指在图像中检测尺寸较小的目标物体,通常是指物体的尺寸小于图像大小的1/10或者更小,COCO为例,面积小于等于1024像素的对象维下目标。小目标检测是计算机视觉领域的一个重要研究方…...

常用Linux命令的基本使用

序号 命令 对应英文 作用 1 ls list 查看当前文件夹下的内容 2 pwd print work directory 查看当前所在文件夹 3 cd[目录名] changge directory 切换文件夹 4 touch[文件名] touch 如果文件不存在,新建文件 5 mkdir[目录名] make directory …...

对跳表的深入理解

一,如何理解跳表 简单说跳表(Skip list)就是链表的“二分查找”。redis 的有序集合用的就是跳表算法。跳表是一种各方面性能都比较优秀的动态数据结构,可以支持快速地插入、删除、查找操作,写起来也不复杂&#xff0c…...

C++017-C++冒泡排序与插入排序

文章目录C017-C冒泡排序与插入排序冒泡排序与插入排序目标冒泡排序排序规则冒泡排序优化插入排序题目描述在线练习:总结C017-C冒泡排序与插入排序 在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 冒泡排序与插入排序 参考:…...

数据结构基础之链表

目录 前言 1、什么是链表 2、添加元素 3、虚拟头结点 4、查询&修改元素 5、删除元素 附:完整代码 前言 又到周末了,修整了一天,继续来写点东西吧,今天,我们来学习数据结构中的另一种基础的数据结构——链表…...

css 的渲染层合成是什么,浏览器如何创建新的渲染层

在 DOM 树中每个节点都会对应一个渲染对象(RenderObject),当它们的渲染对象处于相同的坐标空间(z 轴空间)时,就会形成一个 RenderLayers,也就是渲染层。渲染层将保证页面元素以正确的顺序堆叠&a…...

nacos-sdk-rust binding to NodeJs

广告时间 nacos-sdk-rust-binding-node : nacos-sdk-rust binding to NodeJs with napi. Tip: nacos-sdk-nodejs 仓库暂未提供 2.x gRPC 交互模式,为了能升级它,故而通过 node addon 方式调用 nacos-sdk-rust npm 包 -> https://www.npmjs.com/packa…...

MySQL下载安装以及环境配置教程

目录MySQL 下载MySQL 安装配置环境变量MySQL 下载 进入官方网站 https://www.mysql.com/ 点击 DOWNLOADS 进入下载页面 免费版本点击下方的 MySQL Community (GPL) Downloads 点击 MySQL Community Server 点击 Go to Download Page 进入下载页面 点击 Download 点击 No thank…...

概率论 1.3 古典概型与几何概型

1.3.1 排列与组合排列从n个不同元素任取r(r<n)个元素排成一列(考虑元素出现的先后次序)&#xff0c;称此为一个排列&#xff0c;此种排列的总数为n(n-1)....(n-r1)n!/(n-r)&#xff01;&#xff0c;若rn,则称为全排列&#xff0c;2.重复排列从n个不同元素中每次取出一个,放回…...

HTML DOM

通过 HTML DOM&#xff0c;可访问 JavaScript HTML 文档的所有元素。HTML DOM (文档对象模型)当网页被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff08;Document Object Model&#xff09;。HTML DOM 定义了用于 HTML 的一系列标准的对象&#xff0c;以及访问和处…...

Vue组件-$refs、$nextTick和name属性的使用

Vue组件-$refs和$nextTick使用一、获取DOM二、$refs获取组件对象三、$nextTick异步更新DOM四、组件name属性的使用一、获取DOM 通过id或ref属性获取原生DOM 在mounted生命周期 – 2种方式获取原生DOM标签 目标标签 – 添加id / ref恰当时机, 通过id / 通过ref属性 获取目标标签…...

【Spark】Spark的DataFrame向Impala写入数据异常及源码解析

背景 事情是这样的&#xff0c;当前业务有一个场景: 从业务库的Mysql抽取数据到Hive 由于运行环境的网络限制&#xff0c;当前选择的方案&#xff1a; 使用spark抽取业务库的数据表&#xff0c;然后利用impala jdbc数据灌输到hive。&#xff08;没有spark on hive 的条件&…...

学习笔记-架构的演进之限流-3月day03

文章目录前言限流的目标流量统计指标限流设计模式流量计数器模式滑动时间窗模式漏桶模式令牌桶模式分布式限流总结附前言 任何一个系统的运算、存储、网络资源都不是无限的&#xff0c;当系统资源不足以支撑外部超过预期的突发流量时&#xff0c;就应该要有取舍&#xff0c;建…...

动态规划 背包问题

动态规划 背包问题 问题描述&#xff1a; 有一个背包&#xff0c;总容量为12。有6件物品&#xff0c;每件物品的重量和价值不同&#xff0c;求在背包总容量12的前提下&#xff0c;装进物品的最大价值以及装进物品的编号 单个物品重量和价值&#xff1a; 为方便进行思考&#…...

C++ Primer Plus 学习笔记(四)—— 内存模型和名称空间

1 单独编译 C允许将组件函数放在独立的文件即头文件中&#xff0c;头文件中可以包含以下内容&#xff1a; 函数原型&#xff1b;使用#define或const定义的符号常量&#xff1b;结构声明&#xff1b;类声明&#xff1b;模板声明&#xff1b;内联函数。 注意&#xff0c;在包含…...

详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain

以流支付为主要概念的Zebec生态&#xff0c;正在推动流支付这种新兴的支付方式向更远的方向发展&#xff0c;该生态最初以Zebec Protocol的形态发展&#xff0c;并从初期的Solana进一步拓展至BNB Chian以及Near上。与此同时&#xff0c;Zebec生态也在积极的寻求从协议形态向公链…...

列表与数组的转化

目录用np.array(a)将列表转换为数组列表转数组的特殊情况(一)列表转数组的特殊情况(二)针对子元素个数不一致的解决办法用a.tolist()函数将数组转化为列表在python的学习中&#xff0c;经常会用到数组与列表的相互转化&#xff0c;本文主要介绍下关于数组与列表转化的问题。用n…...

docker 运行花生壳实现内外网穿透

环境&#xff1a;centos 7 ,64位 1、创建一个指定的文件夹作为安装示例所用&#xff0c;该示例文件夹为“hsk-nwct”。“hsk-nwct”内创建“app”文件夹作为docker容器挂载出来的文件。 2、在“app”内下载花生壳linux安装包&#xff0c;下载花生壳应用&#xff1a;花生壳客户…...

操作系统——16.时间片轮转、优先级、多级反馈队列算法

这篇文章我们来看一下进程调度算法中的时间片轮转、优先级、多级反馈队列算法 目录 1.概述 2.时间片轮转调度算法&#xff08;RR&#xff0c;Round-Robin&#xff09; 3.优先级调度算法 4.多级反馈队列调度算法 5.分析对比 1.概述 首先&#xff0c;我们来看一下这篇文章…...

Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作

文章目录1.认识Redis1.1.优点1.2.缺点2.在Django中Redis的连接3.Redis的基础用法3.1.hashmap结构3.2.list结构4.命令行查看数据库5.作者答疑1.认识Redis Remote DIctionary Server(Redis) 是一个key-value 存储系统&#xff0c;是跨平台的非关系型数据库。是一个开源的使用 AN…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...