赞
踩
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
目标检测:YOLO V1、YOLO V2、YOLO V3 算法
KITTI自动驾驶数据集的训练和检测过程(人、车检测案例)、KITTI数据集的TFRecord格式存储、YOLO V3/Yolo V3 Tiny 迁移学习
在正式介绍YOLO之前,我们来看一张图:
可以看出YOLO的最大特点是速度快。YOLO在精度上仍然落后于目前最先进的检测系统。虽然它可以快速识别图像中的目标,但它在定位某些物体尤其是小的物体上精度不高。论文中做了精度/时间的权衡。接着之前在概述中所介绍的,进入到真正端到端的目标检测:直接在网络中提取特征来预测物体分类和位置。
YOLO算法系列的演变过程:YOLO->YOLO9000->YOLOv2->YOLOv3
YOLO是一种新的目标检测方法。以前的目标检测方法通过重新利用分类器来执行检测。与先前的方案不同,将目标检测看作回归问题从空间上定位边界框(bounding box)并预测该框的类别概率。使用单个神经网络,在一次评估中直接从完整图像上预测边界框和类别概率。由于整个检测流程仅用一个网络,所以可以直接对检测性能进行端到端的优化。
5.7.1.1 YOLO结构
YOLO是很简单直观的图像处理系统,整个过程分为三步:
1、把图像缩放到448X448
2、在图上运行卷积网络
3、根据模型的置信度对检测结果进行阈值处理
一个网络搞定一切,网络结构如下:
论文中的网络架构受GoogleNet的启发,使用网络有24个卷积层,后面是2个全连接层。只使用1×1降维层,后面是3×3卷积层。没有使用Inception模块。
论文还使用训练了一个快速版本的YOLO,旨在推动快速目标检测的界限。快速YOLO使用具有较少卷积层(9层而不是24层)的神经网络,在这些层中使用较少的滤波器。基本版YOLO和快速YOLO网络的最终输出是7×7×30的预测张量。
5.7.1.2 统一检测过程理解
怎么理解这个过程?系统将输入图像分成S×S的网格。如果目标的中心落入某个网格单元中,那么该网格单元就负责检测该目标。
以图示的方式演示,默认7 x 7个单元格,这里用3 x 3的单元格图演示
2、每个网格单元都会预测B个边界框和这些框的置信度分数(confidence scores)
3、进行NMS筛选,筛选概率以及IoU
5.7.1.3 单元格(grid cell)
上面第二步是理解YOLO网络的关键。图片输入到YOLO之后只会得到7 x 7 x 30的输出结果。每个网格单元都会预测B个边界框和这些框的置信度分数(confidence scores),这些置信度分数反映了该模型对那个框内是否包含目标的信心,以及它对自己的预测的准确度的估量。
置信度与边界框
最后网络输出的7 x 7 x 30的特征图怎么理解?7 x 7=49个像素值,理解成49个单元格,每个单元格可以代表原图的一个方块。单元格需要做的两件事:
每个边界框包含两个目标预测,每个目标包括5个预测值:x,y,w,h和置信度
每个单元格预测两个(默认)bbox位置,两个bbox置信度(confidence) : 7 x 7 x 2=98个bbox
5.7.1.4 网格输出筛选
1、置信度比较
Pascal VOC上评估YOLO,使用最终大小S=7,预测数量B=2。
那么如何对每个位置预测的两个bbox进行筛选?
注:所以如何判断一个grid cell中是否包含object呢?如果一个图片中真实的object的ground truth的中心点坐标在一个grid cell中,那么这个grid cell就是包含这个object,也就是说这个object的预测就由该grid cell负责。
2、预测位置大小-回归offset代替直接回归坐标
每个 bbox 包含5个预测值, (声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。