CornerNet 2个角点:左上角和右下角角点
input:image经过一个ConvNet→生成feature map
hourglass network: 捕获图片在多个尺度下的特征。1、降采样操作缩小输入的大小;2、上采样恢复到输入图像大小
常用:使用多个pipeline分别单独处理不同尺度下的信息,网络的后面部分再组合这些特征。
上面分支module负责预测左上角corner,下面分支module负责预测右下角corner
需要group操作。
heatmaps预测:Corners点概率;
中心点不一定局限在某一个位置上 而是一个区域→中心点落在半径r范围内设置一个iou→圆圈内的点的数值是以圆心往外呈二维的高斯分布;【对不同负样本点的损失函数采取不同权重值的原因:白色虚线是一个预测框,预测框的两个角点和ground truth并不重合,但是该预测框大概框住了目标,因此是有用的预测框,所以要有一定权重的损失返回】
loss:带有惩罚因子的Focal loss 降低接近真值损失 进一步解决样本不均衡
embeddings预测:解决的是配对问题:一个目标的两个角点,二者的embedding vector之间的距离应该很小。每个点所属的目标中心点;采用L1范数,距离大于0.5或者两个点来自不同类别的目标的都不能构成一对。
offsets:表示在取整计算时丢失的精度信息,输入图像到特征图之间会有尺寸缩小。anchor-based方法是算和anchor偏移。针对小尺寸目标的回归。这是针对角点的。
corner pooling:怎么知道这个点就是角点?特征点肯定是最大的。红色的部分。找到值最大的网格然后确保该网格左边的网格全部都能变成最大值,也就是把水平方向最明显的特征向左延续;竖直方向最明显的特征向上延续;这样当两幅heatmap相加时→两者最明显特征的路线相重叠,这样加出来的值肯定也是最大的,因此就能推测出左上角关键点的位置。
测试:
在得到预测角点后,会对这些角点做NMS操作,选择前100个左上角角点和100个右下角角点。测试图像采用0值填充方式得到指定大小作为网络的输入,而不是采用resize,另外同时测试图像的水平翻转图并融合二者的结果。最后通过soft-nms操作去除冗余框,只保留前100个预测框
ExtremeNet
检测目标的4个极值点(即最上点、最下点、最左点、最右点)和一个中心点
需要group操作。针对CornerNet预测的角点经常落在目标外部,没有足够的目标特征改进。
backbone:Hourglass Network
heatmap:*5 4个极值点+1个中心点。
根据顶、底、左、右四个点集,从四个点集中各抽取一个得到四个极值,计算几何中心坐标,找到该中心坐标在中心点heatmap中的得分,如果高于阈值,那么这四个极值点组成的bounding box返回一个最终得分→五个点得分的平均值。
Ghost box抑制:解决比如要找2的中心,有可能找的是更大的这个框而不是2的box。如果box,其里面所有的包围框的得分超过了其本身得分的3倍→修正为原来的1/2
Edge aggregation:解决极值点不唯一问题。对于左边右边极值点在竖直方向聚合;顶部底部极值点在水平方向聚合。【沿着聚合方向,将第一个单调下降区间内的点的score按一定权重累加到原极值点上,并在达到局部最小值的时候停止聚合】
Objects as Points【Centernet】
只预测中心点。通过检测物体的中心点以及中心点对应的w,h来实现检测。不需要group操作
input:512
backbone: DLA 沙漏型
hourglass network 姿态检测
output:fm128 降了4倍 → 三个head
三个head:
1、 heatmap【功能是预测中心点】:128128class;同CornerNet
关于高斯圆的半径确定,iou overlap 情况讨论:三种情况的半径,预测的全覆盖;gt全覆盖;交错 overlap=0.7作为临界值,取最小值作为高斯核的半径R。
2、1281282;【对应location宽、高】使用L1
3、281282;【中心点:细化调整 offset x y】引入偏置的损失值,降4倍后取证会带来误差。
o是预测的偏移值数量 R表示Heatmap的缩放因子 p~是缩放后取证的坐标
为什么没有给每个类别预测宽高?考虑物体中心点不会重合
3D目标检测:
1、depth不好直接回归; 在特征点估计网络上添加了一个深度计算通道,L1 loss。参考文章:Depth map prediction from a single image using a multi-scale deep network.
2、l w h L1 loss
3、方向也很难回归;用两个bins来呈现方向→方向用8个标量值来编码的形式,每个bin有4个值。对于一个bin,两个值用作softmax分类,其余两个值回归到在每个bin中的角度。参考文章:3d bounding box estimation using deep learning and geometry.√