【论文】Poly-yolo: 改进anchor分配问题

news2025/3/2 4:38:18

文章目录

  • Poly-yolo: higher speed,more precise detection and instance segmentation for yolov3
    • 1 修改了骨干网络增加CE模块
    • 2 重写标签
    • 3、修改了输出层
    • 3.1 修改细节
    • 3.2 修改目的:改进anchor分配问题
    • 4 检测多边形 Instance segmentation with Poly-YOLO
    • 4.1 The principle of bounding polygons
    • 4.2 Integration with Poly-YOLO
  • cites

Poly-yolo: higher speed,more precise detection and instance segmentation for yolov3

Poly-YOLO建立在YOLOv3的原始思想的基础上. 本文的贡献
1、修改了骨干网络增加CE模块
2、修改了标签分配的逻辑,avoid to miss the training with close object at small feature map.
3、修改了输出层,融合特征图后在进行回归,适应在单一的检测场景中提升更好的性能。
4、多边形检测

1 修改了骨干网络增加CE模块

修改YOLO架构,是在主干中使用squeeze-and-excitation(SE)块。像其他许多神经网络一样,Darknet-53使用重复块,其中每个块由卷积和跳连组成。(SE)块允许使用空间和通道的信息,这带来准确性的提高。通过(SE)块和提高输出分辨率,降低了计算速度。由于速度是YOLO的主要优势,为了平衡我们在特征提取阶段减少了卷积滤波器的数量,即设置为原始数的75%。

此外,neck和head较轻,共有37.1M的参数,明显低于YOLOv3(61.5M)。不过,Poly-YOLO比YOLOv3的精度更高。

再者,我们还提出了poly-yolo lite,旨在提高处理速度。在特征提取器和head中,这个版本只有Poly-YOLO66%的滤波器数量。最后,s1减到1/4。yolo lite的参数个数为16.5M。

2 重写标签

由于YOLO系列都是基于图像cell栅格作为单元进行检测,以416416大小的图像为例,在图像分辨率随着卷积下降到1313的特征图大小时,这时候特征图一个像素点的感受野是32*32大小的图像patch。而YOLOV3在训练时候,如果出现相同两个目标的中心位于同一个cell,那么前面一个目标就会被后面目标重写,也就是说两个目标由于中心距离太近以至于在特征图上将采样成为同一个像素点的时候,这时候其中有个目标会被重写而无法进行到训练当中。

label重写问题:不会在原分辨率大小时候发生,本文的关注点是在尺度scale=1/8,1/16,1/32的尺度上的情况。

如下图所示,红色目标为因为重写而没有加入到训练中的目标,可以看到,在这样一个特征图上,重写的目标数量还不少,27个目标里有10个都被重写,特别是比较稠密的地方。
在这里插入图片描述

3、修改了输出层

在这里插入图片描述在这里插入图片描述

上图显示了原始体系结构和新体系结构之间的比较。Poly-YOLO在特征提取器部分每层使用较少的卷积滤波器,并通过squeeze-and-excitation模块扩展它。较重的neck block被使用stairstep进行上采样、带有hypercolmn的轻量block所取代。head使用一个而不是三个输出,具有更高的分辨率。

3.1 修改细节

使用hypercolmn实现对于多个尺度部分的单尺度输出合成:
设O是一个特征图,u(·ω)函数表示以因子ω对输入图像进行上采样,m(·)函数表示一个转换,把a×b×c·转为a×b×c×δ维度的映射,δ是一个常数。此外,认为g(O1,…,On) 是一个n元的composition/aggregation函数。为此,使用hypercolmn的输出特征图如下所示:
在这里插入图片描述在这里插入图片描述
从公式中可以明显看出,存在着很高的不平衡:

  • 一个 O 1 O_1 O1的单值投影到O的单值中,
  • O n O_n On的单值却直接投影成 2 n − 1 2^{n−1} 2n1的值中。

为了打破这种不平衡,我们建议使用计算机图形中已知的staircase方法,
staircase插值增加(或降低)图像分辨率最大10%,直到达到期望的分辨率。与直接上采样相比,输出更平滑。这里使用最低可用的upscale因子2。形式上定义staircase输出特征映射O '为:

在这里插入图片描述

参见下图:
在这里插入图片描述

如果我们考虑最近邻上采样,O=O '保持不变。对于双线性插值(和其他),O/=O '用于非齐次输入。关键是,无论是直接上采样还是staircase方法,计算复杂度都是相同的。虽然staircase方法实现了更多的添加,但它们是通过分辨率较低的特征图计算的,因此添加的元素数量是相同的。

3.2 修改目的:改进anchor分配问题

