深度学习笔记(1)YOLO.v1

1、YOLO v1的基本思想

YOLO的核心思想就是将目标边框定位问题转化为回归问题,利用整张图作为网络输入,直接在输出层回归bounding box (边界框)的位置、bounding box的置信度以及bounding box 所属的类别。

(1)给定一个输入图像,将输入图像的大小调整为448 * 448
(2)将图像划分为7 * 7的网格
(3)对于每一个网格预测两个bounding box,每个网格包含30维的输出:每个bounding box输出一个置信度confidence score,四个坐标信息(x,y,w,h),以及每个网格所预测出的物体的类别20,有20+2 *(4+1)=30

YOLO的CNN网络将输入的图片分割成S * S的网格,每个单元格会预测 B个边界框(bounding box)、边界框的置信度(confidence score)以及C个类别概率值,最终预测值为S * S * (C+B*5)大小的张量。bbox信息(x,y,w,h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化.置信度反映是否包含物体以及包含物体情况下位置的准确性,定义为Pr(Object)×IOUtruthpred,其中Pr(Object)∈{0,1}

2、YOLO v1的网络结构

YOLOv1网络借鉴了GoogLeNet分类网络结构,包含24个卷积层和2个全连接层。不同的是,YOLO未使用inception module,而是使用1x1卷积层(此处1x1卷积层的存在是为了跨通道信息整合)+3x3卷积层简单替代。

YOLOv1网络在最后使用全连接层进行类别输出,因此全连接层的输出维度是 S×S×(B×5+C)

YOLOv1网络比VGG16快(浮点数少于VGG的1/3),准确率稍差。

缺点:

输入尺寸固定(448 * 448):由于输出层为全连接层,因此在检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。其它分辨率需要缩放成该分辨率.

Our system divides the input image into an S*S grid. If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object.

即一个object只能由一个grid来预测。占比较小的目标检测效果不好.虽然每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。

3、YOLO v1的损失函数

总的来说,就是用网络输出与样本标签的各项内容的误差平方和作为一个样本的整体误差。
损失函数中的几个项是与输出的30维向量中的内容相对应的。

① 对象分类的误差
公式第5行,注意意味着存在对象的网格才计入误差。

② bounding box的位置误差
公式第1行和第2行。
a)都带有意味着只有"负责"(IOU比较大)预测的那个bounding box的数据才会计入误差。
b)第2行宽度和高度先取了平方根,因为如果直接取差值的话,大的对象对差值的敏感度较低,小的对象对差值的敏感度较高,所以取平方根可以降低这种敏感度的差异,使得较大的对象和较小的对象在尺寸误差上有相似的权重。
c)乘以参数调节bounding box位置误差的权重(相对分类误差和置信度误差)。YOLO设置 ,即调高位置误差的权重。

③ bounding box的置信度误差
公式第3行和第4行。
a)第3行是存在对象的bounding box的置信度误差。带有意味着只有"负责"(IOU比较大)预测的那个bounding box的置信度才会计入误差。
b)第4行是不存在对象的bounding box的置信度误差。因为不存在对象的bounding box应该老老实实的说"我这里没有对象",也就是输出尽量低的置信度。如果它不恰当的输出较高的置信度,会与真正"负责"该对象预测的那个bounding box产生混淆。其实就像对象分类一样,正确的对象概率最好是1,所有其它对象的概率最好是0。
c)第4行会乘以 调节不存在对象的bounding box的置信度的权重(相对其它误差)。YOLO设置 ,即调低不存在对象的bounding box的置信度误差的权重。

4、YOLO v1的训练过程

YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练和预测。

1)预训练。使用 ImageNet 1000 类数据训练YOLO网络的前20个卷积层+1个average池化层+1个全连接层。训练图像分辨率resize到224x224。

2)用预训练得到的前20个卷积层网络参数来初始化YOLO模型前20个卷积层的网络参数,然后用 PASCAL VOC 20 类标注数据进行YOLO模型训练。检测通常需要有细密纹理的视觉信息,所以为提高图像精度,在训练检测模型时,将输入图像分辨率从224 × 224 resize到448x448。

5、YOLO v1的预测过程
对于训练好的网络模型,首先将输入图片resize到448 * 448大小,在CNN中前向传播,输出一个 7730 的张量(tensor)来表示图片中所有网格包含的对象(概率)以及该对象可能的2个位置(bounding box)及置信度。最后采用NMS算法,去掉冗余的预测框。

参考博客:
https://blog.csdn.net/qq_29893385/article/details/81177912
https://www.jianshu.com/p/cad68ca85e27

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值