零基础小白,如何入门计算机视觉?

计算机视觉是人工智能技术的一个重要领域,打个比方(不一定恰当),我认为计算机视觉是人工智能时代的眼睛,可见其重要程度。计算机视觉其实是一个很宏大的概念,下图是有人总结的计算机视觉所需要的技能树。

如果你是一个对计算机视觉一无所知的小白,千万不要被这棵技能树吓到。没有哪个人能够同时掌握以上所有的技能,这棵树只是让你对计算机视觉有个粗浅的认识。

先来打点鸡血,看看计算机视觉有什么用吧。下面的视频是计算机视觉在自动驾驶上的实际应用,其中涉及立体视觉、光流估计、视觉里程计、三维物体检测与识别、三维物体跟踪等计算机视觉领域的关键技术。

以下是我站在一个小白的视角给出一个入门计算机视觉的相对轻松的姿势。

宏观认识

小白通常看到这么多的细分方向大脑一片茫然,到底是学习人脸识别、物体跟踪,又或者是计算摄影,三维重建呢?不知道该怎么下手。其实这些细分方向有很多共通的知识,我的建议是心急吃不了热豆腐,只有对计算机视觉这个领域有了一个初步的全面了解,你才能够结合实际问题找到自己感兴趣的研究方向,而兴趣能够支持一个自学的小白克服困难持续走下去。

1、入门书籍

既然说是入门,这里就不推荐类似《 Multiple View Geometry in Computer Vision》这种虽然经典但是小白看了容易放弃的书了。

像素级的图像处理知识是计算机视觉的底层基础知识。不管你以后从事计算机视觉的哪个细分领域,这些基础知识都是必须要了解的。即使一个急切入门的小白,这一关也必须走的踏实。看到网上有人说直接从某个项目开始,边做边学,这样学的快。对此我表示部分赞成,原因是他忽略了基础知识的重要性,脑子里没有基本的术语概念知识打底,很多问题他根本不知道如何恰当的表达,遇到问题也没有思路,不知道如何搜索,这会严重拖慢进度,也无法做较深入的研究,欲速则不达。

入门图像处理的基础知识也不是直接去啃死书,否则几个公式和术语可能就会把小白打翻在地。这里推荐两条途径,都是从实践出发并与理论结合:一个是OpenCV,一个是MATLAB。

OpenCV以C++为基础,需要具备一定的编程基础,可移植性强,运行速度比较快,比较适合实际的工程项目,在公司里用的较多;MATLAB只需要非常简单的编程基础就可以很快上手,实现方便,代码比较简洁,可参考的资料非常丰富,方便快速尝试某个算法效果,适合做学术研究。当然两者搭配起来用更好啦。下面分别介绍一下。

用MATLAB学习图像处理

推荐使用冈萨雷斯的《数字图像处理(MATLAB版)》(英文原版2001年出版,中译版2005年)。不需要一上来就全部过一遍,只需要结合MATLAB学习一下基本原理、图像变换、形态学处理、图像分割,以上章节强烈建议按照书上手动敲一遍代码(和看一遍的效果完全不同),其他章节可快速扫描一遍即可。但这本书比较注重实践,对理论的解释不多,理论部分不明白的可以在配套的冈萨雷斯的《数字图像处理(第二版)》这本书里查找,这本书主要是作为工具书使用,以后遇到相关术语知道去哪里查就好。

用OpenCV学习图像处理

OpenCV(Open Source Computer Vision Library)是一个开源跨平台计算机视觉程序库,主要有C++预研编写,包含了500多个用于图像/视频处理和计算机视觉的通用算法。

