前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Object Detection-深入理解YOLO v1

Object Detection-深入理解YOLO v1

作者头像
YoungTimes
发布2022-04-28 19:47:07
5320
发布2022-04-28 19:47:07
举报

论文链接

You Only Look Once: Unified, Real-Time Object Detection

https://arxiv.org/abs/1506.02640

1.Object Detection

Object Detection目标是,输入一张图片,输出图片中包含的所有Object以及每个Object的位置(包围该Object的Bounding Box)。

在YOLO之前,RCNN系列(RCNN/Fast RCNN/Faster RCNN)都是采用两阶段的处理模式:先提出候选区域(Region Proposals),再识别候选区中的Object。YOLO创造性的将候选区(Region Proposals)选择和Object检测两个阶段合二为一,看一眼图片就可以知道Object是什么以及它们的位置。

2.YOLO的实现方案

YOLO中没有了直接提取候选区(Region Proposal)的步骤,取而代之的是将图片划分成S x S 个网格(Grid Cell),论文中S = 7;每个Grid Cell负责预测Object中心点落在该Cell内的Object;每个Cell生成B个Bounding Box,论文中B=2。

图片来源【1】

没有候选区(Region Proposal)之后,YOLO的结构非常直接,就是单纯的卷积、池化最后加了两层全连接。

粗略的说,YOLO的整个结构就是将大小为448 x 448 x 3的输入图片经过神经网络的变换得到一个大小为7 x 7 x 30的输出张量(Tensor),7 x 7是输入图片的划分的Grid Cell数量。30维向量包含的信息如下:

图片来源【1】

20个对象分类的概率

P(C_1 | \text{Object}), P(C_2 | \text{Object}), ..., P(C_{20} | \text{Object})

,之所以是20是由于YOLO V1支持识别20种不同的对象(人、鸟、猫、汽车、椅子等)。

2个Bounding Box的位置

YOLO中使用(x, y, w, h)来表示一个Bounding Box,(x, y)表示BBox的中心,(w, h)表示BBox的宽高。

注意,(x,y)是相对于Grid Cell左上角坐标的偏移量,并使用Grid Cell的宽高做归一化处理;(w,h)是相对于整个图片的宽和高的比例;这样(x,y,w,h)的数值都在[0,1]范围内。如下图:

图片来源【1】

2个bounding box的置信度

Bounding Box的置信度 = Bounding Box中存在Object的概率 * Bounding Box与Object实际Bounding Box的IOU。

\text{Confidence} = \text{Pr}(\text{Object}) * \text{IOU}_{\text{pred}}^{\text{truth}}

IOU是在训练阶段计算的,因为在Inference阶段并不知道真实对象在哪里,只能完全依赖于网络的输出,这时已经不需要也无法计算IOU了。

Bounding Box的置信度Confidence表示它是否包含对象且位置准确的程度。置信度高表示这里存在一个对象且位置比较准确;置信度低表示可能没有对象或者即便有对象也存在较大的位置偏差。

3. 损失函数

损失函数的设计是Yolo 算法的比较核心的部分。

图片来源【1】

公式中:

图片来源【1】

4. YOLO训练

YOLO先把前20层卷积网络层+平均池化层(Average-pooling Layer)+全连接层(Fully Connected Layer)在ImageNet数据集上进行预训练。

YOLO的最后一层采用线性激活函数(Linear Activation Function),其它层都是Leaky ReLU:

\phi(x)= \begin{cases} x, \text{x >0} \\ 0.1x, \text{otherwise} \end{cases}

除此之外,训练中还采用了Drop Out和数据增强(Data Augmentation)来防止过拟合。更多细节请参考原论文。

5.YOLO预测(inference)

训练好的YOLO网络,输入一张图片,输出一个7x7x30的张量(tensor)来表示图片中所有网格(Grid Cell)包含Object的概率以及该Object可能的2个Bounding Box位置和其置信度。为了从中提取出最有可能的Object和Bounding Box,YOLO采用NMS(Non-maximal suppression,非极大值抑制)算法。

NMS(非极大值抑制)

NMS算法的核心思想是:选择得分(Score)最高的作为输出,与该输出重叠比较大的Inference Objects去掉,不断重复这一过程直到所有Inference Objects处理完。

它的步骤如下:

1)根据置信度得分进行排序;YOLO的Score计算方法如下:

\text{Score}_{ij} = P(C_i | \text{Object}) * \text{Confidence}_j

设置一个阈值,过滤掉Score低于阈值的候选对象;

2)遍历每一类Object,找到该类内Score最大的Object及其Bounding Box,并添加到输出列表。

3)计算其它Object的Bounding Box与Score最大的Object的Bounding Box的IOU,根据预先设置的IOU阈值,所有高于该阈值(重叠度较高)的候选对象排除掉。

4)重复上述步骤,直至所有分类的Object都处理完毕。

最后输出列表中的就是YOLO检测出的Objects。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 半杯茶的小酒杯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文链接
  • 1.Object Detection
  • 2.YOLO的实现方案
  • 3. 损失函数
  • 4. YOLO训练
  • 5.YOLO预测(inference)
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档