怎麼學習計算機視覺?

2021-09-25 15:06:54 字數 2344 閱讀 1698

本文的內容主要借鑑csdn博主nodyoung的一篇文章,但是不知道什麼原因,該博主的文章現已刪除,這裡,我根據自己的理解大致說明一下,對於乙個初學小白來說,該如何學習計算機視覺。(有關計算機視覺入門的其它知識,可以閱讀另一篇文章計算機視覺入門必讀)1.程式設計能力

1.2 程式設計平台(windows, linux)

新手肯定都用windows了,學習過程中發現在windows上搞不定了,先忍幾次,然後掉頭就去學linux了。一定是這樣。 哪些在windows上真的搞不定呢?比如:deeplearning,或最新**中提出的視覺開源演算法。 不過對我們而言,linux並不需要了解太深。裝個ubuntu系統,常用的檔案操作、程式編譯等知道就ok了。我完全是在使用的過程中現用現學,手邊常備一本書《鳥哥的linux私房菜》。

2.視覺知識

計算機視覺實在很廣了,目前比較熱門的方向總體上分為兩大塊:一塊是深度學習,一塊做slam。它們的研究點區別在哪呢?深度學習這一群體側重於解決識別感知(是什麼)問題,slam側重於解決幾何測量(在**)問題iccv研討會:實時slam的未來以及深度學習與slam的比較。拿機械人來說,如果你想要它走到你的冰箱面前而不撞到牆壁,那就需要使用 slam;如果你想要它能識別並拿起冰箱中的物品,那就需要用到深度學習機械人抓取時怎麼定位的?用什麼感測器來檢測?。當然這兩方面在research上也有互相交叉融合的趨勢。 不過在學習這些之前,一般都會先掌握下傳統的計算機視覺知識,也就是影象處理這一部分了。我之前大致總結過一次:

計算機視覺初級部分知識體系。這些基礎知識的理解還是挺有必要的,有助於你理解更高層知識的本質,比如為什麼會出現deeplearning等這些新的理論知識(感覺有點像讀史了,給你智慧型和自由)。這一部分學習資料的話還是挺推薦淺墨的《opencv3程式設計入門》 也可以看他的部落格。當然他的書有乙個問題就是涉及理論知識太少,所以推薦自己再另備一本偏理論一點的影象處理相關的書,我手邊放的是《數字影象處理:原理與實踐》,差強人意吧。個人之前看淺墨書的時候做了乙份《opencv3程式設計入門》學習筆記,裡邊包含一些理論知識和個人見解。

下面說一下兩個大的方向:基於深度學習的視覺和slam技術。基於深度學習的視覺:機器學習包括深度學習裡的大部分演算法本質上都是用來做「分類」的。具體到計算機視覺領域一般就是物體分類(object classification)、目標檢測(object detection)、語義分割(image semantic segmentation)等,當然也有一些很酷又好玩的東西比如edges2cats、deepart。本人主要做一些object detection相關的東西。其實一般是直接跑別人的**了,稍微做一些修改和引數調整,前期的預處理才是主要工作。這些程式基本都是在linux下跑的。好,深度學習為什麼這麼強?它主要解決了什麼問題呢?我比較認同以下三點:學習特徵的能力很強,通用性強,開發優化維護成本低 參見為什麼深度學習幾乎成了計算機視覺研究的標配?。

關於這一部分的學習,主要就是deeplearning了。關於deeplearning,漫天飛的各種資源。可以看一看李巨集毅的一天搞懂深度學習課件 youtube上有乙個一天搞懂深度學習–學習心得;李飛飛的cs231n課程,網易雲課堂有大資料文摘翻譯的中文字幕版課程,知乎專欄智慧型單元有cs231n課程翻譯(非常好);三巨頭之一yoshua bengio的新作《deep learning》,目前已有中譯版本 。

slam技術:這一部分了解不多,不做太多評價,有興趣的可以自己谷歌一下

4.數學

一切工程問題歸根結底都是數學問題,這裡說說計算機視覺和機器學習所涉及的數學問題。微積分:比如影象找邊緣即求微分在數字影象裡是做差分(離散化)啦,光流演算法裡用到泰勒級數啦,空間域轉頻域的傅利葉變換啦,還有牛頓法、梯度下降、最小二乘等等這些都用的特別普遍了。

概率論與統計:這個比較高深,是應用在機器學習領域裡最重要的數序分支。應用比如:條件概率、相關係數、最大似然、大數定律、馬爾可夫鏈等等。 浙大的《概率論與數理統計》感覺還行,夠用。

線性代數與矩陣:數字影象本身就是以矩陣的形式呈現的,多個向量組成的樣本也是矩陣這種形式非常常見,大多機器學習演算法裡每個樣本都是以向量的形式存在的,多個矩陣疊加則是以張量(tensor)的形式存在google深度學習庫tensorflow的字面意思之一。具體應用,比如:世界座標系->相機座標系->影象座標系之間的轉換,特徵值、特徵向量,範數等。 推薦國外的上課教材《線性代數》。因為浙大的那本教材感覺實在不太行,買過之後還是又買了這本。

凸優化:這個需要單獨拎出來說一下。因為太多問題(尤其機器學習領域)都是優化問題(求最優),凸優化是裡面最簡單的形式,所以大家都在想辦法怎麼把一般的優化問題轉化為凸優化問題。至於單純的凸優化理論,好像已經比較成熟了。在機器學習裡,經常會看到什麼求對偶問題、kkt條件等,潛下心花兩天學一學。 建議備乙份高校關於凸優化的教學課件,大家對這一塊畢竟比較生,缺乏系統感。比如北大的《凸優化》課程。這些數學知識沒必要系統學習,效率低又耗時。畢竟大家都有本科的基礎,夠了。一般用到的時候學,學完之後總結一下。

(計算機視覺)計算機視覺基礎

opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...

計算機視覺學習總結

計算機視覺 工具 opencv caffe tensorflow python c opencv演算法精解 基於python與c 關注 斯坦福李飛飛 深度學習計算機視覺 計算機視覺領域的一些牛人部落格,超有實力的研究機構等的 鏈結 annotated computer vision bibliogr...

計算機視覺

主講老師 曹洋 課程 視覺 基礎 底 層處理 影象處理 特徵提 取 中 層處理 影象分割 相機標 定 深度 估計 運 動估計 高層處 理 3d 重建 目 標識別 視 覺基 礎 底層 處理 圖 像處理 特徵提取 中層 處理 圖 像分割 相機標定 深度估 計 運動 估計 高層處理 3d重 建 目標 識別...