目标检测算法——YOLOV1解析

前言

以前打算分析caffe源码的,可是因为工做较忙就耽误了。可是但愿从此仍是能坚持写博客,对知识进行总结梳理,锻炼本身的表达能力。算法

最近一段时间在研究yolo算法,发现这个算法很是的优美,而且做者更新到了第三版。经过对该算法的学习,能够学习到如何进行算法的优化与实现。可是正如吴恩达在深度学习课程里面所说的,yolo的论文很是的难读,做者写文章的时候着重在写模型的测试部分,而对于模型的训练讲解的很是的少。这让一开始阅读yolo的论文时,有种不知因此然的感受。还好yolo的做者提供的源代码,使得不懂的地方能够经过阅读来进行增强理解。在这里很是佩服yolo的做者,不只科研能力强,工程能力也很是的棒,竟然本身用C语言撸了一个深度学习框架,佩服。是我学习的榜样!!网络

好了,废话很少说了,开始咱们的正题吧。框架

算法原理

对于一个新的深度学习算法,我常常从输入输出着手。咱们来看一下YOLO的输入出是什么?
首先yolo的输入是一张448x448大小的图片,而后通过网络以后输出为30个值。那么这30个值是什么呢?咱们来进行一一的分析。ide

  1. 前面20个为物体的类别数。为何是20呢?由于在论文中yolo是要检测20种物体,而后进行one-hot编码,因此维度就是20;
  2. 第21-22个为两个confidence。这个词咱们有点陌生。中文叫作置性度,也就是物体框里面包含物体的可能性。
  3. 第23-30个为两组x,y,w,h值,即物体框的中心坐标及宽高,共8个值。

知道了网络的输出数据,咱们就能够知道训练数据的标签长怎么样了。训练数据的标签一定也有:类别数、confidence和(xywh)组成。那图片的标签具体是怎么打的呢?咱们接着分析。学习

  1. 首先yolo将一张图片分红SxS大小,在论文中为7x7,以下图所示

clipboard.png

在上面的图中,第一个网络因为没有咱们要识别的物体,因此标签的类别数、confidence和xywh都为0,接着第二个网格也是如此。。。直到红色框的网格处,咱们发现有一只狗,这是标签为狗的类别数,confidence为1,xywh为包含狗的物体框的中心坐标和宽高。那红色框的上面那个框的标签数据是什么呢?它也包含了狗啊。在yolo中只用物体框中心点所在的网格进行预测,所以红色框周围的网格的标签数据也全都是0。
通过这样计算,咱们能够获得,一张图片最终的标签数为[20(类别)+2(confidence)+8(xywh)]xSxS测试

  1. 待续。。。。。
相关文章
相关标签/搜索