0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解旋转目标检测方法与结果

中科院长春光机所 来源:极市平台 作者:yangxue@知乎 2021-03-19 11:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

极市导读本文是今年刚被CVPR接收的文章,关于CSL的优化版本Densely Coded Labels (DCL),优化了过于厚重的预测层以及对类正方形目标检测的不友好。附有相关代码与demo展示。 》》加入极市CV技术交流群,走在计算机视觉的最前沿

一、介绍

Densely Coded Labels (DCL)是 Circular Smooth Label (CSL)(https://zhuanlan.zhihu.com/p/111493759)的优化版本。DCL主要从两方面进行了优化:过于厚重的预测层以及对类正方形目标检测的不友好。

文章地址:

Dense Label Encoding for Boundary Discontinuity Free Rotation Detection

https://arxiv.org/abs/2011.09670

代码地址:

DCL-Tensorflow

https://github.com/yangxue0827/RotationDetection

二、厚重的预测层

CSL编码方式与独热编码(one-hot)均属于稀疏编码(Sparsely Coded Label, SCL)。稀疏编码的一个明显缺点是需要较长的位数来进行编码,以CSL为例,下面这种公式是其编解码的具体过程:

393ec71c-8695-11eb-8b86-12bb97331649.png

CSL编解码过程

其中 , 和 分别表示角度范围(默认是180)以及所划分的角度类别。

那我们就可以计算出使用CSL编码方式或独热编码时的预测层厚度:

3994100a-8695-11eb-8b86-12bb97331649.png

CSL编码方式与独热编码的预测层厚度计算公式

其中 表示anchor的数量。

而使用回归进行角度预测时的预测层厚度仅为:

回归方法的预测层厚度

以 为例,CSL编码方式与独热编码的预测层厚度是1620,而基于回归的预测层厚度只有9。这使得基于稀疏编码方法的参数量(Params)和计算量(GFlops)相比基于回归方法增加了26.40%和32.34%,造成模型训练和测试的效率低下,如下表所示。

39e8b308-8695-11eb-8b86-12bb97331649.jpg

参数量(Params)和计算量(GFlops)的比较

因此,如何减短编码长度是提高模型效率的关键。因此我们想到了密集编码方法(Densely Coded Label, DCL),主要编码方法有二值编码(Binary Coded Label, BCL)和格雷编码 (Gray Coded Label, GCL),它们的预测层厚度计算公式如下:

3a05eb80-8695-11eb-8b86-12bb97331649.jpg

二值编码和格雷编码的预测层厚度计算公式

同样以 为例,它们所对应的预测层厚度只有72,只增加1.03%的参数量和1.26%的计算量,和回归方法的效率几乎一样。下式是它们的编解码过程,以二值编码为例:

3a59f1f8-8695-11eb-8b86-12bb97331649.png

BCL编解码过程

其中二值编码和格雷编码的编码伪代码:

3a82db4a-8695-11eb-8b86-12bb97331649.jpg

二值编码和格雷编码的编码伪代码

尽管编码长度大大减少,但会引入几个其他问题。

第一问题是二值编码在一定程度上失去了相邻角度之间的“距离远近”,也就是相邻值之间的编码结果可能发生巨大变化,没有了CSL方法中强调的容忍性。比如,3和4在三位的二进制编码结果分别为011和100,如下表所示。

3aa66bfa-8695-11eb-8b86-12bb97331649.jpg

十进制数所对应的三位二值编码和格雷编码

可以看到所有三个位置都发生了变化,导致两个角度预测的误差很大。而格雷码没有这样的问题,这是因为在一组数字的编码中,任何两个相邻数的格雷码只有一位不同。由于最大值和最小值之间也只有一位数字不同,因此格雷码也称为循环码。格雷编码的缺点也很明显,尽管相邻角度之间的编码形式差别不大,但是具有较大差异的角度的编码差异也不是很明显,例如1(001)和6(101)。

第二个问题是所划分的角度类别数需要是2的指数倍才能保证每一种编码都对应一种角度,否则会有大量冗余的编码(尽管实验验证这个问题影响不大)。如果将180度范围划分为 个类别,则每个划分间隔的范围为 。根据CSL文章中的计算公式,理论期望误差和最大误差分别是 和 ,这种大小的误差在是可以忽略不计的。

为了更好比较稀疏编码和密集编码,下图就是一个具体例子:

稀疏编码和密集编码的比较例子

三、类正方形目标检测的不友好

不管是CSL还是DCL,为了避免角度周期性(PoA)和边的交换性(EoE)问题,它们均采用了“角度分类+长边定义法”的组合。长边定义法有这样一个问题,他无法较好定义一个类正方形目标,如下图所示:

类正方形检测问题

图的左边是gt,右边是一种“视觉可行”的预测结果,之所以说“视觉可行”是因为此时的计算误差非常大。这个误差主要来源于角度(类正方形目标两边近似相等,因此尽管wh的顺序相反,误差依然很小)。仔细观察可以发现这两种框的角度差约等于 。其实使用周期为90的定义方法对类正方形目标来说更加合适(如OpenCV定义法),长边定义法有明显的缺陷。我的另一篇文章GWD详细讨论了这种问题,有一句话概括长边定义法出现这种问题的原因:目标长宽比的减小使得评估(IoU)和损失( -norm)之间的不一致性逐渐被放大。

针对这个问题以及第一个问题中提到的容忍性的消失,我们设计了一个损失权重(ADARSW),具体公式如下:

ADARSW权重

具体的想法是通过预测和gt的十进制差值来引入容忍性,三角函数的引入来解决角度周期性和类正方形检测问题(通过长宽比来调整 参数,从而调整三角函数的周期)。

四、实验结果

下表是对角度离散化粒度 的消融实验。尽管理论上越小,理论误差越小,预测精度上限越高,但是会增加角度分类的难度。越大也不好,太大的话理论误差太大,预测精度上限太低。一个合适的取值范围是[180/32-180/256]。并且我们发现,基于分类的角度预测方法(CSL和DCL)比基于回归方法在高精度 上更有优势,并且DCL比CSL效果更好,当然效率也更高。

角度离散化粒度的消融实验

下表是对所提权重的消融实验,主要列举了DOTA数据集中10种长宽比比较小的类正方形目标,并验证了ADARSW的有效性。

3c5bd5a2-8695-11eb-8b86-12bb97331649.png

ADARSW的消融实验

下表是在不同数据集上对三种不同方法的比较,我们发现BCL》CSL》Reg.。

3c7e07ee-8695-11eb-8b86-12bb97331649.png

其他数据集上的效果验证

下面两个表格是所提方法在两种数据集上的SOTA对比,DCL-based方法具有一定的优势。

3c9bb258-8695-11eb-8b86-12bb97331649.jpg

DOTA数据集上的SOTA方法对比

3cbd66aa-8695-11eb-8b86-12bb97331649.jpg

HRSC2016数据集上的SOTA方法对比

下图是对DCL方法的所预测角度的特征可视化:

RetinaNet-DCL角度特征可视化

五、总结

基于角度分类预测的方法基本告一段落,CSL和DCL验证了角度分类这条路子的可行性,那其实接下来可以研究如何更好分类,可以借鉴很多方向的分类损失设计,例如人脸识别。但是,这两篇方法并没有表现出角度分类这条路的优越性,我所看到的优势仅仅是方法本身不存在边界问题,也就是论文题目所写的Boundary Discontinuity Free,但是代价是存在理论误差以及模型参数量和计算量的增加。因此,最近我又回到了“角度回归预测+新loss设计”这条路,一个工作是GWD(https://arxiv.org/abs/2101.11952),欢迎大家交流讨论。

另外,简单介绍一下我所写的一个基于tensorflow框架的旋转检测benchmark:

https://github.com/yangxue0827/RotationDetection

支持的算法:RetinaNet、Faster-RCNN等baseline以及SCRDet (ICCV19)、R3Det (AAAI21)、RSDet (AAAI21)、CSL (ECCV20)、DCL (CVPR21)、GWD等创新方法;

支持的数据集:DOTA、HRSC2016、ICDAR2015、ICDAR2017 MLT、MSRA-TD500、UCAS-AOD、FDDB、OHD-SJTU、SSDD++;

提供大量不同的预训练权重和训练好的权重;

训练可视化分析,以R3Det (AAAI21)为例:

SCRDet (ICCV19):https://arxiv.org/abs/1811.071263Det (AAAI21):https://arxiv.org/abs/1908.05612RSDet (AAAI21):https://arxiv.org/abs/1911.08299CSL (ECCV20):https://arxiv.org/abs/2003.05597DCL (CVPR21):https://arxiv.org/abs/2011.09670GWD:https://arxiv.org/abs/2101.11952R3Det (AAAI21):https://arxiv.org/abs/1908.05612

训练可视化

统计量记录

5. RotationDetection的总体框如下:

RotationDetection框架结构

6. demo:https://www.zhihu.com/zvideo/1289379563034636288
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    1040

    浏览量

    57125
  • 目标检测
    +关注

    关注

    0

    文章

    234

    浏览量

    16541
  • 计算机视觉
    +关注

    关注

    9

    文章

    1715

    浏览量

    47711

原文标题:旋转目标检测方法解读(DCL, CVPR2021)

文章出处:【微信号:cas-ciomp,微信公众号:中科院长春光机所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DC 转换器气密性检测仪工作原理详解-岳信仪器

    。DC转换器气密性检测仪,就是通过科学方法检测其密封性能,精准判断是否存在泄漏,下面用通俗语言详解其核心工作原理。DC转换器气密性检测仪的核
    的头像 发表于 04-07 17:12 141次阅读
    DC 转换器气密性<b class='flag-5'>检测</b>仪工作原理<b class='flag-5'>详解</b>-岳信仪器

    ELF-RV1126B YOLOv8官方例程目标检测部署验证

    基于官方资料包例程完成图片或摄像头目标检测结果显示和 FPS 记录。
    的头像 发表于 04-03 16:08 228次阅读
    ELF-RV1126B YOLOv8官方例程<b class='flag-5'>目标</b><b class='flag-5'>检测</b>部署验证

    YOLO5目标检测方案-基于米尔RK3576开发板

    本文基于米尔MYD-LR3576开发板,详细记录了如何利用500万像素USB摄像头实现640×640分辨率的YOLO5s目标检测,并将结果实时输出至1080P屏幕的全流程。通过系统级的软硬件协同优化
    发表于 01-22 19:21

    电压放大器在全导波场图像目标识别的损伤检测实验的应用

    图像目标识别的智能损伤检测方法,通过结合超声导波检测技术与深度学习算法,系统探究了损伤引起的波场畸变特性及其识别机制。 测试设备:扫描激光多普勒测振仪、函数发生器、功率放大器ATA-2
    的头像 发表于 12-02 11:37 369次阅读
    电压放大器在全导波场图像<b class='flag-5'>目标</b>识别的损伤<b class='flag-5'>检测</b>实验的应用

    基于级联分类器的人脸检测基本原理

    基于统计的方法。从高层的输入输出角度来描述,软件输入是一张图像(可以表示为一个uint8_t或者uint16_t的数组),输出是检测结果,如果检测到人脸会输出人脸的数量和对应的位置,
    发表于 10-30 06:14

    广和通发布端侧目标检测模型FiboDet

    为提升端侧设备视觉感知与决策能力,广和通全自研端侧目标检测模型FiboDet应运而生。该模型基于广和通在边缘计算与人工智能领域的深度积累,面向工业、交通、零售等多个行业提供高性能、低功耗、高性价比的视觉检测解决方案。
    的头像 发表于 09-26 13:39 1715次阅读

    使用aicube进行目标检测识别数字项目的时候,在评估环节卡住了,怎么解决?

    使用aicube进行目标检测识别数字项目的时候,前面一切正常 但是在评估环节卡住了,一直显示正在测试,但是完全没有测试结果, 在部署完模型后在k230上运行也没有任何识别结果
    发表于 08-13 06:45

    基于低频旋转电压信号注入的PMSM初始定位

    针对增量式光电编码器在永磁同步电机工作中存在的初始定位问题,提出了使用低频旋转电乐信号注入法,通过检测注入信号作用下电机转子发生微小转动的时刻,确定转子初始位置的方法。通过详细分析永磁同步电机在低频
    发表于 08-06 14:36

    旋转台XYR在精密点胶/外观检测/精密焊接的C#应用

    高精度单旋转台XYR联动算法,在精密点胶/外观检测/精密焊接中提升质量与效率!
    的头像 发表于 07-22 17:19 3358次阅读
    单<b class='flag-5'>旋转</b>台XYR在精密点胶/外观<b class='flag-5'>检测</b>/精密焊接的C#应用

    气密性检测仪的核心应用范畴及其所针对的检测目标

    在工业生产与质量控制领域,气密性检测仪是保障产品品质与性能的关键设备。以下将围绕气密性检测仪的核心应用范畴及其所针对的检测目标展开介绍,以下是对上述关于气密性
    的头像 发表于 06-27 15:03 740次阅读
    气密性<b class='flag-5'>检测</b>仪的核心应用范畴及其所针对的<b class='flag-5'>检测</b><b class='flag-5'>目标</b>

    无刷直流电机反电势过零检测方法

    的危险。同时,根据控制信号占空比切换低速区与高速区反电势采样方式,能有效改善在低速区时反电势过零检测效果。实验结果表明,提出的反电势过零检测方法能保证电机工作于更宽的转速范围内。 纯
    发表于 06-26 13:50

    【HarmonyOS 5】VisionKit人脸活体检测详解

    【HarmonyOS 5】VisionKit人脸活体检测详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、VisionKit人脸活体检测
    的头像 发表于 06-21 11:52 1077次阅读
    【HarmonyOS 5】VisionKit人脸活体<b class='flag-5'>检测</b><b class='flag-5'>详解</b>

    YOLOv8水果检测示例代码换成640输入图像出现目标框绘制错误的原因 ?

    \",中的best.kmodel替换为640输入图像,model_input_size=[640,640],就会出现目标检测目标框位置混乱,目标框的位置完全是错的,但是
    发表于 06-18 06:37

    基于LockAI视觉识别模块:C++目标检测

    ::PaddleDet 类进行目标检测,并通过lockzhiner_vision_module::vision::Visualize 函数将检测结果可视化。 源代码网址:https:/
    发表于 06-06 14:43

    基于LockAI视觉识别模块:C++目标检测

    本文档基于瑞芯微RV1106的LockAI凌智视觉识别模块,通过C++语言做的目标检测实验。本文档展示了如何使用lockzhiner_vision_module::PaddleDet类进行目标
    的头像 发表于 06-06 13:56 1008次阅读
    基于LockAI视觉识别模块:C++<b class='flag-5'>目标</b><b class='flag-5'>检测</b>