YOLO3升级优化版!Poly-YOLO:支持实例分割!

POLY-YOLO: HIGHER SPEED, MORE PRECISE DETECTION AND INSTANCE SEGMENTATION FOR YOLOV3

论文:https://arxiv.org/abs/2005.13243

开源代码:

https://gitlab.com/irafm-ai/poly-yolo

作者团队:奥斯特拉发大学

一.摘要

YOLOv3改进版来了!与YOLOv3相比,Poly-YOLO的训练参数只有其60%,但mAP却提高了40%!并提出更轻量的Poly-YOLO Lite,还扩展到了实例分割上!通读完这篇文章,结合自己使用YOLOV3的经验,觉得这篇改进确实良心之作,改在点上,多边形实例分割也极具创新。

提出了一个新版本的YOLO,它具有更好的性能,并通过实例分割进行了扩展,称为Poly YOLO。Poly YOLO建立在YOLOv3的原始思想基础上,消除了它的两个缺点:大量重写的标签和锚的低效分布。Poly
YOLO通过使用超柱技术聚集来自轻量级SE-Darknet-53主干的特征,使用阶梯式上采样来减少问题,并产生具有高分辨率的单尺度输出。与YOLOv3相比,Poly YOLO只有60%的可训练参数,但将mAP提高了40%。还提出了参数少,输出分辨率低的Poly-YOLO。它的精度与YOLOv3相同,但体积小3倍,速度快2倍,因此适合于嵌入式设备。最后,Poly YOLO使用边界多边形执行实例分割。该网络被训练来检测在极坐标网格上定义的与大小无关的多边形。每个多边形的顶点都是用它们的置信度来预测的,因此Poly YOLO生成的多边形的顶点数是不同的。

二.引论

本文提出了性能更好的YOLOv3新版本,并扩展了名为Poly-YOLO的实例分割。Poly-YOLO建立在YOLOv3的原始思想的基础上,并消除了它的两个弱点:

大量重写的标签 && 无效的anchor分配

Poly-YOLO通过使用stairstep上采样通过hypercolumn技术聚合轻型SE-Darknet-53骨干网中的特征来减少问题,并产生高分辨率的单尺度输出。与YOLOv3相比:

o Poly-YOLO的可训练参数只有60%,但mAP却提高了40%。

o 更少参数和更低输出分辨率的Poly-YOLO Lite,具有与YOLOv3相同的精度,但体积小三倍,速度快两倍,更适用于嵌入式设备。

o 最后,Poly-YOLO使用边界多边形执行实例分割。训练网络以检测在极坐标网格上定义的尺寸无关的多边形。预测每个多边形的顶点具有可信度,因此Poly-YOLO生成具有不同数量顶点的多边形。

三.YOLOv3 problem

YOLOv3在设计时,遇到了两个发现的问题,而这两个问题在原始论文中没有描述:重写标签和在输出尺度上不平衡的锚点分布。解决这些问题对于提高YOLO的性能至关重要。

  1. Label rewriting
    由于YOLO系列都是基于图像cell栅格作为单元进行检测,以416416大小的图像为例,在图像分辨率随着卷积下降到1313的特征图大小时,这时候特征图一个像素点的感受野是32*32大小的图像patch。而YOLOV3在训练时候,如果出现相同两个目标的中心位于同一个cell,那么前面一个目标就会被后面目标重写,也就是说两个目标由于中心距离太近以至于在特征图上将采样成为同一个像素点的时候,这时候其中有个目标会被重写而无法进行到训练当中。如下图所示,红色目标为因为重写而没有加入到训练中的目标,可以看到,在这样一个特征图上,重写的目标数量还不少,27个目标里有10个都被重写,特别是比较稠密的地方。

    作者在不同数据集上对重写的标签率进行了统计和比较,可以看出原始YOLOV3的标签重写率还是蛮高,而改进后的POLY-YOLO大大降低了该重写率。
  2. Anchor distribution
    YOLOv3 anchor机制:
    使用9种anchor,每个输出scale使用3个anchor。一个特定的GroundTruth框与哪个sclae的anchor匹配度最高,就会被指定给哪个scale。
    YOLOv3是通过k-means算法进行目标大小统计,最后获得聚类质心来表示九个anchor的。这些anchor被分成三个一组,与在输出层中检测到的小、中、大box相连接。
    不幸的是,这种根据三种尺寸来分anchor的原则通常是合理的,但是有个前提就是要满足下面这个分布:

