通过机器的眼睛去探索
- 如果我们想让机器学会思考,就需要教他们学会如何用视觉去看周围环境。—— 斯坦福大学AI实验室和斯坦福视觉实验室主任李飞飞
使计算机或手机等机器看到周围环境的现象称为计算机视觉。机器仿生人眼的研究工作可以追溯到50年代,从那时起,我们已经走了很长一段路。计算机视觉技术已经通过不同的电子商务领域以及相机应用程序进入了我们的手机。
想一想当机器能够像人眼一样准确地看到周围环境时,机器还有什么是不可以做的。人眼是一个复杂的结构,它可以理解复杂的环境现象。同样的,可以让机器能够看到事物并使其具有足够的能力去理解它们所看到的内容,从而进一步对其进行分类,这项工作仍然是非常艰巨。
使用计算机视觉等效其准确性几乎与人眼相同的情况下,可以在眨眼间就进行数百万次计算。这不仅涉及到将图片转换为像素,还包括尝试通过这些像素去了解图片中的内容,接下来你将首先来了解如何从这些像素中提取信息并理解其代表的内容。
那么,让我们了解一下机器如何去看(像人眼一样)?
A. 用数字表示颜色:在计算机科学中,每种颜色都由指定的十六进制值来表示。机器通过这种编码方式,来了解图像像素是由什么颜色组成的。而作为人类,我们天生就拥有基因来区分不同色调。
B. 图像分割:使计算机识别出相似的颜色组,然后分割图像,即将前景与背景区分开。颜色渐变技术被用来查找不同对象的边缘。
C. 查找角点:分割后,查找图像中的某些特征,也称为角点(corners)。简而言之,算法会搜索以一定角度相交的线,并以一种颜色的阴影覆盖图像的特定部分。角点(也称为特征)构建基块,可帮助查找图像中包含的更详细信息。
D. 查找纹理:确定图像中的纹理是正确识别图像的另一个重要因素。两个对象之间的纹理差异使机器正确地对对象进行更容易地分类。
E. 做出猜测:执行上述步骤后,机器需要做出接近正确值的预测或者推断,并将图像与数据库中存在的图像进行匹配。
F. 最后,看大图!最后,一台机器会看到更大、更清晰的画面,并根据所提供的算法指令检查是否正确地识别了该画面。在过去的几年中,准确性得到了很大的提高,但是当机器被要求处理带有混合物体的图像时,机器仍然会犯错误。
拥有计算机视觉研究小组的大学:
美国大学
卡内基梅隆大学机器人学院
加州大学洛杉矶分校
北卡罗来纳大学教堂山分校
华盛顿大学
加州大学伯克利分校
斯坦福大学
麻省理工学院
康奈尔大学
宾夕法尼亚大学
加州大学尔湾分校
哥伦比亚大学
伊利诺伊大学香槟分校
南加州大学
密西根大学
普林斯顿大学
罗切斯特大学
德克萨斯大学奥斯汀分校
马里兰大学学院公园
布朗大学
中央佛罗里达大学
纽约大学
密西根州立大学
麻省大学,阿默斯特
西北大学
加州大学圣地亚哥分校
加拿大的大学:
艾伯塔大学
多伦多大学
不列颠哥伦比亚大学
西蒙弗雷泽大学
欧洲大学:
INRIA法国
牛津大学
苏黎世联邦理工学院
德国马克斯·普朗克研究所
爱丁堡大学
萨里大学
弗莱堡大学
瑞典KTH
德累斯顿大学
达姆施塔特工业大学
瑞士EPFL
鲁汶大学
巴塞罗那计算机视觉中心
瑞士IDIAP
伦敦帝国理工学院
海德堡国际机场
曼彻斯特大学
波恩大学
亚琛工业大学
阿姆斯特丹大学
慕尼黑工业大学
捷克技术大学
剑桥大学
格拉茨
IST奥地利
伦敦玛丽皇后大学
苏黎世大学
代尔夫特大学
利兹大学
伯尔尼大学
隆德大学
意大利特伦托大学
意大利佛罗伦萨大学
斯图加特大学
萨尔大学
巴黎中央学校
巴黎理工学院
奥卢大学
卡尔斯鲁厄理工学院
如果你是计算机视觉领域的新手,可以在下面找到一系列初学者需要了解的基础知识点。
A.初学者水平
数学:
- 线性代数
- https://www.khanacademy.org/math/linear-algebra
- 奇异值分解
- https://www.youtube.com/watch?v=sJV0QyHoRio
- 入门级模式识别
- https://ocw.mit.edu/courses/media-arts-and-sciences/mas-622j-pattern-recognition-and-analysis-fall-2006/
- 主成分分析
- https://www.youtube.com/watch?v=H0HjNuNvFVI
- 卡尔曼滤波
- https://www.youtube.com/watch?v=d0D3VwBh5UQ
- 傅里叶变换
- https://www.youtube.com/watch?v=hVOA8VtKLgk&list=PLuh62Q4Sv7BUSzx5Jr8Wrxxn-U10qG1et&index=1
- 小波
- https://www.youtube.com/watch?v=4fQAlD5wZKA
图像处理:
- 杜克大学在Coursera上提供的在线课程
- https://www.coursera.org/learn/image-processing
- 冈萨雷斯和伍兹的数字图像处理
- http://www.imageprocessingplace.com/
B.高级水平
- 线性判别分析
- https://www.youtube.com/watch?v=aSyQqHY4Vqc
- 概率,贝叶斯规则,最大似然,MAP
- https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/
- 混合物和期望最大化算法
- https://www.youtube.com/watch?v=Q1oqJSgp_Dk
- 入门级统计学习
- https://www.coursera.org/specializations/statistics
- 支持向量机
- https://www.youtube.com/watch?v=_PwhiWxHK8o
- 遗传算法
- https://www.youtube.com/watch?v=kHyNqSnzP8Y
- 隐马尔可夫模型
- https://www.youtube.com/watch?v=D_RIe5bd3hk
- 贝叶斯网络
- https://www.coursera.org/learn/probabilistic-graphical-models
要获得有关理论和技术(尤其是算法)的实践知识,请从计算机视觉的角度开始学习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:通用视觉的经典描述符
- https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf
- HOG:众所周知的描述符,特别适合人类检测
- Viola-Jones:伟大的人脸检测器
- https://www.microsoft.com/en-us/research/people/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Fviola%2Fpubs%2Fdetect%2Fviolajones_ijcv.pdf
- Shape Contexts
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.18.8852&rep=rep1&type=pdf
- Deformable Part Models
- http://www.rossgirshick.info/latent/
必读书籍清单包括:
入门级:
- 计算机视觉:算法与应用
- http://szeliski.org/Book/
- 计算机视觉:现代方法David A. Forsyth,Jean Ponce
- http://cmuems.com/excap/readings/forsyth-ponce-computer-vision-a-modern-approach.pdf
- 计算机视觉中的多视图几何。作者:Richard Hartley,Andrew Zisserman
- http://books.google.cn/books?hl=en&lr=&id=si3R3Pfa98QC&oi=fnd&pg=PR11&dq=computer+vision&ots=aQo-nw6e4Q&sig=zGRDslfuKd1ytlZWwTaTKcuLdNw&redir_esc=y
高级水平—走向深度学习
- Michael Nielsen的“神经网络和深度学习”在线书;这是一个非常棒而温和的介绍:神经网络和深度学习
- http://neuralnetworksanddeeplearning.com/
- Ian Goodfellow,Yoshua Bengio和Aaron Courville撰写的深度学习书
- http://www.deeplearningbook.org/
当机器可以感觉到你的情绪时会发生什么?点击链接观看视频
https://youtu.be/QFk3e5PcK7s
TED观看演讲:
- 李飞飞:我们如何教计算机理解图片
- https://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictures
- BlaiseAgüera和Arcas:PhotoSynth如何连接世界图像
- https://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictures
- 浅川千惠子:新技术如何帮助盲人探索世界
- https://www.ted.com/talks/chieko_asakawa_how_new_technology_helps_blind_people_explore_the_world
- 詹妮弗·希利:如果汽车可以说话,则事故可以避免
- https://www.ted.com/talks/jennifer_healey_if_cars_could_talk_accidents_might_be_avoidable
- 戈兰·莱文(Golan Levin):回望你的艺术
- https://www.ted.com/talks/golan_levin_art_that_looks_back_at_you
- Paul Debevec:制作真实照片的数字脸动画
- https://www.ted.com/talks/paul_debevec_animating_a_photo_real_digital_face
- 戈兰·莱文:软件艺术
- https://www.ted.com/talks/golan_levin_software_as_art
在线课程:
入门级:
- Udacity:计算机视觉概论
- https://www.udacity.com/course/introduction-to-computer-vision--ud810
- 斯坦福大学的CS231n:用于视觉识别的卷积神经网络
- http://cs231n.stanford.edu/
- 中央佛罗里达大学-Mubarak Shah教授的视频讲座
- https://www.crcv.ucf.edu/videos/lectures/2014.php
- 从上述资源中获得的概念和算法,你可以去解决一些任务并自行完成一个项目。
高级水平—走向深度学习
- 杰夫·欣顿(Geoff Hinton)在Coursera上的神经网络讲座
- https://www.coursera.org/learn/neural-networks
- 斯坦福课程:自然语言处理的深度学习
- http://cs224d.stanford.edu/
- 斯坦福大学课程:用于视觉识别的卷积神经网络
- http://cs231n.stanford.edu/
讲座课程:
- 计算机视觉中的深度学习(Sanja Fidler教授)
- http://www.cs.utoronto.ca/~fidler/teaching/2015/CSC2523.html
- 先进的计算机视觉(James Hays教授)
- http://www.cc.gatech.edu/~hays/7476/
全球项目
- https://news.microsoft.com/stories/computingcancer/
b.东京项目 ——提供基于AI的应用原型,以增强盲人或视力障碍者对社交,物理和文本环境的认识。 - https://www.microsoft.com/en-us/research/project/project-tokyo/
C.教机器预测未来 - http://news.mit.edu/2016/teaching-machines-to-predict-the-future-0621
最左侧的列显示操作开始之前的帧,其下方是算法的预测。右列显示视频的下一帧。
另一种让你自己了解计算机视觉领域正在进行的研究的方法是跟随作者并阅读他们在顶级会议上的论文,如CVPR、ICCV、ECCV、BMVC。
与专家的对话
以下交谈摘录是我与两位对计算机视觉领域充满热情的专家交谈的。
与Devi Parikh教授的对话| Facebook AI Research的客座研究员| 佐治亚理工学院(以前是弗吉尼亚理工学院)助理教授
计算机视觉是人工智能的一个子领域,其目标是构建可复制人脑视觉的智能计算机。机器学习是教机器学习的通用术语,但是计算机视觉专门处理视觉数据。在机器学习中,我们更多地使用了统计工具,而计算机视觉同时使用了统计工具和非统计工具。例如,计算机视觉领域的3D重建任务中使用机器学习工具的频率要比图像分类和对象识别等技术要低。许多计算机视觉任务都有其自己的需求,我们为此开发了特定的机器学习工具。
对于任何想开始学习该领域的学生,我建议他们通过研究人员的网页来选择他们感兴趣的问题来学习。大多数情况下,人们都在研究最前沿的问题,这些问题可以从该网页获得可用的标准数据集。他们可以选择一个研究问题,一个数据集以及一个他们可能想使用的库,然后动手去做。
在攻读硕士或博士学位的学生,我通常会去寻找有责任心,积极性和决心的来作为我的学生。为了使你的基本概念清晰明了,可以尝试阅读研究论文,尝试了解全世界研究人员正在研究的AI前沿问题。
B.与Richa Agrawal的对话 | 宾夕法尼亚大学校友| Whodat的计算机视觉研究工程师
我毕业于斋浦尔MNIT,在那学习期间,我与Robotics研究组取得了联系,我们合作实现了一些项目,然后参加IIT Roorkee的国家级比赛并赢得了比赛,这段经验极大地鼓舞了我。完成学士学位后,我开始在Yahoo工作,我意识到这不是我想要做的事,因此去了宾夕法尼亚大学攻读硕士学位。攻读硕士学位的这段时间,我通过学习不同的课程探索了不同的研究领域,并最终决定将计算机视觉作为我的主要研究方向。毕业后,我在美国的一家初创公司工作,并希望在印度寻找计算机视觉的就业机会。在Whodat(一家基于Bangalore的计算机视觉初创公司)中,我们使用增强现实和可视化技术对图像进行研究处理。比如,你打算为自己的房屋购买家具,你针对家庭的布局环境去商店后选择了一家家具店,但在家具交付后,常常会出现家具太大或太小的问题,现在没有什么技术可以解决该问题。我们正在尝试通过构建一个解决方案来帮助你,该解决方案可以使商店的家具在你家中进行可视化布置。这将使你能够做出更好的决定,并轻松地购买物品。
在学习时,很多时候我无法尽力而为,经常感到沮丧,但后来朋友的建议来了。他告诉我-“只有少数人(不到0.1%)能够做到这一点(在国外读硕士和在计算机视觉等技术领域有如此研究),并且而你正是其中之一。而且你如果加倍努力,你自己可以做到其它人做不到的东西。
对于学生入门的一些建议,在与其他学院同龄人的交谈之后,我建议你参加比赛和黑客马拉松。重要的是要找到自己的兴趣,而不是在自己不喜欢的地方工作。例如,计算机视觉在印度是一个广阔的领域,在印度有广阔的发展空间,在这个领域,你所需要的只是一架已经开始渗透到更小的城市的相机。因此,计算机视觉的未来绝对是光明的。
原文链接:https://medium.com/readers-writers-digest/beginners-guide-to-computer-vision-23606224b720
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/