YOLOv3中采用kmeans算法聚类得到特定的9个anchor,并且以每三个为一组,大尺度的特征图负责预测小物体,中等尺度和小尺度的特征图负责预测大物体。一个特定的GT框与哪个scale的anchor匹配度最高,就会被指定给哪个scale,正常情况下应该是不同大小的物体会被anchor分配到不同预测层进行预测。

但是这种分配机制只适用于标准分布M~U(0,r),均值u=0,标准差σ^2 = r

然而,在实际问题中,均值u=0.5r,标准差σ^2 = r是一个更现实的情况,这将导致大多数box将被中间输出层(中等大小)捕获,而其他两个层将未得到充分利用。

为了说明这个问题,假设两个box:m1和m2;前者与放置在高速公路上的摄像头的车牌检测任务相连接,后者与放置在车门前的摄像头的人检测任务相连接。
对于这样的任务,我们可以获得:

  • m1∼(0.3r,0.2r),因为这些牌将会覆盖小的区域,
  • m2∼(0.7r,0.2r),因为人类将会覆盖大的区域。

对于这两个集合,分别计算anchor。第一种情况导致的问题是,中、大型的输出规模也将包括小的anchor,因为数据集不包括大的目标。这里,标签重写的问题将逐步升级,因为需要在粗网格中检测小目标。反之亦然。大目标将被检测在小和中等输出层。在这里,检测将不会是精确的,因为中小输出层有有限的感受野。三种常用量表的感受野为{85×85,181×181,365×365}。这两种情况的实际影响是相同的:性能退化。

在介绍YOLOv3的文章中,作者说:“YOLOv3具有较高的小目标AP性能。但是,在中、大型目标上的性能相对较差。” 我们认为YOLOv3出现这些问题的原因就是在此。

anchor分布问题,有两种解决办法:
第一种方法:
 kmeans聚类流程不变,但是要避免出现小物体被分配到小的特征图上训练和大目标被分配到大输出特征图上面训练问题,具体就是首先基于网络输出层感受野,定义三个大概范围尺度,然后设置两个阈值,强行将三个尺度离散化分开;然后对bbox进行单独三次聚类,每次聚类都是在前面指定的范围内选择特定的bbox进行,而不是作用于整个数据集。主要是保证kmeans仅仅作用于特定bbox大小范围内即可。但是缺点也非常明显,如果物体大小都差不多,那么几乎仅仅只有一个输出层有物体分配预测,其余两个尺度在“摸鱼”。

第二种方法:
 创建具有单个输出的体系结构,所有物体都是在这个层预测。可以避免kmeans聚类问题,但是为了防止标签重写,所以把输出分辨率调高。作者采用的事1/4尺度输出,属于高分辨率输出,重写概率很低。(创建一个具有单个输出的体系结构,该输出将聚合来自各种scale的信息。然后一次性处理所有的anchor。)
本文是采用第二种处理方法进行优化

4 检测多边形 Instance segmentation with Poly-YOLO

v3的作者说框狠傻逼我也狠喜欢掩膜但我没法应用到YOLO中。我们搞出来了一个让YOLO能做实例分割但是没有对速度有巨大负面影响的方法。在我们之前的工作[1],我们专注于通过不规则四边形的方式让YOLO有更高准确率。我们证明了不规则四边形的方式能收敛更快,并且分类上四边形近似比矩形近似能有更高的准确率。限制在于顶点数量只能有4个。我们这里介绍了一种不需要使用递归神经网络的多边形能够使用多个顶点去检测目标的方式并且也不会减慢检测速度。
与Poly-YOLO集成(实例分割和目标检测集成)

检测多边形的思想是通用的,可以很容易地集成到任意的神经网络中。通常,必须修改三个部分:数据准备的方式、体系结构和损失函数。在Poly-YOLO中,输出层中卷积滤波器的数量必须更新。当我们只检查box时,最后一层输出维度为n=na(nc +5),na=9(anchor的个数),nc为类别数。对基于多边形的目标检测进行集成,得到n=na(nc+5+3nv),nv为每个多边形检测到的顶点数的最大值。

损失函数如下图所示:

在这里插入图片描述
l1(i,j)是对边界框中心预测的损失;
l2(i,j)是对框的尺寸的损失;
l3(i,j)是置信度的损失;
l4(i,j)是类别预测的损失;
l5(i,j)是由距离、角度和顶点置信度预测组成的边界多边形的损失。最后,qi,j∈{0, 1}是一个常数,指示第
个单元格和第j个锚点是否包含标签。
l1到l4都是和YOLOv3一样,l5是Poly-YOLO基于多边形预测扩展出来的。

