0
| 本文作者: 奕欣 | 2018-04-29 08:20 |
雷鋒網 AI 科技評論按:本文首發于 ApacheMxNet,作者李沐, AI 科技評論獲作者授權轉載,經不改動原意的編輯。

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


GluonCV 發布在 http://gluon-cv.mxnet.io。目前我們發布了第一個預覽版本,其中主要包括了三個模型,均可以重復論文結果
圖片識別:在 ImageNet 上訓練 ResNet
物體檢測:在 Pascal VOC 上訓練 SSD
語義分割:在 Pascal VOC 上訓練 FCN
自然我們會在接下來的版本里不斷加入新的模型。如果對哪些模型特別感興趣,請原文鏈接給我們留言。
掃描或者長按下面 QR 碼來關注我們:

公眾號里回復下面關鍵詞獲取信息:
課程 --《動手學深度學習》課程視頻匯總
論壇 -- 深度學習論壇地址
資源 -- 所有中文資源匯總
請點擊下面鏈接來參與公開討論:
https://discuss.gluon.ai/t/topic/6081
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。