• 同步到知乎anchor_based-anchor_free object detectors
  • 前言:最近关注了大量目标检测的论文,比较火的就是anchor based和anchor free两类问题;阅读了很多知乎大佬的文章,记录一些,方便以后学习,若有版权问题,可以删除,谢谢!

anchor based 和 anchor free的问题

  • Anchor-based 方法处理的尺度范围虽小,但更精准;Anchor-free 方法覆盖的尺度范围较大,但检测微小尺度的能力低下。
  • Anchor-based 和 Anchor-free 方法的输出在定位方式和置信度得分方面差异显著,直接合并两个输出困难很大,具体原因如下:
    • 其一,对于 Anchor-based 方法,ground truth IoU ≥ 0.5 的锚点将被视为正训练样本。可以发现,正负样本的定义与边界框回归结果无关,这就导致 Anchor-based 分支每个锚点输出的分类置信度实质上表示的是「锚点框住的区域是人脸」的置信度,而不是「网络预测的回归框内是人脸」的置信度。故而分类置信度很难评估网络实际的定位精度。
    • 其二,对于 Anchor-free 方法,网络训练方式类似于目标分割任务。输出的特征图以边界框中心为圆心,半径与边界框尺度成比例的椭圆区域被定义为正样本区域,特征图其它位置(像素)被视为背景。通过这种方式,Anchor-free 分支的分类置信度得分实质为「该像素落在人脸上」的置信度,而且该分类置信度与定位的准确度的关联同样很弱。
  • 总而言之,Anchor-based 方法和 Anchor-free 方法的分类置信度都与回归定位精度关联甚微,其置信度得分也分别代表着不同的含义。
  • reference: 人脸检测江湖的那些事儿——从旷视说起: 将两个分支融合。
  • anchor-based的算法的缺点
    • 对于每个预选框我们都要根据不同的任务去设置其参数,如长宽比,尺度大小,以及anchor的数量,这就造成了不同参数所导致的AP有很大的不同,同时调参耗时耗力。
    • 产生的预选框在训练阶段要和真实框进行IOU的计算,这会占用很大的运行内存空间和时间。对于单阶段算法来说,为了使其更为有效的检测小目标,通常进行FPN结构以及使用更低的特征图,这样来说产生预选框的数量就会增加很多很多。
    • 针对不同的任务,比如人脸识别和通用物体检测,所有的参数都需要重新调节,这样一个模型的迁移能力就体现不出来了

anchor based 和 anchor free方法

  • anchor based

    • SSD
    • RetinaNet
    • Faster R-CNN
    • 首先预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远",不再需要多尺度遍历滑窗,真正实现了又好又快。
    • anchor设计:anchor的密度,anchor的大小,anchor的形状数量,检测层Pn的数量,检测层Pn的感受野
    • 目标检测中的Anchor: Faster RCNN+SSD+FPN+RetinaNet
    • 锚框:Anchor box综述
  • anchor free
    • DenseBox
    • UnitBox
    • Yolov1
    • CornerNet
    • FSAF for Single-Shot Object Detection: 在RetinaNet基础上添加了anchor free分支,然后根据instance监督,在FPN每一层学习anchor大小,根据IoU loss最小分配选择对应anchor的特征;然后进行anchor based联合训练;GA-RPN方法直接学习特征图上每个位置的anchor大小,没有监督信息,思路上很insight,个人感觉是不是只在最后又监督信息,训练难度是否要大些。参考:Guided Anchoring 可以看做是 anchor-prior-free,但是整体框架保持与 anchor-based 一致,所以可以插入到现有的 anchor-based 的方法里面,性能提升也会稍微明显一点。类似于在首先进行 anchor-free 的预测,然后以预测结果作为 anchor 进行进一步地修正。
    • FoveaBox : 假设FPN中每一个层预测一定范围内的bounding box,而每个特征金字塔都有一个basic area,即32*32到512*512。但FoveaBox为了使每个层去响应特定的物体尺度,对每个金字塔层L 都计算一个有效范围如下,其中用来控制这个尺度范围。
      • 与DenseBox和UnitBox不同,FoveaBox并不是直接学习目标中心到四个边的距离,而是去学习一个预测坐标与真实坐标的映射关系,假如真实框为 (x_1, y_1, x_2, y_2) ,我们目标就是学习一个映射关系 (t_{x_1}, t_{y_1}, t_{x_2}, t_{y_2});
      • 接着使用简单的L1损失来进行优化,其中为 z=\sqrt{S_l} 一个归一化因子,将输出空间映射到中心为1的空间,使得训练稳定。最后使用log空间函数进行正则化。
      • FoveaBox整体设计思路为anchor-free,不需要人为的去定义anchor的参数,但仍然需要手工的去设置参数,比如每层的area的范围,以及正样本区域的缩放因子的参数。总的来说还是不错的,吸取了DenseBox的大量优点,也对其进行了优化。在预测坐标方面,不是单纯的去预测一个distance,而是去学习一个映射Transform。
      • 目标检测:FoveaBox(2019)
    • FCOS: FCNs的网络在密集检测例如语义分割任务都有很好的效果,那我们能不能用语义分割的思想逐像素点的来解决检测问题呢?
      • 存在一个问题,就是真实标签的区域交叠问题,如果那个分割区域交叠了,那么交叠区域到底算是那个问题的呢?
      • A.如果大尺度和小尺度的重叠,比如人和手中的苹果,作者使用了FPN结构来在每一层加以限定,因为这两者之间的尺度相差较大,文章中共有5个区间来限定[0,64][64,128]等等
      • B.如果一个像素点在同一层落到了多个GT区域,这样也会ambiguous。这是作者简单的会使用最小区域来作为回归目标
      • It is worth noting that FCOS can leverage as many foreground samples as possible to train the regressor.
      • Here l∗, t∗, r∗ and b∗ are the distances from the location to the four sides of the bounding box
    • 借鉴了人体关键点检测的思路来做detection:CornerNet,第一个贡献是设计了一个针对top-left和bottom-right的heatmap,找出那些最有可能是top-left和bottom-right的点,并使用一个分支输出embedding vector,帮助判断top-left与bottom-right之间的匹配关系。第二个贡献是提出了Corner Pooling,因为检测任务的变化,传统的Pooling方法并不是非常适用该网络框架。
    • ExtremeNet: 将角点检测改为极值点检测,更加稳定,最终在singe scale上是40.1%(不如CorNerNet),但是mult-scale上比CorNerNet高了1.1个点。
    • 如何评价最新的两篇基于point的目标检测模型CenterNet?
    • CenterNet: 精度高,核心思想是通过中心点抑制误检;使用Cascade Corner Pooling模块提取图像的Corner heatmaps,并采用与CornerNet中一样的方法,根据左上角和右下角点,得到物体的bounding box;使用Center Pooling模块,提取图像的Center heatmap,根据Center map的得到所有的物体中心点。使用物体中心点对提取到的bounding box进行进一步过滤,如果box的中间区域没有中心点存在,则认为此box不可靠。
    • Objects as Points(CenterNet):速度快,出发点是用中心点做尽可能多的任务,基本上把中心点玩出了花,通过检测中心点以及预测各种长宽和 offsets 不仅能做 2D detection,还能做 3D detection 还能做 pose estimation。不需要voting,也不需要nms。直接predict centers,然后(再)predict长宽。
    • CornerNet-Lite:CornerNet-Lite,基于关键点的目标检测算法;CornerNet-Saccade 是追求高准确率(mAP)的同时,尽可能提高速度(FPS);CornerNet-Squeeze 是追求高实时性(FPS)的同时,尽可能提高准确率(mAP)。
    • 浅谈Anchor-Free based目标检测(一)
    • 目标检测:Anchor-Free时代
  • 作者:MatthewHou;链接:https://www.zhihu.com/question/321205293/answer/662068880
  • 最近的CVPR object detection部分, anchor-free大火特火. 基本上都逃不过15年的Densebox和18的CornerNet这两篇文章的思路, 剩下的无非就是如何更高效的用点来表示一个box. Grid-RCNN用NxN个点来表示, ExtremeNet用四个极值点+一个中心点来表示, CenterNet用两个角点+一个中心点来表示, Objects as Points(提出的框架也叫CenterNet)用一个中心点+长宽值来表示, FCOS用点+到框的四个距离来表示....你看这些anchor-free的文章, 精度高的也有, CenterNet更是在coco-testdev上刷到了47的AP, 速度快的也有, Objects as Points可以在保证41.6AP值的情况下达到35ms一帧(GPU Titan V下, 而且输入是512*512). 所以感觉CornerNet-Lite出现的稍微晚了些, 基本上它能做的事情其它框架都可以做. (吐槽一下, 这几篇文章真的大同小异, 如果可以把每篇文章的优点都结合起来, 再优化下, 说不定accurate/speed真的可以都提上去).

