我的研究生这三年(含腾讯AI Lab实习、CVPR发表经验)
作者:夢里風林
原文:https://zhuanlan.zhihu.com/p/54161673
之前在知乎發過實習和秋招的面經。見【2019秋招算法面經】,許多同學私信我,表達了他們初入研究生期間的迷茫,希望了解我研究生期間的成長路線。雖然說沒有適合每個人的方法,因為每個人的特點和所處的環境都不一樣,但有個參考總是好的,所以我在這悄悄把自己研究生三年的經歷寫一下,前面可能會寫的詳細一點,希望能對這些同學有所幫助。
1.??大四上學期(2016.1~2016.3)
大三暑假的時候去QQ郵箱實習,一直實習到了2015年12月,回到學校正是2016年的元旦,跟現在差不多的季節,開始跟導師討論畢業設計的思路,并動手實現。
主線任務:畢設
畢業設計做的是一個多模態行人檢索系統里的Java后端,跟班里兩個同學做的前端和硬件采集端合為一個大的系統。導師剛評上副教授,帶的研究生只有兩個人(后來又多了一個計創的師弟),雖然還有很多本科生,但是對我們的指導時間很多,是那種實干型的導師,會一邊給你理思路一邊給你準備資源。
拿到幾個大華的攝像頭、NVR和SDK之后,在B3五樓會議室里調C代碼讀寫數據,并且從Servlet裸寫Java后端(雖然實習寫Android把Java寫得很熟了,但是當時不熟悉Java后端框架,所以就直接Servlet)。寫了差不多兩個星期就寫完了。然后開始寫論文初稿,到一月底,畢設就基本完工,雖然后邊又各種調整,但基本的工作在這個時候都做完了。在這個Java后端里,把在QQ郵箱實習的時候熏陶的設計模式全都實踐了一把,感覺寫的挺優雅,但是好像有點過度封裝,不過也還好,這個系統就一直沿用下來。
在后邊研究生幾年里這個系統又被部署到超算虛擬機上,經過離線化等等變更。合作的兩個同學畢業后他們的Hadoop后端和JS前端,路由器硬件都變成我維護了(:з」∠)不過因為沒有特別大的改動所以還能Hold得住,一直到現在還在運行著。
支線任務1:自學
寫完之后就回家放寒假,因為有大把時間,所以開始刷GitHub,熟悉Git,Markdown,Gitbook,期間翻譯了一個當時Github上Star上萬的工程,大概講的是程序員的自我修養之類的東西,收貨了幾百個Star,后來因為在郵箱期間遇到的Webview問題沒徹底解決,心存執念,又開始翻譯Chromium的文檔,因為當時國內也沒有Chromium的中文文檔,所以就動手翻譯,也從中學到了許多架構設計方面的東西,雖然因為內容太多沒有最終翻譯完。
支線任務2:物資管理系統
畢設這套系統更偏向工程,還沒有一些計算機視覺的東西,當時導師就跟我討論就想是不是可以往這方面發展做點研究,于是開始學Python,因為我之前在學校學工辦勤工助學,實習的時候就跑路了,準備大四下回去在掙一點生活費,畢竟獎學金只夠學費,吃飯還是得自己想辦法(當時沒想到導師每個月給我們發的錢完全夠吃飯了),所以就用Python+Django寫了一個物資管理系統,當做回歸的見面禮,順便也是試手Python。這套系統從2016年3月一直用到2018年12月,因為之后我要畢業不在學校,辦公室那邊的同學維護不了,所以及時過渡到了以前的Excel工作模式。我感覺這套系統做得還挺好看的,實踐了一把當時比較推崇的Material Design。
支線任務3:羽毛球
每周1個半小時的羽毛球,一直打到現在,學校的體育館還是可以的。
2.??大四下學期(2016.3~2016.9)
主線任務1:畢設
這學期主線任務還是改畢設啦,改格式很煩(:з」∠)
主線任務2:入門機器學習
導師之前其實也不做機器學習,我也是自己摸索,當時TensorFlow,Caffe各種框架百花齊放,因為之前做Android比較喜歡Google,所以在TensorFlow還只是0.8版本的時候開始自學,看的是Google在Udacity上發的教程,一邊學一邊整理筆記,放到GitHub上又刷了幾百個Star。差不多5月的時候,導師也開始跟我們討論當前機器學習的一些進展和研究方向,因為發現調參很麻煩,所以想做一個自動調參的東西,用神經網絡來給神經網絡調參,然而當時我只有CPU,整天在Acer筆記本上呼呼呼地跑實驗,一直到暑假快結束了實驗效果也不好。后來發現Google用N多塊GPU做出了AutoML…后來差不多到研一導師才開始重視設備,所以這段時間更多的只是學TensorFlow和機器學習的一些基礎知識,也開始學會了做實驗,當然因為沒有設備這個方向在開學之后還是放棄了。
支線任務1:校園活動管理系統
因為回到了學工辦,受到當時雙創的影響,被那邊的老師抓去組了一個小小的創業團隊,準備寫一個校園活動管理系統。所以大四下也花了一些時間在這件事情上,帶著不同學院的幾個同學一起做東西,又寫Python又寫JS,雖然最后也沒搞成,但還是挺有意思的一段時光,遇到許多不錯的小伙伴。
支線任務2:博客
大概是到這個時候博客才開始放到Gitbook上,大多數是一些瑣碎的知識,后來也漸漸把論文解讀和一些工程實踐也放進去,還在一直寫著。
3.??研一上(2016.9-2017.2)
主線任務1:上課
研究生的課大部分沒什么卵用,我覺得我學到最大的技能就是讀論文,做PPT還有匯報…當然還是有幾門有用的課的:
視覺計算:傳統圖像處理的各種套路
模式識別:機器學習基礎
最優化計算:機器學習數學基礎,還順便學了一波LaTeX
主線任務2:行人重識別入門,確定研究方向
遭遇了自動調參任務的失敗之后,10月老師開始讓我調整方向,感覺導師在方向上的把握一直都很敏銳而正確。老師希望我還是關注回畢設做的視頻行人檢索任務上,于是開始看頂會上的各種行人重識別論文,不知道為啥當時老師follow鄭宇大佬的工作,關注多模態,所以我們整個實驗室大方向是多模態數據融合,我是行人重識別這個小方向,在畢設的系統里,發現基于Wi-Fi的時空信息能夠有效篩選行人之后,也想在行人重識別數據集上做相關的研究。
一開始看論文其實沒什么經驗,看到公式基本都覺得不懂,學了最優化計算之后才感覺看懂了,此外還有一個機遇是老師帶著我們去了一趟南京大學參加MLA,聽了各路大佬的論文解讀和方向指引,期間也看了大量的論文,開始對機器學習這個領域有一個整體的把握,之后看論文就得心應手了。
回到研究上,看論文之后再去調研數據集,才能知道從哪里下手??梢暬且粋€很重要的手段,一邊各種數據分析加可視化,一邊跟導師討論(老師經常半夜十一二點跟我QQ討論進展)我們才將目標剝離為無監督時空+視覺這個干凈的方向,差不多就到11月了;在這個學期主要是嘗試構造時空模型,并想辦法和視覺模型做融合。當時Re-id還沒有那么多方便的Baseline,我用的是鄭哲東的MATLAB baseline,用了MatConvNet這個框架,也是走了一點彎路,一邊準備考試一邊做實驗,差不多到要寒假才把視覺模型的訓練和測試都理順跑通。寒假期間開始把時空模型和視覺模型結合起來,有了一點初步成果,這部分是用Python寫的,所以這期間一直在Python和MATLAB之間反復橫跳。
這個期間拿著老師給的5W買了一臺三卡機,三張TITANX,總算有顯卡可以用了…代碼也開始放到服務器上跑,這個方向設備真的還是很重要的,我覺得至少要有一張11G的卡吧…
支線任務:PS
因為在學工辦兼職,需要做一些海報之類的,本科的時候在學院的宣傳部做過,就扛起了學工辦所有的海報設計…雖然水平不高,但至少能用。
2016年就這樣過去啦:
4.??研一下(2017.3-2017.8)
主線任務:推進實驗進展
放假回來還是繼續做多模態融合,思路還是從實驗里找,各種可視化,摸索出可以建模噪音這樣的思路。差不多5月的時候實驗基本能保證有效了,導師想投NIPS,開始寫了一點點論文初稿,但是因為時間太趕,實驗還不完備,就拖著沒投,繼續完善實驗,進一步想用Learning to Rank來改進模型,從調研到選路線到推實驗。期間因為支線任務1學了Keras,所以把代碼都改成了Keras實現,代碼寫起來非常清爽,也都整合到Python里了,并且用各種技巧把視覺模型baseline復現到鄭哲東他們TOMM的水平,暑假也一直在調Learning to Rank,直到效果滿意。
支線任務:百度寵物狗分類比賽
發現了這樣一個比賽,然后加了比賽群,聽各路大佬吹牛(里邊有很多大佬在知乎哈哈),學到了很多套路的東西,包括調參技巧,刷分技巧之類的。這些東西雖然不是必須的,但有了之后會事半功倍。同時也學了Keras,加了Keras群,先試水寵物狗分類,把Keras套路用回ReID。雖然這個比賽沒刷上去,但開闊了視野,我們不僅有實驗室,同學這樣的來自學校的力量,還有來自社區的力量可以汲取。
5.??研二上(2017.9-2018.2)
主線任務:CVPR論文
9月把實驗都整理好,老師開始寫論文,我也一邊寫實驗的部分,雖然后來基本上還是都被導師重寫了,畢竟老師寫起來確實比我寫的好很多。各種畫圖,各種修改。直到十月底投出去,老師還在學院樓睡了一晚,真的很辛苦。好像是到1月的時候CVPR review,然后寫Rebuttal,應reviewer要求補了很多實驗來rebuttal。過完春節,某天好像聽說出結果了,然后發現已經AC了。
支線任務1:樹莓派系統
因為老師想要以后把工作重點放在行人重識別上,所以需要搭一套實驗平臺,包括采數據的終端和存數據,檢索的后端。以前那套系統基于Hadoop太笨重了,所以我重新寫了一套系統。買了一堆樹莓派、攝像頭和無線網卡,在樹莓派上跑行人檢測,把數據存到MongoDB,用Spring boot來寫后端。感覺寫工程開始變得很容易,Spring boot也就簡單看了幾天視頻教程就用起來了。只要把一些難點攻克了,之后寫起來就很流暢。這個事情做了一個月,然后交給幾個大二的本科生接手了,但師弟們之前只學C++和數據結構和算法,不太推得動,有爛尾的趨勢,估計我研三下還得把這個東西自己拿過來推進。
支線任務2:動物計數橫向
跟一個創業公司合作,做一個數牛的項目,主要還是用樹莓派和目標檢測那堆東西,加一點物理知識做計數,做出來效果還行。技術上難度不大,但是跟甲方討論還是一件挺費時間的事情,需要及時推進和協調。
支線任務3:目標檢測
寒假期間看了目標檢測方面的經典論文,為下學期找實習做準備,雖然我是做行人重識別,但是重點其實還是在多模態上,對計算機視覺方面的東西還是停留在課程里學的東西上,以及Re-id一些論文。其實應該把分割和人臉方面的一些論文也都看一看的。
2017年就這樣過去啦:
6.??研二下(2018.3-2018.8)
主線任務1:論文
首先是把CVPR的論文整理成camera ready,然后是繼續改進,想得到進一步的提升去投期刊。試了很多技巧,感覺創新點夠了,但是效果還是沒太大提升,所以一直沒投出去。
主線任務2:實習面試
投了幾家公司的實習,面試,一邊刷牛客網上的題,因為我不是專業的ACMer,而且也有別的任務要做,沒法把題都刷完,所以刷題只是找找感覺,基礎知識也只是看藍皮書和西瓜書,大部分面試都是裸考。好在還是找到實習了,具體經歷在知乎上答過:傳送門
主線任務3:鵝廠實習
到AI Lab實習主要還是研究類的工作,感覺在這期間填補了之前在CV上欠缺的一些認識,發現原來網絡結構啥的可以玩出這么多的花。具體不便多說,保密哈。
主線任務4:秋招
我的2019秋招算法面經
支線任務1:實驗室基礎設施建設
跟師弟一起搭了實驗室的Git平臺,還有網站和博客,所以2018年在GitHub上提交的代碼可能少一點點。
7.??研三上(2018.9-2019.1)
主線任務1:期刊論文
讀了18年的一些頂會論文,獲得了啟發,找到有效的提升方法,現在實驗做完了,效果很好,希望能在春節前把論文投出去。BTW,回來給實驗室買了兩臺GPU服務器,實驗室目前有3張TITANX和12張1080ti,還有若干1060,師弟們都轉Reid了,卡要多一點才夠用。
主線任務2:畢業論文
SCUT總能時不時坑你一把,去年論文是研三下才送審,今年就變成1月送審了,于是生死時速開始寫論文,現在寫好了,等導師給修改意見就準備去查重送審了。
2018年就這樣過去啦
8.??研三下(2019.2-2019.4)
待續
小結
稍微寫幾點體會吧:
讀研期間有一個好的導師真的很幸運
要盡快確定一個還有研究空間的方向,前期要多讀論文,多總結,開闊視野
CV方向至少要有一塊卡,實驗室沒有的話,盡量自己買一塊吧
確定方向之后多做實驗,多做分析,多跟他人尤其是導師溝通
工作的事情是水到渠成的,在學校能出成果最重要,盡量在研二上把論文投出去
現在環境比我們當時好了很多,框架成熟,baseline開源代碼到處都有,大多數實驗室也都意識到設備重要性,所以都有設備了,但是競爭也更激烈了,大家要加油呀
掃碼?回復?1024?獲取超值禮包
周末不打卡了,好好休息放松,不知道會不會一如既往加雞腿鴨哈哈
總結
以上是生活随笔為你收集整理的我的研究生这三年(含腾讯AI Lab实习、CVPR发表经验)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十万条评论告诉你,给《流浪地球》评1星的
- 下一篇: “达观杯”文本智能处理挑战赛,季军带你飞