赞
踩
我今天真的爆发了,把十来天看的两篇论文又复习了一遍,顺便也就都写了博客
说起YOLO,很早前就听过它的大名,快速的detection方案。但是比起YOLO,我很喜欢称之为YOU ONLY LOOK ONCE(一见倾心),这个名字真的是太有诗意了,hhh,笑出猪叫声。好啦,感觉每次说废话占去我博客十分之一的字有了,下面言归正传。
一、前言
首先要对比一下YOLO与之前常见的detection之间的最大差别,之前的方法都是把分类器稍加修改用来做detect,但是呢,在YOLO中提出了一种新的思路,使用回归来做detection,在空间上分离计算出bbox以及相应的probability,并且只需要一次计算就可以算出最后的结果。与之前诸多方法相比,YOLO最大的进步就是真正意义上实现了detection的实时效果。普通的YOLO可以达到45帧每秒的速度,而一种fast YOLO的改进型可以达到155帧每秒的速度。
总结来说,YOLO对比之前的网络有着以下的三点突破:
1、YOLO的速度很快,因为将detection作为一个regression的问题之后,它就不再需要大量的计算过程了,在不使用GPU的情况下就可以达到45帧每秒的处理速度。
2、YOLO采取整个图片作为输入,它获取的是全局的信息,因而能够做出更好的预测,不像一些基于滑窗或者是建议框的方法,YOLO能够提取到更加高级的语义信息。
3、YOLO具有更强的迁移性和适应性,当它被应用于一些陌生的场景时。
二、细说YOLO
作者在文中,将整个复杂的detection过程融合到一个简单的神经网络中去了,这是一个端到端的训练过程,在保持高速的同时保持着很高的正确率。
下面来看看YOLO是如何进行工作的,YOLO将整个输入的图片分为s*s个格子,如果一个待检测物体的中心落在这个格子中,那么这个格子就负责检测这个物体。
每个格子会预测B个bbox以及相应的confidence。这个confidence代表了模型对于该格子中包含物体的信赖度。作者使用这样一个公式来计算confidence:
前一个参数代表这个格子里面有没有物体,后一个参数带边预测出来的边框与groundtruth之间的IOU值。
每个bbox包含了五个值,包括了x,y,w,h以及confidence,其中x,y代表了预测的bbox的中心坐标,w,h代表了预测的bbox的长宽。每个格子同时还预测出一个c维的向量,代表格子中的物体属于某个具体类别的可能性。
测试的时候,我们将这个物体属于某个类别的可能性,乘上这个物体是属于这个格子的可能性,代表了格子中出现某个类别物体的可能性。(这段话给我绕的)
在本文中s=7,B=2,C=20,所以最后预测的结果是7*7*30的,这里我觉得有必要做点解释,不然后头有点难看懂,有人也许会问,在后面的网络设计中,是如何体现出来分成7*7的格子的,就是这里通过最后一层输出7*7的tensor,那这个30又是怎么出现的呢,B=2,每个格子预测两个框,一个框有五个参数,再加上二十个类别,是不是相应的深度就是三十了。再讲一下,就是每个格子最后会输出30维的特征。不管你们懂没懂,反正我是说完了。
如果看累了,可以给你们上一张原论文中的示意图,轻松一下;
(对在这个过程中,肯定是包含了非极大值抑制这样的过程,只是我就不细讲了)
三、框架还是的啃呀!
作者实现这个框架一个很大的基础就是基于卷积网络,整个网络的大体分工可以分为前面的卷积部分负责特征的提取,后面的全连接部分负责预测概率以及bbox修正值。
整个网络由24个卷积层和两个全连接层组成,网络中使用了较多1*1的卷积层和3*3的卷积层相结合的部分,主要用于减少网络中的参数量,这个可以借鉴于googlenet中的inception这一概念。
四、看结果
通过在coco数据上进行对比,我们发现在实时的detectors中,YOLO的效果最好,在非实时的detector中,YOLO与VGG16的结合也能达到最好的效果。
好啦,这一篇就结束啦,相信你读完是不是和我一样有这样的想法,what,这就是yolo,这就是一个卷积神经网络呀!没错,这就是idea的厉害之处了,希望你我也有一天可以拥有源源不断的idea。
大家好,我是钱多多,欢迎多多交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。