0
| 本文作者: 奕欣 | 2018-04-29 08:20 |
雷鋒網(wǎng) AI 科技評(píng)論按:本文首發(fā)于 ApacheMxNet,作者李沐, AI 科技評(píng)論獲作者授權(quán)轉(zhuǎn)載,經(jīng)不改動(dòng)原意的編輯。

有人曾問(wèn)我,開(kāi)發(fā) MXNet 時(shí)候感覺(jué)最難的是什么。我會(huì)毫不猶豫的覺(jué)得「重復(fù)論文里的實(shí)驗(yàn)結(jié)果」是最困難的一點(diǎn)。舉三個(gè)例子:
Lin Min(Network in network 提出者)在 16 年的時(shí)候發(fā)現(xiàn) MXNet 在 ImageNet 上面訓(xùn)練的模型精度比 Torch 低 1%。為了 debug 這個(gè)事情甚至開(kāi)發(fā)了一個(gè)插件可以在 MXNet 跑任意 Torch 的代碼來(lái)對(duì)比結(jié)果。最后發(fā)現(xiàn)原因是我們圖片裁剪后默認(rèn)使用 JPEG 的 85 質(zhì)量保存,改成 95 質(zhì)量就可以補(bǔ)上丟掉的精度了。
在 Inception V3 論文出現(xiàn)后 Bing Xu(GAN 的作者之一)第一時(shí)間去重復(fù)這個(gè)工作。因?yàn)?Google 沒(méi)有公開(kāi)代碼,而且論文里面細(xì)節(jié)不明確。幸好認(rèn)識(shí)原論文作者可以問(wèn)問(wèn)題,但前后也花了好些天才重復(fù)實(shí)現(xiàn)出來(lái)。
我在 CMU 的博士導(dǎo)師之一(他在 Google 報(bào)告給 Jeff Dean)曾在一次報(bào)告里面說(shuō),他參與了一個(gè)內(nèi)部的從 TensorFlow 前一代系統(tǒng)移植代碼的工作,發(fā)現(xiàn)在 TensorFlow 上精度死活丟了個(gè)點(diǎn)。前后花費(fèi)了好幾個(gè)月時(shí)間找問(wèn)題,最后發(fā)現(xiàn)是移植的代碼在使用圖片增強(qiáng)的時(shí)候順序跟原先不一樣。
三個(gè)例子的主人公都是頂尖的深度學(xué)習(xí)領(lǐng)域研究人員,但仍然很容易被一些細(xì)微的實(shí)驗(yàn)細(xì)節(jié)耗費(fèi)大量寶貴的時(shí)間。一個(gè)模型通常多達(dá)數(shù)十到數(shù)百層,不管是模型初始化和數(shù)據(jù)讀取都是隨機(jī),每次訓(xùn)練也需數(shù)個(gè)小時(shí),這些都讓 debug 變得很困難。
當(dāng)然,幸運(yùn)的是,最近這些年隨著開(kāi)源的深入人心,很多論文都可以找到開(kāi)源的實(shí)現(xiàn)。對(duì)于大部分用戶來(lái)說(shuō)不需要自己從頭開(kāi)始實(shí)現(xiàn)一篇論文,去 Github 找個(gè)實(shí)現(xiàn)用就行了。但這個(gè)并不能解決所有問(wèn)題:
網(wǎng)上的實(shí)現(xiàn)良莠不齊,很多都是新人練手之做??赡芤淮蟀氩荒苤貜?fù)出論文的結(jié)果
每個(gè)項(xiàng)目的實(shí)現(xiàn)多多少少有點(diǎn)不同,例如輸入數(shù)據(jù)格式,用什么樣的深度學(xué)習(xí)框架,代碼風(fēng)格不一樣。每換一個(gè)項(xiàng)目上手成本很大。
個(gè)人維護(hù)的項(xiàng)目通常只關(guān)注在某些地方,例如只關(guān)心某個(gè)數(shù)據(jù)集上的訓(xùn)練。但實(shí)際使用的時(shí)候大家會(huì)關(guān)心如何部署,如何換一個(gè)數(shù)據(jù)集訓(xùn)練之類。需要花費(fèi)時(shí)間做二次開(kāi)發(fā)。
最后代碼維護(hù)者很容易棄坑。例如我博士期間寫過(guò)一些項(xiàng)目,但之后工作和生活重心轉(zhuǎn)移,沒(méi)有精力才去回復(fù)用戶的提問(wèn)。對(duì)于用戶來(lái)說(shuō),如果碰到一個(gè)坑,如果不能很快的溝通維護(hù)者,很容易導(dǎo)致被小地方困住大量時(shí)間。
理解到這些痛點(diǎn)后我們幾位從事計(jì)算機(jī)視覺(jué)的小伙伴,Zhi Zhang (@zhreshold), Hang Zhang (@zhanghang1989), Tong He (@hetong007), Eric Xie (@piiswrong), 拍了拍腦袋說(shuō),那我們來(lái)動(dòng)手做一個(gè)工具包來(lái)試著解決這些問(wèn)題吧。
我們想做一個(gè)不僅僅是資深用戶(數(shù)年計(jì)算機(jī)視覺(jué)經(jīng)驗(yàn))能用的工具包,而是一個(gè)能幫助更加廣泛用戶(數(shù)月計(jì)算機(jī)視覺(jué)經(jīng)驗(yàn))的項(xiàng)目。他們包括
希望能將視覺(jué)技術(shù)快速應(yīng)用到產(chǎn)品的工程師
希望提出新算法的研究者
當(dāng)然,如果你剛開(kāi)始學(xué)習(xí),請(qǐng)參考《動(dòng)手學(xué)深度學(xué)習(xí)》,或者你對(duì)計(jì)算機(jī)視覺(jué)外的應(yīng)用感興趣,請(qǐng)期待我們之后發(fā)布的工具包。
基于我們的用戶假設(shè),這個(gè)工具包提供如下的功能:
最近幾年重要論文的復(fù)現(xiàn)
詳細(xì)文檔提供使用說(shuō)明和代碼講解
提供預(yù)訓(xùn)練的模型可以直接使用
性能評(píng)測(cè),方便大家在不同模型之間做取舍
每個(gè)模型實(shí)現(xiàn)和接口盡量保證一致性,降低使用新模型的學(xué)習(xí)門檻
定時(shí)做重新訓(xùn)練保證代碼正確性(嗯,我們用 AWS 不用錢)
中文社區(qū)
下面一段代碼下載預(yù)訓(xùn)練好的 SSD 模型然后對(duì)圖片 street.jpg 進(jìn)行物體檢測(cè)并展示結(jié)果。


GluonCV 發(fā)布在 http://gluon-cv.mxnet.io。目前我們發(fā)布了第一個(gè)預(yù)覽版本,其中主要包括了三個(gè)模型,均可以重復(fù)論文結(jié)果
圖片識(shí)別:在 ImageNet 上訓(xùn)練 ResNet
物體檢測(cè):在 Pascal VOC 上訓(xùn)練 SSD
語(yǔ)義分割:在 Pascal VOC 上訓(xùn)練 FCN
自然我們會(huì)在接下來(lái)的版本里不斷加入新的模型。如果對(duì)哪些模型特別感興趣,請(qǐng)?jiān)逆溄咏o我們留言。
掃描或者長(zhǎng)按下面 QR 碼來(lái)關(guān)注我們:

公眾號(hào)里回復(fù)下面關(guān)鍵詞獲取信息:
課程 --《動(dòng)手學(xué)深度學(xué)習(xí)》課程視頻匯總
論壇 -- 深度學(xué)習(xí)論壇地址
資源 -- 所有中文資源匯總
請(qǐng)點(diǎn)擊下面鏈接來(lái)參與公開(kāi)討論:
https://discuss.gluon.ai/t/topic/6081
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。