機器視覺新手應該如何學習?

剛上研究生,老師是做這個方向的,但和本科專業差別較大,不知從何下手


我覺得,題主和眾答主們先要明白什麼是機器視覺,什麼是計算機視覺。


CV其實是一個非常大的方向,我們平常知道最多的圖像識別屬於CV,SLAM屬於CV,AR/VR也屬於CV,以及……

這些方向雖然有交集,但還是有很多不同的。

如果你的方向屬於第一種,在保證機器學習(尤其是深度學習)基本演算法原理了解清楚的同時(理論學習推薦Ian Goodfellow的那本《Deep Learning Book》),保證Python coding能力跟得上(DL framework推薦TensorFlow或PyTorch,最高票說的C++其實現在的research用的不是很多,畢竟早就不是需要親自手撕CUDA的年代了,而且不適合idea的快速實現,學習成本也高)。

然後,更重要的是「追蹤你研究領域的最新paper」,打個比方,image classification/object detection雖說都是在折騰CNN。但是你要從別人的paper裡面知道為什麼要這樣設計網路結構,從AlexNet-VGG-GoogleNet-ResNet-DenseNet,RCNN-SPP-Fast RCNN-Faster RCNN-SSD-YOLO;甚至最新的GANs, DRL...看看別人究竟在解決什麼問題,還存在哪些可以改(shuā)進(bǎng)的地方?Deep Learning其實是有很多tricks的~

arXiv上每周都有值得看的新東西出來,保持paper閱讀量,多實踐才是真理~


我本科是學通信,現在的方向是計算機視覺。感覺可以給你一點建議。

首先機器視覺是一個很大的領域,近幾年比較火的話肯定是要和機器學習尤其是深度學習掛鉤的,所以有必要首先明確自己的大方向。

然後是代碼能力。傳統的圖像處理是離不開C++的,對於C++的學習,我覺得是一個仁者見仁智者見智的問題,畢竟C++是永遠學不完呢。講一下我的經驗,C++ primer是一定要通讀至少一遍的,我本科是學過C++的,但是讀了這本書之後感覺就像是白學了一樣。之後可以選擇性地讀一下effective三部曲(effective c++, more effective c++, effective stl)以及比較新的effective modern c++,對於實際工程能力會有比較大的提升。此外就是python了,作為人工智慧時代的第一語言,目前來說,做計算機視覺是肯定離不開的,推薦一下廖雪峰大大的教程,很詳細,對於有C++或者java基礎的應該會上手很快。另外,linux最好要用熟。

同時在這一階段可以熟悉下opencv(其實我現在已經很少用到),跑跑demo什麼的,網上這種東西是很多的。我記得我那個時候跑過人臉識別,車牌識別,感覺很有意思。opencv的話c++,python都是可以的玩的。此外,我大四的時候學過一門叫數字圖像處理的課,講的就是岡薩雷斯很經典的那本書,對於一些傳統問題有一個比較宏觀的了解。

演算法方面的話可能就要取決於你的大方向了,因為我是做DL的,傳統的機器學習演算法也經常用到。對於機器學習演算法的入門,網上有很多參考,西瓜書,andrew的視頻,統計學習方法,都很不錯。我的觀點是基礎理論的東西不能光看,一定要去實踐,把一些常用的演算法親手實踐一下,肯定是沒有錯的。

單單針對深度學習的話,其實現在門檻已經很低的,稍微找兩篇博客看一看可能都可以入門,大概唯一的門檻就是gpu了。

到這裡可能大方向入門就差不多了,剩下的就要看你具體的科研方向了。手機碼字,就這麼多吧~


看了樓上各位的回答,自慚形穢啊,現在每言及計算機必聯繫到機器學習、神經網路,讓我等情何以堪。只可惜現在實驗室我負責的數個項目,都沒用到機器學習,總體來說是因為處理的任務較為簡單,很多解決方案都可以依靠先驗模型來解決。

我一直用的是 Linux + OpenCV + (C++) + CUDA 這種搭配,Linux系統跑在嵌入式設備上,C++加OpenCV庫實現圖像處理演算法,對於實時性要求很高的應用,用GPU來優化部分代碼。如果題主以後的方向這是如此,可以先從簡單的OpenCV程序寫起,熟悉膨脹腐蝕、濾波、霍夫變換、otsu二值化、找連通集……然後再根據所研究的方向,看相關論文,熟悉一切常用的演算法和數學模型,對這些都了解熟悉後,再學習一些基本的GPU並行計算,整個學習周期不會太長的。

我是經過了以上步驟,才開始學習神經網路的……共勉!


公開課+coding+paper


數學基礎很重要


跟著師傅學

因為你之所以問了這個問題

那我可以假設你不會自學

而且你想找到最快捷的方法

其實所有學問都可以自己找資料學習

像你這樣的是知乎的另一類人

也是知乎價值所在

但是,我想說

這裡絕大多數是錯的,不嚴謹的,片面的,有誤導的

你若沒有老練的判別能力

多看書,多上學

保險點


挺基礎的,學這個唄,講的都不深,我們研究室的好像都是從這個入手的


謝邀,不好意思。。。我也是本科生,並且還學的不是這方面,個人建議:敲代碼敲代碼敲代碼。。反正代碼能解決一切問題


謝邀。不好意思我是本科生,我只知道需要學什麼……不知道怎麼搞論文


謝邀

學軟體工程的,機器學習是未來趨勢,接觸不多,了解不深,只是發表一些微小的見解

重點是演算法,提升準確性和性能是關鍵。需要學好數學基礎,會運用各種演算法和數學模型。熟悉至少一門編程語言,最好是C++,初學可以使用Python這種功能強大的封裝好的語言。

具體實現已經有人說過的,對於學習過程可以嘗試使用英偉達顯卡來實現,建立CUDA工程,加速運算。對於資料庫的實現可以嘗試用已有的一些神經網路資料庫實現來構建高性能的資料庫。

高性能學習場景不太推薦Python,這個語言一般使用解釋器運行,自學習需要非常長的時間。

實現機器學習可以參考caffe這種框架的實現,了解這個框架究竟是如何實現的。了解這些框架以後自然就能上手機器視覺了。

可以使用C++和OpenCV庫,文檔多,建立CUDA工程以後可以高效調用,自己可以試試實現一些例子(試試實現驗證碼識別等等,從簡單的開始)。

理論和實踐一樣重要,多寫一些代表學習階段的小程序,開源請大家批評。


推薦閱讀:

有哪些學習openCV的網站或書籍?
只掌握 C 基礎可以直接學 C++ 嗎?
如何評價ILSVRC2015?
如何理解CNN在CV與NLP領域運用的聯繫與區別?
計算機視覺的應用前景如何?可能有哪些不錯的應用?

TAG:Python | 機器學習 | C | OpenCV | 計算機視覺 |