学习OpenCV参考《学习OpenCV》或者《OpenCV 2 计算机视觉编程手册》都可以。这两本都是偏实践的书,理论知识较少,按照书上的步骤敲代码,可以快速了解到OpenCV的强大,想要实现某个功能,只要学会查函数(在https://www.docs.opencv.org/查询对应版本),调函数就可以轻松搞定。由于每个例子都有非常直观的可视化图像输出,所以学起来比较轻松有趣。

2、进阶书籍

经过前面对图像处理的基本学习,小白已经了解了图像处理的基础知识,并且会使用OpenCV或MATLAB来实现某个简单的功能。但是这些知识太单薄了,并且比较陈旧,计算机视觉领域还有大量的新知识在等你。

同样给你两种选择,当然两个都选更佳。一本书是2010年出版的美国华盛顿大学Richard Szeliski写的《Computer Vision: Algorithms and Application》;一本是2012年出版的,加拿大多伦多大学Simon J.D. Prince写的《Computer Vision: Algorithms and Applications》。两本书侧重点不同,前者侧重视觉和几何知识,后者侧重机器学习模型。当然两本书也有互相交叉的部分。虽然都有中文版,但是如果有一定的英语阅读基础,推荐看英文原版(见文末获取方式)。老外写的书,图和示例还是挺丰富的,比较利于 理解。

《Computer Vision: Algorithms and Application》

这本书图文并茂地介绍了计算机视觉这门学科的诸多大方向,有了前面《数字图像处理》的基础,这本书里有些内容你已经熟悉了,没有那么强的畏惧感。相对前面的图像处理基础本书增加了许多新的内容,比如特征检测匹配、运动恢复结构、稠密运动估计、图像拼接、计算摄影、立体匹配、三维重建等,这些都是目前比较火非常实用的方向。如果有时间可以全书浏览,如果时间不够,你可以根据兴趣,选择性的看一些感兴趣的方向。这本书的中文版翻译的不太好,可以结合英文原版看。

《Computer Vision: Models, Learning, and Inference》

该书从基础的概率模型讲起,涵盖了计算机视觉领域常用的概率模型、回归分类模型、图模型、优化方法等,以及偏底层的图像处理、多视角几何知识,图文并茂,并辅以非常多的例子和应用,非常适合入门。在其主页:

http://www.computervisionmodels.com/

上可以免费下载电子书。此外还有非常丰富的学习资源,包括给教师用的PPT、每章节对应的开源项目、代码、数据集链接等,非常有用。

深入实践

当你对计算机视觉领域有了比较宏观的了解,下一步就是选一个感兴趣的具体的领域去深耕。这个时期就是具体编程实践环节啦,实践过程中有疑问,根据相关术语去书里查找,结合Google,基本能够解决你大部分问题。

那么具体选择什么方向呢?

如果你实验室或者公司有实际的项目,最好选择当前项目方向深耕下去。如果没有具体方向,那么继续往下看。

我个人认为计算机视觉可以分为两大方向:基于学习的方法和基于几何的方法。其中基于学习的方法最火的就是深度学习,而基于几何方法最火的就是视觉SLAM。下面就这两个方向给出一个相对轻松的入门姿势。

1、深度学习

深度学习(Deep Learning)的概念是Hinton等人于2006年提出的,最早最成功的应用领域就是计算机视觉,经典的卷积神经网络就是为专门处理图片数据而生。目前深度学习已经广泛应用在计算机视觉、语音识别、自然语言处理、智能推荐等领域。

学习深度学习需要一定的数学基础,包括微积分、线性代数,很多小白一听到这些课程就想起了大学时的噩梦,其实只用了非常基础的概念,完全不用担心。不过如果一上来就啃书本,可能会有强烈的畏难情绪,很容易早早的放弃。

Andrew Ng (吴恩达)的深度学习视频课程我觉得是一个非常好的入门资料。首先他本人就是斯坦福大学的教授,所以很了解学生,可以很清晰形象、深入浅出的从最基本的导数开始讲起,真的非常难得。

该课程可以在网易云课程上免费观看,有中文字幕,但没有配套习题。也可以在吴恩达自己创办的在线教育平台Coursera上学习,有配套习题,限时免费,结业通过后有相应证书。

该课程非常火爆,不用担心听不懂,网上有数不清的学习笔记可以参考。简直小白入门必备佳肴。

2、视觉SLAM

SLAM(Simultaneous Localization and Mapping)(详见《SLAM初识》),中文译作同时定位与地图创建。视觉SLAM就是用摄像头作为主传感器,用拍摄的视频流作为输入来实现SLAM。视觉SLAM广泛应用于VR/AR、自动驾驶、智能机器人、无人机等前沿领域。

视觉SLAM最好的入门资料是高翔(清华博士,慕尼黑理工博后)的《视觉SLAM十四讲-从理论到实践》。该书每章节都涵盖了基础理论和代码示例,深入浅出,非常注重理论与实践结合,大大降低了小白的学习门槛。

好了,入门介绍到此为止,你可以开始你的计算机视觉学习之旅了!

温馨提示:本文提到的部分书籍资料,在公号「计算机视觉life」菜单栏下方回复“入门”即可获取。

插入的视频不知道为什么无法观看,想看计算机视觉的应用视频,看这里:零基础小白,如何入门计算机视觉?

原文地址:https://www.cnblogs.com/CV-life/p/9881039.html

时间: 2024-10-13 11:23:18

零基础小白,如何入门计算机视觉?的相关文章

零基础小白入门Java免费视频教程推荐—小猿圈

Java语言作为世界上使用最多的开发语言,企业庞大的需求量让每年进入Java开发领域的人不减反增.对于零基础小白来讲如何学习Java开发语言是入门的第一个难题.本文小猿圈主要给零基础小白入门Java开发技术推荐一个靠谱的Java免费视频教程. 零基础小白入门Java免费视频教程推荐-小猿圈 关于Java基础入门视频教程的选择,网上有各种各样的解说,也有各式各样的视频教程,那么我们究竟应该如何选择Java免费视频教程呢?如何才能挑选到合适自己的Java基础入门视频教程呢? 许多想通过观看Java视

教你从零基础小白开始怎么学习C语言

想窥探神秘的代码世界?最好的入口无疑就是C语言. C语言是计算机体系结构的基础,向下可以操作硬件(包括ARM,DSP,单片机等各种微处理器),还可以写驱动,写OS,写编译器.向上可以进一步的学习C++,JAVA等面向对象语言,再学习一些图形用户界面框架,比如Qt,MFC,就可做出类似于计算器.QQ等Window桌面应用,再比如Android,就可以做出微信等Android应用,再比如Unity3D,就可以做出类似王者荣耀.刺激战场等手游.想想是不是就有点小激动呢!最后,如果大家如果在自学遇到困难

免费领取16套深度学习权威实践课,从零基础小白到大牛

摘要:想学习人工智能却无从下手,听过两三遍网课还是不懂什么是卷积神经网络,好不容易啃完了视频却发现没源码没法调参跑代码,快来AI Studio课程!免费优质课程,系统化学习, 名师指导,提供真实开发案例,在线实训调参,提升学习效果,带你快速入行人工智能! 很多学习AI算法的人都很痛苦,尤其是希望进入大热的深度学习领域的你,是否遇到过以下囧境? 网上有大量的学习资料,质量参差不齐,且不知道知该从何学起: 听过两三遍网课,还是不懂什么是卷积神经网络: 好不容易啃完了视频却发现没源码,没法调参跑代码,

零基础小白建立自己的导航网站

前言 我就是那个零基础小白,前端.网页什么的我都没有学习过,只是有一点C#的Winform编程工作经验.做这些东西只是兴趣使然,遇到不懂的地方也只能自己找资料自学. 本文只是想记录一下自己的学习经历,也为其他有兴趣的同胞提供一些参考. 使用的是开源项目geekape/geek-navigation,这是最终的导航网站 猿导航 http://quyonghu.cn. 准备工作 开始之前,你必须准备好下面的工作: 安装了node.js.npm(安装过程参考安装Node.js和npm) 安装了git

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

[触动精灵] 零基础小白学触动1-4

视频地址 http://www.iqiyi.com/playlist443635102.html 零基础小白学触动 - 01 - 说在前面的废话 小知识:Tslib库的定位 是官方为了解决小白不会封装自己的函数 提供了一些常见的封装功能 熟练后 我们可以自己封装自己的函数实现功能 可以不用载入这个库文件 小知识:手册非常强大 手册的搜索功能 和目录列表 ? 零基础小白学触动 - 02 - 注释和循环语句 没什么可说的 注释语句: -- --[[]]-- 流程语句 If 条件1 then Else

[触动精灵]零基础小白学触动5-8

零基础小白学触动 - 05 - 触动常用函数 点击 滑动 原理 其实都可以分解成 按下=> 等待一定时间或者移动动作=>  松开 点击: tSLib库的函数tap(x,y) 后面还有2个参数 可以自己看手册  https://www.zybuluo.com/miniknife/note/293935#函数tap-点击 滑动  moveTo(x1,y1,x2,y2,step)   详细的   https://www.zybuluo.com/miniknife/note/293935#函数move

[触动精灵] 零基础小白学触动9-12

零基础小白学触动 - 09 - TSLib:点击和比色 没什么说的 tap(x,y,ms) 了解:TSLib库 注意以前库文件针对环境不同 库文件也是不同的  比如TSL ib库 对于基础版  专业版   帮你玩版  是不同的库文件 但是现在似乎整合了一部分 其他库文件也有这样的情况 使用的时候注意先看手册 看看当前环境下使用什么库文件 10 - 弹窗检测和无限点击 基础应用 11 - 如何滑动到界面底部 没什么说的 12 - TSLib 常用函数:便携 UI 细节查看http://www.to

零基础小白怎么用Python做表格?

用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件.本文用Python3!在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料也上传了好多,各种大牛解决小白的问题,这个Python群:330637182 欢迎大家进来一起交流讨论,一起进步,尽早掌握这门Python语言. 首先导入两个模块xlrd和xlwt,xlrd用