但这种情况在不能保证适用于各种情况,例如当,均值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出现这些问题的原因就是在此。
四.POLY-YOLO 架构

  1. 问题总结
    label重写问题:不会在原分辨率大小时候发生,本文的关注点是在尺度scale=1/8,1/16,1/32的尺度上的情况。
    anchor分布问题,有两种解决办法:
    第一种方法是为三个输出尺度定义感受野,并定义两个阈值来分隔它们。然后,k-means将根据这些阈值计算聚类中心(用作anchor)。缺点是这样把数据驱动的anchor转成了问题驱动,只能在固定的一些尺度上检测对应的目标,而不是全尺度,这样会浪费网络。
    第二种方法是创建一个具有单个输出的体系结构,该输出将聚合来自各种scale的信息。然后一次性处理所有的anchor。与第一种方法相比,anchor大小的估计将还是保持由数据驱动。

本文是采用第二种处理方法进行优化。

  1. POLY-YOLO架构

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

这里使用hypercolmn实现对于多个尺度部分的单尺度输出合成。

设O是一个特征图,u(·ω)函数表示以因子ω对输入图像进行上采样,m(·)函数表示一个转换,把a×b×c·转为a×b×c×δ维度的映射,δ是一个常数。此外,认为g(O1,…,On) 是一个n元的composition/aggregation函数。为此,使用hypercolmn的输出特征图如下所示:

从公式中可以明显看出,存在着很高的不平衡——一个O1的单值投影到O的单值中,而On的单值却直接投影成2n−1×2n−1的值中。为了打破这种不平衡,建议使用计算机图形中已知的staircase方法,参见下图。staircase插值增加(或降低)图像分辨率最大10%,直到达到期望的分辨率。与直接上采样相比,输出更平滑。这里使用最低可用的upscale因子2。形式上定义staircase输出特征映射O '为:

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

为了了解实际影响,进行了以下实验。从Cityscapes数据集中选了Poly-YOLO 200个训练图像和100个验证图像,用于hypercolmn中直接上采样和staircase。为两种方式各进行了五次训练,并在下图中绘制了训练进度图。从图中可以看出,差异很小,但是很明显,在hypercolmn中staircase插值产生的训练和验证损失略低,在相同的计算时间下得到了改进。

修改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。
五.POLY-YOLO 实例分割

  1. 多边形边框原则
    在这里,引入一个多边形表示,它能够检测具有不同数量顶点的目标,而不需要使用会降低处理速度的递归神经网络。
    在一个公共数据集中,许多对象都被类似的形状所覆盖,不同之处在于对象的大小。例如,汽车牌照、手势、人类或汽车都有几乎相同的形状。一般的形状可以很容易地用极坐标来描述,这就是为什么用极坐标系统而不是笛卡尔坐标系来描述多边形的原因。以边界框的中心用作原点,αi,j代表一个顶点到中心的距离(除以box的对角线长进而归一化到[0,1]),βij为顶点到中心的角度。当检测到多边形边界框,可以通过对角线长乘以αi,j来获得多边形的box。该原则允许网络学习与大小无关的一般形状,而不是具有大小的特定实例。

βij∈[0,360],可以通过线性变换将其更改为βi,j∈[0,1]。当某个极单元cell具有高置信度时,顶点必位于该单元内部。 通过与极坐标单元的原点和位置之间的距离,可以知道其近似位置,并且可以通过极单元内部的角度来精确调整位置。

