百度飞桨PaddlePaddle-21天零基础实践深度学习-目标检测
百度飞桨PaddlePaddle-21天零基础实践深度学习-目标检测YOLOv3
概念
边界框
<1> ,即。其中是矩形框左上角的坐标,是矩形框右下角的坐标。
<2> ,即,其中是矩形框中心点的坐标,是矩形框的宽度,是矩形框的高度。
训练数据集的标签里会给出目标物体真实边界框所对应的,被称为真实框。
模型会对目标物体可能出现的位置进行预测,由模型预测出的边界框则称为预测框。
锚框
锚框——假象框——候选区域
先设定好锚框的大小和形状,再以图像上某一个点为中心画出矩形框。
锚框 微调 变成预测框
在训练过程中,模型通过学习不断的调整参数,最终能学会如何判别出锚框所代表的候选区域是否包含物体,如果包含物体的话,物体属于哪个类别,以及物体边界框相对于锚框位置需要调整的幅度。
交并比(衡量指标)
数据读取和预处理
批量数据读取与加速——多线程读取数据
预处理主要作用是扩大训练数据集,拥有更多的图像特征,抑制过拟合,提升模型的泛化能力。
方法:
随机改变亮暗、对比度、饱和度和颜色等 随机填充 随机裁剪 随机缩放 随机翻转 随机打乱真实框排列顺序 Mixup…
模型YOLOv3
需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法。
YOLO-V3使用单个网络结构,在产生候选区域的同时即可预测出物体类别和位置,使得YOLO-V3算法具有更快的速度,能到达实时响应的水平。
YOLO-V3基本思想
<1> 产生候选区域——生成锚框——生成预测框——对候选区域标注
<2> 卷积神经网络提取特征——根据输出特征图计算预测框位置和类别——建立输出特征图与预测框之间的关联
<3> 建立损失函数
格式:
左上角的位置坐标,预测框的中心坐标:
即Sigmoid函数。
锚框的大小在模型中可以当作是超参数。
锚框尺寸,生成预测框的大小:
预测框能够跟真实框重合——求解的值
将预测框坐标中的 设置为真实框的位置,即可求解出的数值。
对候选区域进行标注
-
锚框是否包含物体,这可以看成是一个二分类问题,使用标签objectness来表示。当锚框包含了物体时,objectness=1,表示预测框属于正类;当锚框不包含物体时,设置objectness=0,表示锚框属于负类。
-
如果锚框包含了物体,那么它对应的预测框的中心位置和大小应该是?,应该是?,使用location标签。
3.如果锚框包含了物体,那么具体类别是?,这里使用变量label来表示其所属类别的标签。
卷积神经网络提取特征
YOLO-V3算法使用的骨干网络是Darknet53。在检测任务中,保留从输入到C0部分的网络结构,作为检测模型的基础网络结构,也称为骨干网络。YOLO-V3模型会在骨干网络的基础上,再添加检测相关的网络模块。
根据输出特征图计算预测框位置和类别
-
预测框是否包含物体。的概率是?,可以用网络输出一个实数,可以用表示objectness为正的概率
-
预测物体位置和形状。物体位置和形状, 可以用网络输出4个实数来表示
-
预测物体类别。预测图像中物体的具体类别。总的类别数为C,需要预测物体属于每个类别的概率,可以用网络输出C个实数,对每个实数分别求Sigmoid函数,让,则可以表示出物体属于每个类别的概率。
建立输出特征图与预测框之间的关联
第行第列的小方块区域跟特征图上的像素点对应起来,解决了空间位置的对应关系。
对于一个预测框,网络需要输出个实数来表征它是否包含物体、位置和形状尺寸以及属于每个类别的概率。
每个小方块区域产生K个预测框,每个预测框需要个实数预测值,则每个像素点相对应的要有个实数。
对特征图进行多次卷积,并将最终的输出通道数设置为,即可将生成的特征图与每个预测框所需要的预测值巧妙的对应起来。
损失函数
对于每个预测框,YOLO-V3模型会建立三种类型的损失函数。
表征是否包含目标物体的损失函数,通过pred_objectness和label_objectness计算
表征物体位置的损失函数,通过pred_location和label_location计算
表征物体类别的损失函数,通过pred_classification和label_classification计算
多尺度检测
将高层级的特征图尺寸放大之后跟低层级的特征图进行融合,得到的新特征图既能包含丰富的语义信息,又具有较多的像素点,能够描述更加精细的结构。
开启端到端训练
将三个层级的特征图与对应锚框之间的标签关联起来,并建立损失函数,总的损失函数等于三个层级的损失函数相加。通过极小化损失函数,可以开启端到端的训练过程。
预测
预测过程可以分为两步:
1.通过网络输出计算出预测框位置和所属类别的得分。
2.使用非极大值抑制来消除重叠较大的预测框。
模型效果及可视化
1.创建数据读取器以读取单张图片的数据
2.定义绘制预测框的画图函数
3.读取指定的图片,输入网络并计算出预测框和得分,然后使用多分类非极大值抑制消除冗余的框。将最终结果可视化。
优化
防止梯度消失和梯度爆炸
更换**函数
ResNet block
batch normalization
梯度截断 设置阈值
预训练+微调
防止过拟合
数据增强
提前停止
权重正则化 L1 L2…
dropout
参数调优
学习率
训练轮数
优化函数
在线难例挖掘
后处理
模型融合
测试结果融合
根据实际任务改进