最近有不少小夥伴問我,打算開始學習計算機視覺(機器學習,深度學習)等這方面的內容,有沒有什麼建議?
我按照我個人的學習歷程給出了不少建議,雖然不一定權威,但也算有用。因此在這裡把這些最常見的問題整理一下,希望對各位初學者有幫助。如果能幫到你,我會感到很開心,不過我也不是大神,所以大神們略過就好。
這個問題一開始也讓我很迷惑,但是經過一段時間的嘗試之後,我覺得可以這樣來操作。對於基礎的東西,並且自己完全沒接觸過,那有必要看書或者聽課程系統的學習,不然後面有很多坑,就算遇見了可能自己還不知道。不過對於工具類的使用或者一些學過的東西,遇到問題的時候就使用搜尋來解決問題,如果搜尋還解決不了,那就請教一些厲害的人。
對於看書,現在的理論書籍動不動就是幾百頁,入門的時候想要看完是很難堅持下去的。剛開始我也是定個小目標,要把某某大部頭看完,後來發現根本不可行。一是沒有這麼多的時間看,看這種書需要整塊整塊的時間,必須每天都給強制規劃出時間來才行,這對我來說有點困難;二是在看書的時候遇到不懂的又得去網上查資料,這樣學習程序緩慢,比較打擊自信心;三是就算看完之後,但很多東西都用不到,或者學習得並不透徹,時間一久就又會忘記。而對於一些由**和截圖堆疊起來的書,那就更看不下去了,有時候真心搞不懂這種書也能出版。
等基礎掌握之後,放下書本,立馬動手實踐。有某位偉人說過,實踐是檢驗真理的唯一標準,這句話還是很有道理的。程式設計也是一門實踐性很強的科學,如果對於學到的東西不實際動手操作一下,我甚至都會懷疑這個知識點的正確性,也許是因為這些語言的各種細節不一樣吧。而且動手看一看效果,可以去除掉頭腦中那些模糊的地方,對整體和細節都有更好的把握。
那具體對於計算機視覺而言,可以去 github.com **上面找相關的小專案 fork 下來嘗試看懂,然後自己再動手復現一遍。例如搜尋目標檢測,就可以看到 yolo 和 ssd 演算法的**實現。
前面說過,課程的課後作業就是很好的實踐材料,特別是與前面的知識相匹配。在這個過程中,遇到不會的,這就可以去檢視書籍或者搜尋來解決問題,用這樣的方式帶著目的和問題來看書,就能夠把書本掌握的更透徹,也能夠吸收書裡面真正重要的內容,畢竟一本書不是所有的東西都是精華。
數學當然要學,而且要放在優先順序高的地位。高等數學、線性代數、概率論這三門學科都是工科必學的。而對於考研來說也都是必考的學科,所以數學的重要性也可由此看出來。
但是對於數學,通常我們在大一大二的時候都會在學校的教導下把這三門學完。對於學習數學基礎來說,這就已經足夠了,足夠你去看懂大多數比較簡單的公式。但要注意,一定要是理解數學,而不是記憶數學的解題方法,純粹為考試而學習。
此後,還會遇到一些更高階的數學學習,比如凸優化、矩陣論等。這時候就可以在涉及到具體問題的時候,學那些要用到的東西,即帶有目的性的學習。
所謂的學習,就是解決問題,在這個過程中一點點掌握自己不會的東西,而不要試圖嘗試一次性就把整個領域都學會。能夠快速學習的技能都不重要,因為可以快速學會,所以不具備稀缺性;而重要的東西不可能快速學會,因此學會才有其價值,這不是我個人空想的理論,而是由經濟學決定的。
初學的時候,看**當然很吃力。但讓你感到吃力地東西,一切都是由於熟悉度還不夠高引起的。當你對某樣東西很熟悉的時候,你就能夠輕鬆應對,這就是熟能生巧。閱讀文獻也是同樣的乙個道理,對於我們來說,具體的難點在於英語閱讀不夠熟練和其中的一些知識點不夠熟悉。
我在這裡就說說我用過的乙個小方法吧。首先我是先在國內的研究生期刊上找該領域的文章,包括碩士**和少量博士**,這些文章都是用中文寫成的,所以對於英語就不必害怕。另外,這些**通常都會為了寫夠字數,而把摘要部分和詳細說明寫的很清楚,這就是乙個絕好的學習材料啊。然後從這些文章的引用來找其他文章,這樣對內容有了一定熟悉度之後,相對也就能夠更輕鬆的對付了。
****有知網、萬方、谷歌學術等,如果是在校生的話,學校圖書館通常會購買這些服務,可以自己去圖書館了解一下。
公開課 stanford cs231n 是講計算機視覺和深度學習的一門課程,授課老師是李飛飛,其人在學術界和工業界都很有名。這門課程能夠在嗶哩嗶哩上面找到,作業也能夠在github**上面找到。
吳恩達的《機器學習》和《深度學習》都是面向初學者的優秀的課程,可以在網易雲課堂上面找到,但作業需要到 coursera 去找,不過 github 肯定也有的。林軒田的《機器學習基石》和《機器學習技法》也是優秀的課程,不過我也沒有看過,就不做過多推薦了。
經典書籍有岡薩雷斯的《數字影象處理》、richard szeliski 的《計算機視覺:演算法與應用》、ian goodfellow 等人的《深度學習》、李航的《統計學習方法》等。
程式語言可以學習 c++ 或者 python。c++推薦書籍《c++ primer》,python 推薦廖雪峰的 python3 教程。
需要學習的開源庫主要是 opencv 和一些深度學習機器學習的框架,比如 tensorflow 和 pytorch,這些都有較為完善的官方**和技術文件,中文社群也很繁榮。
(計算機視覺)計算機視覺基礎
opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...
計算機視覺
主講老師 曹洋 課程 視覺 基礎 底 層處理 影象處理 特徵提 取 中 層處理 影象分割 相機標 定 深度 估計 運 動估計 高層處 理 3d 重建 目 標識別 視 覺基 礎 底層 處理 圖 像處理 特徵提取 中層 處理 圖 像分割 相機標定 深度估 計 運動 估計 高層處理 3d重 建 目標 識別...
計算機視覺
眾所周知,計算機不認識影象,只認識數字。為了使計算機能夠 理解 影象,從而具有真正意義上的 視覺 本章我們將研究如何從影象中提取有用的資料或資訊,得到影象的 非影象 的表示或描述,如數值 向量和符號等。這一過程就是特徵提取,而提取出來的這些 非影象 的表示或描述就是特徵。有了這些數值或向量形式的特徵...