AI学习笔记——精准识别You Only Look Once(YOLO)

in #cn-stem5 years ago (edited)

上一篇文章我们讲到,通过卷积神经网络(CNN)可以轻松实现图片的识别与分类。所以,只要有足够多的,已标记的样本,我们就可以用这些样本将神经网络训练成分类器,用来识别新的图片。MINST手写数字的样本,可以训练手写数字分类器;不同品种猫的样本,可以训练出猫的分类器;人脸的样本可以训练出人脸分类器...

对于人类来说,给我们一张图片,或者我们瞄一眼一个画面,画面或图片中的每个物品和物品的相应位置就能立即被我们识别。然而,上面提到分类器似乎只能识别单一物品,即便能识别多个物品,也无法指出物品在图片中的位置。

这篇文章我们就来聊聊YOLO[1]这个神奇的模型,它可以像人一样,一眼就能识别图片中的物体以及物体的位置。更加神奇的是,对于动态视频甚至摄像头实时采集的画面,YOLO都能精准识别。

image source from github with GNU General Public License v3.0

1. 目标识别简史

2001年左右,Viola-Jones的人脸识别算法[2]是当时准确度较高的目标识别算法,这个算法需要先标记出人脸的特征值,比如眼睛鼻子间的距离等,然后再送给机器使用支撑向量(SVM)的方法进行训练。

2005年,N. Dalal[3]将人脸的图片先进行灰度分析,形成灰度特征向量(Histograms of Oriented Gradient),再将这些预处理过的图片送入计算机进行分类训练,大大提高了人脸识别的精确度。

2012年, Kriszhevsky团队用卷积神经网络(CNN)将人脸识别的准确率再提高了一个台阶,从此目标识别领域迈进了深度学习的时代。

正如本文开篇讲到,普通的CNN网络只能对单个物体进行识别,而且无法指出物体的位置。为了解决这个问题,R-CNN算法就诞生了。R-CNN需要对图片扫描多次,先框出图片可能有物体的区域,然后再对这些区域用CNN算法进行识别。

2. YOLO原理简介

YOLO—You Only Look Once,顾名思义,就是对图片仅进行一次扫描就能同时识别多个物体,并标记出物体的位置。YOLO目前已经迭代出了多个版本,但是基本原理没有改变,我们以YOLO V2为例。

  • 首先,YOLO将一张图片分成13×13个格子

image sorce from github with GNU General Public License v3.0

  • 然后,YOLO对每个格子输出5个预测框。预测框的粗细可以表明这个框内存在目标物体的可能性。

image sorce from github with GNU General Public License v3.0

  • 其次,这些预测框同时可以预测目标物体的类别,如下图,用不同颜色标记不同类别(20个),粗细同样表示可能性的大小。

image sorce from github with GNU General Public License v3.0

  • 最后,YOLO将可能性比较大(比较粗)的预测框输出,就得到我们想要的结果了。

image sorce from github with GNU General Public License v3.0

3. YOLO结构

如下图,所示,YOLO是由我们熟悉的若干个CNN堆叠而成的,我们来看看原始图片经过多层CNN处理之后,最后一层输出的是什么。

YOLO最后一层输出的是一个13×13×125的矩阵,所有我们需要的信息都包含在了这一层中。

  • 13×13就是之前提到的图片中被划分成的13×13个格子
  • 每个格子包含125位信息,这125位信息包含5个预测框,每个预测框含有25位信息(125= 5×25)。
  • 这25位信息,前五位为[x, y, width, height, Score];其中,(x, y) 表示预测框的中心坐标,width和height表示预测框的长,宽,Score表示预测框中有目标的可能性
  • 这25位信息,后20位每一位代表一个类别,其数表示属于该类别的概率。

4. 总结

高大上的YOLO经过一步步分解之后,原理是不是并不复杂。当然本文只是对YOLO的粗浅介绍,想要深入了解YOLO请见文末参考文献和YOLO官网。下一篇文章,我将介绍如何使用YOLO来检测和识别自己的图片和视频中的目标物体。


参考资料

[1] J. Redmon et al. You Only Look Once: Unified, Real-Time Object Detection

[2] Viola–Jones object detection framework

[3] N. Dalal et al. Histograms of Oriented Gradients for Human Detection

[4] R. Girshick et al. Rich feature hierarchies for accurate object detection and semantic segmentation

[5] YOLO official website.


相关文章

Tensorflow入门——单层神经网络识别MNIST手写数字

Tensorflow入门——多层神经网络MNIST手写数字识别

AI学习笔记——Tensorflow中的Optimizer

Tensorflow入门——分类问题cross_entropy的选择

AI学习笔记——Tensorflow入门

Tensorflow入门——Keras简介和上手


同步到我的简书

https://www.jianshu.com/u/bd506afc6fc1

Sort:  

你今天过的开心吗?想一展歌喉吗?好声音@cn-voice欢迎你~如果不想再收到我的留言,请回复“取消”。

Congratulations @hongtao! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 100 comments. Your next target is to reach 200 comments.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:

The Steem blockchain survived its first virus plague!

You can upvote this notification to help all Steem users. Learn how here!



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider setting @steemstem as a beneficiary to your post to get a stronger support.

Please consider using the steemstem.io app to get a stronger support.

Coin Marketplace

STEEM 0.25
TRX 0.11
JST 0.034
BTC 63206.40
ETH 3079.10
USDT 1.00
SBD 3.87