1、backbone 是指用于在imagenet数据集上预训练的结构,用于提取图片特征。用于GPU:vgg,resnet,densenet;用于CPU:squeezeNet,mobilenet,shuffleNet
2、head 是指用于预测类别和bbox的结构。
3、neck 是指在backbone与head之间插入的一些层,用于从不同的stages提取图片特征。通常由bottom-up paths和top-down paths组成,像FPN,Path Aggregation Network(PAN),BiFPN和NAS-FPN等
bag of freebies
定义:只是改变了训练技巧,或者只是增加了训练时间的措施,像:数据增强:包括翻转,裁剪等,也包含遮挡、擦除等 ;损失函数;正则化等
1、dropblock
Focal Loss
CIOU损失
smoothL1损失是将坐标的四个点分别计算L1损失,而不考虑他们之间的关系,基于IOU损失的迭代:IOU损失=>GIOU损失=>DIOU损失=>CIOU损失
Bag of specials
定义:增加了模型预测的时间,但是加大地增加了准确率。
1、SAM
注意力机制
2、激活函数
relu、swish、mish等
3、NMS
nms,soft nms(不是直接将重叠度高的bbox去掉,而是将该bbox的的score根据一个权重函数将其减小)
CSPDarknet
cspnet是将将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concatenate。因此它可以与向resnet,densenet或者darknet进行合并。
SPP
Spatial Pyramid Pooling(SPP)解决的问题:在R-CNN网络中,输入CNNs网络的图像必须是固定大小的图像。也就是通过SS算法或者rpn提取出来的proposal regions尺寸是不统一的,经过一个warp变形操作,所有proposal regions的尺寸都变成一致。然后再输入到CNN网络中。图像的多种多样的尺寸带来的问题是让图像看起来很不自然,可能会降低识别精度。
SPP的做法是在卷积层后增加一个SPP layer,spp layer将features map拉成要给固定长度的feature vector。然后将feature vector输入到fully-connected layers中。SPP的结构如下所示:
SPP这样做有两个优点:(i)解决的proposal regions尺寸问题;(ii)先计算出feature maps,在表示每个proposal region时候特征图的结果可以共享,节约计算时间。
PAN
YOLOv4中采用FPN与PAN相结合的结构,和Yolov3的FPN层不同,Yolov4在FPN层的后面还添加了一个自底向上的特征金字塔。这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合。
如下图中所示,FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递,而本文就是针对这一点,在FPN的后面添加一个自底向上的金字塔,可以说是很皮了。这样的操作是对FPN的补充,将低层的强定位特征传递上去。
我们都知道,深层的feature map携带有更强的语义特征,较弱的定位信息。而浅层的feature map携带有较强的位置信息,和较弱的语义特征。FPN就是把深层的语义特征传到浅层,从而增强多个尺度上的语义表达。而PAN则相反把浅层的定位信息传导到深层,增强多个尺度上的定位能力。
YOLOv4网络结构
CBM :Yolov4网络结构中的最小组件,由Conv+Bn+Mish激活函数三者组成。
CBL :由Conv+Bn+Leaky_relu激活函数三者组成。
Res unit :借鉴Resnet网络中的残差结构,让网络可以构建的更深。
CSPX :借鉴CSPNet网络结构,由卷积层和X个Res unint模块Concate组成。
SPP :采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。
每个CSPX中包含5+2*X个卷积层,因此整个主干网络Backbone中一共包含1+(5+2x1)+(5+2x2)+(5+2x8)+(5+2x8)+(5+2x4)=72。
核心内容
1、输入端 :这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练
2、BackBone主干网络 :将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、Dropblock
3、Neck :目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构
4、Prediction :输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms