在計算機視覺方向如何快速提升自己?

首先基礎的機器學習知識必不可少,因為傳統的一些方法就是手工特徵+機器學習方法等,在2012年以前的ImageNet視覺挑戰賽上獲勝,這裡安利一些資料,不過都是老生常談了。

如周志華老師的《機器學習》、李航老師的《統計學習方法》、《機器學習實踐》、吳恩達老師的cs229、李宏毅老師的機器學習視頻(B站就有),除此以外,基礎的圖像處理知識也是必不可少的,比如岡薩雷斯的《數字圖像處理》。

其次的話,就是深度學習了,2012年以後深度學習方法在計算機視覺領域一騎絕塵,經典網絡必須要知道,LeNet、AlexNet、VGG、GoogLeNet、ResNet、DenseNet、SENet等,還有一些輕量級的網絡,比如ShuffleNet、MobileNet系列,後續我也會在專欄更新相關論文的解讀。

在更詳細的任務中,有一些經典任務,上述的一些網絡主要是分類網絡,用於分類的,比如給一張圖,輸出圖片是貓還是狗,但是會有很多更復雜的問題,比如圖像既有貓又有狗,這時候網絡應該輸出什麼呢?這樣就衍生出了經典任務中的檢測任務、分割任務等。

檢測任務實際是輸出目標的位置和概率,位置就是用bounding box圈出目標物體。目標檢測大概的發展是這樣(本人水平有限,難免會有錯誤,歡迎批評指正),在一張圖中密集生成候選框,然後提取特徵+機器學習分類器,這裡就有一個問題如何生成候選框,滑窗法、隨機搜索法等,不斷髮展。

2014年出現了一個很出名的文章——RCNN,將深度學習用到目標檢測中,但是僅僅是將CNN作為特徵提取器。在此就不再贅述,RCNN系列(RCNN、Fast RCNN、Faster RCNN、Mask RCNN)、YOLO系列(YOLO v1、YOLO v2、YOLO v3)以及SSD,從去年開始湧現了一些anchor-free的工作,在ECCV 2018上出現了一個工作——CornerNet,提出了一個想法——把目標檢測問題轉換成關鍵點檢測問題,之後湧現了CenterNet、ExtremeNet等一系列基於關鍵點的目標檢測工作。

最近谷歌有一些NAS和目標檢測的工作,以及用強化學習的方式選擇數據增廣策略(近期我會復現該論文的數據增廣策略)。

像分割任務,是像素級的分類問題,同樣也有傳統方法和深度學習方法,深度學習比較經典的方法是FCN,輸出大小和輸入大小應該是一致的(這裡大小是長寬)。

目標追蹤任務和檢測任務有一些相似,但有一些不同之處,對每一幀進行檢測的效果和追蹤十分類似,但是目標檢測通常檢測的是已知類別,追蹤可以追蹤給定的第一幀裡的內容,有一些傳統方法、相關濾波方法以及深度學習方法,比如孿生網絡系列的文章。再衍生出來的話,還有Re-ID。

除此以外,還有很多很多計算機視覺任務,比如超分辨率、三維重建(還涉及計算機圖形學等),由於篇幅有限就不一一介紹這些任務的基本發展了,可以找一些論文自己研讀,注意不僅僅是最近的文章,還有上個世紀的文章,最好寫個綜述,看個幾十上百篇文章,讀讀代碼。

有一些計算機視覺、深度學習方向的課和書籍,比如李沐老師的《動手學深度學習》,有課有jupyter notebook,非常好,相見恨晚,還有花書《深度學習》、《計算機視覺:算法與應用》、《計算機視覺——一種現代方法》、《計算機視覺:模型、學習和推理》等。

課的話,可以看cs231n,非常經典的計算機視覺課程,cs224d,雖然這門課是nlp的課,但是RNN這些東西對時間序列建模有非常大的幫助,可以也關注一下。

最近需要的關注的還有GNN paper list,用圖的思想去處理一些計算機視覺問題,以及CV和NLP結合還有一些任務,比如很早之前就有的VQA、caption等,這裡有一篇論文可以參考一下,Trends in Integration of Vision and Language Research: A Survey of Tasks, Datasets, and Methods。

除此以外,代碼能力也非常有必要。

無論是傳統的數字圖像處理還是圖形學,最近我就在看一些圖形學的算法並打算逐一實現,還是深度學習方法,都需要有一定的代碼能力,平時多看看別人寫的代碼,學習一下,最近我就復現了一篇ECCV 2018的文章HairNet,相對我之前的代碼就非常工程化,也便於在其他設備上進行使用。

傳統數字圖像處理使用matlab比較多一點,圖形學使用C++多一點,深度學習的一些代碼主要基於python,還有一些深度學習框架,例如pytorch、mxnet、tensorflow、caffe、darknet等,目前這幾種都或多或少地使用多,安利前面兩種,pytorch目前也是比較主流的框架了,mxnet可以基於李沐大大那本書就學習,對理解底層的代碼比較有幫助,我就是通過那個代碼理解dataloader具體是怎麼實現的。

“快速”二字,我不知道該如何體現,這個因人而異吧,笨鳥先飛,勤能補拙,好好學習是會有收穫的,提升是不知不覺之中的,就像我不知不覺之中就從NLP、KG圈就跑去搞CV、CG了(滑稽臉.jpg)。

最近一些經歷給我一些感觸,傳統的一些數字圖像處理方法還是必不可少的,數學上很fancy,實際上可能也比較work,同時兼具解釋性等特點。入門計算機視覺,或者其他任何一個學科/領域,腳踏實地比較好,切不可建空中樓閣。


分享到:


相關文章: