FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递
PAN就是针对这一点,在FPN的后面添加一个自底向上的金字塔,对FPN补充,将低层的强定位特征传递上去,又被称之为“双塔战术”
SPP的核心在于使用多个不同尺寸池化核(如44、22、1*1窗口)对上层(卷积层)获得的feature maps 进行采样(池化,文中使用最大池化),将分别得到的结果进行合并就会得到固定长度的输出。总结一句话:目的就是任意大小的特征图都能够转换成固定大小的特征向量
每个点预测b个box ,每个box由:4个位置坐标,1个置信度得分,c个类别组成每个尺度下的输出头:如 尺度1313,则输出维度是:1313*(4+1+c)*b
sigmoid、relu、leakrelu、relu6、mish、swish、hard-swish
激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题
1.非饱和; 2.可导; 3.其它
归一化
使得不同层之间尽量数据同分布
可以
4.1.1 yolov3之前: 误差平方和
4.1.2 yolov3之后: ciou loss/各种iou区别
4.2.1 yolov3之前: 误差平方和损失
4.2.2 yolov4之后: 二分交叉熵损失
4.2.3 注意: 统计有了目标的损失和背景损失
4.3.2 yolov5: 二分交叉熵损失
4.3.3 yolov2: 交叉熵损失
4.3.4 yolov1: 误差平方和
4.3.5 注意:
1.由交叉熵到二分交叉熵提出的原因:解决目标多标签问题;
2.交叉熵损失均可以用focal loss替换.
对输出头特征图的每个点进行预测(每个点相当于原始图像一个cell的大小),预测位置、置信度、类别.
2.1 MNS:hard
2.2 soft NMS:还给一次机会,降低分值
2.3 diou-NMS
3.1 目的:
标签平滑是一种正则化方法,将hard标签转换为soft标签.来降低模型对于标签的信心,可以防止模型在训练期间过于自信,降低过拟合风险
smooth-labels=(1.0 - label-smoothing) * one-hot-labels + label-smoothing / num-classes
2.1.1.1 正样本定义:保证每个GT有一个唯一的anchor进行对应.匹配规则为IOU最大,选取出来的即为正样本.
2.1.1.2 负样本定义:其余为负样本.但是得从其中选取IOU 大于 0.5(设定阙值)的作为忽略样本,因为负样本中仍有大量IOU与GT很大但是质量不是很高,作为负样本也不合适;
2.1.1.3 正anchor用于分类和回归学习,正负anchor用于置信度confidence的学习,忽略样本不考虑.
2.1.1.4 yolov3/yolov4的正负样本定义小细节:GT需要利用max iou元原则分配到不同的预测层yolo-head上去,然后在每个层上单独计算正负样本和忽略样本。不存在某个GT会分配到多个层预测的可能性,而是一定是某一层负责的.
yolov5相比于上一代增加了正样本的anchor数目,这样可以更加显著加速收敛.
1.不同于yolov3和v4,其gt bbox可以跨层预测即有些bbox在多个预测层都算正样本
2.不同于yolov3和v4,其gt bbox的匹配数范围从3-9个,明显增加了很多正样本(3是因为多引入了两个邻居)
1.通过对不同类别赋给不同的权重,比如给负样本0.1权重,从而控制较多负样本问题。
2.faster rcnn有两次选择正负样本的操作,一次RPN阶段,一次 RCNN阶段
RPN将20000多个候选的anchor选出256个anchor进行分类和回归位置。选择过程如下: 对于每一个ground truth bounding box(gt_bbox),选择和它重叠度(IoU)最高的一个anchor作为正样本。对于剩下的anchor,从中选择和任意一个gt_bbox重叠度超过0.7的anchor,作为正样本,正样本的数目不超过128个。 随机选择和gt_bbox重叠度小于0.3的anchor作为负样本。负样本和正样本的总数为256。
2000个候选框不是都拿去训练,而是利用选择128个用以训练。选择过程如下:候选框和gt_bboxes 的IoU > 0.5的,选择一些作为正样本(比如32个)。选择 RoIs和gt_bboxes的IoU小于等于0(或者0.1)的选择一些(比如 128-32=96个)作为负样本。