YOLO算法学习指南

YOLO(you look only once)是检测PascalVOC2007/2012数据集内对象/目标的系统,能够检测出20种Pascal对象,是一个准确率较高,速度较快的实时图像检测方法。

(20种对象:人 动物 交通工具 静物)

原文翻译:http://www.jianshu.com/p/ebce76db119b

YOLO9000即YOLOv2 是新版本的YOLO,据称 mAP 和速度都提升了不少,更是可以检测9000多种物体,且不要求同样的分辨率。(mAP:mean average precision衡量识别精度,多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值)

官网;https://pjreddie.com/darknet/yolo/

yolo代码:https://github.com/gliese581gg/YOLO_tensorflow

YOLO使用工具:

  1. DarkNet:开源的神经网络框架,使用C语言和CUDA编写,安装快速简单,支持CPU/GPU计算。https://pjreddie.com/darknet/
  2. CUDA:CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA™架构编写程序。
  3. PascalVOC为图像识别和分类提供了一整套标准化数据集,2005-2012每年举行一场图像识别challenge。YOLO测试中用到VOC 2007/2012.

    VOC数据集的介绍:http://blog.csdn.net/zhangjunbob/article/details/52769381

 

YOLO相关算法:RCNN,fast/faster-RCNN,SSD http://nooverfit.com/wp/2017/07/

  1. RCNN系列:region proposal+CNN
    1. 传统方法:区域选择(设置不同尺度滑动窗口对整幅图像进行遍历,对目标位置进行定位)—>特征提取(手工设计的特征eg:HOG,SIFT)—>分类(使用训练好的分类器进行分类,常用SVM,Adaboost)
    2. R-CNN:区域选择(对测试图像利用选择搜索算法提取2000个候选区)—>缩放(将候选区缩放成227*227大小输入CNN,fc7层输出为特征)—>分类(将CNN提取到的特征输入SVM分类)—>边框回归
    3. Fast R-CNN: 在RCNN基础上改进:在最后一层卷积层上加一个ROI pooling;使用多任务损失函数;将边框回归加入CNN中训练
    4. Faster R-CNN : 使用RPN(卷积神经网络直接产生候选区域)
  2. 基于回归方法:
    1. YOLO(实时性高,但没有了region proposal机制目标不能精准定位,检测精度不是很高),v2版本应该提高了…
    2. SSD:结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,同时保证了实时性与精度。









YOLO算法

  1. Resize:成448*448,图片分割成7*7网格
  2. CNN提取特征及预测:

YOLO检测网络包括24个卷积层和2个全连接层,其中,卷积层用来提取图像特征,全连接层用来预测图像位置(7*7*2=98个bounding box的坐标x,y,w,h,confidence)和类别概率值(7*7=49个网格所属20个物体的概率)。

  3.过滤bbox(通过nms)

图解YOLO:https://zhuanlan.zhihu.com/p/24916786?refer=xiaoleimlnote

问题:

  1. YOLO基于VOC给定的20种分类,如何实现自己的目标识别呢?
  2. 若每个格子中包含多个物体时仅能检测出一个?

猜你喜欢

转载自blog.csdn.net/qq_32274259/article/details/79861725