4.1 The principle of bounding polygons

YOLOv3使用垂直网格,每个网格都能检测回归框,或者多个锚框中的回归框。我们用一个增加的极坐标子单元扩展每个网格,就像Figure 9中展示的那样。

在这里插入图片描述

v3中的回归框被描述为bi = (bix1,biy,bix2,biy2),也就是左上和右下,我们扩展了这个元组,即bi = (bix1,biy,bix2,biy2,Vi),Vi = {vi0,…,vin}是一个给定目标的n个极单元的一组多边形顶点。vij = {αij,βij,γij},α和β是一个顶点的极坐标,γ是置信度。如果没有坐标存在于一个极单元,那么置信度为0,否则为1。

在常见数据集中,许多物体可以被用相似的形状覆盖因为他们经常被从相似的视角观察,区别在于目标大小而已。比如车牌,手势,人,车,几乎都有相似的形状。通用形状可以很容易被极坐标表示,这也是我们选择极坐标而不是围绕多边形的笛卡尔方法的原因。

αij表示顶点到原点的距离,βij表示角度。中心点的确定使用旧方法。我们将α归一化使用顶点到原点的距离比上回归框的对角线。

推理时,可以通过αij乘以回归框对角线取得的值来得到顶点距离原点的距离的绝对值。

这套方法让网络学习大小无关的、通用的案例,而不是大小依赖的案例。举个例子,同一辆车被放到不同的距离拍下两张照片,图片上的大小会不同,并且模型预测的各种值,置信度,角度,顶点的相对距离,两张图片都相同。当目标被检测到时,顶点到原点的距离会被乘以回归框对角线距离,两套具体值会得到,与需要直接预测每个目标的具体值的PolarMask[25]对比,这种分享的方法能使得学习更加容易。

进一步的提升也是可能的。对于βij属于[0,360]来说,可以改变为βij属于[0,1]这种线性转换。因为我们的极坐标被分为极单元,可以专注于每个单元内部的角度间隙。当一个极单元有高置信度时说明一定有顶点在其中,那么我们使用βij属于[β1,β2]来表示,其中βij1和βij2是顶点可能存在的角度的最低值与最高值。接着我们在线性转换时令βij1=0和βij2=1。以上方式就能知道顶点准确的位置。

4.2 Integration with Poly-YOLO

检测边界多边形的想法是通用的,可以很容易地集成到任意神经网络中。 一般来说,需要修改三个部分:准备数据的方式、架构和损失函数。 有关从语义分割标签中提取边界多边形,请参见第 5.1 节。 提取的边界多边形必须以与边界框数据相同的方式进行扩充。

必须修改架构以产生预期的值。在 Poly-YOLO 的情况下,必须更新输出层中卷积滤波器的数量。当我们只检测边界框时,最后一层由 n = na(nc + 5) 卷积滤波器表示,其内核维度为 (1, 1),其中 na 是锚点的数量(在我们的例子中是 9 个)和 nc代表多个类。在集成基于多边形的对象检测的扩展后,我们得到 n = na(nc + 5 + 3nv),其中 nv 是每个多边形检测到的最大顶点数。我们可以观察到 nv 对卷积滤波器的数量有很大的影响。例如,当我们有 9 个锚点、20 个类和 30 个顶点时,检测边界框和多边形的输出层的过滤器将比仅检测边界框时多 4.6 倍。另一方面,增加只发生在最后一层;所有剩余的 YOLO 层都具有相同数量的参数。从这一点来看,NN参数的总数增加了可以忽略不计的0.83%,并且处理速度不受影响。弱点在于增加在最后一层,它处理高分辨率的特征图。这会导致在训练网络时对符号张量的 VRAM 需求增加,这可能会导致学习阶段使用的最大可能批大小减少。

为了解释如何修改损失函数,我们将 Poly-YOLO 中使用的多部分损失函数描述如下:

在这里插入图片描述
其中L1(i,j)是边界框中心预测的损失,L2(i,j)是框尺寸的损失,L3(i,j)是置信度损失,L 4(i, j) 是类预测损失,L5(i, j) 是由距离、角度和顶点置信度预测组成的边界多边形的损失。

最后,qi,j ∈ {0, 1} 是一个常数,表示第 i 个单元格和第 j 个锚点是否包含标签。

损失迭代 GwGh 网格单元和 na 锚。 部分1,. . . , 4 取自 YOLOv3 并修改为使用单个输出层的形式。 第 5 部分是新的,并通过多边形检测功能扩展了 Poly-YOLO。 在以下公式中,我们使用 b·来表示网络的预测。 损失函数的各部分定义如下:

