- 如果我们想让机器学会思考,就需要教他们学会如何用视觉去看周围环境。—— 斯坦福大学AI实验室和斯坦福视觉实验室主任李飞飞
使计算机或手机等机器看到周围环境的现象称为计算机视觉。机器仿生人眼的研究工作可以追溯到50年代,从那时起,我们已经走了很长一段路。计算机视觉技术已经通过不同的电子商务领域以及相机应用程序进入了我们的手机。
想一想当机器能够像人眼一样准确地看到周围环境时,机器还有什么是不可以做的。人眼是一个复杂的结构,它可以理解复杂的环境现象。同样的,可以让机器能够看到事物并使其具有足够的能力去理解它们所看到的内容,从而进一步对其进行分类,这项工作仍然是非常艰巨。
使用计算机视觉等效其准确性几乎与人眼相同的情况下,可以在眨眼间就进行数百万次计算。这不仅涉及到将图片转换为像素,还包括尝试通过这些像素去了解图片中的内容,接下来你将首先来了解如何从这些像素中提取信息并理解其代表的内容。
那么,让我们了解一下机器如何去看(像人眼一样)?
A. 用数字表示颜色:在计算机科学中,每种颜色都由指定的十六进制值来表示。机器通过这种编码方式,来了解图像像素是由什么颜色组成的。而作为人类,我们天生就拥有基因来区分不同色调。
B. 图像分割:使计算机识别出相似的颜色组,然后分割图像,即将前景与背景区分开。颜色渐变技术被用来查找不同对象的边缘。
C. 查找角点:分割后,查找图像中的某些特征,也称为角点(corners)。简而言之,算法会搜索以一定角度相交的线,并以一种颜色的阴影覆盖图像的特定部分。角点(也称为特征)构建基块,可帮助查找图像中包含的更详细信息。
D. 查找纹理:确定图像中的纹理是正确识别图像的另一个重要因素。两个对象之间的纹理差异使机器正确地对对象进行更容易地分类。
E. 做出猜测:执行上述步骤后,机器需要做出接近正确值的预测或者推断,并将图像与数据库中存在的图像进行匹配。
F. 最后,看大图!最后,一台机器会看到更大、更清晰的画面,并根据所提供的算法指令检查是否正确地识别了该画面。在过去的几年中,准确性得到了很大的提高,但是当机器被要求处理带有混合物体的图像时,机器仍然会犯错误。
如果你是计算机视觉领域的新手,可以在下面找到一系列初学者需要了解的基础知识点。
A.初学者水平
数学:
- 线性代数
- 奇异值分解
- 入门级模式识别
- 主成分分析
- 卡尔曼滤波
- 傅里叶变换
- 小波
图像处理:
- 杜克大学在Coursera上提供的在线课程
- 冈萨雷斯和伍兹的数字图像处理
B.高级水平
- 线性判别分析
- 概率,贝叶斯规则,最大似然,MAP
- 混合物和期望最大化算法
- 入门级统计学习
- 支持向量机
- 遗传算法
- 隐马尔可夫模型
- 贝叶斯网络
要获得有关理论和技术(尤其是算法)的实践知识,请从计算机视觉的角度开始学习OpenCV:
- 学习OpenCV:使用OpenCV库的计算机视觉(https://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134)
- Tombone的计算机视觉博客(http://www.computervisionblog.com/)
提示:使用C,C ++,Python进行编程时,我们使用OpenCV库进行计算机视觉的相关实践任务。在MATLAB中进行编程时,我们使用计算机视觉系统工具箱(https://in.mathworks.com/products/computer-vision.html?s_tid=gn_loc_drop) 。
同样,如果你使用其他语言编程,则还需要更多的开源库。
你还应该了解领域中科学研究的关键工作,在这里你可以从中学习它们:
- SIFT:通用视觉的经典描述符
- HOG:众所周知的描述符,特别适合人类检测
- Viola-Jones:伟大的人脸检测器
- Shape Contexts
- Deformable Part Models
必读书籍清单包括:
入门级:
- 计算机视觉:算法与应用
- 计算机视觉:现代方法David A. Forsyth,Jean Ponce
- 计算机视觉中的多视图几何。作者:Richard Hartley,Andrew Zisserman
高级水平—走向深度学习
- Michael Nielsen的“神经网络和深度学习”在线书;这是一个非常棒而温和的介绍:神经网络和深度学习
- Ian Goodfellow,Yoshua Bengio和Aaron Courville撰写的深度学习书
当机器可以感觉到你的情绪时会发生什么?点击链接观看视频
https://youtu.be/QFk3e5PcK7s
TED观看演讲:
- 李飞飞:我们如何教计算机理解图片
- BlaiseAgüera和Arcas:PhotoSynth如何连接世界图像
- 浅川千惠子:新技术如何帮助盲人探索世界
- 詹妮弗·希利:如果汽车可以说话,则事故可以避免
- 戈兰·莱文(Golan Levin):回望你的艺术
- Paul Debevec:制作真实照片的数字脸动画
- 戈兰·莱文:软件艺术
在线课程:
入门级:
- Udacity:计算机视觉概论
- 斯坦福大学的CS231n:用于视觉识别的卷积神经网络
- 中央佛罗里达大学-Mubarak Shah教授的视频讲座
- 从上述资源中获得的概念和算法,你可以去解决一些任务并自行完成一个项目。
高级水平—走向深度学习
- 杰夫·欣顿(Geoff Hinton)在Coursera上的神经网络讲座
- 斯坦福课程:自然语言处理的深度学习
- 斯坦福大学课程:用于视觉识别的卷积神经网络
讲座课程:
- 计算机视觉中的深度学习(Sanja Fidler教授)
- 先进的计算机视觉(James Hays教授)