文章目录
- 简介
- Backbone
- 如何制作数据集的Ground Truth
- Center的设置
- 如何计算Loss
- 总结
简介
Faster R-CNN和RetinaNet都是基于Anchor机制的。
Faster R-CNN是需要RPN进行预选框的筛选,300个框左右。
RetinaNet是one-stage的方法,没有RPN,直接暴力枚举所有anchor,直接做分类和回归。一个图片里只存在少量物体,但是我们枚举的框很多,如果在Faster R-CNN 300个框计算loss,会造成正负样本不均衡,loss倾向于负样本的loss。而RetinaNet改进了loss,使用了focal loss,可以大幅度缓解样本不均衡。
CenterNet是Anchor free的方法。还有CornerNet和ExtremeNet都是keypoint和anchor free的方法。CornerNet是预测目标框左上角和右下角的点。如何知道左上角和右下角是一个物体呢?CornerNet还预测了其他的东西,把他们组合在一起。ExtremeNet是预测5个点,4个边框+1个中心点。后面也是需要group的操作,CenterNet直接预测物体的中心点,以及预测宽高或者offset等,完成物体的检测,非常的简单。
input size resize成512512,然后进入Backbone,Hourglass是一个沙漏网络,在检测人体骨骼很好用。得到的feature map是128128,分辨率下采样了4倍。将feature map输入3个head,分别预测不同的东西。
heatmap是HWC(128128class类别数,不包含背景)()用于分类;wh:是去预测对应位置的宽高,这里的宽高是heatmap预测出的类别的宽高。
offset:是一个偏移量,是对中心点的调整。因为下采样的时候,精度会损失,对于小物体可能不准确了,offset对于中心点的x,y坐标做一个精细化的调整。HW2,2 就是对x,y的回归。offset也是heatmap预测出的类别的offset。
所以,CenterNet对于物体重合的时候,不能很好的解决。
Backbone
这两个论文可以看一下。Hourglass在keypoint的检测,效果最好,但是参数和计算量比较大。ResNet可能比它快,但是没有Hourglass好。这里做一个折中,backbone用了DLA。
中心点最大,其他8个点比较小,那么这个就是中心点,把它设置为1,其他位置为0。但是实际是,我们在标定gt的时候,是用了一个高斯分布,不是只有中心点是1。
如何制作数据集的Ground Truth
Center的设置
Corner说,左上角和右下角只有在一定的范围之内,都是可以约束的,比如设置一个iou,大于ioc阈值的都是可以的,找到半径r,计算sigma=r/3。CenterNet的keypoint的检测,也是借鉴的这个思想。CornerNet 几种情况:
情况一:
情况二:
情况三:
CenterNet直接用了CornetNet的r,这里具体是不是完全的精确,还不太确定。但是不要纠结太多。拿过来用即可。(不太严谨)
如何计算Loss
offset。原始图片512512,output是128128,scale factor=4,实际上x,y向下取整,造成了精度损失,对于很小的物体。这里loss错了,实际是L1,不是smooth L1。
points —> bounding box的decode过程。
总结
1.anchor free
2. 可以增加head头,比价灵活