《硅谷》中演示了一款識別熱狗的軟件Not Hotdog,可以在安卓和IOS下載
繼AI制作動畫人物、創(chuàng)作劇本、編輯電影之后,今天,一款A(yù)I軟件正式獲得黃金時段艾美獎提名:熱播電視劇《硅谷》中一個使用深度學(xué)習(xí)自動識別熱狗的軟件再度走入公眾視野,使用TensorFlow和英偉達(dá)GPU開發(fā)。
不知道你有沒有看過熱播美劇《硅谷》。作為近年來最佳職場喜劇之一,《硅谷》為我們展現(xiàn)了程序員不為人知的一面?!豆韫取吩阪倚εR間描繪了一部IT業(yè)創(chuàng)業(yè)辛酸史,不僅如此,人工智能、機(jī)器學(xué)習(xí)、加密貨幣……劇集的主題一直緊跟現(xiàn)實(shí)硅谷圈的潮流。
其中,在第四季第四集就出現(xiàn)了一個使用深度學(xué)習(xí)算法識別熱狗的APP Not Hotdog,而且現(xiàn)在這款A(yù)PP也能在安卓和iOS下載。
AI軟件正式獲得黃金時段艾美獎提名!
今天,制作這款的APP的Tim Anglade(是的,這款A(yù)PP是他一個人制作的,當(dāng)然得到了很多人的幫助)在Twitter上宣布,這款A(yù)I軟件正式獲得了黃金時段艾美獎提名!
實(shí)際上,在劇集播出后,這款A(yù)PP就在硅谷掀起了一股話題熱潮,因?yàn)楫?dāng)時正是圖像識別的熱度達(dá)到巔峰時期。
《硅谷》劇組決定在劇集里做一個能夠在手機(jī)上運(yùn)行的熱狗識別軟件。實(shí)現(xiàn)這一目標(biāo),Tim Anglade他們設(shè)計(jì)了一個直接在手機(jī)上運(yùn)行的定制神經(jīng)架構(gòu),并使用Tensorflow,Keras和Nvidia GPU進(jìn)行訓(xùn)練。
雖然只是用來識別熱狗(或者不是熱狗),但這款A(yù)PP無疑是深度學(xué)習(xí)和邊緣計(jì)算的一個親切使用案例。所有的AI工作都由用戶的設(shè)備100%供電,處理圖像時無需離開手機(jī)。這為用戶提供了更快捷的體驗(yàn)(無需往返云端),離線可用性和更好的隱私。
要知道,那時候還沒有TensorFlow Lite,100%在手機(jī)端實(shí)現(xiàn)物體識別還算是相對超前的概念。
這也使得整個APP能以0美元的成本運(yùn)行,即使在100萬用戶的負(fù)載下,與傳統(tǒng)的基于云的AI方法相比,可以節(jié)省大量成本。
這款A(yù)PP是由一個開發(fā)人員自己在內(nèi)部開發(fā)的,用一臺筆記本電腦和附加GPU運(yùn)行,使用手工收集的數(shù)據(jù)。
作者的開發(fā)環(huán)境,就是這樣簡單!
作為一款從劇集中誕生的衍生品,著實(shí)火熱了一把,還在蘋果開發(fā)者大會得到了宣傳。
作者Tim Anglade在Medium上超詳細(xì)地介紹了這款A(yù)PP的設(shè)計(jì)、開發(fā),從原型到產(chǎn)品的過程,可以閱讀原文了解詳情。

下面,我們將摘選介紹這款A(yù)PP的技術(shù)細(xì)節(jié),使用了什么架構(gòu)、如何訓(xùn)練,有什么要點(diǎn)。
對非技術(shù)公司,個人開發(fā)人員和業(yè)余愛好者等時間和資源有限的人,構(gòu)建自己的深度學(xué)習(xí)APP,是再好不過的上手材料。
Deepdogs架構(gòu):受谷歌MobileNet論文推動
他們的最終架構(gòu)在很大程度上受谷歌在2017年4月17日發(fā)布的論文MobileNet的推動,這種新的神經(jīng)網(wǎng)絡(luò)架構(gòu)具有類似Inception的準(zhǔn)確性,但只有4M左右的參數(shù)。