cascade 方法

anchor_based-anchor_free object detectors的更多相关文章

  1. one-stage object detectors(1)

    2019/04/08 强烈推荐:深入理解one-stage目标检测算法 yolo系列 one-stage object detectors(YOLO and SSD) 在不专一的模型中,每个检测器应该 ...

  2. 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)

    论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...

  3. 《DSOD:Learning Deeply Supervised Object Detectors from Scratch》翻译

    原文地址:https://arxiv.org/pdf/1708.01241 DSOD:从零开始学习深度有监督的目标检测器 Abstract摘要: 我们提出了深入的监督对象检测器(DSOD),一个框架, ...

  4. deep learning on object detection

    回归工作一周,忙的头晕,看了两三篇文章,主要在写各种文档和走各种办事流程了-- 这次来写写object detection最近看的三篇文章吧.都不是最近的文章,但是是今年的文章,我也想借此让自己赶快熟 ...

  5. 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation

    DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation Xia ...

  6. TensorFlow Object Detection API(Windows下测试)

    "Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, ...

  7. object detection[content]

    近些年,随着DL的不断兴起,计算机视觉中的对象检测领域也随着CNN的广泛使用而大放异彩,其中Girshick等人的<R-CNN>是第一篇基于CNN进行对象检测的文献.本文欲通过自己的理解来 ...

  8. 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)

    作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik 该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当 ...

  9. (转)Awesome Object Detection

    Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...

随机推荐

  1. SpringCloud高并发性能优化

    1. SpringCloud高并发性能优化 1.1. 前言 当系统的用户量上来,每秒QPS上千后,可能就会导致系统的各种卡顿,超时等情况,这时优化操作不可避免 1.2. 优化步骤 第一步:优化大SQL ...

  2. HTML5中重新定义的 b 和 i 元素

    HTML5强调元素的语义,而非表现.b和i元素是早期HTML遗留下来的产物,它们分别用于将文本变为粗体和斜体(那时CSS还未出现). 当时的规范建议编码人员用strong替代b,用em替代i.不过,事 ...

  3. 24、vuex刷新页面数据丢失解决办法

    刷新页面时候将state数据保存到localStorage里面: export default { name: 'App', created () { //在页面加载时读取localStorage里的 ...

  4. 18、git提交代码并将develop分支合并到master分支上

    提交合并代码流程: git add .git commit -m ''git pushgit checkout mastergit merge develop //将develop 分支与master ...

  5. SpringCloud之监控数据聚合Turbine

    前言 SpringCloud 是微服务中的翘楚,最佳的落地方案. 使用 SpringCloud 的 Hystrix Dashboard 组件可以监控单个应用服务的调用情况,但如果是集群环境,可能就 不 ...

  6. kbmmw 5.10.10 发布

    这个版本主要是bug修正. New stuff         =========         - Added OnException event property to TkbmMWSchedu ...

  7. Django-ModelFrom中修改save后的字段值

    在ModelForm提交中,保持原未修改字段的值,views中部分代码: project = Iredmail.objects.get(id=id) ssh_crt_name = project.ss ...

  8. Python之数据分析

    什么是数据分析? 运用不同行业中,专门从事行业数据搜集.整理.分析,并依据数据做出行业研究.评估和预测的专业人员. 熟悉行业知识.公司业务及流程,最好有自己独到的见解,若脱离行业认知和公司业务背景,分 ...

  9. 如何在macOS下调整磁盘分区大小?

    可以在“macOS”下利用磁盘工具并且不抹掉主分区的情况下,随意更改磁盘分区大小的方法.“OS X”经过几次大版本升级以后,也改名为“macOS”,而且系统自带的“磁盘工具”无论是功能和界面也有很大的 ...

  10. Linux操作系统内核编译之NTFS文件系统模块支持案例

    Linux操作系统内核编译之NTFS文件系统模块支持案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内核编译概述 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引 ...