YOLOv1

YOLOv1

转载YOLO v1深入理解

前言

YOLO(You Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。

YOLO意思是You Only Look Once,创造性的将候选区和对象识别这两个阶段合二为一。

实际上,YOLO并没有真正去掉候选区,而是采用了预定义的候选区(准确点说应该是预测区,因为并不是Faster RCNN所采用的Anchor)。也就是将图片划分为 77=49 个网格(grid),每个网格允许预测出2个边框(bounding box,包含某个对象的矩形框),总共 492=98 个bounding box。可以理解为98个候选区,它们很粗略的覆盖了图片的整个区域。

用那么粗略的候选区,最后也能得到还不错的bounding box,是因为用边框回归:将候选区bounding box调整到更接近真实的bounding box。边框回归为啥能起作用,我觉得本质上是因为 分类信息 中已经包含了 位置信息。就像你看到主子的脸和身体,就能推测出耳朵和屁股的位置。
在这里插入图片描述

一、YOLO的实现方案

1.结构

去掉候选区这个步骤以后,YOLO的结构非常简单,就是单纯的卷积、池化最后加了两层全连接。单看网络结构的话,和普通的CNN对象分类网络几乎没有本质的区别,最大的差异是最后输出层用线性函数做激活函数,因为需要预测bounding box的位置(数值型),而不仅仅是对象的概率。所以粗略来说,YOLO的整个结构就是输入图片经过神经网络的变换得到一个输出的张量,如下图所示。
输入 - 输出

因为只是一些常规的神经网络结构,所以,理解YOLO的设计的时候,重要的是理解输入和输出的映射关系.

2.输入输出映射关系

在这里插入图片描述

1)输入

输入就是原始图像,唯一的要求是缩放到448*448的大小
主要是因为YOLO的网络中,卷积层最后接了两个全连接层,全连接层是要求固定大小的向量作为输入,所以倒推回去也就要求原始图像有固定的尺寸。那么YOLO设计的尺寸就是448*448。

2)输出

输出是一个 7 * 7*30 的张量(tensor)。

2.1)7*7网格
根据YOLO的设计,输入图像被划分为 7*7 的网格(grid),输出张量中的 77 就对应着输入图像的 77 网格。或者我们把 7730 的张量看作 7*7=49个30维的向量,也就是输入图像中的每个网格对应输出一个30维的向量。比如输入图像左上角的网格对应到输出张量中左上角的向量
要注意的是,并不是说仅仅网格内的信息被映射到一个30维向量。经过神经网络对输入图像信息的提取和变换,网格周边的信息也会被识别和整理,最后编码到那个30维向量中。

2.2)30维向量
在这里插入图片描述
20个对象分类的概率:
因为YOLO支持识别20种不同的对象(人、鸟、猫、汽车、椅子等),所以这里有20个值表示该网格位置存在任一种对象的概率。可以记为 [公式] ,之所以写成条件概率,意思是如果该网格存在一个对象Object,那么它是 [公式] 的概率是 [公式] 。

2个bounding box的位置:
每个bounding box需要4个数值来表示其位置,(Center_x,Center_y,width,height),即(bounding box的中心点的x坐标,y坐标,bounding box的宽度,高度),2个bounding box共需要8个数值来表示其位置。

2个bounding box的置信度:
置信度 = 该bounding box内存在对象的概率 * IOU
用公式来表示就是函数
Pr(Object)并不管是哪个对象,它体现的是 有或没有 对象的概率

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值