1. 前言

使用YOLOv2做出来的一个demo:https://v.youku.com/v_show/id_XMzgzOTY3ODY3Mg==.html
是做一个导盲宝的产品,是看家宝+语音识别+物体识别的一个AI产品。

在我第一次看yolo的时候,看了大神的csdn的博客,看了论文,都还不是很明白,后来自己再搜集了一些资料,再仔细琢磨一下,才明白其中的原理。接下来我就用的理解写一篇笔记。尽量多用一些图来帮助大家理解。


2. YOLO网络和输入输出

YOLO的网络结构
我们先从yolo的网络结构说起。上面是YOLO的网络结构,我们看一下输入和输出:

  • 输入:448 * 448 * 3 的一张图片(大小resize为448的RGB图像)
  • 输出:7 * 7 * 30 的一个矩阵(其他博客上说的是tensor)

这个网络的输出代表着什么意思?
在这里插入图片描述
7 * 7 * 30 的7是yolo把图像分割成了7 * 7的表格:
在这里插入图片描述
这里S=7,然后对7*7=49个格子,每个格子都预测B个bounding boxes(边界框,代表着在这幅图像中一个物体的区域)。这里B=2,说明每个格子预测2个物体的边界框bounding boxes,如下如图所示。对于红色这个格子,预测出如图所示的2个黄色边界框bounding boxes。
在这里插入图片描述
对于每一个边界框bounding boxes,都有5个参数:x,y,w,h和confidence
x,y,w,h和confidence

  • x,y就是bounding box的中心坐标,但是这个坐标是相对于对应个格子的左上角的偏移值,单位是相对于格子的大小,使得x,y范围变成0到1;
  • 边界框bounding box的 w 和 h 预测值是相对于整个图片的宽与高的比例,范围也是0到1。
  • confidence,表示边界框是否含有目标。由两方面组成:

    1)公式的第一个元素表示这个边界框含有目标的可能性大小。当该边界框是背景时(即不包含目标)等于0 ,而当该边界框包含目标时等于1 ;
    2)公式的第二个元素表示这个边界框的准确度。具体参考:IOU的解释

除了上面介绍的5个参数,还有每一个格子其还要给出预测出 C 个类别概率值,表示是由该单元格负责预测的边界框bounding box属于各个类别的概率。(这里C=20,因为论文是针对PASCAL VOC数据库,有20个类别)

接下来我们总结一下:对于一幅图像,分成7*7的格子,每个格子预测2个边界框bounding box,而且每个边界框bounding box有x,y,w,h和confidence,5个参数,最后每个格子预测出属于C 个类别概率值。那么将上面这些信息全部放在一个向量里面表示就是一个30维的列向量B * 5 + C:
在这里插入图片描述
对于每一个格子都有一个1*30维的向量,一共有 7 * 7 个这样的向量,就组成了最后的输出:
在这里插入图片描述


介绍了网络的输入输出,接下来还要介绍一个概念那就是边界框bounding box的类别置信度(class-specific confidence scores):表示该边界框bounding box中目标属于各个类别的可能性大小以及边界框匹配目标的好坏


在上面对YOLO的输入输出进行介绍之后,不知道大家对YOLO网络有没有初步的一个了解了。接下来开始介绍根据这个输出来进行物体的识别。
在这里插入图片描述


参考文献与连接:

  1. https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_3017
  2. https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf
  3. https://blog.csdn.net/u014380165/article/details/72616238
  4. https://www.hhyz.me/2018/04/20/2018-04-21-YOLOv1/
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