贾伟中科院合肥 发表于 2015-6-24 14:12:16

计算机视觉进展二十年 (1995~2015)

计算机视觉进展二十年 (1995~2015)2015-06-04 deepnn团队 DeepLearning中文论坛
http://mmbiz.qpic.cn/mmbiz/vSPPGuVbiaaTtHr9lvOFtB38ytrQymIzllFDd7HzDLiamtbM6UD2s7vXpAum85g3yPsP3phwzosE3XUHYTgydDag/640?wx_fmt=jpeg&tp=webp&wxfrom=5
计算机视觉的两大主要板块是:几何和识别,这里我们主要来讲述计算机视觉在1995~2015年间的进展。

1. 影像特征点检测算子(detector)和描述算子(descriptor) SIFT的诞生 (1999, 2004)Scale invariant feature transform (SIFT) 是在1999年由 UBC 的教授 David Lowe 首次提出,并在2004年进一步完善并发表的 影像特征点检测 (detector) 和描述算子 (descriptor)。SIFT的诞生是计算机视觉里程碑式的进步,它使得 homography estimation, structure from motion, epipolar geometry 以及 机器人 (robotics) 中的SLAM 有了飞跃式的改进,正是因为SIFT好于在它之前的任何描述子, 使得匹配更加准确。SIFT不只是在geometry上有应用, 它后来广泛应用于目标识别 (Object Recognition)(见后文)。
2. 特征工程:描述子 (descriptor) 的广泛诞生 (1995 ~ 2010)在深度学习 (feature learning) 流行之前,学者们手工设计 (manually craft) 了很多point, image patch, spatial-temporal volumetric cube 和 3D mesh的描述子,这些描述子一般都具有抗噪声,对旋转、光照、比例、对比度 等等 不敏感的特性。除SIFT之外,其它著名的算子有:(1) shape context, 它由 Cornell Tech的 Serge Belongie 教授于2002年提出, 他使用了计算机视觉中常用的binning来描述点周围的shape context, 在角度方向, 使用了均衡的binning, 而在半径方向, 使用了log-polar binning, 这样直观上就是越近的点对shape 影响更大。Shape context 是很成功的形状描述子, 对于2D 的形状识别, 在当时MNIST 手写字识别上达到了最好的效果。(2) HOG: 它的全称是 Histogram of Oriented Gradients, 在2005年由 Dalal & Triggs 提出来,应用到行人检测上。HOG不同于SIFT的地方是:HOG用于描述整块patch, 并不像SIFT一样有keypoint的概念; HOG没有 rotation-invariant 的特性。HOG 后来广泛的用于其他目标的识别,最成功的拓展是基于HOG的 deformable parts model (DPM, 由Felzenszwalb 教授在2010年提出), 它是deep learning 之前最好的object detection & recognition 匴法。(3) spin image: 它是一种3D mesh的描述子, 由 Andrew Johnson 博士在1997年提出, 并在1999年完善的。它用来做surface matching, 如今激光扫描仪 (laster scanner) 越来越普遍,价格也越来越便宜,于是点云数据也是越来越常见, spin image 就能直接用于点云的匹配。因为spin image 描述子是基于局部的坐标系 – 其XY平面是那点的切平面,Z是点的法向(normal), XY坐标轴的方向不需要确定 (不像计算SIFT descriptor时,需要把坐标轴对齐到dorminant direction) – 当两个来自不同全局坐标系点云的点都用shape context 描述后, 就能直接欧式距离比较它们的相似度了。
(4) 除了这些非常成功的描述子,其它的还有 STIP (Space-Time Interest Points, 2005), HOF (Histogram of oriented optical flow, 2009), MBH (motion boundary histogram, 2013)。
3. 目标识别, object recognition(2005 ~ 2010)在2010年前,也就是deep learning用于目标识别之前, 这个时期还没有大规模的影像数据库( ImageNET 2009年采集完成),第一个用于目标识别的数据库是 目前斯坦福的 Fei-Fei Li 教授在caltech 读博期间采集的Caltech101,它有101类目标, 每个种类的目标有40~800张影像。虽然相比目前的imageNET, 它小得不能再小了,可是它对计算机视觉目标识别有着不可磨灭的贡献,caltech101开启了目标识别的先河, 这期间诞生了很多有趣的 descriptors 和 object recognition algorithms, 其中主流的目标识别算法是 (1)bag-of-visual-words (BoW); (2) template matching。 BoW受到文本领域topic modeling的启发,主要思想是在影像上随机的采取一些patches, 这些patches叫做visual words, 影像就能看作由这些visual words 组成的 (正如一篇文章 (document) 由很多 words 组成)。 下面我们来说说代表性的目标识别的文章:(1) LDA: latent Dirichlet allocation, 它本来由普林斯顿的David Blei 教授在2003年提出,用于文本的unsupervised topic modeling, 在2005年, 仍在读博的Fei-Fei Li 用LDA做视觉中的场景分类, 这是一篇典型的bag-of-visual-words 算法用于目标分类的文章;(2) SPM (spatial pyramid matching), 它是目前UIUC 的教授Lazebnik提出的, 用非常简单的spatial grid把image分成几块,然后每块分别统计BoW histogram, 最后把这些histogram拼接在一起,这样形成的影像描述子就有了空间结构信息,再不像以前的BoW描述子一样缺乏空间信息了,非常简洁, 但也非常有效;(3) 基于BoW的一些改进的 image encoding 方法:2006~2009年,学者们用 sparse coding, Fisher vector 等技巧来改善传统的BoW影像描述子 (image encoding),这样的描述子更加的discriminative, 取得了一些进步, 不过他们仍然属於BoW体系中的方法;(4) Pyramid matching kernel: 它由UT Austin的Grauman 教授提出,虽然第一步也是提取visual words (SIFT), 不过它不同于BoW的是: PMK定义了一种相似度kernel, 通过两张影像上提取的SIFT描述子来直接描述两张影像的相似度,最后用SVM分类。显然PMK中每张单独的影像并没有自己的描述子 (encoded vector descriptor)。(5) DPM:deformable parts model,由Felzenszwalb 教授在2010年提出, 它是一种完全不同余以前方法的目标识别算法,它的核心思想是模板匹配,定义了root template 和几个 part templates,然后用latent SVM 描绘root 和 parts之间的几何关系,最后通过 latent descriminative training 得到latent svm 参数,便可用于分类。DPM是deep learning 之前最好的目标识别算法,之后有一些DPM 的加速算法,用于快速目标检测。
4. 自动特征这学习: deep learning 在视觉中的流行 (2010 ~ 2015)Deep learning的再次流行,打破了目标识别算法的格局,使得无论是BoW还是DPM都成为过去式,deep learning成为目标识别领域的领跑者。首先BoW根本不具有物体的结构信息,再之,DPM可以看成是2层的一种structure (root+part), 但与deep learning 的层数 (通常10~20层)来比,也算一种浅层结构了 (shallow network)。Deep learning的流行,有4个人功不可没: Geoffrey Hinton, Yann LeCun, Yoshua Bengio 和 Andrew Ng。这里我们重点介绍 deep convolutional neural network (CNN), 它早在1990年就由Yann LeCun用于手写字的识别,可是一直到2012年,CNN一直没被重视,两个原因:(1)SVM 的优美的理论,遥遥领先分类能力,使得其它分类器 (包括CNN) 黯然失色;(2)计算机硬件的计算性能的有限, 加上没有大量的labeled数据,使得CNN一直没能得到很好的结果。 2012年, Krizhevsky (Geoffrey Hinton在加拿大多伦多大学的学生)在NIPS上present了CNN用于目标识别的结果, 它直接把最好的目标识别算法误差减半,这引起了轩然大波和热烈的讨论,到了今天,CNN 已经被整个计算机视觉界所接受,成为目标识别的通用方法。
CNN 的结构是: n* (convolution layer + pooling layer) + several fully connected layers, CNN的这种deep structure受启发于人的视觉神经元识别目标的层次解构:LGN-V1-V2-V4-IT,简单的方向信息源往往会使得低层的神经元firing, 而更抽象的形状刺激源往往能激发高层V4区域的神经元。CNN 的 deep structure利用了下面的属性: 很多自然信号都是层次结构的,高层的复杂特征又低层的简单特征组成。CNN 中的 convolutional layer 是 distributed representation 的一种表征, 而 pooling layer 使得 deep structure 对影像微小的平移(shift)和 形变 (distortion) 不敏感。CNN使用error back propagation来训练参数,具体用一阶的随机梯度下降法 (stochastic gradient descent)来训练。后面我们将会从技术的细节来具体解析CNN。


页: [1]
查看完整版本: 计算机视觉进展二十年 (1995~2015)