坊网站建设,南京房地产开发公司,加盟网网站建设,深圳开发app论文链接
一.背景
1.anchor-base缺点
(#xff11;)#xff0e;anchor的设置对结果影响很大,不同项目这些超参都需要根据经验来确定#xff0c;难度较大#xff0e;
(#xff12;)#xff0e;anchor太过密集#xff0c;其中很多是负样本#xff…论文链接
一.背景
1.anchor-base缺点
()anchor的设置对结果影响很大,不同项目这些超参都需要根据经验来确定难度较大
()anchor太过密集其中很多是负样本引入了不平衡
()anchor的计算涉及IOU增加计算复杂度 2.anchor free检测框
yolov1可看成是anchor free方式通过划分格子target的中心点位于格子里的才将相应的格子负责预测target.而yolov2采用了anchor的思想anchor遍布图片自然召回率上升了fcos取长补短,采取了gt框里的所有点进行回归同时采用center-ness分支优化框的质量 二.网络介绍
1.网络结构 输出分支主要由三部分组成
classification,大小为(W,H,C),输出不同类别
Regression大小为(W,H,4),输出图上每个点的上下左右偏差
Center-ness大小为(W,H,1),预测检测框中心点与gt检测框的中心点的重合概率用来提升检测框精度下面有具体分析
2.中心采样center sampling
对于任何一个gt bbox首先映射到每一个输出层利用center_sample_radius×stride计算出该gt bbox在每一层的正样本区域以及对应的left/top/right/bottom的target.
对于每个输出层的正样本区域遍历每个point位置计算其max(left/top/right/bottom的target)值是否在指定范围内不再范围内的认为是背景.
(1).减少歧义target数目,能很大解决overlap特征点不知道该回归那个框的问题
(2).减少标注噪声干扰
box标注通常会框住很多无关区域,如果无关区域的point也要回归明显不对比如空中的飞机飞机旁边的天空就是无关区域
3.FPN 通过FPN在每层feature map去预测不同尺度大小的物体就解决了这种overlap的问题(overlap特征点不知道该回归那个框) 如果FPN和中心采样还没解决的话就按最小的框来 同时FPN每一层回归范围进行约束. P3:回归范围在[0,64],P4:回归范围在[64,128],P5:回归范围在[128,256]
P6:回归范围在[256,512],P7:回归范围在[612,inf],这样就解决了不同层预测不同大小目标的问题
但是比如还是存在多个head回归一物体现象比如在第二层回归的最大范围是80,在往上一层回归的最大范围就是40因为第二层是第一层的1/2,所以导致同一个物体是有两层进行回归的。
4.分类
训练个二分类器而不是训练一个多分类器 5.坐标回归
anchor-based回归方式在于回归anchor与gt框之间的偏移量而fcos在特征图上面的每一个点回归上下左右的距离(可认为是point-based) 公式: (l ∗ , t ∗ , r ∗ , b ∗ ) :回归的上下左右四个量;
(x0,y0),(x1,y1):gt在原图上面的左上右下坐标;
(x,y):特征图内的点的坐标;
s: 相应feature map的步长, 用于压缩预测范围容易平衡分类和回归Loss权重.
6. center-ness
作者发现引入了很多远离taget中心点的低质量预测框,预测框的中心点与target框的中心点更接近的话预测框更加可靠所以在回归的分支引入center-ness分支来回归预测框中心与target中心虽然是回归问题但采用的是celoss 可看出低IOU但score高的box得到了很大减少IOU和score的一致性得到了改善
7.loss函数 Lcls: focal loss
Lreg: GIoU loss
Npos:正样本数据
λ:取平衡回归与分类loss centerness loss用于约束预测框中心与gt中心点限制边界处的loss,直接与上面分类与回归相加即可在推理时输出的score为分类score乘以中心score
import cv2
import numpy as np
def draw_centerness(box):x1, y1, x2, y2 boxw, h x2 - x1, y2 - y1print(np.arange(w).repeat(h).reshape(h, w))print(np.arange(w).repeat(h).reshape(h, w).transpose(1, 0))xs np.arange(w).repeat(h).reshape(h, w).transpose(1, 0).reshape(-1, 1)print(xs:, xs)ys np.arange(h).repeat(w).reshape(h, w).reshape(-1, 1)print(ys:, ys)left xs - x1print(left:, left)right x2 - xstop ys - y1bottom y2 -yshm np.sqrt(np.minimum(left, right)/np.maximum(left, right) * np.minimum(top, bottom)/np.maximum(top, bottom))hm hm.reshape(h, w)return hm
hm draw_centerness([0, 0, 100, 100])
max_num np.max(hm)
cv2.imwrite(./test.jpg, hm/max_num*255.) 8.推理
获取feature map上每个点的分类score在与回归的四个边界进行组合即可得出预测框在进行阈值0.6的NMS. 三.实验结果 参考:https://www.zybuluo.com/huanghaian/note/1747551