华企号 软件工程 计算机视觉程序开发新手指南篇

计算机视觉程序开发新手指南篇

计算机视觉其实是通过摄像头采集的画面去模拟人眼识别物体,这是个很广泛的学科,应用也很多。

 

机器如何去看世界:

A. 用数字表示颜色:在计算机科学中,每种颜色都由指定的十六进制值来表示。机器通过这种编码方式,来了解图像像素是由什么颜色组成的。而作为人类,我们天生就拥有基因来区分不同色调。

 

B. 图像分割:使计算机识别出相似的颜色组,然后分割图像,即将前景与背景区分开。颜色渐变技术被用来查找不同对象的边缘。

 

C. 查找角点:分割后,查找图像中的某些特征,也称为角点(corners)。简而言之,算法会搜索以一定角度相交的线,并以一种颜色的阴影覆盖图像的特定部分。角点(也称为特征)构建基块,可帮助查找图像中包含的更详细信息。

 

D. 查找纹理:确定图像中的纹理是正确识别图像的另一个重要因素。两个对象之间的纹理差异使机器正确地对对象进行更容易地分类。

 

E. 做出猜测:执行上述步骤后,机器需要做出接近正确值的预测或者推断,并将图像与数据库中存在的图像进行匹配。

 

 

F. 最后,看大图!最后,一台机器会看到更大、更清晰的画面,并根据所提供的算法指令检查是否正确地识别了该画面。在过去的几年中,准确性得到了很大的提高,但是当机器被要求处理带有混合物体的图像时,机器仍然会犯错误。

计算机视觉领域需要了解的基础知识点。

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/)
同样,如果你使用其他语言编程,则还需要更多的开源库。

你还应该了解领域中科学研究的关键工作,在这里你可以从中学习它们:

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/​​

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/​

 

作者: 华企网通王鹏程序员

我是程序员王鹏,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部