在11月25日,DevFest 2018 在上海如期舉行。聲網Agora 首席科學家鐘聲與在座的上千位開發(fā)者分享了演講《Deep Learning for MobilePlatforms: Complexity and Performance Analysis》。以下是由 GDG 整理發(fā)布的演講實錄。
1
關于演講者
2
演講實錄
開場白
最近在微信群里看到一張很有意思的圖,大家應該都見過大街小巷地鐵站旁邊的手機貼膜吧?但這張圖的牌子上寫的不是「手機貼膜」而是「模型調參」。用這個例子雖然有些不恰當,但人工智能學習算法確實正在成為我們生存的必殺技,可見人工智能有多火。
從 AI 的應用開始
回到我們今天的主題,我想問,今天的午餐和深度學習有什么共同之處?餐盒和黑盒,都是盒子。餐盒有一個沙拉、主菜和餐后的水果。黑盒子打不開、看不到。
今天的演講試圖稍稍進入黑盒里能看一下,作為工程師,我們都想知其然,也知其所以然。我就基于我們所做的工作稍稍解密一下深度學習某些方面。
聲網主要提供實時音視頻通信傳輸服務、編解碼及前后處理等等,我們更多的聚焦在通信實時交互領域。
現(xiàn)在的社交娛樂應用里面有很多 AI 的應用。美顏,貼紙,包括一些交互動作的識別,變臉、變聲都是屬于風格轉換,AI 算法在這些方面有很好的應用。
除了這些,AI 在后處理端也有很多應用。比如如何提升比較模糊的圖像的細節(jié),更清晰地呈現(xiàn)給大家,提高收視的體驗;又比如由于網絡傳輸線路上有丟包,接收的數(shù)據有失真,這個也可以利用 AI算法來補償。
AI 在云端也有更多的應用,比如內容的監(jiān)管,比如黃色圖片的鑒別,以及識別暴力圖像,還有語音變成文本,以及情感計算等等,這些很多在實時通信領域里有非常好的應用。
超分辨率恢復模糊圖像
下面以恢復模糊圖像作為一個例子,介紹人工智能的深度算法和應用。
我們都知道超分辨率(超分,SR)對恢復細節(jié)有幫助。在我們的場景下,由于網絡帶寬受限,會產生丟包,因而此時會以低碼率壓縮和傳輸圖像,解碼出來的圖像通常是會模糊一點,影響收視體驗。尤其是在直播應用里,用戶希望看到清晰的面容和聽到清晰的聲音。
超分是我們后處理的一步,作為跟前面的處理不相關的一個處理,這一步放在最后。視頻源經過編碼在網絡上傳輸,解碼器收到后經過解碼出來是一個模糊的圖像,經過超分辨率處理把細節(jié)提升或者放大,再顯示出來。
深度神經網絡已經被證明了可以較好地生成圖像的細節(jié)。GAN 模型是一個非常有效的模型,它也是我們超分算法的基礎模型,接下來主要是以 GAN 來做性能和復雜度的分析。
GAN 模型
下面介紹一下GAN的基本思路。它通常包含兩個網絡,一個是生成器,一個是判別器,這兩個模型以又合作又對抗的方式運作,最后達到一個平衡,使得生成器能夠產生以假亂真的數(shù)據,例如:
當判別器接收到的是真實的圖像數(shù)據,判別器會把它接受為一個真實的數(shù)據。
當生成器輸入的是一個低分辨率的數(shù)據,我們想生成高清的數(shù)據,希望生成器出來的數(shù)據像真的一樣。但判別器的任務正好相反,它盡量不讓生成的數(shù)據蒙混過關,并且要把它踢出去。
一旦被區(qū)別出來之后,生成器會反復訓練、調參,使得生成的數(shù)據更像真的;判別器也會反復訓練、努力提高自己的能力,鑒別假數(shù)據的能力越來越強??芍^道高一尺魔高一丈,最后二者收斂的時候判別器再也不能區(qū)分生成器生成出來的數(shù)據是真的還是假的,這個時候的結果就被判別器接受了。
最近幾年在頂級 AI 會議上,三分之二以上的文章可能跟GAN有關的。
如何設計小且優(yōu)的深度學習模型?
眾所周知深度學習最好的結果是采用比較大的模型,在比較大的機器平臺,比如說服務器,有成千上萬的 GPU作并行處理來訓練,并且需要有非常大量的訓練數(shù)據集。
但是現(xiàn)在針對移動設備的應用很多,我們做移動社交、做直播、通訊,面臨的挑戰(zhàn)是要設計一個小的模型,最好能滿足下面三個條件:
這個小模型能夠在移動設備上實時地跑,并且不會消耗太多功耗,不會引起發(fā)熱等等問題。
另外它的結果還要足夠好,不能因為模型做小了而沒有效果,這個沒有意義。
訓練要能夠基于比較合理數(shù)量的數(shù)據集就能夠取得好的效果,要上百萬個甚至上千萬個數(shù)據往往不夠現(xiàn)實,因為數(shù)據收集的成本太高。
接下來我們作復雜性分析,我們的目標是縮小模型。來看一些典型的模型,經典的一些作圖像分析和識別的深度神經網絡,像 VGG 模型,是很大的模型,它的參數(shù)個數(shù),也就是權重的個數(shù),是衡量這個模型復雜性的一個重要指標。
VGG16模型有一億多個參數(shù)。為了在移動平臺能夠運行,業(yè)界做了大量的工作,這些工作包括把這個模型做剪枝、壓縮和重新訓練模型等,也有通過更復雜的技術,比如通過強化學習來達成一個更小的模型。這些方法都有一些潛在的問題,比如最終出來的結構不夠簡單,計算量仍然不夠少,或者不易于并行實現(xiàn)等。
谷歌在這方面也做了很好的工作,最新的結果是MobileNet v2的 340 萬個參數(shù),不到 VGG16 參數(shù)個數(shù)的3%,縮小了很多,將近兩個數(shù)量級,非常小。但是對我們來說,340 萬個參數(shù)的模型還是很大,尤其在移動設備上以軟件實現(xiàn)仍不是很理想,當然我們的任務有點不一樣,我們是做圖像超分,而上述模型是做做物體識別的。
基于 ReLU 的 CNN
我們來看一下基于 ReLU 的 CNN,實際上是分段線性函數(shù),這個很容易理解,尤其是當stride 為1的時候,分段線性的映射還是保持的。
為了更好地理解下面的內容,我再介紹一個概念,就是流型。舉個例子來說流型比較容易理解,比如關于人臉的圖像,雖然可以是在 1000×1000 個大的尺寸上,有一百萬個像素點,但真正表征人臉不需要一百萬個點,一兩百個參數(shù)就可以,實際上在比較低維的一個空間里即可以表征出來,這個過程就是從它的背景空間映射到它的參數(shù)空間,或者稱為隱空間的過程,這實際上是一個編碼的過程,是一個降維處理。
反過來從這個低維空間到高維空間是一個解碼的過程,是一個生成器。一般來說編碼是把數(shù)據壓縮到更低維的參數(shù)空間,叫隱空間。存在一個映射,從高維流型到低維的空間之間,正映射和逆映射都是連續(xù)的,這就是同胚映射。我們想隱空間這個低維的參數(shù)空間里做些操作。
剛才說過深度學習實際上是一個分段線性的映射,它是對流型的一個分段線性的逼近,比如這個模型比較簡單的時候,它是以兩條線來逼近,模型復雜的時候以四條線來逼近,這時逼近的程度更高。實際上一個更復雜的深度學習網絡能產生的效果更好,逼近的精度更高,當然它的復雜度也更高。
另外,不同的逼近方法達到的效果也不一樣,換一個方式可能逼近的更好,實際上不同的權重對應不同的映射,對應不同的逼近效果,我們訓練的過程就是在找一個最優(yōu)化的逼近,至少是找一個局部最優(yōu)化的逼近過程,使得它達到的效果某種意義上是最優(yōu)的。精度是由逼近的質量來衡量的。
我把我們的結果報告一下,最后做到了只有萬級的參數(shù)個數(shù),比谷歌的用于移動設備的 MobileNet v2 模型還小了兩個多數(shù)量級。聲網模型不到它的 1%,進一步小了非常多。通常模型變小之后會有一個問題,GAN 本身隱含的問題就變得更突出,模式坍塌就是其中一個問題。
模式坍塌
模式坍塌是什么問題?生成器很難學習多模態(tài)的分布。舉一個在圓環(huán)上的八個高斯分布的例子。生成器想學習這個分布,但是在一個簡單模型的訓練的過程及最后結果都只能收斂到其中一個高斯分布。用在實際應用的例子上,比如生成數(shù)字,我們期望它像第一行圖像中這樣能生成 0-9 的各個數(shù)字,但是很容易它就像第二行這樣只能生成其中一個數(shù)字,比如總生成 1 或者某個含混難辯的數(shù)字,因為 1 容易在判別器那里蒙混過關,這雖然做對了,但是它生成不了別的數(shù)字,用處不大。
如何解決這個問題或者緩解這個問題呢?我們做了一系列的工作,簡單來說,我們加了一些約束,加了對局域的約束,加了對切空間的約束,再加了對隱空間的優(yōu)化,接下來不能一一講述,就簡單講解一下對隱空間的優(yōu)化。
隱空間的優(yōu)化
剛才我提到過DNN 實際上是把一個流型往隱空間或者參數(shù)空間做映射。一個圖像通常被編碼到一個低維的空間,就是隱空間。這里給大家做一個直觀的解釋,我們直接在這個編碼空間,即隱空間里來做恢復,先在隱空間里均勻的去采樣一些點,然后再通過這些點輸入到生成器,生成器重構出來的圖像點,把它們重疊到原來的圖像上,有些恢復出來的點很密,但是有些地方比如頭部臉部就很稀疏,這就意味著頭部的恢復很差。生成器坍塌到一個局部最優(yōu),這個重構是很難或者不太容易得到很好的結果。當然我們可以更密集的取些采樣點,最終頭部也被覆蓋到,但是代價會很大。
我們可以把這個隱空間先做優(yōu)化,再在上面做均勻抽樣,再把它輸入進生成器,生成器出來,抽樣點還是這么多,重構圖像出來的重構點也是均勻的,也就是從這個點云里出來的東西也是均勻的。
打個比方,我們拿一張平的紙,使用各種不規(guī)則的方式任意折疊起來很多遍,你被要求在折疊起來的一團紙上抽取一定的采樣點,然后把紙展開恢復平整后要求這些采樣點是均勻的。這個很難,一般做不到,除非用暴力取足夠多的點出來。但那樣復雜性很高,與我們的目標相悖。我們想同時控制復雜性又控制效果。我們把類似的隱空間優(yōu)化應用到了我們的模型訓練里。因為我們最終模型的參數(shù)非常小,所以功耗在 iPhone7 上很少,另外手機也不會發(fā)熱。效果基本上我們能做到,比如說一個 360P 的視頻,出來的效果能夠達到在 720P 的效果,能得到一個高清的效果。
我們未來還想從數(shù)學更多的理解一些深度網絡,對某個點、某個問題上能夠用數(shù)學的方式來描述,來進一步提高圖像清晰度。這是我們未來要做的工作,謝謝大家。
-
人工智能
+關注
關注
1791文章
47183瀏覽量
238235 -
深度學習
+關注
關注
73文章
5500瀏覽量
121111 -
AI算法
+關注
關注
0文章
249瀏覽量
12259
原文標題:如何為實時音視頻設計小且優(yōu)的深度學習模型?
文章出處:【微信號:shengwang-agora,微信公眾號:聲網Agora】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論