Anchor_Free网络不同于传统的目标检测网络需要先生成很多先验框再从中筛选+回归生成预测框。其可以直接从目标的中心点向周围发散一个预测框。这样做有两个好处:①省略了生成大量先验框的过程,可以一定程度增加预测速度;②预测框没有预设长宽比,对于长宽比异常的目标识别精度更有精度。
从上面的图可以很清楚的看出Anchor_Free(左)和Anchor_Base(右)在处理预测框上的区别。
CenterNet是一种经典的Anchor_Free网络,其网络结构如下图所示:可以分为骨干网络、高分辨率特征图生成网络,分类头。
骨干网络一般为ResNet50或Hourglass Net。这里以ResNet50为例,512x512的图像经过特征提取会得到一个16x16x2048的特征图。并不像Yolo一样需要抽取多个不同尺寸的特征。
即网络结构图中的三个ConvTranspose(反卷积)模块,对于特征图(16x16x2048)而言,三次反卷积会最终生成一个128x128x64的特征图(每次反卷积特征的高宽会放大2倍),使用这个特征图网络即可通过Center Head预测出最终结果。
Center Head将128x128x64的特征图划分为128个区域,每个区域中存在一个特征点。当物体的中心落入某个区域时,该区域的特征点(通常是区域左上角的点)会作为基点来确定物体。
Center Head会利用特征图进行三个卷积,分别进行热力图预测、中心点预测、宽高预测。
①热力图预测:用来判断每一个热力点(特征点)是否存在物体,以及物体的种类,其通道数为num_classes(种类数),输出结果为(128x128x num_classes)
num_classes通道为每个种类的概率,经过激活函数即可判断最有可能的类型
②中心点预测:用来判断中心点到热力点的偏移情况,通道数为2,输出结果为(128x128x2)
2维通道代表中心点相对于特征点右下角的偏移情况
③宽高预测:用来预测每个物体的宽高情况,通道数为2,输出结果为(128x128x2)
2维通道代表物体预测框的宽和高
CenterNet同样需要非极大抑制操作来确保同一类型的预测框不会过多叠加,但是不同的是其需要在生成预测框之前,在热力图预测结果上进行非极大抑制。
Yolo系列向来都是经典的Anchor_Base网络,而YoloX通过对预测头(Yolo Head)的修改是的其能在不适用先验框的情况下生成预测框。
YoloX的大体结构和传统的Yolo差别不大,也使用Darknet作为骨干网络,最大的修改来自与Yolo Head,网络结构图下图,依旧能分为骨干网络、FPN加强特征提取网络、Yolo Head预测头
为改进的CSPDarknet,这个网络会输出三个不同尺寸的特征图,称为有效特征层。由上面的网络图可以看出,CSPDarknet主要由两种模块构成:Conv2D_BN_SiLU和CSPLayer,同时在输入的时候使用了Focus结构,最后一层使用了SPP提高网络的感受野。
Conv2D_BN_SiLU实际上就是一个残差网络模块,知识其激活函数从ReLu换成了SiLU,SiLU具备无上界有下界、平滑、非单调的特性。SiLU在深层模型上的效果优于 ReLU。可以看做是平滑的ReLU激活函数,其公式可以写作:。
CSPLayer类似于ShuffleNet中的Channel Split操作,该模块将输入特征拆分为左右两个部分,左边直接连接到输出,右边则正常进行残差运算。结构如下图所示:
Focus结构不难理解,其在图片中每隔一个像素点获取一个值。每获取四个值时便将这四个值进行堆叠生成一个特征层,相当于将原来的3通道变为了12通道,操作图如下图所示:
SPP结构通过不同池化核大小的最大池化进行特征提取,以提高网络的感受野,在YoloV4中该结构被用在FPN中,而YoloX中则将其用在了骨干网络上。
同样是对骨干网络输出的三个特征进行上采样融合和下采样融合,结构如图,主要的特点是采用了CSPLayer替代传统卷积,在这里就不再赘述,可以参考之前YoloV7的文章。
[神经网络]YoloV7https://blog.csdn.net/weixin_37878740/article/details/131590277?spm=1001.2014.3001.5501
这是YoloX最大的不同点,以前的Yolo网络的所有解耦头都是连载一起的(即分类和回归由一个1x1卷积实现),而YoloX将其进行了拆分,到最终预测的时候再整合起来。
从上图可见,此分类头一共三个输出Cls用来判断每个特征点包含的物体种类(num_classes个通道),Reg为回归参数(4个通道),用来调整预测框,Obj用来判断特征点是否含有物体(1个通道)。