YOLO—You Only Look Once学习笔记1

YOLOV1学习笔记

最近项目需要认真学习yolo神经网络,因此将学习过程记录下来。
参考博客1:https://blog.csdn.net/shuiyixin/article/details/82533849
参考博客2:https://blog.csdn.net/c20081052/article/details/80236015
参考博客3:https://blog.csdn.net/qq_38232598/article/details/88695454


前言

YOLOV1-V4的论文链接
1.YOLOV1:https://arxiv.org/abs/1506.02640
2.YOLOV2:https://arxiv.org/abs/1612.08242
3.YOLOV3:https://arxiv.org/abs/1804.02767
4.YOLOV4:https://arxiv.org/abs/2004.10934
5.YOLO官方Github地址:https://github.com/AlexeyAB/darknet
6.YOLO官网:https://pjreddie.com/


YOLO

一、YOLO网络
  • 可以在一次评估中直接从完整图像中预测边界框和类概率, 由于整个检测管道是单个网络,因此可以直接在检测性能上进行端到端优化。
  • 基本YOLO模型以每秒45帧的速度实时处理图像, 较小的网络Fast YOLO每秒可处理惊人的155帧,同时仍可实现其他实时检测器的mAP两倍的性能。
  • 传统的RCNN网络更像一个分类器,先在图像中生成潜在的边界框,然后在这些建议的框上运行分类器;分类后,使用后处理来精简边界框,消除重复检测并根据场景中的其他对象对这些框进行重新评分。
  • YOLO将对象检测重新构造为一个回归问题,直接从图像像素到边界框坐标和类概率:
二、YOLO网络介绍

1)YOLO网络的检测步骤:

  • 将输入图像Resize到448×448;
  • 在整个图像上运行单个卷积网络;
  • 通过模型的置信度将检测结果阈值化。

在这里插入图片描述
2)YOLO网络的特点:

  • 优点:非常快;YOLO 一次“看”一整张图像,所以它可以将物体的contextua(l整体)的 class information(类别信息) 以及 appearance information(外观信息) 进行 encoding(编码),因此背景错误非常少;可以在自然图像上进行训练并在艺术品上进行测试。
  • 缺点:YOLO在准确性方面仍落后于最新的检测系统。
三、YOLO网络检测过程
3.1 YOLO网络检测过程

在这里插入图片描述

  • 将输入图像划分为S S网格,如果对象的中心落入网格单元,则该网格单元负责检测该对象;
  • 每一个 grid cell 预测 B 个 bounding boxes,以及这些 bounding boxes 的得分:score。如果cell中存在object,第一项为1,否则为0.第二项是预测的bounding box和实际的groundtruth之间的IoU值(“预测的边框” 和 “真实的边框” 的交集和并集的比值)

在这里插入图片描述

  • 每个边框由五个预测值组成:x,y,w,h,confidence。坐标(x,y) 代表了 bounding box 的中心与 grid cell 边界的相对值。width、height 则是相对于整幅图像的预测值(边框的宽和高),confidence 就是 IoU 值。
  • cell负责预测与之匹配的类别,bounding box负责位置精校,也就是预测位置。
  • 每一个栅格还要预测C个 conditional class probability(条件类别概率),即需要检测的物体的类别
  • 在测试阶段,将每个栅格的conditional class probabilities与每个 bounding box的 confidence相乘,既包含了bounding box中预测的class的 probability信息,也反映了bounding box是否含有Object和bounding box坐标的准确度
  • 得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果

在这里插入图片描述

  • 论文采用了S=7,即将一张图像分为7×7=49个栅格,每一个栅格预测B=2个boxes(每个box有 x,y,w,h,confidence,5个预测值),同时C=20(PASCAL数据集中有20个类别)。因此,最后的prediction是7×7×30 { 即S * S * ( B * 5 + C) }的Tensor(张量)
3.2相关知识准备
  • 卷积操作:

  • 一个卷积核得到的特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,从而可以学习32种特征

  • 单个卷积核/过滤器(filters)的3D卷积运算:

  • 多个卷积核/过滤器(filters)的3D卷积运算:

  • 1*1卷积核的作用:输入是6×6×32的图片,经过1×1×32的卷积核进行卷积运算后,得到的输出图片的维度是卷积过程中使用的卷积核个数

  • Max Pooling操作(整个图片被不重叠的分割成若干个同样大小的小块,每个小块内只取最大的数字,再舍弃其他节点后,保持原有的平面结构得出 output)

  • Max Pooling作用:(1)invariance(不变性),这种不变性包括translation(平移)不变性,rotation(旋转)不变性,scale(尺度)不变性;(2)降低feature map的尺寸,减少需要训练的参数

  • 全连接操作:把卷积输出的二维特征图(feature map)转化成一个一维向量

  • 用100个20x12x12的卷积核卷积操作,对于输入的每一张特征图,都使用一个和图像大小一样的核卷积进行卷积运算,这样整幅图就变成了一个数了,如果厚度是20就是那20个核卷积完了之后相加求和。这样就能把一张图高度浓缩成一个数了

  • 理解卷积层和全连接层:假设你是一只小蚂蚁,你的任务是找小面包。你的视野还比较窄,只能看到很小一片区域。当你找到一片小面包之后,你不知道你找到的是不是全部的小面包,所以你们全部的蚂蚁开了个会,把所有的小面包都拿出来分享了。全连接层就是这个蚂蚁大会。

3.3 YOLO网络设计

在这里插入图片描述

  • 网络结构借鉴了 GoogLeNet,检测网络包括24个卷积层和2个全连接层,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。

  • YOLO为了更好的性能,它增加额外的4层卷积层(conv)和2个全连接层

  • YOLO输出结果:每个grid cell有30维,其中8维是两个预测回归bboxes的坐标信息,2维是bboxes的confidences,还有20维是与类别相关的信息。

  • 1)每个bounding box的(x,y,w,h,confidence)五个值

  • 2)每个grid cell对应的两个bounding box的5个值在tensor中体现出来,组成前十维

  • 3)每个值表示此object在此bbox中的时候属于class_i的概率分数

  • 4)将20维的条件概率和每个bbox的confidence预测相乘,得到7×7×2=98个scores,依次计算最终得到98个附带有score的tensors。

  • 5)对于每个类别进行NMS处理(非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索)。最后,针对每个bbox的20×1的张量,对20种class的预测score进行判断。

  • 6)得到最终的框图:

3.4YOLO网络训练

3.4.1激活函数

  • 最终层激活函数:线性激活函数
  • 其他层激活函数:
    在这里插入图片描述

3.4.2训练过程

  • 在 ImageNet 1000-class competition dataset上预训练一个分类网络,这个网络是Figure3中的前20个卷机网络+average-pooling layer(平均池化层)+ fully connected layer(全连接层) (此时网络输入是224*224)
  • 在预训练的基础上链接层,随机初始化权重。检测要求细粒度的视觉信息,所以把网络输入把224224变成448448

3.4.3损失函数

  • 损失函数的说明如下:
  • 哪个bbox对ground-truth box负责就看哪个bbox的ground-truth box和bbox的IoU最大
  • 相关说明:
    1.λcoord:8维的localization error和20维的classification error同样重要显然是不合理的,应该更重视8维的坐标预测,所以作者给这个损失前加了个权重。
    2.对于不存在object的bbox的confidence loss,赋予了更小的损失权重,记为λnoobj.
    3.对于存在object的bbox的confidence loss和类别的loss,权重取常数1.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值