【目标检测】CFINet:通过由粗到精的区域提议网络和模仿学习进行小目标检测

《Small Object Detection via Coarse-to-fine Proposal Generation and Imitation Learning》
通过由粗到精的区域提议网络和模仿学习进行小目标检测
期刊:ICCV 2023
原文:https://arxiv.org/abs/2308.09534
源码:https://github.com/shaunyuan22/CFINet

1. 研究背景

小目标检测在许多场景中具有重要作用,但目前的通用目标检测器在处理小目标时存在不足,主要面临样本不足、质量低以及 RoI 预测不确定等挑战。
当前基于重叠或距离的先验到提议范式在检测小目标时存在局限性,且现有的分配或采样方案对解决该问题贡献较小。
小目标通常缺乏判别性信息和扭曲的结构,导致模型预测不准确,现有方法通过 GAN 或相似性学习来弥补小目标和大目标之间的表示差距,但存在一些问题。

2. 相关工作

2.1 Anchor Refinement 和 Region Proposals

两阶段基于锚点的方法依赖高质量的候选区域,RPN 用于产生候选区域,后续工作对锚点生成进行改进,但当前的提议框架难以产生小目标的高质量候选区域。

2.2 Feature Imitation for Small Object Detection

通过挖掘小目标和大目标之间的内在相关性来提升小目标的语义表示,但大多数方法依赖 GAN,存在训练复杂、易产生假纹理等问题,且一些方法基于相似性学习,可能导致特征崩溃或内存负担。

2.3 Contrastive Learning for Object Detection

自监督学习中的对比学习在目标检测中有所应用,但利用对比学习提升小目标表示的潜力尚未被充分挖掘。

3. 研究方法 - CFINet

提出了CFINet的由粗到精的区域提议网络和模仿学习进行小目标检测。
在这里插入图片描述

3.1 由粗到细的Coarse-to-fineRPN:CRPN

Cascade RPN 在处理小目标时存在局限性,如依赖启发式锚点设置、对小目标中心区域关注不足、在单个金字塔级别标记正锚点等。
受到Cascade RPN启发,提出 Coarse - to - fine RPN(CRPN),通过基于面积的锚点选择策略和级联回归来为小目标提供高质量的提议。保留所有 FPN 级别的锚点进行第一阶段回归,并使用自适应卷积进行特征对齐和第二阶段回归。
损失函数:CRPN 的训练目标损失函数包括交叉熵损失和 IoU 损失,具体公式为
在这里插入图片描述

3.2 特征模仿Feature Imitation:FI

设计了特征模仿(Feature Imitation, FI)head结构,包含样本特征集(Exemplar Feature Set)和特征嵌入模块(Feature-to- embedding, Feat2Embed)。样本特征集用于保留高质量的ROI特征,特征嵌入模块用于将区域特征映射到嵌入空间。
样本特征集:引入 Instance Quality(IQ)指标来确定高质量示例,通过设置适当的阈值选择合适的实例构建教师特征集并进行模仿过程。
特征嵌入模块:特征嵌入模块将区域特征映射到嵌入空间,通过连续的 3 × 3 卷积层和两层感知机进行处理,实验探究了不同的设计选择和结构。

3.3 Loss Function

FI 分支的损失函数基于监督对比学习,通过计算提议的 RoI 特征与高质量实例存储特征在嵌入空间中的相似度,来拉近混淆模型的实例特征与所属类别的示例特征的距离,并推开与其他类别和背景的示例特征的距离。总损失函数为:
在这里插入图片描述

4. 实验

在专门为小目标检测定制的大规模基准数据集 SODA 上进行实验,包括 SODA - D 和 SODA - A,SODA 中的实例非常小,且包含大量忽略注释,以帮助模型关注有价值的小实例。

4.1 SODA-D结果

在这里插入图片描述

4.2 SODA-A结果

在这里插入图片描述

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

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

相关文章

Linux之HTTP服务器的构建

欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力! 江山如画,客心如若,欢迎到访,一展风采 文章目录 参考环境参考书籍一、HTTP的工作原理1. 建立连…

Windows 11上RTX 4090深度学习与大模型微调环境安装指南

【本文原作者:擎创科技资深产品专家 布博士】 在安装深度学习及大模型微调环境时,经历了多次反复操作(如CUDA、cuDNN、PyTorch的安装与卸载)。为了避免走弯路,总结了以下步骤: 步骤 1:显卡驱动…

11-sentinel利用nacos作持久化

本文介绍sentinel配置数据的持久化方法。由于sentinel官方并没有提供持久化功能,大家在测试过程中也能发现sentinel服务重启后,原来配置的数据就丢了,本文就是来处理这一问题的。 做好心理准备,我们要修改sentinel的源代码&#…

Qt消息对话框的实现

Widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this -> setWindowIcon(QIcon(":/picture/hp.jpg"));//设置窗口图标this -> setW…

Leetcode JAVA刷刷站(57)插入区间

一、题目概述 二、思路方向 为了解决这个问题,我们可以遍历给定的区间列表 intervals,并同时构建一个新的列表来存储最终的合并结果。遍历过程中,我们检查当前区间是否与 newInterval 重叠或相邻,并根据需要进行合并。如果不重叠…

