平凉市住房和城乡建设局网站,公寓注册公司需要什么条件,asp新闻发布网站模板,企业建网站服务商前言
从R-CNN到Fast-RCNN#xff0c;之前的目标检测工作都是分成两阶段#xff0c;先提供位置信息在进行目标分类#xff0c;精度很高但无法满足实时检测的要求。
而YoLo将目标检测看作回归问题#xff0c;输入为一张图片#xff0c;输出为S*S*(5*BC)的三维向量。该向量…
前言
从R-CNN到Fast-RCNN之前的目标检测工作都是分成两阶段先提供位置信息在进行目标分类精度很高但无法满足实时检测的要求。
而YoLo将目标检测看作回归问题输入为一张图片输出为S*S*(5*BC)的三维向量。该向量结果既包含位置信息又包含类别信息。可通过损失函数将目标检测与分类同时进行能够满足实时性要求。
接下来给出YOLOV1的网络结构图 核心思想
YOLO将目标检测问题作为回归问题。会将输入图像分为S*S的网格如果一个物体的中心点落到一个cell中那么该cell就要负责预测该物体一个格子只能预测一个物体同时会生成B个预测框。
对于每个cell: 含有B个预测边界框这些框大小尺寸等等都随便只有一个要求就是生成框的中心点必须在cell中每个框都有一个置信度分数confidence score。这些框的置信度分数反映了该模型对某个框内是否含有目标的置信度以及它对自己的预测的准确度的估量。 每个cell还预测了C类的条件概率即每个单元格只存在一组类别概率而不考虑框B的数量。 每个预测边界框包含5个元素x,y,w,h, c) 其中 x,y,w,h表示该框中心位置 c为该框的置信度 不管框B的数量多少该cell只负责预测一个目标
综上S*S个网格每个网格要预测B个bounding box还要预测C个类。网络输出为S*S*(5*BC)。 S*S个网络每个网络都有B个预测框每个框又有五个参数在加上每个网格都有C个类别
最终的预测特征由边界框位置、边框的置信度得分以及类别概率即S*S*(5*BC) 这里是 7*7*2*520 训练过程
对于一个网络模型损失函数的目的是要缩小预测值和标签之间的差距。对于YOLOV1网络来说每个cell含有5*BC个预测值我们在训练过程中该如何获得与之对应的label.
这5*BC个预测值的含义在上面已经给出S*S个网络每个网络都有B个预测框每个框又有五个参数在加上每个网格都有C个类别因此我们实际需要给出的label为每个预测框的四个坐标及其置信度和每个cell对应的类别。 每个预测框的四个坐标x, y, w, h的label为该预测框所在cell中目标物体的坐标 每个预测框的置信度c反映了该模型对某个框内是否含有目标的置信度以及它对自己的预测的准确度的估量是让网络学会自我评价候选框的功能。因此它所对应的label计算相对复杂。我们将置信度定义为。 Pr(Object)[0, 1] 如果该单元格内不存在目标即Pr(Object)0,则置信度分数为0。 如果单元格内存在目标即Pr(Object)1,我们希望置信度分数等于预测框和真实框之间的交并比IOU。 每个cell对应的类别概率C参数数量与该模型类别数量保持一致label为one-hot编码。 此外根据公式推算我们发现用置信度*某一类别的概率即得到了一个特殊的置信度分数表示每个预测框中具体某个类别的置信度 损失函数
YOLOV1的损失函数被分为坐标损失、置信度损失和网格类别损失三种 坐标损失 简要介绍下四个坐标x,y,w,h的含义x,y表示预测框中心点坐标w,h表示预测框的宽高。 表示第i个cell中的第j个预测框是否负责检测物体同一个cell中仅有IOU值最高的一个框会负责检测物体并约束其坐标
第一行表示中心点的坐标损失第二行表示宽高的损失至于为何对宽高加根号是为了消除大小框不同的影响。
举个例子以预测框的宽度为例不加根号的话若目标框宽为100预测结果为90差值为10误差为10%损失为90-100^2 100; 若目标框宽10预测结果为9差值为1误差为10%损失为9-10^21。可以看出同样的预测差值产生了同样的损失但是这个差值给大小框带来的误差差了10倍而如何利用这个损失值去修正误差的话对大的预测框来说微调10%对小的预测框来说重调100%。
而加了根号之后若目标框宽为100预测结果为90差值为10误差为10%损失为0.263若目标框宽10预测结果为9差值为1误差为10%损失为0.0263。同样的误差对于大小框之间的惩罚从原来的百倍差距降为10倍差距即提升了对小框的惩罚力度毕竟对于小的预测框一点点偏差都会产生很大的影响。模型对大小框的约束能力能存在十倍差距是否可以进一步改进 置信度损失 表示第i个cell中的第j个预测框是否负责检测物体 表示第i个cell中的第j个预测框是否不负责检测物体两个数值含义相反。 表示该预测框的真实置信度通过上述公式计算得出 表示模型预测的置信度此部分损失函数是为了让模型掌握自我评价的能力为测试过程选择最佳预测框用。
第一行表示负责检测物体的框的置信度损失第二行表示不负责检测物体的框的置信度损失 (问两种置信度之间有什么区别) 分类损失 表示第i个cell内是否存在目标物体 测试过程
测试过程就非常简单了对于一次前向传播得到的S * S *B个预测框根据各个候选框对应的置信度分数利用非极大值自抑NMS最终得到所有预测结果。
非极大值自抑制(NMS)所有预测框按照置信度分数从大到小排序。第一轮选择置信度最高的预测框作为基准然后所有其他预测框按顺序依次计算与基准预测框的IOU值提前设置一个阈值当IOU大于这个阈值则认为两个预测框高度重合预测的是同一个物体对于和基准预测框重合的则直接淘汰。一轮结束后排除上一轮的基准重新选择新的预测框作为基准重复上述步骤。 缺点 每个cell只能预测一类物体对于密度大的小物体无法预测 定位损失占比较大包括坐标损失和置信度损失致使模型更加侧重定位物体分类能力相对较弱 测试时如果同意物体的长宽比发生变化则难以泛化。 论文链接You Only Look Once: Unified, Real-Time Object Detection
源码地址mirrors / alexeyab / darknet
参考内容【YOLO系列】YOLOv1论文超详细解读翻译 学习笔记