2. 与Poly-YOLO集成
检测边界多边形的思想是通用的,可以很容易地集成到任意的神经网络中。通常,必须修改三个部分:数据准备的方式、体系结构和损失函数。从语义分割标签中提取边界多边形见5.1节。所提取的边界多边形必须以与边界框数据相同的方式进行扩充。
在Poly-YOLO,输出层中卷积滤波器的数量必须更新。当只检测box时,最后一层输出维度为n=na(nc+5),na=9(anchor个数),nc为类别数。对基于多边形的目标检测进行集成,得到n=na(nc+5+ 3nv),nv为每个多边形检测到的顶点数的最大值。nv对convolutional filter的数量有很大的影响。例如,当有9个锚点、20个类和30个顶点时,输出层检测边界盒和多边形的过滤器将比只检测边界盒时多4.6倍。另一方面,增加只发生在最后一层;所有剩下的YOLO层具有相同数量的参数。从这个角度看,神经网络参数的总数增加了微不足道的0.83%,而且处理速度没有受到影响。缺点在于增加的部分在最后一层,这一层处理高分辨率的特征图。这导致在训练网络时对符号张量的VRAM需求增加,这可能导致在学习阶段使用的最大batch-size减少。

POLY-YOLO的损失函数为:

其中:

所述的集成方案可以同时检测box和多边形。由于多边形顶点总是位于box中,两者检测的是同一个目标,因此两者可以互相支持,如果具有多边形形状检测的YOLO训练更有效,收敛速度更快的话。这一原理在文献中被称为“辅助任务学习”。

例如一种特殊的情况,当目标是一个垂直的方形目标。在这种情况下,box的轮廓会与边界多边形的轮廓重合,并且边界框和多边形都会检测到左上角的顶点。但是,这两种检测将是协同的,所以训练时间应更短。

六.POLY-YOLO 实验效果

  1. 三个数据集


2. 效果展示


七.总结

  1. 检测

对于特征提取,可以使用任意的SOTA主干,如(SE)ResNeXt或高效网络,这可能会提高整体精度。这种方法也可以在YOLOv4中看到,YOLOv4作者使用了不同的主干和其他一些技巧(也可以应用在本文方法中),但是原始YOLOv3的head没有改变。
在Poly-YOLO中描述的问题实际上来自于YOLOv3 head的设计,简单交换主干并不能解决这些问题。模型仍然会遭受标签重写和不适当anchor分布。
在本文工作中,关注的是通过概念变化而不是蛮力实现的性能改进。这样的改进可以广泛应用,并且可以很容易地集成到主干。

  1. 分割

如果两个顶点属于同一个极坐标单元,则取与边界框中心距离较大的顶点。该图还显示了这种限制的实际影响。这不是训练或推理的问题,这是标签创建的问题;网络本身是经过正确训练的,并根据(不精确的)训练标签做出预测。在连接单个顶点之后,将第一个顶点与最后一个顶点连接起来,这可能会给强非凸对象带来问题。不过,这种行为不会在所有非凸对象上发生。如果两个顶点位于两个不同的极单元中,那么即使是非凸的目标也可以正确地处理,如下图所示,Poly-YOLO甚至可以很好地处理非凸的星星。

