計算機視覺方向博士如何做好科研?

本人剛剛保研結束,計算機視覺方向直博,對計算機視覺很感興趣,想踏踏實實研究一番。基本掌握pyhton和c++等編程語言,不精通;對於深度學習的框架也只是有些了解,基礎比較薄弱。目前有這樣幾個困惑:(1)如何提升自己的硬功夫,即面向科研工作時候的coding、paper reading等 (2)如何對計算機視覺這一領域有good idea,當前研究熱點,新的思路可以有哪些渠道獲得(3)博士可分為哪些階段,即哪一階段需要做哪些準備。

還請各位大神指教


我基友邀請我了就回答一下,僅僅只做參考

(1)無他,唯手熟爾,就是多讀多寫。論文就是越讀越快的,我還是本科生的時候我導師告訴我剛入門時候要精讀十篇好文章,我現在指導師弟師妹也是給他們挑好幾篇文章讓他們反覆精讀,起初水平不夠的時候看論文很慢,經常抓不住重點都很正常不用急躁。讀多了自然就越來越快了,後期看個摘要,看個插圖甚至看個題目都明白大致內容了。關於coding就是多寫,多去模仿,非計算機科班出身的我剛讀博的時候代碼很差,現在也不算好,但是這幾年在學習別人的代碼後也在慢慢提高,所以現在對於剛進實驗室的師弟師妹我都對他們的代碼有點要求,至少要做到模塊化和復用性,現在github開源這麼多有很多好的代碼可以去模仿學習,跑跑開源代碼多去寫寫,非常忌憚一個現象就是不動手去寫,總是只跑開源代碼,跑一個換一個框架,沒有開源就什麼也不會了,要動手自己去復現一些程序。

(2)good idea,這個我一直認可我導師的觀點。我導師說有時候創新點不是整天天馬行空想出來的,而是在你看了很多文章做了很多實驗之後自然而然產生的,我的感覺也是這樣,當你看了很多文章之後,你會發現解決A問題的思路可能在B問題上能夠得到啟發,當你做了很多實驗之後你才能發現論文里隱藏的瑕疵點或者在某些場景下不適用,發現了問題很自然的就能想到一些解決的ideas。

(3)博士可能分為入門啥也不懂,入門了開始焦慮,有點感悟開始有成果,打通任督二脈成果井噴階段,當然這個問題太主觀也不知道準不準確。剛直博的時候可能還帶著一些本科生的稚氣,總是想有老師教你,喜歡讀教材,重視上課和考試分數,不喜歡看論文,其實博士研究和本科素質教育差距很多,博士研究講究專而精,本科教育是廣而泛,所以很多本科生的方式不適合博士研究了,比如有些課程對你研究一點用都沒有,(逃課這種事情我沒有說,概不負責。。。),這個階段可能就是啥也不懂啥都想學的階段。之後你可能有點入門了,也有自己的課題了,你會發現讀博比你想像中的難多了,本科時候你可能是學院里的佼佼者,滿腔自信,但是你已經變成了學術界最弱的菜雞,一篇論文里密密麻麻的公式滿腦的不懂,第一篇論文遲遲出不來,你開始焦慮了,是否自己能夠畢業。之後你經過很長一段時間的煎熬,你終於跟蹤上了課題領域的前沿,終於有了一篇paper發表了,也學習了如何寫論文,如何和reviewer交流。你已經把握住了領域的前沿,了解了過去的工作,心態也開始輕鬆了,現在滿腦子的騷操作,這時候應該已經是博士中後期,寫論文得心應手,看了大量論文知道什麼樣的工作能發表什麼水平的paper,知道不同的工作有不同的講故事手段,那麼成果也會迎來井噴。

以上回答了題主的三個問題,後面是我的一些個人看法。

(4)現在做視覺的人太多,全世界最聰明的一批人都在做cv dl ai,所以發表一篇好paper真的不簡單,你的idea別的學術老油條們很容易就能想到,做的還比你漂亮,所以橫向比較那些做理論方面的博士同學可能成果比你早比你多,一定要沉得下心保持自信持續努力,厚積而薄發。

(5)博士我認為還是要open一點,閉門造車一個人搞還是太難,多去接觸接觸大牛們的工作,多去聽聽別人的分享,並且也勇於分享自己的見解與工作,多與別人交流討論,是有幫助的,多於一個博士而言,除了做出好的工作以外,writing 和presentation 的功力也非常重要,如何精確簡潔的用文字描述你的工作,如何面對不同類型的聽眾來做一個合適的報告,都是很重要的技能,這些平時多思考,多學習,多嘗試都能慢慢提高。