在这里插入图片描述
其中 cxi,j 和 cyi,j 是盒子中心的坐标,H(·,·) 是二元交叉熵,

zi,j = 2 − w*h 用于根据其宽度 wi,j 和高度 hi,j 对第 (i, j) 个框大小进行相对加权。

在这里插入图片描述
其中 awj 和 ahj 是第 j 个锚点的宽度和高度

在这里插入图片描述

其中 q^i,j 是预测的置信度,Ii,j 是一个掩码,如果 qi,j = 0 但其预测的 IoU>0.5,则排除第 i 个单元的损失部分。

在这里插入图片描述
其中 Ci,j,k 是第 i 个单元格中的第 k 个类别概率。

在这里插入图片描述
其中 adj 是第 j 个锚点的对角线。 请注意,最后一个等式是我们的多边形表示损失,这是我们的主要贡献之一。

所描述的集成方案导致同时检测边界框和边界多边形。由于协同作用,这种组合可能是有益的——卷积神经网络在其底部检测边缘,然后在中间将它们组合成更复杂的形状,并在头部 [35] 中提出高度描述性的抽象特征。因为多边形的顶点始终位于边界框内,并且顶点与边界框划定相同的对象,直觉是边界多边形部分会找到对边界框有用的特征,反之亦然。假设是带有多边形形状检测扩展的 YOLO 的训练会更​​高效并且收敛更快。该原理是众所周知的,并在文献中描述为辅助任务学习[36]。为了完整起见,让我们假设一个特殊情况,当一个对象是一个垂直的盒子。对于这种情况,边界框的轮廓将与边界多边形的轮廓重合,并且边界框和多边形都将检测到左操作顶点。尽管如此,这两种检测将是协同的,并且训练所需的时间将比普通边界框检测的训练更短。有关声明的验证,请参见第 5.3 节中带/不带边界多边形检测的 Poly-YOLO 检测结果

cites

Poly-YOLO:更快,更精确的检测和实例分割

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

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

相关文章

【Pytorch with fastai】第 9 章 :表格建模深入探讨

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

95后工程师上班哼小曲?那些愉快上班的打工人,到底怎么做到的?

特别羡慕我们公司一个画PCB板子的刘工,95后,来公司也3年多了,他不是我们部门赚得最多的,也不是人际关系处得最好的,却是活得最开心的。 具体表现在哪呢? ——他居然能每天哼着小曲上班。 怎么会有人上班…

《Linux下的进程创建》

【一】fork函数初识 在Linux中fork函数是非常重要的,他从已存在的进程中创建一个新进程,进程为子进程,而原进程为父进程。 返回值:fork函数的返回值是非常有意思的,他是有两个返回值的,对于父进程来说&…

QRegExp(正则表达式)

QRegExp 头文件&#xff1a;#include<QRegExp> 构造函数&#xff1a; 常用函数&#xff1a; indexIn()判断是否符合规则matchedLength()返回最后一个匹配字符串的长度&#xff0c;没有的话返回-1setPattern()将模式字符串设置为模式。区分大小写、通配符和最小匹配选项不…

openpnp软件的使用 - 引入坐标文件

文章目录openpnp软件的使用 - 引入坐标文件前言笔记生成符合openpnp要求的坐标文件板子在openpnp设备上摆放的规则确定openpnp设备的x,y方向确定自己板子的原点坐标和xy方向在openpnp设备平台上摆放板子在openpnp中引入坐标文件新建任务新建板子引入板子的坐标文件设置mark点Pa…

Starday影响者视频能给你提升80%的流量?

跨境电商行业随着互联网时代的推进&#xff0c;Starday跨境电商平台受到越来越多的人关注&#xff0c;许多商家受碍于疫情影响&#xff0c;为了个人商家和企业发展&#xff0c;将目光投于海外。如雨后春笋般出现的跨境电商平台&#xff0c;也为商家带来了许多困扰&#xff0c;该…

JS高级(一):类、原生tab栏切换、原型和原型链

JavaScript高级&#xff08;一&#xff09;一、类&#xff08;之前ES6学过&#xff09;1.类的用法2.类的继承2.1 extends关键字2.2 super关键字&#xff08;1&#xff09;子类属性和父类一致&#xff0c;constructor可以省略&#xff08;2&#xff09;子类要添加属性&#xff0…

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

先看下什么是query的形式入参&#xff1a; 1.常规的GET请求 一般是GET请求才会是query string parameters的形式入参 参数是query string parameters的展示&#xff0c;最终效果是拼接到url地址中&#xff0c;如下图所示&#xff1a; 2.常规的POST/PUT请求 一般是POST/PUT请…