2024新生训练营 8.20 做题活动

A 输出题罢了不讲直接看代码 #inlclude<stdio.h> int main() {printf("Eclipse First&#xff0c;the Rest Nowhere.");return 0; }B 首先要知道的是凡是大于1的整数要么是质数要么是合数&#xff0c;而1既不是质数也不是合数&#xff0c;题目问从0到n所有质数…

微信小程序--30(网络数据请求)

1.小程序中网络数据请求的限制 只能请求HTTPS类型的接口必须将接口的域名添加到信任列表中 2.配置request合法域名 需求描述 希望请求某个域名下的接口 步骤 登录小程序管理后台→开发→开发设置→服务器域名→修改request合法域名 练习 注意事项 域…

系统架构:分而治之

系统架构&#xff1a;分而治之 引言“分而治之”在架构中的应用模块化设计分层化架构微服务架构 分而治之的优势降低复杂性提高灵活性和可扩展性增强可维护性促进团队协作 分而治之的劣势复杂性转移性能开销开发和运维的复杂性数据一致性挑战 结论 引言 “分而治之”是一种分析…

wo是如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…

QT基础知识4

思维导图 项目文件里面要加texttospeech模块 widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime>//时间类 #include <QTextToSpeech>//语音播报类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass…

C:每日一练:单身狗(2.0版本)

前言&#xff1a; 今天在刷题的时候突然看到一道题&#xff0c;疑似一位故题。仔细一看&#xff0c;欸&#xff01;这不是就是单身狗的升级版吗&#xff1f;我想那必须再安排一篇&#xff0c;不过由于本篇文章与上一篇单身狗文章所涉及的知识点基本相同&#xff0c;所以还请大…

流媒体服务器二:2.RTMP协议学习

RTMP协议详解 一.总体介绍 RTMP协议是应⽤层协议&#xff0c;是要靠底层可靠的传输层协议&#xff08;通常是TCP&#xff09;来保证信息传输的可靠性的。在 基于传输层协议的链接建⽴完成后&#xff0c;RTMP协议也要客户端和服务器通过“握⼿”来建⽴基于传输层链接之 上的RT…

滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地

引言 在移动开发领域&#xff0c;移动跨端技术因其提效收益&#xff0c;逐渐成为业界趋势之一。Flutter 作为近年来热门的跨端技术&#xff0c;以高性能、自渲染、泛跨端著称&#xff0c;得到广泛应用。在滴滴国际化业务中&#xff0c;我们大量应用 Flutter。目前已在滴滴国际化…

C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。

1.题目要求&#xff1a; 将一个5X5的矩阵中最大的元素放在中心&#xff0c;四个角分别放四个最小的元素&#xff08;顺序为从左到右&#xff0c;从上到下&#xff0c;从小到大存放&#xff09;&#xff0c;写一函数实现之。 2.数组法实现 #define _CRT_SECURE_NO_WARNINGS 1…

python从入门到精通:数据容器

数据容器介绍 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 数据容器根据特点的不同&#xff0c;如&#xff1a; 是否支持重复元素 是否可以修改 是否有序&#xff0…

数据库根据日期统计SQL编写记录

统计每天产生多少数据 SELECT to_char("日期字段",YYYY-MM-dd) time ,count(*) FROM "表名" GROUP BY time;统计每月产生多少数据 SELECT to_char("日期字段",YYYY-MM) time ,count(*) FROM "表名" GROUP BY time;统计每年产生多少数…

【GitLab】使用 Docker 安装 GitLab 1:配置 SSH 端口

使用 Docker 安装 GitLab 要求修改ssh端口 GitLab 使用 SSH 通过 SSH 与 Git 交互。默认情况下,GitLab 使用端口22。 要在使用 GitLab Docker 映像时使用其他端口,您可以执行以下操作之一: 更改服务器的 SSH 端口(推荐)。 更改 GitLab Shell SSH 端口。 更改服务器的 SSH …

C++(week17): C++提高:(七)workflow

文章目录 一、Http协议二、Nginx1.概念2.nginx的安装和部署(1)安装nginx(2)使用nginx服务器部署静态资源 3.HTTP服务器架构(1)基于进程、基于线程&#xff1a;APache(2)事件驱动模型&#xff1a;Nginx(3)反向代理(4)负载均衡 三、workflow异步事件引擎 (异步回调模型)1.服务器底…

Qt找不到QSound头文件,头文件QSoundEffect

目录 Qt找不到QSound头文件 CMake qmke 可能版本不同更新&#xff0c; 找不到QSound头文件 Qt找不到QSound头文件 #include <QSound> CMake 可以看一下这篇来自网上的文章 CMake中添加Qt模块的合理方法 - wjbooks - 博客园 (cnblogs.com) qmke 打开.pro文件&am…

[linux#39][线程] 详解线程的概念

线程&#xff1a;是进程内的一个执行分支。线程的执行粒度比进程要细 什么是线程&#xff1f; • 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程 是“一个进程内部的控制序列” • 一切进程至少都有一个执行线程 • …