YOLOv3:An Incremental Improvement阅读笔记 2020-05-15 字数统计: 1.3k字 | 阅读时长: 5分 文章导航 × 文章目录 1. 摘要2. 论文2.1. 1,边界框预测:使用维度聚类的方式生成锚框。2.1.1. anchor box 机制:2.1.2. k-means聚类:2.1.3. 先验框的由来:2.1.4. 偏移量:2.2. 类别预测:训练过程中,使用二值交叉熵损失函数。2.2.1. (1)置信度定义:2.2.2. 输出使用sigmoid函数:2.2.3. 类别预测:2.3. 多尺度预测:预测三种不同尺度的框。2.4. 特征提取器:darknet53网络:3. 训练结果对比4. 在kitti数据集上测试 论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf代码地址:https://pjreddie.com/darknet/yolo/ (论文中附有) 摘要(1)YOLOv3在输入为320×320的图片上的检测速度是22 ms,mAP为28.2。这与SSD一样精确,但速度提高了三倍。(2)在 Titan X上,YOLOv3在51ms内达到57.9 AP50(检测器的IOU阈值大于50),与 RetinaNet在198 ms内的57.5 AP50相比,表现相当,但速度提高了3.8倍。 论文1,边界框预测:使用维度聚类的方式生成锚框。训练阶段: 每个边界框预测4个坐标tx,ty,tw,th。假设单元格距离图像的左上角偏移了(cx,cy),先验边界框(bounding box prior)具有宽度pw和高度ph,则预测的bbox归一化后应为:1,网络为每个边界框预测4个坐标tx,ty,tw,th。2,假设单元格距离图像的左上角偏移了(cx,cy)(网格为单位)3,先验边界框(bounding box prior)具有宽度pw和高度ph。4,bx,by,bh,bw,为归一化后的边框预测值。5,xywh都归一化了,它们的值都是在0~1之间。6,├ σ(t_x )使用logistic函数使其归一化在0~1之间,使得GT落在cell中。”P(t)=”1/(1+e^(−t) ) anchor boxes用来预测bounding box,faster rcnn中用128128,256256,512*512,分三个尺度变换1:1,1:2,2:1,共计9个anchor来预测框,每个anchor预测2000个框左右,使得检出率提高很多。 anchor box 机制:用来生成bbox,共计9个anchor来预测框,使得检出率提高很多。Anchor box完全可以称之为边界框bbox。 k-means聚类:选择K个点作为初始质心。 repeat将每个点指派到最近的质心,形成K个簇重新计算每个簇的质心 until 簇不发生变化或达到最大迭代次数 先验框的由来:利用 k-means 聚类方法在训练集上的bbox上来寻找先验框。pw、 ph为与groundtruth重合度最大的anchor框的宽和高。 偏移量:假设用width表示图片的宽,x表示bbox的横坐标(没有归一化的)。那么width/S则表示每个cell在x轴方向占了多少个pixel,再把x除以(Width/S),假设结果为4.2,则表示新的x’相对于cell 4的左上角偏移了0.2(相当于偏移了0.2个网格)。综上:k-means训练集上聚类得到9个尺寸的A.Box -> 每个网格生成9个尺寸的A.Box -> 其中每个网格的9个框中与groundtruth重合度最大的anchor框作为先验框。 类别预测:训练过程中,使用二值交叉熵损失函数。(1)置信度定义:训练阶段来说,我们要给每个bounding box的confidence打label,那么这个label怎么算? 很简单,如果一个物体中心没有落在cell之内,则bounding box的 Pr(O”bj”ect)=0,IOU就不必算,因为 Pr(O”bj”ect)∗IOU_pred^truth肯定等于0,此时confidence的label就直接设置为0;如果物体的中心落在了这个cell之内,这个时候 Pr(O”bj”ect)=1,因此confidence变成了1∗IOU_pred^truth。预测阶段,网络只输出一个confidence值,它实际上隐含地包含了IOU_pred^truth。 输出使用sigmoid函数:“P(t)=”1/(1+e^(−t) )输出 x,y,w,h conf class1,class2,class3,class4,class5y_true […..] 0.9 [0,0,1,0,0]y_pred […..] 0.8 [0.1,0.1,0.8,0.1,0.1]分数在哪类最高即属于哪一类,sigmoid是输出。在每一类中采NMS去除多余的框以及留下同一类中不同对象的框。 类别预测:物体类别是一个条件概率,├ Pr(Class_i “|” O”b” ject)。训练阶段,若物体中心(ground truth坐标计算)落在了这个cell,那么我们给bbox打上这个物体的类别label,并设置概率├ Pr(Class_i “|” O”b” ject)为1,这个概率是存在一个条件的,这个条件就是cell存在物体;但在测试阶段,作者还把这个概率乘上了confidence,因为cell中若不含物体,则confidence为0,得确保cell中有物体(即confidence大),算类别概率才有意义。此时公式为:├ Pr(Class_i “|” O”b” ject)*( Pr(O”bj”ect)∗IOU_pred^trutℎ)。若有两个概率分布p(x)和q(x),通过q来表示p的交叉熵(损失)为:p作为正确结果(如[0,0,0,1,0,0]),把q作为预测结果(如[0.1,0.1,0.4,0.1,0.2,0.1]),就可以得到两个概率分布的交叉熵了,交叉熵值越低,表示两个概率分布越靠近。 交叉熵损失函数:对于样本(x,y)来讲,y是真实的标签,预测标签为所有标签的集合,我们假设有k个标签值,第i个样本预测为第K个标签的概率为pi,k,一共有N个样本: 多尺度预测:预测三种不同尺度的框。 特征提取器:darknet53网络:使用连续的3×3和1×1卷积层,以及降低计算量的resnet。 训练结果对比我们在AP50指标上绘制准确度和速度时,我们看到YOLOv3与其他检测系统相比具有显着的优势。也就是说,速度越来越快。 在kitti数据集上测试 赏 谢谢你请我吃糖果 支付宝 微信 YOLOv3 目标检测 one-stage 扫一扫,分享到微信