DCNv1
参考文章:https://zhuanlan.zhihu.com/p/37578271
主要思路:卷积操作不是在规规矩矩的3x3的格子里做了,而是有了种种偏移。
deformable convolution在特征图的每个位置都生成一组偏移量。以kernel=3x3为例,图中的N就是9,经过卷积后输出HxWx18的feature map,每个location位置的18分别对应3x3卷积的9个位置的9组偏移量。
优势:
1.对物体的形变和尺度建模的能力比较强
2.感受野比一般卷积大很多,因为有偏移的原因,一般的空洞卷积空洞是固定的,对不同的数据集不同情况可能最适合的空洞大小是不同的,但是可形变卷积的偏移是可以根据具体数据的情况进行学习的
3.可形变卷积可以适应物体的尺度,背景类的尺度一般在medium和large尺寸的物体之间,作者认为这说明large的目标可以更有效帮助我们识别干扰
Mimic
参考文章:https://blog.csdn.net/mengmengmiao/article/details/77884565
主要思路:
大多数的检测算法,都会有个基于CNN的特征提取器,然后使用不同的方法来对特征进行解码,得到用于检测的数据。因此,大的模型和更加高效的模型的区别主要在于这个CNN特征提取器,也就是backbone。我们拥有一个表现很好的检测模型,我们可以用它来监督其他检测网络。那么问题就是如何用一个好的检测模型,监督训练一个更加高效的网络,同时保持它的准确率。
Mimicking的主要思想是通过大的模型的soft targets或者logits来训练一个小的神经网络。通常soft targets包含了大的模型学习得到的信息,是的小的模型能够近似地拟合这种大模型的知识。
单纯使小模型学习大模型的feature map并不能work,原因在于feature map的维度太高,包含太多全局的信息,而对于仅有少量object的feature map,通常只有微弱的响应。因此,该文中提出了一个新的卷积网络mimic方法,即将学习整个feature map变为学习proposal采样之后的feature来简化任务。
对于mimic loss进行normalization可以取得更为稳定的mimic结果
对于小网络与大网络feature map大小不同的情况(譬如小网络中输入图像减半),可以增加一个转换层(deconvolution)使得大小网络最终mimic的层保持一致。
DCNv2
参考文章:https://zhuanlan.zhihu.com/p/53127011
在DCNv1基础上改进
1.使用更多的deformable convolutions
2.增加幅值,原有的2×k×k变为3×k×k
3.采用mimicing loss思想,右面即为新增加的分支,该分支与原来的分支共享权重。但是其输入不同,是RPN阶段得到的Roi直接crop and resize下来的。在经过2-fc层后,产生的特征进行比较,计算mimic loss
DLA
https://blog.csdn.net/qq_27667937/article/details/81116314
主要思想来源:
IDA 融合不同的分辨率/尺度上的feature,HDA 合并所有的模块和通道的feature
CenterNet算法
参考文章:https://zhuanlan.zhihu.com/p/66048276,写的很好,可以直接看这个
主要思想:直接检测目标的中心点和大小,是真anchor-free。
特点:
1.CenterNet的“anchor”仅仅会出现在当前目标的位置处而不是整张图上撒,所以也没有所谓的box overlap大于多少多少的算positive anchor这一说,也不需要区分这个anchor是物体还是背景 - 因为每个目标只对应一个“anchor”,这个anchor是从heatmap中提取出来的,所以不需要NMS再进行来筛选
2.CenterNet的输出分辨率的下采样因子是4,比起其他的目标检测框架算是比较小的(Mask-Rcnn最小为16、SSD为最小为16)。
3.主要实现了三种任务:目标检测、关键点检测、3D目标检测。
目标检测
论文中CenterNet提到了三种用于目标检测的网络,这三种网络都是编码解码(encoder-decoder)的结构:
Resnet-18 with up-convolutional layers : 28.1% coco and 142 FPS
DLA-34 : 37.4% COCOAP and 52 FPS
Hourglass-104 : 45.1% COCOAP and 1.4 FPS
每个网络内部的结构不同,但是在模型的最后都是加了三个网络构造来输出预测值,默认是80个类、2个预测的中心点坐标、2个中心点的偏置。用官方的源码(使用Pytorch)来表示一下最后三层,其中hm为heatmap、wh为对应中心点的width和height、reg为偏置量。
检测思路:
中心点损失
偏置损失
大小损失
推理过程
在预测阶段,首先针对一张图像进行下采样,随后对下采样后的图像进行预测,对于每个类在下采样的特征图中预测中心点,然后将输出图中的每个类的热点单独地提取出来。具体怎么提取呢?就是检测当前热点的值是否比周围的八个近邻点(八方位)都大(或者等于),然后取100个这样的点,采用的方式是一个3x3的MaxPool,类似于anchor-based检测中nms的效果。
最终根据当前中心点存在物体的概率值选择,代码中设置的阈值为0.3,也就是从上面选出的100个结果中调出大于该阈值的中心点作为最终的结果
CenterNet代码地址:https://github.com/xingyizhou/CenterNet,简单看了一下网络、训练和推理的部分代码,提供的功能很全,赞!