文章目录

  • 简介
  • Backbone
  • 如何制作数据集的Ground Truth
  • Center的设置
  • 如何计算Loss

  • 总结


简介

目标检测怎么更改batch 目标检测centernet_计算机视觉


目标检测怎么更改batch 目标检测centernet_目标检测怎么更改batch_02


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,可以大幅度缓解样本不均衡。

目标检测怎么更改batch 目标检测centernet_计算机视觉_03


CenterNet是Anchor free的方法。还有CornerNet和ExtremeNet都是keypoint和anchor free的方法。CornerNet是预测目标框左上角和右下角的点。如何知道左上角和右下角是一个物体呢?CornerNet还预测了其他的东西,把他们组合在一起。ExtremeNet是预测5个点,4个边框+1个中心点。后面也是需要group的操作,CenterNet直接预测物体的中心点,以及预测宽高或者offset等,完成物体的检测,非常的简单。

目标检测怎么更改batch 目标检测centernet_宽高_04


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

目标检测怎么更改batch 目标检测centernet_深度学习_05


这两个论文可以看一下。Hourglass在keypoint的检测,效果最好,但是参数和计算量比较大。ResNet可能比它快,但是没有Hourglass好。这里做一个折中,backbone用了DLA。

目标检测怎么更改batch 目标检测centernet_目标检测怎么更改batch_06


中心点最大,其他8个点比较小,那么这个就是中心点,把它设置为1,其他位置为0。但是实际是,我们在标定gt的时候,是用了一个高斯分布,不是只有中心点是1。

如何制作数据集的Ground Truth

Center的设置

目标检测怎么更改batch 目标检测centernet_计算机视觉_07


目标检测怎么更改batch 目标检测centernet_宽高_08


目标检测怎么更改batch 目标检测centernet_目标检测_09


Corner说,左上角和右下角只有在一定的范围之内,都是可以约束的,比如设置一个iou,大于ioc阈值的都是可以的,找到半径r,计算sigma=r/3。CenterNet的keypoint的检测,也是借鉴的这个思想。CornerNet 几种情况:

情况一:

目标检测怎么更改batch 目标检测centernet_深度学习_10


情况二:

目标检测怎么更改batch 目标检测centernet_深度学习_11


情况三:

目标检测怎么更改batch 目标检测centernet_计算机视觉_12


CenterNet直接用了CornetNet的r,这里具体是不是完全的精确,还不太确定。但是不要纠结太多。拿过来用即可。(不太严谨)

如何计算Loss

目标检测怎么更改batch 目标检测centernet_深度学习_13


目标检测怎么更改batch 目标检测centernet_计算机视觉_14


目标检测怎么更改batch 目标检测centernet_计算机视觉_15


目标检测怎么更改batch 目标检测centernet_目标检测怎么更改batch_16


offset。原始图片512512,output是128128,scale factor=4,实际上x,y向下取整,造成了精度损失,对于很小的物体。这里loss错了,实际是L1,不是smooth L1。

目标检测怎么更改batch 目标检测centernet_目标检测_17


points —> bounding box的decode过程。

总结

目标检测怎么更改batch 目标检测centernet_目标检测_18


1.anchor free

2. 可以增加head头,比价灵活