部分代碼截圖
之前團(tuán)隊(duì)考慮過SqueezeNet,但SqueezeNet對于他們想要實(shí)現(xiàn)的目標(biāo)來說又太簡單了,Inception或VGG則不能在手機(jī)上運(yùn)行。MobileNet更適宜在移動端運(yùn)行,這在當(dāng)時是他們的首要考慮因素。
距離APP發(fā)布還有不到一個月的時間,團(tuán)隊(duì)正在努力重現(xiàn)該論文的結(jié)果。但是,在MobileNet論文發(fā)表后的一天之內(nèi),伊斯坦布爾技術(shù)大學(xué)的學(xué)生Refik Can Malli已經(jīng)在GitHub上公開提供了Keras實(shí)現(xiàn)代碼。深度學(xué)習(xí)社區(qū)的開放性和活躍性令人贊嘆。
團(tuán)隊(duì)的最終架構(gòu)叫做Deepdogs,與MobileNets架構(gòu)有很大不同,特別是:
沒有在深度和逐點(diǎn)卷積(depthwise and pointwise)使用批量標(biāo)準(zhǔn)化(BN)和激活,因?yàn)閄Ception論文似乎表明這樣做會導(dǎo)致這種類型的體系結(jié)構(gòu)的準(zhǔn)確性降低。同時,這樣還具有減小網(wǎng)絡(luò)規(guī)模的好處。
使用了ELU而不是ReLU。與SqueezeNet實(shí)驗(yàn)一樣,激活函數(shù)使用ELU比ReLU提供了卓越的收斂速度和最終精度。
沒有使用PELU。雖然這種方法不錯,但只要我們嘗試使用它,這個激活函數(shù)似乎就會陷入二元狀態(tài),網(wǎng)絡(luò)準(zhǔn)確性不會逐步提高,而是從一批到下一批在~0%到100%之間交替。目前還不清楚為什么會發(fā)生這種情況。
沒有使用SELU。我們簡單做了個調(diào)查,iOS和Android版本之間使用SELU導(dǎo)致結(jié)果與PELU非常相似。我們懷疑SELU不應(yīng)該作為激活函數(shù)被單獨(dú)使用,而是正如其論文的標(biāo)題所暗示的那樣,作為狹義(narrowly-defined)SNN架構(gòu)的一部分。
使用ELU維持BN。有許多跡象表明BN應(yīng)該是不必要的,但是,在沒有BN的情況下運(yùn)行的每個實(shí)驗(yàn)都完全無法收斂。這可能是由于架構(gòu)很小造成的。
在激活之前使用了BN。雖然現(xiàn)在關(guān)于這一點(diǎn)有所爭議,但他們的小型網(wǎng)絡(luò)在激活后做BN的實(shí)驗(yàn)也未能收斂。
為了優(yōu)化網(wǎng)絡(luò),使用了Cyclical Learning Rates和Brad Kenstler的Keras實(shí)現(xiàn)。

在訓(xùn)練時,團(tuán)隊(duì)做了細(xì)致的數(shù)據(jù)增強(qiáng)和處理工作,解決了一些由閃光燈(如下)等造成的圖像扭曲等問題。
數(shù)據(jù)集的最終構(gòu)成是150k圖像,其中只有3k是熱狗——熱狗再多花樣就那么幾種,但是長的像熱狗而不是熱狗的東西則太多了。這個比例 49:1的不平衡通過設(shè)置Keras的權(quán)重為49:1來解決。在剩余的147k圖像中,大多數(shù)都是食物,只有3k張非食物照片,這是為了幫助網(wǎng)絡(luò)更多地概括,如果圖像中出現(xiàn)紅色服裝中的人物,就不會被欺騙去將其識別為熱狗。
閃光燈和moiré 造成的扭曲變形
最終的訓(xùn)練學(xué)習(xí)率和精度是這樣的:

APP遇到番茄醬的情況還是會失效(但你要這樣在手臂上擠番茄醬也真沒辦法)
最神秘的部分:100%在手機(jī)端運(yùn)行并識別熱狗
設(shè)計(jì)出了一個相對緊湊的神經(jīng)體系結(jié)構(gòu),并且訓(xùn)練它來處理在移動環(huán)境中可能發(fā)現(xiàn)的情況,但是,仍然還需要做很多工作才能使其正常在手機(jī)上運(yùn)行。
關(guān)于如何讓Deepdog在手機(jī)上運(yùn)行,可能是這個項(xiàng)目中最神秘的部分。因?yàn)樵诋?dāng)時能找到在移動設(shè)備上運(yùn)行商用深度學(xué)習(xí)APP的資料還相當(dāng)匱乏。于是,他們咨詢了Tensorflow團(tuán)隊(duì),得到了特別是Pete Warden,Andrew Harp和Chad Whipkey的文檔以及慷慨幫助。
舍入網(wǎng)絡(luò)的權(quán)重有助于將網(wǎng)絡(luò)壓縮到其大小的約25%。本質(zhì)上,不是使用從訓(xùn)練中派生的任意stock value,而是優(yōu)化選擇N個最常見的值,并將網(wǎng)絡(luò)中的所有參數(shù)設(shè)置為這些值,從而大大減少壓縮后網(wǎng)絡(luò)的大小。但是,這對未壓縮的APP大小或內(nèi)存使用量沒有影響。不過,團(tuán)隊(duì)沒有使用這項(xiàng)優(yōu)化,因?yàn)樗麄兊木W(wǎng)絡(luò)足夠小。
商用開發(fā)編譯時,使用-Os來優(yōu)化TensorFlow庫
從TensorFlow庫中刪除不必要的操作:TensorFlow在某些方面就像是一個虛擬機(jī),從中移除不必要的操作,可以節(jié)省大量的權(quán)重(和內(nèi)存)。
團(tuán)隊(duì)不是在iOS上使用TensorFlow,而是使用蘋果的內(nèi)置深度學(xué)習(xí)庫(BNNS,MPSCNN和更高版本的CoreML)。他們在Keras中設(shè)計(jì)網(wǎng)絡(luò),使用TensorFlow進(jìn)行訓(xùn)練,導(dǎo)出所有權(quán)重值,使用BNNS或MPSCNN重新實(shí)現(xiàn)網(wǎng)絡(luò)(或通過CoreML導(dǎo)入),并將參數(shù)加載到新的實(shí)現(xiàn)當(dāng)中。
通過動態(tài)注入神經(jīng)網(wǎng)絡(luò)來改變APP行為
如果你覺得動態(tài)地將JavaScript注入到應(yīng)用程序中很酷,那就試試在應(yīng)用程序中注入神經(jīng)網(wǎng)絡(luò)吧!
他們使用的最后一個產(chǎn)品技巧是利用CodePush和蘋果相對寬松的服務(wù)條款,在提交給應(yīng)用商店后實(shí)時注入我們的神經(jīng)網(wǎng)絡(luò)的新版本。雖然這主要是為了幫助在發(fā)布后快速地向用戶提供準(zhǔn)確的改進(jìn),但是你可以使用這種方法來大幅擴(kuò)展或改變應(yīng)用程序的特性集,而不必再通過應(yīng)用程序商店的審查。

教訓(xùn)總結(jié)和改進(jìn)
有很多事情沒有成功,或者我們沒有時間去做,這些就是我們將來要研究的想法:
更仔細(xì)地調(diào)整我們的數(shù)據(jù)增強(qiáng)參數(shù)。
端到端測量準(zhǔn)確性,即應(yīng)用程序最終確定抽象事項(xiàng),例如我們的程序是否有2個或更多的類別,Hotdog識別的最終閾值是什么(我們最終讓應(yīng)用程序說“Hotdog”,如果識別在權(quán)重四舍五入后,等于0.90而不是默認(rèn)值0.5)
在應(yīng)用中建立一個反饋機(jī)制——如果結(jié)果是錯誤的,讓用戶發(fā)泄不滿,或者積極改進(jìn)神經(jīng)網(wǎng)絡(luò)。
用一個更大的分辨率而不是224 x 224像素識別圖像——本質(zhì)上使用MobileNetsρ值> 1.0
UX/DX,偏見,以及人工智能的神秘谷
最后,不得不指出用戶體驗(yàn)、開發(fā)人員體驗(yàn)和內(nèi)置偏見對開發(fā)人工智能應(yīng)用明顯和重要的影響。這三件事在我們的經(jīng)驗(yàn)中有非常具體的影響:
用戶體驗(yàn)(User Experience)在人工智能應(yīng)用開發(fā)的每個階段都比傳統(tǒng)應(yīng)用更重要。目前還沒有深度學(xué)習(xí)算法能夠給你帶來完美的結(jié)果,但在很多情況下,深度學(xué)習(xí)+用戶體驗(yàn)的正確組合將導(dǎo)致無法區(qū)分完美的結(jié)果。當(dāng)開發(fā)人員設(shè)置正確的路徑來設(shè)計(jì)他們的神經(jīng)網(wǎng)絡(luò),在用戶使用應(yīng)用程序時設(shè)置正確的期望,以及優(yōu)雅地處理不可避免的AI故障時,正確的UX期望是不可替代的。在沒有用戶體驗(yàn)第一思維模式的情況下構(gòu)建AI應(yīng)用程序就像訓(xùn)練沒有隨機(jī)梯度下降的神經(jīng)網(wǎng)絡(luò):在構(gòu)建完美的AI用例的過程中,最終會陷入Uncanny Valley的局部最小值。

DX(開發(fā)人員體驗(yàn))也非常重要,因?yàn)樯疃葘W(xué)習(xí)訓(xùn)練時間是等待程序編譯時的新內(nèi)容。我們建議您首先使用DX(因此使用了Keras),因?yàn)榭偸强梢詾橐院蟮倪\(yùn)行優(yōu)化運(yùn)行時間(手工的GPU并行化、多進(jìn)程數(shù)據(jù)增強(qiáng)、TensorFlow pipeline,甚至是咖啡因2 / pyTorch的重新實(shí)現(xiàn))。
即使是使用相對遲鈍的API和文檔(如TensorFlow)的項(xiàng)目,也可以通過為訓(xùn)練和運(yùn)行神經(jīng)網(wǎng)絡(luò)提供一個經(jīng)過高度測試、高度使用、維護(hù)良好的環(huán)境來大大改進(jìn)DX。
出于同樣的原因,很難同時擁有自己的本地GPU進(jìn)行開發(fā)的成本和靈活性。能夠在本地查看/編輯圖像,用您喜歡的工具編輯代碼而不延遲,這極大地提高了人工智能項(xiàng)目的開發(fā)質(zhì)量和速度。
大多數(shù)人工智能應(yīng)用程序?qū)⒈任覀兊膽?yīng)用程序受到更嚴(yán)重的文化偏見,舉個例子,我們在初始數(shù)據(jù)集中引發(fā)了內(nèi)置偏見,這使得應(yīng)用程序無法識別法國式Hotdog、亞洲Hotdog等等我們沒見過的東西。
重要的是要記住,人工智能并不比人類做出“更好”的決定——他們通過人類提供的訓(xùn)練集感染了我們?nèi)祟惖钠姟?/p>
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4820瀏覽量
106276 -
硅谷
+關(guān)注
關(guān)注
1文章
124瀏覽量
17041 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5587瀏覽量
123737
原文標(biāo)題:美劇《硅谷》深度學(xué)習(xí)APP獲艾美獎提名:使用TensorFlow和GPU開發(fā)
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
賽靈思Zynq-7000 All Programmable SoC獲年度最具潛力新技術(shù)獎提名
2017中國IoT技術(shù)創(chuàng)新獎提名:Renesas Synergy? 平臺
技術(shù)產(chǎn)品創(chuàng)新獎提名 | 2017中國IoT大會(持續(xù)更新中...)
Nanopi深度學(xué)習(xí)之路(1)深度學(xué)習(xí)框架分析
什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?
《幻想裝置》,《阿波羅11號》及其他游戲獲得Viveport開發(fā)者大獎提名
一部講述Stuxnet病毒歷史的VR紀(jì)錄片獲得了艾美獎
在某些事情上機(jī)器人可能比你更懂
艾美獎提名是蘋果旗艦系列第二次獲得重大提名
基于遷移深度學(xué)習(xí)的雷達(dá)信號分選識別
深度學(xué)習(xí)在語音識別中的應(yīng)用及挑戰(zhàn)
鴻蒙智能終端操作系統(tǒng)基座與產(chǎn)業(yè)應(yīng)用獲國家科技進(jìn)步獎提名

《硅谷》里使用深度學(xué)習(xí)識別熱狗的軟件Not Hotdog正式獲得艾美獎提名!
評論