遥感目标检测(1)--R3Det
目录
一、概述
二、三个挑战
三、网络架构编辑
1、旋转RetinaNet
2、精细化旋转RetinaNet
3、与RoIAlign(感兴趣区域插值)进行比较
4、消融实验与对比实验
一、概述
R3Det论文中提到一个端到端的精细化的单级旋转检测器,通过从粗到细的逐步回归的方法快速和准确地目标检测。
考虑到现有的改进的单级检测器中特征错位的不足,我们设计了一个特征精细化模块(FRM),通过获得更准确的特征来提高检测性能。FRM特征细化模块核心就是进行逐像素的特征插值(双线性插值重新获取更精确的特征向量)。
提出一个近似SkewIoU来解决SkewIoU计算不可推导的问题,也相较于Smooth L1 Loss对不同尺寸的旋转框有更好的拟合效果。
本文也在DOTA、HRSC2016、UCAS-AOD三个遥感数据集和ICDAR2015场景文本数据集上进行了对比实验和消融实验,验证本文方法有效性。
二、三个挑战
当前目标检测方法分为两类,以faster rcnn等rcnn系列为主的two-stage(二阶段检测器)和YOLO系列和SSD的one-stage(单级检测器)
由于场景文本检测、零售场景检测、遥感物体检测中物体有不同的方向,所以提出符合通用检测框架的旋转检测器,其中本文提出三个挑战:
(1)大纵横比:大纵横比对象之间的联合倾斜交叉点得分对角度的变化很敏感。本文提出高精度、快速旋转的单级检测器,实现高精度检测,相较于基于学习的特征对齐方法,缺乏明确的机制来补偿错位,本文提出一个直接有效的基于纯计算的方法,来扩展到处理旋转的情况。
(2)对于密集排列的物体:由于在遥感领域等物体紧密排列。本文提出了一个从粗到细渐进回归的方法,首先使用水平锚来提高检测速度,在使用旋转锚来调整精度,这可以更加高效和灵活。
(3)任意旋转的物体:由于图像的物体可能出现在不同方向上,所以检测器需要具有判断不同方向的能力。本文提出了一种可推导的近似的SkewIoU损失,解决了SkewIoU计算不可微问题,相较于Smooth L1损失,可以实现更加精确的旋转估计,这种方法保留了准确的SkewIoU振幅,只是近似了SkewIoU损耗的梯度方向。
三、网络架构
R3Det网络结构,首先使用Resnet的baseline,添加RetinaNet结构中的FPN,构建单级检测器,后使用残差结构添加FRM(特征细化模块)接二阶段(水平锚和旋转锚)分类和回归的subnet,其中Refined Stages的细化阶段可能会进行若干次。(其实这个改进单阶段检测器对比于改进二阶段检测器使用RoI Align和RoI Pooling,可以保持速度优势,仍然使用了全卷积结构)
下图为RetinaNet网络结构可以进行对比,RetinaNet网络结构:ResNet+FPN+class和box的subnet。
1、旋转RetinaNet
作为当时旋转框领域最为先进的模型R3Det,采用基于RetinaNet模型,使用x,y,w,h,θ,来将水平锚阶段结束的水平框转化为旋转框(真实框GT box,预测框bounding box)。
公式中分别是真实框,锚框,预测框的参数。
表示真实框的旋转框,预测框的旋转框的参数。
由于水平框转换为旋转框的过程中,由于框的比例不同,导致求解损失函数Smooth L1 Loss时会出现交并比明显不同,但是损失函数相同的结果,使用近似的SkewIoU损失函数可以避免这个问题。例如下图的两种框:
对于大长宽比的物体,他们对于SkewIoU十分敏感,但由于SkewIoU损失函数不可计算的原因,我们不能把SkewIoU直接作为回归损失,在SCRDet网络中对于小的、杂乱的、旋转的物体提供了可推导的SkewIoU损失函数。
与传统回归损失相比,新的回归损失包括两个部分:确定梯度传播方向,是保证损失函数可推导的重要组成部分,
负责调整损失值(即梯度大小),考虑到SkewIoU和Smooth L1损失之间的不一致性,使用第二个方程作为回归损失主导梯度函数。
在这里再写一遍cls、reg、obj的区别:
cls:类别预测,对应类别预测损失,计算的是模型预测的类别与真实类别之间的差异
reg:边界框回归,对应损失为IoU损失,计算的是模型预测的边界框与真实边界框之间的交并比差异。
obj:目标存在概率,对应对象存在概率损失,计算的是模型预测的目标存在概率与真实存在概率之间的差异。
2、精细化旋转RetinaNet
精细检测
精细化可以提高旋转检测的召回率,使用不同的IoU阈值来加入多个细化阶段,第一阶段使用前景IoU阈值0.5和背景IoU阈值0.4外,第一细化阶段的阈值使用0.6和0.5,其他的细化阶段使用阈值0.7和0.6。精细化检测的总损失计算如下:
其中,为第i个细化过程的损失值,权衡系数为
默认为1。
功能模块细化
由于多次进行精细化检测使用同一个feature map,边界框位置变化导致feature错位,导致特征描述不准确,对于大长宽比和小样本的类别不利。
本文提出在当前细化边界框的位置信息重新编码到对应的特征点时,一逐个像素点的方式重构feature map,实现特征对齐,在获取精细化检测框的对应位置特征信息中,使用了双线性插值的方法。
文中提供了一个特征细化模块的伪代码如下,具体来说,通过进行双向卷积添加特征映射feature map,得到一个新的特征(LK),在细化过程中,只保留每个特征点得分最高的bounding box,以提高速度(框过滤算法,BF),同时保证每个特征点只对应一个细化的bounding box,框过滤是特征重构的重要步骤,对于特征图中的每个特征点,我们根据细化后的边界框的五个点(一个中心,四个角点)来获取对应的特征向量,最后采取双线性插值获得更精确的特征向量。最后将5个特征向量相加,替换当前的特征向量,重构特征图feature map。细化过程可以进行多次重复。
本文给出FRM的内部算法可视化:
3、与RoIAlign(感兴趣区域插值)进行比较
其实RoIAlign也是为了解决二阶段问题目标检测中特征错位的问题,为了弥补RoIPooling提取感兴趣区域后,导致的feature map错位而设计。
相较于RoIAlign算法,FRM的优点如下:
(1)RoI Align采样点较多,对检测器性能影响较大,而FRM只抽取五个特征点(一个中心,四个角点)大约是RoI Align的四十分之一,可以提高速度优势。
(2)RoI Align在分类和回归之前首先获取RoI对应的特征,而FRM首先获取特征点对应特征,然后重构整个特征图,与RoI的全连接结构相比,FRM可以保持完整的卷积结构,效率更快,参数更少。
4、消融实验与对比实验
针对FRM的算法中各阶段LK、FR和是否使用SkewIoU做了消融实验,结果一目了然,在全部使用的情况下mAP相较于旋转的RetinaNet-R高了7个百分点。
针对不同场景的数据集也对上述变量做了测试,FRM还是略胜一筹。
针对FRM中特征重构的算法双线性插值、随机双线性插值(不太懂还搜不到)和量化进行了对比实验,双线性插值的mAP高于其他各种算法,(反卷积和反池化有没有效果呢?)
对于持续进行细化多次阶段在DOTA数据的不同的类别上的拟合效果进行了对比,作者验证大概2、3轮左右可以达到峰值。
另外与当前主流模型进行了针对不同的类别的检测效果对比,二阶段的算法精准度整体优于一阶段是合理的,一阶段中R3Det基于ResNet152的backbone达到更好的精度效果,另外速度方面感觉会很慢(其他的二阶段基本都是用ResNet101对比的,除了个别模型)
在速度方面使用HRSC数据集做了一个对比,但如果提高backbone的量级,时间上可能会有很大的劣势
论文来源:https://arxiv.org/abs/1908.05612
代码来源:https://github.com/SJTU-Thinklab-Det/r3det-on-mmdetection
相关文章:

遥感目标检测(1)--R3Det
目录 一、概述 二、三个挑战 三、网络架构编辑 1、旋转RetinaNet 2、精细化旋转RetinaNet 3、与RoIAlign(感兴趣区域插值)进行比较 4、消融实验与对比实验 一、概述 R3Det论文中提到一个端到端的精细化的单级旋转检测器,通过从粗到细…...
使用 vue3-tel-input电话组件时,为什么通过v-model绑定的默认值无效而 通过:value绑定有效?
问题: 使用第三方 vue3-tel-input电话组件时,通过v-model绑定具有初始值的电话变量,但input框内显示的初始值为空? 排查过程: 将 v-model绑定改为 :value绑定后,电话变量初始值竟然能够显示在vue3-tel-inp…...

【运维工程师学习二】OS系统管理
【运维工程师学习二】OS系统管理 1、操作系统管理2、进程管理3、进程的启动4、进程信息的查看4.1、STAT 进程的状态:进程状态使用字符表示的(STAT的状态码),其状态码对应的含义:4.2、ps命令常用用法(方便查看系统进程&…...
【前端技巧】CSS常用知识碎片(九)
CSS常用知识碎片(九) mask-image属性 带有半透明的PNG图像的遮罩效果 .mask-image {mask: no-repeat center / contain;mask-image: url(bird.png); }SVG图形遮罩效果 .mask-image {mask-image: url("data:image/svgxml,%3Csvg viewBox0 0 3232…...

SQL 上升的温度
197 上升的温度 SQL架构 表: Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是这个表的主键 该表包含特定日期的温度信息 编写一个 SQL …...
Matlab实现最优化(附上多个完整仿真源码)
最优化是一种寻找最优解的数学方法,它在各个领域都有广泛的应用。在Matlab中,有多种工具箱和函数库可以用来实现最优化,下面我们来介绍一下如何用Matlab实现最优化。 1. 定义目标函数 在开始最优化之前,需要定义一个目标函数。目…...

es下载历史的tar文件
第一步进入官网找到历史版本 第二步复制历史版本名称组合成下面的链接 直接get访问下载。如下链接所示只需要修改7.3.0这个版本号 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz...
顺畅下载chatglm2-6b的模型文件
不管是从huggingface下,git下,wget下,都可能卡。 用推荐的清华源的url下,也卡,但url转换之后的,在windows下不了。 但是在linux上就几十兆每秒 wget https://cloud.tsinghua.edu.cn/seafhttp/files/0d8b273…...

go语言 socket: too many open files 错误分析
问题背景: 近期针对老的PHP接口做了迁移重构,用golang重新实现,在上线之前,测试进行了压测,压测的量级为:200请求/s, 连续请求10s,发现接口出现大量超时错误,查看日志发现错误信息为…...

分布式搜索--elasticsearch
一、初识 elasticsearch 1. 了解 ES ① elasticsearch 是一款非常强大的开源 搜索引擎,可以帮助我们从海量数据中 快速找到需要的内容 ② elasticsearch 结合 kibana、Logstash、 Beats,也就是 elastic stack (ELK),被 广泛应用在日志数据分…...

UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(一)
《Electric Dreams》项目中提供了一些自定义节点和子图(文件位置:“/Content/PCG/Assets/PCGCustomNodes”),这些节点和子图在《Electric Dreams》被广泛使用,对于理解《Electric Dreams》非常重要,而且它们可以直接移…...

500万PV的网站需要多少台服务器?
1. 衡量业务量的指标 衡量业务量的指标项有很多,比如,常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统,其实和真实访问量有比较大的差距,所以为了更贴近实际业务量及压力…...
拖动排序功能的实现 - 使用HTML、CSS和JavaScript
引言 在现代Web应用程序中,拖动排序是一种常见的用户界面交互方式,它允许用户通过拖动元素来重新排列列表或项目的顺序。本文将介绍如何使用HTML、CSS和JavaScript来实现手动拖动排序功能。 一、HTML结构 首先,我们需要定义一个列表&#…...

【STM32MP135 - ST官方源码移植】第三章:OPTEE源码移植教程
STM32MP135 OPTEE源码移植教程 一、解压optee的源码压缩包二、拷贝新的设备树文件三、修改Makefile.sdk文件(1)增加stm32mp135d-atk设备树编译(2)修改编译器为arm-none-linux-gnueabihf(3)使用buildroot工具…...

云主机安全-私有密钥安全认证
场景描述 云主机凭借其性价比高、生配扩容便利、运维便捷、稳定性高等优势深受用户青睐,越来越多的企业开始租用云主机,将自己的服务器、业务系统等搭建或存储到云主机上。 用户痛点 用户租用或托管的云主机,运维端口(远程桌面&…...
《Web安全基础》02. 信息收集
web 1:CDN 绕过1.1:判断是否有 CDN 服务1.2:常见绕过方法1.3:相关资源 2:网站架构3:WAF4:APP 及其他资产5:资产监控 本系列侧重方法论,各工具只是实现目标的载体。 命令与…...
ffmpeg根据原始视频的帧率进行提取视频帧
直接上代码,自己编写的。。。有问题可以提 安装教程看这个:https://blog.csdn.net/m0_61497715/article/details/129817641 去官网下个最新的ffmpeg,解压到随便的目录,上级目录最好不要用中文; 然后去设置环境变量&am…...

从零搭建秒杀服务
1. 前言 目的:该项目只用于技术交流,不用于过多商业用途。 适用:可用于简历亮点、毕业答辩等。 2. 项目成果 2.1 秒杀主页 包含5个功能点: ①、Product Name:秒杀商品名称 ②、Product Image:秒杀商…...

数据库应用:CentOS 7离线安装PostgreSQL
目录 一、理论 1.PostgreSQL 2.PostgreSQL离线安装 3.PostgreSQL初始化 4.PostgreSQL登录操作 二、实验 1.CentOS 7离线安装PostgreSQL 2.登录PostgreSQL 3.Navicat连接PostgreSQL 三、总结 一、理论 1.PostgreSQL (1)简介 PostgreSQL 是一个…...
【PHP面试题42】Laravel依赖注入实现的原理是怎么样的
文章目录 一、前言二、什么是依赖注入三、Laravel依赖注入的实现原理3.1 Laravel依赖注入的实现原理:3.2 Laravel依赖注入的代码示例 四、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题,对标…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...