【CV-目标检测】

《目标检测》

一、网络结构

在这里插入图片描述

1.FPN

FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递

2.PAN

PAN就是针对这一点,在FPN的后面添加一个自底向上的金字塔,对FPN补充,将低层的强定位特征传递上去,又被称之为“双塔战术”

3.SPP

SPP的核心在于使用多个不同尺寸池化核(如44、22、1*1窗口)对上层(卷积层)获得的feature maps 进行采样(池化,文中使用最大池化),将分别得到的结果进行合并就会得到固定长度的输出。总结一句话:目的就是任意大小的特征图都能够转换成固定大小的特征向量

4.输出头

每个点预测b个box ,每个box由:4个位置坐标,1个置信度得分,c个类别组成每个尺度下的输出头:如 尺度1313,则输出维度是:1313*(4+1+c)*b

5.csp1-x | csp2-x区别

二、神经网络相关知识点

1.卷积

1.1定义
1.2感受野计算
1.3计算量`参数量

2.激活函数

2.1 yolo/mobilenet包含:

sigmoid、relu、leakrelu、relu6、mish、swish、hard-swish

2.2 作用:

激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题

2.3 具有性质:

1.非饱和; 2.可导; 3.其它

3.BN

3.1 步骤
3.2 作用:

归一化

3.3 平移与缩放因子做什么用:

使得不同层之间尽量数据同分布

3.4 是否可以与卷积层融合:

可以

4.损失函数

4.1 定位损失

4.1.1 yolov3之前: 误差平方和
4.1.2 yolov3之后: ciou loss/各种iou区别

4.2 置信度损失

4.2.1 yolov3之前: 误差平方和损失
4.2.2 yolov4之后: 二分交叉熵损失
4.2.3 注意: 统计有了目标的损失和背景损失

4.3 分类损失

4.3.1 yolov3: 二分交叉熵损失

4.3.2 yolov5: 二分交叉熵损失
4.3.3 yolov2: 交叉熵损失
4.3.4 yolov1: 误差平方和
4.3.5 注意:
1.由交叉熵到二分交叉熵提出的原因:解决目标多标签问题;
2.交叉熵损失均可以用focal loss替换.

5.调过哪些超参数:学习率、动量、梯度优化器、早停

6. add/cat

7.正则化

  1. 意义:防止过拟合
  2. L1正则与L2正则的区别:
    从可视化角度来理解L1和L2正则化.假定我们的线性回归模型只有二维特征,确切的说,只有两个分量w1、w2.我们将其作为两个坐标轴.绘制平方误差项与正则项的等值线.如上图所示,其中,右上角为平方误差项的等值线,是在(w1,w2)空间中正则项取值相同的点的连线,如果没有正则项,那么最优解应该是平方误差项等值线的中心,即平方误差最小的点. 有了正则项,最优解是平方误差项和正则项的折中,即图中的相交处,可以看出,L1正则的交点在坐标轴上,那w1或则w2为0,而L2正则的交点不容易在坐标轴上.
  3. 早停 BN、dropblock验证集、标签平滑

二` yolo目标检测

1.原理:

对输出头特征图的每个点进行预测(每个点相当于原始图像一个cell的大小),预测位置、置信度、类别.

2.各种NMS

2.1 MNS:hard
2.2 soft NMS:还给一次机会,降低分值
2.3 diou-NMS

3.label平滑

3.1 目的:
标签平滑是一种正则化方法,将hard标签转换为soft标签.来降低模型对于标签的信心,可以防止模型在训练期间过于自信,降低过拟合风险

3.2 公式:

smooth-labels=(1.0 - label-smoothing) * one-hot-labels + label-smoothing / num-classes

4.yolov1——yolov5改进过程

三、数据增强

1.马赛克

2.muxup

3.其他

四、focus

1.原理:

2.模块目的:

降低计算量

五、项目部署

1.monilenet

2.shuffle net

3.yolov5 + mobilenet2轻量化设计及部署

4.环境配置

4.1 硬件配置:

4.2 软件配置:

六、项目性能指标

1. FPS

2. MAP——P/R,ap

七、项目难点问题

1.小目标解决手段

  1. 增加对小目标的输出头
  2. 样本中多加入小目标样本
  3. 对小目标进行数据增强。比如过采样
  4. 增加针对小目标的 anchor
  5. 算法级别的改进设计

2. 正负样本平衡

2.1 yolo正负样本平衡控制

2.1.1 yolov3/yolov4

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会分配到多个层预测的可能性,而是一定是某一层负责的.

2.2 yolov5

2.2.1 正样本

yolov5相比于上一代增加了正样本的anchor数目,这样可以更加显著加速收敛.

2.2.2 计算流程:
  1. 将每个boundingbox重复3份(每层有3个anchor),方便和每个位置的3个anchor单独匹配;
    2 .没有采用IOU最大的匹配方法,而是通过计算该boundingbox和当前层的anchor的宽高比,如果最大比例 > 4(设定阈值),则比例过大,则说明匹配度不高,将该bbox过滤,在当前层认为是背景;
  2. 对于剩下的bbox,计算其落在哪个网格内,同时利用四舍五入规则,找出最近的两个网格,将这三个网格都认为是负责预测该bbox的,可以发现粗略估计正样本数相比前yolo系列,至少增加了三倍。
2.2.3 yolov5的正负样本定义小细节:

1.不同于yolov3和v4,其gt bbox可以跨层预测即有些bbox在多个预测层都算正样本
2.不同于yolov3和v4,其gt bbox的匹配数范围从3-9个,明显增加了很多正样本(3是因为多引入了两个邻居)

2.2.4 focal loss:

1.通过对不同类别赋给不同的权重,比如给负样本0.1权重,从而控制较多负样本问题。
2.faster rcnn有两次选择正负样本的操作,一次RPN阶段,一次 RCNN阶段

2.2 faster rcnn正负样本平衡控制

2.2.1 RPN 正负样本选择:

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。

2.2.2 RCNN正负样本选择:

2000个候选框不是都拿去训练,而是利用选择128个用以训练。选择过程如下:候选框和gt_bboxes 的IoU > 0.5的,选择一些作为正样本(比如32个)。选择 RoIs和gt_bboxes的IoU小于等于0(或者0.1)的选择一些(比如 128-32=96个)作为负样本。

猜你喜欢

转载自blog.csdn.net/m0_62571112/article/details/124882452