anchor_based-anchor_free object detectors
- 同步到知乎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 方法
- 定位精度:2018 WIDER Challenge Face Detection : Cascade R-CNN是最早通过做 Cascade 提升模型 Regression 能力的方法,将其移植到单步检测器上。
- 实例分割的进阶三级跳:从 Mask R-CNN 到 Hybrid Task Cascade: 将这种结构或者思想引入到实例分割中并不是一件直接而容易的事情,如果直接将 Mask R-CNN 和 Cascade R-CNN 结合起来,获得的提升是有限的,需要更多地探索检测和分割任务的关联。
- Kong, T., Sun, F., Liu, H., Jiang, Y., & Shi, J. (2019). Consistent Optimization for Single-Shot Object Detection: 这篇工作其实最想做的是在One stage的框架内,实现了一个两级的Cascade refinement。
anchor_based-anchor_free object detectors的更多相关文章
- one-stage object detectors(1)
2019/04/08 强烈推荐:深入理解one-stage目标检测算法 yolo系列 one-stage object detectors(YOLO and SSD) 在不专一的模型中,每个检测器应该 ...
- 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)
论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...
- 《DSOD:Learning Deeply Supervised Object Detectors from Scratch》翻译
原文地址:https://arxiv.org/pdf/1708.01241 DSOD:从零开始学习深度有监督的目标检测器 Abstract摘要: 我们提出了深入的监督对象检测器(DSOD),一个框架, ...
- deep learning on object detection
回归工作一周,忙的头晕,看了两三篇文章,主要在写各种文档和走各种办事流程了-- 这次来写写object detection最近看的三篇文章吧.都不是最近的文章,但是是今年的文章,我也想借此让自己赶快熟 ...
- 论文阅读之 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 ...
- TensorFlow Object Detection API(Windows下测试)
"Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, ...
- object detection[content]
近些年,随着DL的不断兴起,计算机视觉中的对象检测领域也随着CNN的广泛使用而大放异彩,其中Girshick等人的<R-CNN>是第一篇基于CNN进行对象检测的文献.本文欲通过自己的理解来 ...
- 目标检测(一)RCNN--Rich feature hierarchies for accurate object detection and semantic segmentation(v5)
作者:Ross Girshick,Jeff Donahue,Trevor Darrell,Jitendra Malik 该论文提出了一种简单且可扩展的检测算法,在VOC2012数据集上取得的mAP比当 ...
- (转)Awesome Object Detection
Awesome Object Detection 2018-08-10 09:30:40 This blog is copied from: https://github.com/amusi/awes ...
随机推荐
- uniapp之w-picker使用采坑
1. uniapp之w-picker使用采坑 1.1. 前言 由于我是先在index页面集合了这个组件,发现该文件内容实在太多了,不好维护,所以打算把内容一个个抽成组件,在抽w-picker时,遇到了 ...
- 数据结构与算法—simhash
引入 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题. 例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费: 同时 ...
- python bs4 BeautifulSoup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.bs4 模块的 BeautifulSoup 配合requests库可以写简单的爬虫. 安装 命令:pip in ...
- 【漏洞复现】PHPStudy后门
0x01 概述 Phpstudy软件是国内一款免费的PHP调试环境程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimizer多款软件一次性安装,无需配置即可 ...
- Socket网络编程-IO各种概念及多路复用
Socket网络编程-IO各种概念及多路复用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作系统相关知识 1>.同步和异步 函数或方法被调用的时候,调用者是否得到最 ...
- 图论 - Bellman-Ford算法
Bellman-Ford Dijkstra算法虽好,但是不能解决带有负边权的图. 而利用Bellman-Ford可以完美的解决最短路和负边权的问题 朴素Bellman-Ford算法 w[i] 权值 u ...
- ArcGIS Server 注册托管数据库
需要已经安装好ArcGIS for Desktop.ArcGIS for Server和ArcSDE,并且已经创建了地理数据库 我试了用管理网站添加,总是不成功,后来用ArcCatalog添加成功.这 ...
- test20191205 WC模拟赛
又是先开T3的做题顺序,搞我心态.以后我必须先看看题了. 整数拆分 定义 \(f_m(n)\) 表示将 \(n\) 表示为若干 \(m\) 的非负整数次幂的和的方案数.例如,当 \(m = 2\) 的 ...
- 在WSL中安装zsh终端
cmder中设置: 新增task,名称为wsl::bash,右下方的方框内填写: "%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBa ...
- 记录:http协议+response+request+session+cookie
1.http协议 http协议也叫作超文本传输协议,定义了浏览器向怎样向服务器请求资源和服务器怎样将资源传给浏览器.http协议是面向事务的应用层协议,是万维网能够传递资源的可靠保障. 目前http协 ...