赞
踩
近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。而另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个CNN网络直接预测不同目标的类别与位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。这可以在下图中看到。本文介绍的是Yolo算法,其全称是You Only Look Once: Unified, Real-Time Object Detection,基本上把Yolo算法的特点概括全了:You Only Look Once说的是只需要一次CNN运算,Unified指的是这是一个统一的框架,提供end-to-end的预测,而Real-Time体现是Yolo算法速度快。
YOLO中一个网络搞定一切,由GoogleNet + 4个卷积 + 2个全连接层组成。
- 原始图片resize到448x448,经过前面卷积网络之后,将图片输出成了一个7x7x30的结构
- 默认情况下分割成7x7的单元格,这里用3x3做演示
- 每一个单元格去预测两个bbox框
- 进行NMS筛选,筛选概率及IoU,最终得到几个比较好的候选框
每一个单元格需要预测出两个候选框
怎样理解 7x7x30 ?
- 7x7=49个像素值,理解成49个单元格
单元格需要做的两件事:
- 每个单元格负责预测一个物体的类别,并且直接预测物体的概率值
- 每个单元格预测两个(默认)bbox位置,两个bbox有两个置信度(confidence)
- 一个bbox:xmin、ymin、xmax、ymax、confidence
- 两个bbox:4 + 1 + 4 + 1 = 10(4个位置信息,1个置信度)
- 30:(4 + 1 + 4 + 1) + 20个类别信息(预测概率结果)
一个网格会预测两个bbox,在训练是我们时我们只有一个bbox专门负责预测概率(一个Object,一个bbox)
- 20个类别的概率代表这个网络当中的一个bbox
- 每个bounding box都对应一个confidence score
每个网格都会找到自己对应的物体类别:
YOLO框的坐标是由网络输出,faster rcnn人为设定
预测框对应的目标值标记:
- confidence:格子内的目标
- 20类概率:标记每个单元个的目标类别
怎样理解这个过程? 同样以分类那种形式来对应,假设以一个单元格的预测值为结果,如下图:
图片当中很多物体都是比较靠近的,如果多个物体中心点落到一个网格中,之会预测一个物体,这样就会出现预测数下降
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。