YOLO算法简单理解。
YOLO算法是将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。
在这里,我们并不先给出YOLO算法的逻辑结构图,我们先权且将其当作一个普通的神经网络即可。先从输出的角度开始逐步理解整个网络的思想和结构。
YOLO算法的输入是一张图片,在该算法执行过程中首先会将一张输入图片划分为S*S个grid cell。如下图所示
每个grid cell就负责检测“落入”该grid cell的物体。对于“落入”的定义是这样的,如果一个物体的中心位置的坐标在某个grid cell里面,那么就称该物体落入了这个grid cell里面,这个grid cell就要负责把这个物体检测出来。如果一个物体较大,其他的grid cell也包含了这个物体的一部分,但是并不包含这个物体的中心位置坐标,这就不算该物体落入了该grid cell。
那么这个物体的中心位置我们是怎么知道的呢?请注意,YOLO算法是属于监督式学习算法,我们在训练算法之前这些是要对这些输入图片进行标注的,图像中物体的类别以及位置信息(包含物体的方框的位置数据,就是x, y, w, h)我们都要进行正确标注,也就是我们的ground truth。如下图
在YOLO算法中将一张输入图片划分成了S*S个grid cell,每个grid cell都负责检测出中心落在它内部的物体。对于较大的物体,一个物体往往需要横跨几个grid cell。最理想情况下,预测时该grid cell能够直接预测生成一个与ground truth box完全重合的或者IOU接近于1的predicted box。但是算法并不是总能生成这样理想的predicted box。在算法中就设置生成为生成B个bounding box,并且为每个bounding box生成一个confidence scores。上篇博客中我们提到,定位一个物体需要四个参数x, y, w, h,这里同样使用这样的四个参数来表示每个predicted bounding box。再加上confidence scores,每个predicted box都要得到5个预测值。其中(x, y)代表了predicted box的中心位置相对于该grid cell边界的坐标,也就是偏移值,(w, h)代表了predicted box相对于整个输入图片的宽度和高度。confidence scores代表了predicted box 与ground truth box的交并比,表明了这个模型对于预测这个predicted box中包含物体的概率。在论文中定义 confidence scores为
confidence scores = Pr(Obj) * IOUtruthpred
注:
1.如果在该grid cell中并没有物体落入,那么Pr(Obj)就为0,如果有物体落入,就为1,此时cofidence scores就是predicted box 与ground truth box的交并比;
2.在上式中pred是IOU的下标,由于网页编辑器问题,暂且这么写
如下图
同时,每个grid cell也会预测输出C个条件概率值,Pr(Classi|Object),这些概率值是在检测到物体的条件下的概率值,与我们的Bounding box数量无关。如下图
在测试时间,我们将每个grid cell的条件概率值与每个predicted box的confidence prediction相乘,如下式
通过这个式子,我们就得到了每个predicted box关于特定类别的物体的confidence scores,这个分数就表明了出现在这个box里面的该类别物体的概率值以及这个box预测这个物体的优良与否。
综上所述,由于把输入图片分成了
原文:https://www.cnblogs.com/hxhlrq/p/13765153.html