百度飞桨目标检测教程四:Anchor-Free算法
Anchor-Free 算法解析
Anchor-Free 也可以细分为两种策略
第一种keypoint-based 涉及论文:CornerNet CornerNet Lite
第一种center-based 涉及论文:FCOS CenterNet TTFNet
Overall
经典算法的总结与展示
ppt1
思考?
anchor-based的方法的本质?不管使用什么方法,都是在每一个像素点生成一系列的anchor,然后判断这些anchor是positive还是negative,然后再对anchor中的内容做分类和回归。
anchor-based的方法的优势?一定程度上解决目标尺度不一和遮挡的问题。举个例子来说,如果两个目标的中心靠的很近的话,经过很多层卷积,它们的中心就会映射到一个网格上面,这事必须使用多尺度的一个anchor系列才能把这两个物体都检测出来。
anchor-based的方法的弊端?①依赖过多的手工设计:需要手工设计很多超参数,比如anchor的大小和比例;②训练和预测过程低效:anchor的数量太多了,需要一个一个遍历与真实框进行比较,这样需要的计算力是很大的;③正负样本不平衡:还是说anchor的数量太多,只有很小的一部分anchor是positive的,大部分是negative,这就是正负样本的不平衡。
ppt2
如何表示检测框
anchor-based的方法?用预设的anchor信息+编码出来的信息(偏移量bx, by, bw, bh)
anchor-free中的keypoint-based方法?首先检测出目标的左上角点和右下角点,然后通过它们之间的组合获取检测框。代表算法cornernet系列
anchor-free中的center-based方法?直接检测物体中心区域和边界信息,然后将分类和回归解耦成两个子网络。代表网络centernet系列,FCOS系列
CornerNet
ppt1
CornerNet
Cornernet: Detecting objects as paired keypoints
2018 ECCV
引用次数:531
作者:Hei Wei Princeton University, Princeton, NJ, USA
联系方式:E-mail: [email protected]
原理:①backbone,Hourglass Network提取图像特征;②两个分支分别处理左上角点和右下角点,每个分支有两个卷积;③Heatmap卷积为了找到点,为了找到左上点的位置并对左上点进行分类;④embeddings卷积匹配点,将左上角点和右下角点组合成候选框,相同物体的两个角点具有较大的相似度,不同物体的角点相似度差值期望很大。
ppt2
Heatmap如何找到角点?
Reduce Penalty 正负样本失衡问题?并不是说直接将两个角点标记为正样本,其他角点标记为负样本。这样会出现正负样本失衡的问题,对于一张图像来说,正样本只有那么几个,大部分是负样本,所以为了解决这个问题,减小惩罚成本,将正样本点某一个半径范围内的点全部标记为正样本,可以增加正样本的数量,正样本的数值标记用高斯分布表示,越接近圆心,其值越接近于1,这样的标记可以代替binary mask标记。
Corner Pooling 角点包含更多的图像信息?如果用普通的卷积信息,一个像素点提取的特征信息只能包括自己本身和周围很小的距离的像素点的信息,但是对于判断物体来说,需要结合很远的距离的像素点的信息,
ppt3
解决办法,top corner pooling,每个像素点的值变为下方所有值的最大值,left corner pooling,每个像素点的值变为右方所有值的最大值,最后两者想加得到corner pooling的结果。
ppt4
用embedding分支将同一个物体的左上,右下角点组合在一起,期望的结果是相同物体的两个角点具有较大的相似度,不同物体的角点相似度差值很大。
对输入特征图进行编码,输出的结果图即为embedding信息,使用一维的embedding特征,输出的特征图是一维的,左上角点和右下角点的embedding信息作为两个角点的相似度。
ppt5
多了一个offset,用来表示经过卷积压缩后两个角点的移动误差,2个维度,分别表示x方向误差与y方向误差。
ppt6
检测精度高
检测速度慢
检测容易出问题,把同一个类别不同个体的角点有可能混淆。
最新2019CVPR,CornerNet Lite 改进了这些问题。
CornerNet Lite
CornerNet Lite
Cornernet-lite: Efficient keypoint based object detection
2019 CVPR
引用次数:38
作者:Hei Wei Princeton University, Princeton, NJ, USA
联系方式:E-mail: [email protected]
代码复现:https://github.com/princeton-vl/CornerNet-Lite
FCOS
ppt1
FCOS
Fcos: Fully convolutional one-stage object detection
2019 CVPR
引用次数:279
作者:Zhi Tian The University of Adelaide, Australia
联系方式:Email: [email protected] Website: https://zhitian.xyz/
简介,直接在输出特征图上预测像素点的类别以及其到4边的距离,同时用了FPN的结构,在不同层上预测不同尺度的物体。
ppt2
不同层预测不同尺度大小的物体?为了解决不同物体中心点有可能会重合的问题。
每一个层的输出都有三个分支:分类,回归和中心度
分类分支:某一个像素点落入真实框中即把该点标记为此真实框的类别,如果一个像素落入多个真实框中,标记面积最小的那个类别。Focal Loss
回归分支:将每一个像素点到真实框四边的值。 IoU Loss
每一个真实框分配给哪个层级?不是根据box的大小进行分配的,而是根据每一个点到四边值的最大值作为标准进行分配的。
ppt3
中心度的概念:并不是所有的真实框内的点都具有相同的中心度,离物体真正的中心的距离越小,中心度的值越大。Binary Cross Entropy Loss
中心度分值与分类分值相乘得到最后的分值。
ppt4
结果展示。
CenterNet
ppt1
CenterNet
Centernet: Keypoint triplets for object detection
2019 CVPR
引用次数:179
作者:Kaiwen Duan University of Chinese Academy of Sciences, China
联系方式:[email protected]
检测中心点和物体尺寸
中心点:和CornerNet相似,转换为关键点的检测,把物体的中心点标记成正样本,同时为了解决正负样本失衡的问题,也采用了半径内点高斯分布的方法。而且每个物体仅有一个正样本点,不存在像Anchor-based方法一样一个点预测出多个包围框再用NMS筛选的情况,这里一个点只预测一个包围框。
物体尺寸:直接预测中心点到真实框的四个角点的距离。
与Anchor-Based系列的异同点:
- 也是每一个点出都输出该像素点所对应的信息,这个像素点输出的信息就可以看成是一个不含shape信息的anchor。
- 每个物体仅有一个正样本点,因此不在需要费时的NMS运算。
- 引入的特征图只是4倍下采样,比FasterRCNN16倍下采样要大很多。
- 原来分配正样本要计算IoU,CenterNet仅仅把中心点及附近很小的区域点当成正样本。
与CornerNet的异同点:
- 都用了关键点采样的思路,都用了focal loss,都有一个offset分支弥补采样的位置的偏移。
- CenterNet不需要对关键点做组合。
ppt2
真实框大小的监督信息仅仅在中心点处产生,并使用L1 Loss。
L1 Loss
下图为CenterNet的基本网络结构。
ppt3
结果展示
优势:模型简单易于理解,对其他视觉任务的拓展性比较强,去除NMS耗时的后处理
弊端:训练时间长需要140个epoch,回归监督信息仅通过中心点位置产生。
TTFNet
ppt1
TTFNet
增加真实框监督信息,不止在中心点产生监督信息。
中心点附近产生半径为r的圆形高斯分布信息,改为椭圆
仅在中心点出产生真实框大小监督信息,改为椭圆内所有点都产生真实框大小监督信息。
原来是到四个角点的信息作为尺寸,改为到四条边的距离作为物体尺寸。
去除了Offset分支。
上采样 定位分支Focal Loss 回归分支GIoU Loss
右边是TTFNet的效果,训练轮数只需要12个epoch