(6)努力與專註,做科研並不有趣,需要你自己內心對科研真心的喜歡,會自主的去關注最新的工作,會為自己做出的工作有自豪感,能夠從研究工作找到樂趣,保持每天都努力,完成這場博士學位的馬拉松。

(7)對於視覺而言,arxiv的cvpr版塊是每天都必須關注的,cvpr iccv eccv三大頂會,pami ijcv等頂刊的論文必須熟知,iclr npis aaai等次相關的頂會也要關注。tf pytorch keras mxnet caffe等框架至少熟用一個,也要關注這些框架的更新動態。新智元,機器之心,paperweekly,ai研習社等等工作號也都可以關注,每天都會發布領域最新動態。曠視科技,商湯,微軟亞研院,圖森,依圖,騰訊優圖等等企業也都可以去申請實習,裡面真的大牛太多,資源太好,會學到很多東西。

(8)願你做有用的科研,做最好的工作。這裡我非誠喜歡胡國聖老師在朋友圈發的三句話,希望他不要打我


跟樓主走過一樣的時期,一些拙見:
1,首先一定有motivation,不論外面的資本再瘋狂,也要守住初心,抗拒誘惑,堅守自己的熱望,每天醒來的時候因為有那麼多的新的discoveries在晚上睡覺的時候出現而感到開心,這是一個最好的時代;
2,可以花一點時間夯實自己的基礎,Bishop的《Pattern Recognitions and Machine Learning》以及Ian Goodfellow的《Deep Learning》可以試圖先看一遍(如果不是有一定經驗,第一遍看完大多數有點似懂非懂 and That』s ok,看不懂就略過,去看論文的時候不懂得再回來看… 跟背GRE單詞套路差不多),準備好把這兩本經典在你PhD的不同時期,反覆的看,每次看都會有驚喜(至少我是這樣)能讀英文就讀英文版;另外吳老師的課也是很優秀的,cousera跟百度雲,能省你幾百刀lol
3,編程基礎,Python/lua/matlab/C++ 現在是最流行的幾種語言,作為科研人員,python當然是強烈的推薦了,因為快,因為publications開源的代碼大多也是Python,或者像Yolo基於作者自己寫的darknet這種也很快會有python版本出來,life is short, use python.
4,框架,OpenCV不用說了,你離不開它…… 關於深度學習框架,yangqing老師說得好,框架都是框架,不管是symbolic的還是imperative的,底層都是跑的一樣的東西,關鍵是能出活。我自己的一點經驗,使用過Caffe/Tensorflow/Caffe2/Pytorch 之後覺得 目前為止Pytorch真的是我個人覺得最最適合科研人員的一個框架,十行就能寫一個CNN,若是tensorflow,光graph 跟 session就很verbose,(你可以感受下,tensorflow:https://github.com/KleinYuan/cnn,pytorch:https://github.com/KleinYuan/caffe2-rl/examples/cnn.py), 外加很多好的演算法pytorch都有對應的開源代碼,production環境轉換成caffe2也是相當easy。當然Tensorflow的好處也有很多,比如tensorboard visualize更友好,提供了很多的API,可以各種操作tensor,google cloud版本tensorflow性能更是極大提升單機版的性能,然後TensorRT3 也開始支持tensorflow,社區用戶群強大,例如伯克利cs294 就是用tensorflow作為教學語言(更新:tensorflow今天終於出了eager模式,可以像pytorch一樣愉快的debug 跟 hitrun了,不過tfe跟tf api現在兼容性還有待觀望跟提升)。


當然了,全部框架都會是最好的lol,如果可以,為什麼不呢?

5,學術追蹤,找一個iOS或者Android的RSS訂閱app,訂閱arXiv上stat.ML/cs.AI/cs.CV 確保你每天能看到最新的paper(平均每天50-100篇不等),不感興趣的可以看個title就略過, 感興趣的看看abstract,然後mark 晚上download下來放到Mendeley里,你可以跟你導師(如果他會這麼做)一起在Mendeley上協作(comments是可以sync的),另外微信公眾號機器之心,新智元,AI科技評論之類的也可以關注
6,交流,一定要找到一個group跟你一起相互交流brainstorm,閉門造車很低效率
7,多寫代碼,沒事的時候把自己喜歡的paper 用自己喜歡的框架 implement 下,一來鍛煉自己對paper的理解,二來鍛煉自己的代碼能力,三來造福吃瓜群眾。

大概就能想到這麼多了,加油!


亂七八糟的基礎我就不說了,說一個大致的路子。

首先,選中一個方向,這個一般是你和導師決定的,一個導師水平的高低,幫你選方向的能力,直接決定你未來在這個領域能不能做出好文章。大方向上,是做分類,檢測還是切割,或者是做去噪去霧超分,還是說做三維重建之類,又或者是做生成,做偏應用的也是可以的,這些都是很重要的。

然後開始惡補文章,先選這個領域裡最新的頂會論文,然後根據它的引用文獻層層往回找,視覺這個領域發展的也不算久,正常往回找,基本00年左右的論文就已經算老了,想辦法把從傳統視覺到深度學習過程中的文獻都過一遍,一般來說,小領域裡對應文獻不會超百篇的。在過論文的同時,去復現一下最新論文的代碼,或者能找到開源代碼讀懂也行。

完成上面這個步驟之後,實際上你應該對小領域有一個比較清楚的認識,同時復現出代碼之後,也基本有能力有想法改進思路了,此時可以開始做自己的第一篇文章了,我個人建議做一些短文,投個icip,icpr,icme這種盛會型會議的short paper,熟悉套路,了解寫作過程,哪怕最後被拒了,也多多吸收審稿人的意見改進。

再後面其實沒啥好說了,及時跟進論文,有興趣的可以把相關小領域的論文也讀一下,啟發思路,多跑實驗,多做復現,多寫論文,基本可以是一個合格的phd了。


謝邀。我也只是一個碩士,不敢妄加指導。不知道你做的是那種傳統的CV還是深度學習下的計算機視覺。如果是深度學習,最好會用Python或者MATLAB,機器學習(周志華老師)和深度學習(Goodfellow和Bengio的那本)好好看一下,熟練用一個深度學習庫(TensorFlow,caffe,Pytorch等),然後圖像分類(vgg,resnet,inception),檢測(faster-rcnn ,ssd,yolo等),分割(fcn,deeplab)模型練練手,然後就是找准一個具體方向(比如圖像跟蹤,超解析度,三維重建,視頻處理等等)深入研究。經常看arxiv或者頂會論文,沒事復現一下好idea。。。爭取早日發出頂會論文。
坑還是留給大神來吧,拋磚引玉~
@Naiyan Wang
@魏秀參
艾特兩個知乎大佬


做CV的實在太多了,每天要關注arXiv上的最新文章,可以訂閱,這樣就可以每天收到郵件了!


答主和題主的經歷相似,只是比題主早一年。去年大四保研後,十月份進的實驗室。

最開始做的事情,就是學Python了。然後計算機視覺領域的相關問題(分類,定位,檢測,分割)的解決方法,目前最火熱的,自然是深度學習了。這方面,我是從CS231n入的門,知乎有Stanford CS231n 2016winter課程的全部的授權翻譯,包括課後作業,強烈建議自己動手碼一遍,能夠加深理解並且對後面各種network的實現有幫助。

然後就是學深度學習的框架了,那會直接接觸的tensorflow,所以也一直用著。不得不提的一句話就是,現在pytorch在研究領域的熱度已經超過了tensorflow(至於為什麼,有一個專門吐槽tf的話題),而且答主本人在用過pytorch之後確實覺得比tf要簡單直觀好用的多,但可能就是用久了習慣了= =,也沒多大落差。所以這方面就看題主自己的個人愛好吧。

然後就是實現各種popular network,比如,inception及其進化版,vgg,resnet,SSD以及RCNN及其不停進化版等等。一是讀文章了解大佬們的idea,二也是學了框架練練手。

總之,答主也是剛入門的菜雞一枚,分享一點拙見,還請各位知乎大佬不吝賜教,也希望樓主加油!一起努力!


有些答主說的挺好的了。我添一個好像大家沒提到的,就是每年爭取暑假實習,去一些靠譜的有研究能力的公司,現在一些CV創業公司和大公司的CV組都很吊。

我知道有些老闆不讓實習,但是看你的能力是否能說服老闆了,談判需要技巧,需要能互惠。


剛上碩士,學深度學習已經兩個多月了,方向是計算機視覺方面的深度學習。

凡是涉及到演算法,都離不開數學,你是直博生,更需要好好學數學,不光是實現別人的idea,更是自己推導爭取自個兒鼓搗出一個小創新。計算機視覺方面做理論和工業是兩碼事,一碼是仔細研究推導結論,一種是上手框架學會使用,方向得選好了。

前幾天實驗室給配電腦,自己配了一個不錯的顯卡(1060)算是入門,不知道你具體什麼方向,現在最火的還屬深度學習,做這方面還是很靠硬體的,我現在數據集靠cpu跑已經需要小半小時了,以後再加起來必須需要GPU了。所以說,搞這方面設備也需要考慮考慮。

關於學什麼怎麼學網上很多大神都在說我就不多說了。我自個兒是先過了一遍機器學習,然後開始看深度學習。同樣也是找一個框架學習(TensorFlow、caffe)看看別人的論文,部分實現idea。然後自己慢慢學習就行了。

最好最有效地搞科研當然是找一批志同道合的夥伴了,一塊努力一塊學習嘿嘿,歡迎聯繫我。


不是什麼大神,也不怎麼搞深度學習,但我實驗室很多人搞深度學習

覺得有的答案非常誤導人,可以說,這種強答的答案雖然是出於好心,但如果會誤導人不如不答

首先深度學習和cv的任何一個類別都一樣,基礎都是要鞏固的

所以我建議答主 學習opencv 這本書是一定要看的,雖然這是opencv1,代碼部分可以略過。要用c++做深度學習的話,可以看張靜翻譯的那本opencv2 cookbook.

然後你需要的是理解什麼是全連接網路,什麼是cnn rnn等等的基礎知識,這些可以看公開課或者是直接看看人家的博客都行

之後可以買一本深度學習框架的基礎書(比如pytorch或tf的),和花書 深度學習 一起結合著看,看不太懂也沒關係,反正慢慢就會懂了。

但是最最最重要的是要看你要做的具體方向的論文。你做什麼,看不懂什麼,你就去學什麼。不是我先把東西學會了,然後再去搞,你永遠都學不完也學不會所有東西的好嗎?

還有什麼資料庫的,如果你是搞dl的,就別學了,這些看一下人家開源代碼是怎麼導入數據訓練的就會了,別浪費時間。

另外我覺得搞深度學習相比cv的一些傳統領域,很大的優勢在於它有非常多的開源代碼可以提供給你學習,相比一些底層cv的只有文章沒有代碼的已經算是非常良心了。這些代碼很重要,多看別人的代碼如何實現,有什麼巧妙的和值得注重的東西,這很重要,再痛苦你也得啃明白。

對於初學者來說,這些很重要。之後的東西,隨著你的研究的深入,你會慢慢知道自己該看些什麼,該在什麼地方發力,另外不要忽視師兄師姐,多點請教他們。

另外的話就是,博士時間很寶貴,一定要跟對導師找對可行的方向去做。做錯了方向或者搞一年多兩年也做不出來,要換方向那就很蛋疼了。

大概就醬。


我也是視覺方向直博的,博一(研一)才倆月,只能說說目前的體會吧,已經感覺很大壓力了,因為基礎太差,感覺什麼都不會。
首先要有紮實的基礎,要不然以後搞科研肯定會有好多坑。不知道你本科是學什麼的,也不知道你具體是哪個方向,我就隨便說了,感覺在你研究生開學前要打好下面的基礎
1.C++/Python至少熟練掌握一種,MATLAB作為輔助
2.數據結構
3.資料庫系統,可以看《資料庫系統導論》或《資料庫系統概念》
4.岡薩雷斯的《數字圖像處理》,並結合《數字圖像處理》MATLAB版或opencv編程手冊進行練習
5.機器學習基本演算法,可以參加吳恩達在Coursera上的機器學習課程,最好把練習題和編程做了
6.《矩陣分析與應用》,張賢達
7.英語辭彙,GitHub
如果你已經具備了以上知識或技能,大四可以好好浪了,或者學點其他的。我保完研大四浪了一年,而且上面的都不會,現在感覺壓力好大


感覺有些人就不要強答了。。。


大四以及博一的這兩年打好理論基礎,你是博士,路還很長,基礎真的很重要。數字圖像處理分析、矩陣分析、隨機過程、非負矩陣和張量分解、凸優化、模式識別與機器學習、深度學習、計算機視覺、人工智慧這些課一個不落地學下來,因為你是博士,然後gpu和fpga要會一個。如果有導師或師兄師姐指導當然最好。


推薦arXivFellow,到它的官網可以下載Android、Windows等客戶端,可以每天跟進arXiv的論文。


借大神們樓,還有一年考研,小弟我想深入發展計算機視覺,請問在廣東里華工,中大,深大。哈工大深研院等哪個比較合適?(就我所知華工有個別老師還不錯,但考研競爭特別激烈),希望過來人能給我個建議。其他三者相對了解少一些


做cv的是真心多…


導師呢!?


同今年計算機視覺直博生,圍觀各位大神。希望可以共同探討學習哈,因為現在也處於迷茫階段


佔個坑,回寢室了再答


隨便寫點

讀博士是要做學問的,學問學問,讀了十幾年書再讀博士,你要知道,學的東西是用來問問題的,而計算機視覺就是一個典型的問題領域,那就是如何讓計算機擁有人類一樣的視覺。

這個問題其實研究了很多年,最開始做人工智慧的覺得一下子讓機器擁有人類一樣的智能似乎有些不切實際的困難,那我們就先讓它擁有像眼睛一樣的視覺吧,於是便有了計算機視覺這個領域,然而這個領域發展了很多年,雖然有很多人在研究但一直沒有實質性的突破,直到有一個華人女科學家,也就是現在非常著名的Li Feifei提出來這樣一個問題,那就是既然我們小孩子從一出生到基本能夠識別日常物體要大概三年左右的時間,期間要處理數以億張的圖片,那麼我們是否也設法讓我們的系統能夠通過學習海量的樣本來解決機器視覺這個問題呢?然後她就設法搭建了imagenet資料庫(過程很坎坷,具體可以看她在ted論壇上的演講)並舉辦了ilscrc的一系列挑戰賽,然後就有了後來的卷積神經網路在比賽上的突破,然後就是深度學習的快速發展等等。。其實我並不確定這個問題是不是她最先提出的,其實很有可能不是,但是是她

最先將這個問題部署到了一種可能解決的程度

這點很關鍵,這就是為什麼她能取得如今在領域中的重要地位的原因,能解決問題的人很多,但真正發現問題,提出問題的人永遠是少數,而這些人講永遠被歷史銘記。


感覺就跟著你們導師走吧,如果導師是這方面的應該很爽,我導師就不是,都靠自學


我也曾做過計算視覺的優化。總體感覺這是一個非常有應用含金量的方向,從擬高分辨預測、特徵提取到損傷修復和明暗度預增,好的成果容易拿來申報專利並創業,且易於向投資人展示。


從tango的傻大笨,到iphonex的從體積到計算能力的飛躍,已經預示了CV,乃至延伸的slam技術的巨大風口即將形成。立個flag,兩年內CV和slam手機應用會迎來爆發。兄弟你正當時阿。


門外漢一枚。計算機視覺是不是常說的智能圖像識別?


我覺得比較好的方向是:增加識別的判斷依據。我了解的圖像識別主要是形狀和顏色,即根據圖像顏色的變化描畫輪廓,根據輪廓來與記憶庫中的形狀作比較,以便於識別圖像。這種圖像識別僅能用於識別標準圖像,比如機動車號牌、人臉識別。

但是僅僅是顏色和形狀,功能有限是正常的。

一個可以考慮的方向是:比例尺。一輛汽車和它的等比模型,人眼一下就能分辨,一個是玩具,一個是真傢伙。而計算機就不行。

要想弄對比例尺,兩個攝像頭是必須的,然後根據兩個攝像頭中標準圖像的角度差計算出圖像與攝像頭的距離,根據距離來計算圖像所對應的外界實物的真實尺寸。體積大小是非常重要的識別標準。畢竟製造一個等大的模型很少有人做,除非出於特別的目的。

有了比例尺,計算機就能將圖像中的各元素,安排在遠近不同的空間內,也就是,下一步可以研究的進階方向是:讓計算機視覺具備空間感。這個我感覺,無人駕駛想要超車的話,會用到。


推薦閱讀:

TensorFlow有哪些令人難以接受的地方?
pattern recognition and machine learning這本書怎麼看?
國內做計算機視覺或者機器學習比較好的實驗室有哪些?
BRETT 機器人算有「學習」的能力么?
「社交網路分析」是門怎樣的學科?

TAG:人工智慧 | 圖像處理 | 機器學習 | 計算機視覺 | 深度學習(Deep Learning) |