云小课|使用SQL加密函数实现数据列的加解密

摘要&#xff1a;数据加密作为有效防止未授权访问和防护数据泄露的技术&#xff0c;在各种信息系统中广泛使用。作为信息系统的核心&#xff0c;GaussDB(DWS)数仓也提供数据加密功能&#xff0c;包括透明加密和使用SQL函数加密。本文分享自华为云社区《看GaussDB(DWS)如何使用S…

电感单位亨利H单位换算

1H 1e-18EH 1e-15PH 1e-12TH 1e-9GH 1e-6MH 0.001kH 1H 1,000mH 1,000,000uH 1,000,000,000nH 1,000,000,000,000pH 1,000,000,000,000,000fH 在线H亨利单位换算 (toolxq.com)http://www.toolxq.com/front/tools/trans/unit/H 亨利是电感的国际单位制导出单位&#xff0c;符…

2022年《微信小程序从基础到uni-app项目实战》

教程推荐&#xff1a;黑马程序员前端微信小程序开发教程&#xff0c;微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)_ 一、起步 1 uni-app 简介 uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码&#xff0c;可发布到 iOS、And…

Word不计算封面、目录页数将正文页码修改为第几页共几页的格式

本文介绍在Word文档中&#xff0c;不考虑封面、目录、前言等的页数&#xff0c;为正文添加“第X页&#xff0c;共X页”样式页码的方法。 在Word中&#xff0c;我们可以双击页眉或页脚部分&#xff0c;选择“页码”选项并添加页码。 其中&#xff0c;可以添加如下图所示形式的页…

Nginx配置虚拟主机

虚拟主机指的是,在一台服务器中,我们使用Nginx,来配置多个网站。 如何区分不同的网站: 端口不同域名不同 1、通过端口区分不同的虚拟主机 1.1、Nginx配置文件 &#xff08;1&#xff09;Nginx配置文件的位置 cd /usr/local/nginx/conf nginx.conf 就是Nginx的配置文件 &a…

Docker学习

Docker学习 Docker概述 Docker安装 Docker命令 Docker镜像 Docker的数据卷 DockerFile Docker网络原理 IDEA整合Docker 集群-Docker Compose Docker Swarm CI\CD jenkins Docker概述 安装教程&#xff1a;(https://docs.docker.com/engine/install/centos/) 文档…

CSS初阶语法

CSS初阶语法 文章目录CSS初阶语法1.CSS介绍2.CSS引入方式3.CSS基础选择器3.1 标签选择器(标签名字)3.2 类选择器(class)3.3 id选择器(id)3.4 通配符选择器(*)4.文字基本样式4.1 字体样式(font-size、font-weight、font-style、font-family、font)4.2 文本样式(text-indent、tex…

SpringBoot SpringBoot 开发实用篇 2 配置高级 2.1 第三方bean 属性绑定

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇2 配置高级2.1 第三方bean 属性绑定2.1.1 ConfigurationProperties2.…

ERP系统有哪些品牌?

企业资源规划 (ERP) 系统可以帮助企业在一个系统中管理其整个运营。凭借 CRM、人力资源、会计、供应链管理等功能&#xff0c;优秀的 ERP 系统可以集中并简化每位员工的日常工作。 那么&#xff0c;ERP系统有哪些品牌&#xff1f;哪个好用&#xff1f;下面就来简单介绍几个主流…

Android Studio App开发之网络通信中移动数据格式JSON的讲解以及实战(附源码 超详细必看)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、移动数据格式JSON 网络通信的交互数据格式有两大类&#xff0c;分别是JSON和XML&#xff0c;前者短小精悍&#xff0c;后者表现力丰富&#xff0c;对于App来说&#xff0c;基本采用JSON格式与服务器通信。一是手机流量…

计算机网络的常见面试题

GET 和 POST 的区别 作用 GET用来获取资源&#xff0c;POST用于传输实体主体 参数位置 GET的参数放在URL中&#xff0c;POST的参数存储在实体主体中&#xff0c;并且GET方法提交的请求的URL中的数据多是2048字节&#xff0c;POST请求没有大小限制 安全性 GET方法因为参数放在…

二极管:Irush与我相干!

故事还没结束,我们必须继续讲,继续挖,边说边究。 即使时间us级不会让FUSE同学Open,FUSE后面的兄弟姐妹呢,可以扛住事吗?那可有3.4A的能量冲击啊! 不确定,就有可能。墨菲老人家曾说过:会出错的事总会出错。也就是会发生的事总会发生,只要不给时间加上一个期限,非要给…