YOLO3升级优化版!Poly-YOLO:支持实例分割!相关推荐

  1. Cascade R-CNN: High Quality Object Detection and Instance Segmentation(级联R-CNN:高质量目标检测与实例分割)

    Cascade R-CNN: High Quality Object Detection and Instance Segmentation Zhaowei Cai, and Nuno Vasconc ...

  2. 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)

    仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)          1.1版出现了输入非法字符与空格后导致程序出错的BUG,我对程序再次升级为1.2版,这次将支持非法字符式的菜单名 ...

  3. 用友畅捷通升级时提示“T3账套采购或销售是优化流程,不支持升级处理”

    T3升级T6,用的升级工具提示此T3账套采购或销售是优化流程,不支持升级 国庆假期前接到一个维护项目,需要升级40套用友畅捷通T3数据到U8,通常数据升级总会遇到各种各样的报错,这次遇到的问题在百度也 ...

  4. M1芯片Mac安装达芬奇17闪退安装不了,怎么办?达芬奇17直装优化版支持big sur/M1芯片处理器 详细的安装教程+中英文设置方法

    达芬奇调色软件DaVinci Resolve Studio 17是Blackmagic Design 旗下一款著名的调色软件,也是世界上唯一一款将专业8K编辑,色彩校正,视觉效果和音频后期制作功能集于 ...

  5. 在英特尔独立显卡上部署YOLOv5 v7.0版实时实例分割模型

    作者:贾志刚 英特尔物联网创新大使 目录 1.1 YOLOv5实时实例分割模型简介 1.2 英特尔®消费级锐炫™ A 系列显卡简介 1.3  在英特尔独立显卡上部署YOLOv5-seg模型的完整流程 ...

  6. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  7. mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割

    本文转载自AI深度视线. 精彩内容 YOLOv3改进版来了!与YOLOv3相比,Poly-YOLO的训练参数只有其60%,但mAP却提高了40%!并提出更轻量的Poly-YOLO Lite,还扩展到了 ...

  8. Proxmark3 Easy Gui 4.0 5.0 5.1加强版 PM3GUI_X稳定优化版

    [辅助工具] [羽睿]Proxmark3 Easy Gui 4.0 5.0 5.1加强版 PM3GUI_X稳定优化版 禁止使用本软件从事任何违反法律法规的事情! 仅限用于技术研究和数据修复,违法必究! ...

  9. GHOST WIN8 32位软件自选安装专业优化版 201307 V4.0

    [Win7使用习惯]装机之家GHOST WIN8 32位软件自选安装专业优化版 201307 V4.0 ◇ 基于MSDN发布的Windows 8 32位专业版制作:  ◇ 更新了微软补丁至2013年7 ...

最新文章

  1. c语言函数库学习~sscanf~格式化输入
  2. C3P0在多线程下的maxPoolSize配置
  3. 学生电脑哪个牌子好_电脑桌哪个牌子好?如何选购电脑桌?2020年值得选购的电脑桌品牌推荐...
  4. 【行为型】Strategy模式
  5. 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
  6. 在Vue+springBoot环境中如何实现单点登录(SSO)
  7. WIN7通过mount挂载nfs配置root权限,解决不可写的问题
  8. 怎么学单片机,怎么入门
  9. matlab产生大气湍流,一种大气湍流模拟装置的制造方法
  10. 关于OriginPRO/Origin画图消锯齿以及平滑点与点之间的连接
  11. layui tree组件更改图标
  12. 一文带你深入了解 SaaS(软件即服务) 的架构设计
  13. 深度学习图片预处理:crop
  14. 第四次作业之四则运算
  15. 关于Flutter空安全的一些使用经验和理解
  16. 王者荣耀刷金币辅助(安卓调试桥与python的联合使用)
  17. Tomcat源码解析:环境搭建
  18. PHP连接mssql的配置
  19. 有哪一刻你彻底恨上了你的老师?
  20. 人工智能:语音识别技术介绍

热门文章

  1. 2021-2027年中国托育服务行业市场研究及前瞻分析报告
  2. c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...
  3. 错误提示没了_ESC错误排查-系统启动篇
  4. 2022-2028年中国实心轮胎行业市场研究及前瞻分析报告
  5. 与人相处时不越界,能让关系更和谐
  6. python:Json模块dumps、loads、dump、load介绍
  7. 部署可扩展的目标检测管道:推理过程(下)
  8. 中国人工智能AI框架自主研发
  9. 深度人脸识别:CVPR2020论文要点
  10. 客快物流大数据项目(十三):Docker镜像