1 要解决的问题
基于anchor 的目标检测算法存在的弊端:
1:首先,需要大量的anchor boxes来保证与ground truth都充分重叠,但是最后真正作为正样本的只是其中很少的一部分,这样导致严重的正负样本不均衡,也会极大降低训练速度。
2:其二,anchor boxes 会相应的引入大量的超参数,数量,长宽比,大小等等,这些参数的选择是根据特定的检测物体设定的,不具有普适性,而且FPN中多尺度预测需要自己独特的anchor boxes,这样会使计算相当的复杂。
2 怎么解决
anchor free,直接抛弃anchors,用物体的左上角点和右下角点完成物体定位。
首先通过Hourglass 网络,然后是两个角点预测模块,分别做左上角的corner pooling 和右下角的corner pooling 得到两个heatmap ,Embeddings,Offsets。
3 corner pooling
具体操作十分简单,看下图一目了然,左上角点的corner pooling就是从右向左,从下到上一排一排的扫描feature map,当前值大于等于现在扫描像素最大值时不变,小于最大值时将当前像素值更新最大值。
公式如下:
最后将tij +lij 的结果作为最后heatmap.
4 如何匹配检测的角点
架构图中Embeddings专门用于匹配左上角点和右下角点,如果一个左上角点的Embedding vector和右下角点的Embedding vector 距离最小,那么它们组成一个object box。
训练Embeddings方法如下:
etk 表示左上角点的Embedding vector ,ebk表示右下角点的Embedding vector。
ek是etk和ebk的平均值。△值设置为1。Lpull 用于拉近同一个物体左上角点和右下角点Embeddings距离,Lpush用于是不同物体的Embeddings 距离增大。