當前位置:
首頁 > 新聞 > FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

機器之心報道



Facebook新機器學習系統Caffe2Go:可在移動設備上實現實時風格遷移

隨著視頻通話逐漸成為人們交流的主要方式,Facebook 希望創造最新的視頻創意工具來幫助人們表達自我。最近,他們在手機 app 中測試了新的相機應用,實時在視頻中添加藝術元素。這項技術被稱為「風格轉換」。它可以將一張圖片中的藝術風格,例如梵高的畫作,加入普通的圖片或視頻中去。這是以往技術上難以實現的事,通常這需要將參考圖和要處理的數據發送到數據中心,通過大型伺服器進行處理。Facebook 最新開發的移動端深度學習平台第一次擺脫了信號塔的束縛,可以實時捕捉、分析和處理圖像,將最新技術放進人們的手中。這一新程序被稱為 Caffe2Go,是一個完整的深度學習系統,它的架構已經嵌入手機 app 中。通過將處理圖片和視頻的人工智慧模型壓縮至百分之一大小,Facebook 現在已經可以在 iOS 和安卓系統中高效運行深度學習網路。最終,Facebook 公司的應用可以在部分手機中以不到 50 毫秒的速度完成人工智慧任務的處理,而人眨眼需要的時間大約需要 300 毫秒。

相機風格轉換工具是兩種技術的結合:Caffe2Go 運行環境與風格轉換模型。Facebook 的人工智慧團隊一直在處理演算法與大規模系統,他們一直在致力於開發新模型,讓風格轉換更加快速穩定。於是,現在你拿起手機,開始攝像,梵高的繪畫風格變得無處不在了。

Caffe2Go 項目在三個月前開始,目前沒有其他公司的產品能夠做到這樣的效果:讓人工智慧風格轉換變成創作工具。不僅如此,Facebook 做到了更多,他們讓這種應用可以在手機中實時處理圖像。該項目的研究者跨越產品、技術和研究者。FAIR 團隊的 Justin Johnson 是一篇描述該項目技術基礎論文(Perceptual Losses for Real-Time Style Transfer and Super-Resolution )的作者,他們在前人的努力基礎之上開發了新的技術;應用機器學習團隊則通過努力將 AI 引擎塞進手機設備中;相機團隊負責滿足用戶需求;正是因為所有人的努力,這些團隊構建了運行在移動設備上的高效神經網路。我們將解釋如何思考和開發這一應用技術的,從 Caffe2Go 開始。

Caffe2Go

輕量快速

人工智慧對計算機科學產生了深遠的影響,但它的應用一直被局限在大型數據中心裡,距離普通用戶存在很長一段距離。大多數時候,人工智慧「實時處理」應用將數據發送到遠端數據中心,通過那裡的 GPU 來處理,物理距離造成了不可避免的延遲。我們認為使用超級計算機進行實時處理是不實際的,於是我們轉換思路,努力讓人工智慧在移動設備的 CPU 中運行。

FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

沒人想拖著一台超級計算機出門

手機可以拍照,通話,也可以實時理解用戶所需,不需要連接遠端伺服器,但它們的性能有限。儘管近年來硬體設備的發展讓移動設備的計算能力有了很大改進,手機 CPU 現在已經可以在一秒鐘內進行數十億次運算,但智能軟體在設計中還要面對諸如功率,存儲器和計算能力的各種資源限制。因此,移動設備環境對機器學習系統提出了機遇和挑戰。

面對這些挑戰,我們的解決方案是設計超輕量級模塊化框架。為此,我們以開源的 Caffe2 項目為基礎,遵循 Unix 理念開發了 Caffe2Go。我們確保了用於聲明和連接組件的核心架構的輕量化,允許多種組件與其連接——包括對於移動設備的專用優化。我們保留了一個精巧的演算法框架,允許工程人員將抽象概念描述成有向無環圖(DAG),同時確保沒有約束被強加在圖中執行節點的輸入和輸出上。這允許我們的工程團隊能夠在不同平台上實現和優化模塊,同時可以輕鬆地連接各種模塊。當圖像實時輸入時,通過硬體功能進行自我實例化可以達到最大處理速度。

速度是計算密集型移動應用的關鍵,特別是對於圖像和視頻處理而言,框架的輕量級設計允許我們為特定的運算符執行平台進行特定的優化。NNPack 庫是其中一個例子,Caffe2 集成在移動運行環境中時,通過使用移動 CPU 中被稱為 NEON 的功能,可以顯著提高運算速度。在 iOS 設備上,我們也正在著手集成加速功能如 Metal 語言。所有這些都是通過模塊化設計完成的,無需改變一般模型定義。因此,演算法端和運行環境可以互相依靠,不必擔心兼容性的問題。

面向開發者

Caffe2 是我們的第一個產業級深度學習平台,它可以在伺服器 CPU、GPU、iOS 和安卓四種平台上運行,使用同一種代碼。因為我們的模塊化設計,這種架構在不同平台上都使用同一種語言,但對每個平台都有優化。這是一個開發人員不必擔心的細節;例如,可以在移動端 NNPack(iOS 和安卓)和伺服器 GPU 的 CUDNN 中進行選擇。在 Caffe2 中,演算法開發者可以專註於演算法,無需考慮如何運行卷積。

快速的部署設計也能使開發者受益。從開發者的角度看,調試移動設備的運行時間可能是一項挑戰,因為移動端工具鏈(toolchain)並不如桌面的和伺服器的工具鏈那麼先進。我們通過從硬體上抽象神經網路的數學而解決了這個問題——一個 Caffe2go 中的串列化網路(serialized network)在被應用於移動手機和伺服器時可以得到相同的數值輸出。其結果是,我們可以將大部分工作(模型訓練、性能評估、用戶體驗研究)移動到伺服器環境中進行;當結果看起來不錯了之後,就可以實現在移動環境中的一鍵式部署了。

訓練風格遷移模型

風格遷移(style transfer)並不是什麼新概念。它最早是由研究人員在發表於 2015 年 8 月的一篇題為《A Neural Algorithm for Artistic Style》的論文中引入的。但是,當時這項技術的速度還很慢,而且需要強大的伺服器。後面的幾個月,研究社區改進了這項技術,將其速度提升了幾個數量級,但也還是需要依賴伺服器上的大量計算能力。

Caffe2go 成功使人工智慧實現了高速處理,並且可以集成到你手上的移動設備中。但該風格遷移模型仍然還需要優化,這樣才能在確保實時體驗的同時還能保證得到高質量、高解析度的圖像。

優化成有效的模型大小

傳統的風格遷移研究得到的模型(甚至只是前饋變數)是很大(在參數的數量方面)很慢的。我們的目標是創造能夠運行新的、更小的、更高效的模型的風格遷移應用——能夠在 iPhone 6s 或以上的手機上不掉幀地提供 20 FPS 的高質量視頻。

為了減小該模型的尺寸,我們應用了 3 種主要的方法:優化了卷積層的數量(這是處理中最耗時間的部分)、優化了每一層的寬度、以及調整了處理過程中的空間解析度(spatial resolution)。卷積層的數量和寬度是可用於調整處理時間的單獨指標——即調整圖像有哪些方面需要處理,或調整一個單獨的處理過程需要多少時間。對於空間解析度,我們可以調整中間層中圖像實際被處理的大小。通過較早地使用池化(pooling,縮小正被處理的圖像的大小),我們可以加速處理時間,因為系統不再需要處理那麼多的數據了。我們還發現,使用這些技術,我們可以極大地減少該網路的寬度和深度,同時還能保持合理的質量。

FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

提升質量

圖像質量是主觀的,非常難以測量——尤其是對於風格遷移這樣的東西。因此我們打造了一些可視化工具,其中包括 A/B tests;並訓練了不同的模型以確保我們可以得到最高質量的圖像結果。我們的大型 GPU 集群由 FBLearner Flow 驅動,讓我們可以快速掃描大範圍的超參數(比如模型架構、內容/風格權重、和下採樣),從而找到滿足我們的性能目標同時能保持和提升質量的訓練良好的前向風格(feedforward style)。

在提升質量方面還有很多其它的技巧——比如,應用實例規範化(instance normalizatio)而不是常用的批規範化(batch normalization)能有助於多種風格,同樣避免卷積層中的零填充(zero padding)可以減少偽像,也可以將不同的預處理或後處理過濾器應用到風格或內容圖像上。但在我們的測試中,我們發現這些方法往往在一些風格上效果良好,在另一些風格上則效果不佳。

憑藉在這項風格遷移技術上的速度和質量優化,使用 Caffe 2 框架,我們就可以將一種實時圖像處理系統應用到移動設備上。



Facebook發布新版fastText:拓展至移動端,加入教程

Facebook 人工智慧研究院(FAIR)進一步拓展了 fastText 的應用範圍,他們發布了支持 294 種語言的預訓練矢量文件包,並配有兩個快速入門教程,為學生、軟體開發者和機器學習研究人員提供了更多支持。同時,隨著 fastText 模型內存使用量的減少,它現在已經可以裝進手機和樹莓派這樣的小型計算設備中了。

在小內存設備上的 fastText

為了讓更多人和應用在移動端享受到 fastText 帶來的便利,Facebook 本次推出的新版本降低了 fastText 模型的內存需求。基於早期版本 fastText 構建的模型通常需要幾 G 的內存,而新版本只需要數百 Kb。

FAIR 團隊的研究者們通過最近發布的 FAISS(一種用於高維度向量相似性搜索和聚類的開源庫)壓縮了 fastText 模型和內存使用量。對此,研究團隊發表了一篇論文《FastText.zip: Compressing Text Classification Models》描述了兩個研究項目的整合研究。

論文鏈接:https://arxiv.org/pdf/1612.03651.pdf

簡單且最棒的文本分類器

fastText 旨在讓開發者、研究者和學生們能夠快速上手。它的速度特性可以讓你快速迭代產品,並在沒有專門硬體的情況下優化你的模型。fastText 模型可以在任何多核 CPU 上用不到幾分鐘的時間訓練超過十億單詞,或在不到一分鐘時間裡將五十萬個句子分類成幾百到數千個類。

fastText 分類器在與更複雜、通過 GPU 加速的神經網路架構相比有很大優勢。兩者之間的比較在 Facebook 研究團隊發表的另一篇論文《Bag of Tricks for Efficient Text Classification》中已有體現。相比神經網路模型,fastText 的精度損失很小。

論文鏈接:https://arxiv.org/pdf/1607.01759.pdf

FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

fastText 與卷積神經網路在情緒分析任務中的對比。

FAIR 設計 fastText 的過程

在機器學習的發展歷程中,軟體的研究進度往往超過硬體,研究者們經常需要優化已有程序的性能——提高準確性,同時減少計算能力的消耗量。Facebook 的研究團隊在這樣的過程中已經積累了不少經驗,然而在 fastText 的改進中,研究人員還是遇到了挑戰:其中一個約束是需要將機器學習拓展到擁有多核 CPU 和 C++編譯器的計算機中——這意味著把 fastText 送到幾乎所有開發者的手中。

Facebook 構建出了一個簡單而強大的庫來解決在通用型/弱性能機器中處理重要文本分類的問題。fastText 作為學習文本分類的庫,和為應用增加精確文本分類特性的工具都表現良好。fastText 同時允許開發者增加文本分類特性,如標籤和評論情緒等級分析——而無需對此進行通常需要的機器學習訓練。

使用低維度向量來提高性能。大向量可以提高準確性,因為這類詞向量中通常含有很多特徵,但是它們非常耗費訓練時間和計算資源。如果使用低維度向量,通過表示正確的特徵,模型可以擴容為巨大的語料庫,同時達到目前最好的表現。在編碼期間,通過常規優化方法可以縮減向量尺寸,獲得低維度向量。

訓練時間則是通過基於 softmax 的 Huffman 編碼樹(二叉樹的變體)來減少的。在運行中,最可能類的搜索時間也被減少了,因為表示字向量的樹的每個葉具有相關聯的概率。下分支的葉具有相對更低的概率。概率計算在路徑中隨著低概率分支的丟棄而變得更加快速。

fastText 使用詞袋模型來獲取特徵,通過線性分類器訓練模型。因為詞袋模型無法識別句子的語序,所以生成的高頻詞廣義語境特徵不與低頻詞共享,從而導致低頻詞的準確率很低。使用可以識別單詞順序並向低頻率詞向量共享信息的 n-gram 模型代替詞袋模型可以解決這個問題,但增加了複雜性、訓練時間和計算需求。在 fastText 中,訓練時可以使用部分 n-gram 信息,我們可以通過選擇句子中目標詞上下文的單詞數來平衡訓練時間和準確性。

fastText 比目前流行的 word2vec 工具或其他最先進的形態詞表示方法有更好的表現,同時包含了更多語言。在本次發布後,FAIR 的研究團隊會持續對 fastText 進行改進,在未來這個工具將變得更容易使用。

在精度相同的情況下,fastText 的速度比其他方法更快。在與目前最好的神經網路模型的性能對比中,fastText 要快 1000 到 10000 倍。這就是簡化和低階線性模型與標準特徵(如二元)應用帶來的優勢。

下表展示了 fastText 的性能:

FB擴展移動端:從移動設備上實時風格遷移到速文本分類器

fastText 教程

新的 fastText 版本附帶了有監督文本分類教程。通過本教程,開發者可以學會在自定義數據集上構建簡單的文本分類器。該教程還展示了如何將模型調整到最佳性能的方法。

fastText 非常快,同時也保有面向開發人員快速迭代影響準確性的不同設置。例如,n-gram 提高了應用的準確性(如在詞序十分重要的情緒分析中);層級 softmax 增加了應用在預測大範圍標籤時的速度。

在第二個教程中,fastText 被用來學習維基百科頁面中的單詞表示形式。該教程會教你用簡單的方法測試模型質量。查詢返回一個單詞的臨近詞或返回一堆關聯例子,類比產生與查詢詞最密切相關的單詞。例如,模型可以預測巴黎與法國相關,同時柏林與德國相關。即使模型還未經訓練,它也可以被測試!fastText 會查找字元組成的單詞以生成其表示,以找到可能拼寫錯誤的單詞以及諸如「shiftgear」之類的組合詞。

對機器學習感興趣的學生和開發者可以立即在 Github 上開始這些教程。這一教程非常簡單,無需機器學習的專業知識。該教程還提供了一些資深開發人員對於 fastText 庫其他一些功能的見解。

其中的用例包括實驗、原型和生產環境示例。fastText 可以使用命令行、鏈接到 C ++應用程序,或用作庫。Python 和 Lua API 也是可用的

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

TAG:機器之心 |

您可能感興趣

中國移動:步入轉型升級關鍵期 借力5G拓展新空間
AMD推移動APU,正式進軍高性能移動市場
直擊MWC展場最大的移動設備:BMW純電終極概念車
中國移動終端實驗室緊跟5G+趨勢 賦能移動終端
高效移動生產力工具:Dell 攜帶型移動固態硬碟 250GB 快速上手
中國移動拆分上市?通信轉型仍需探索
與MacBook絕配的移動硬碟,保時捷風格設計傳輸速度快
世界磁場模型被迫更新:磁極迅速移動 導航誤差超限
中國移動「查網齡送流量」活動再出續集:移動官方發公告了!
微軟正在研發麵向移動設備的Xbox遊戲串流技術
韓松、李佳等人提出AMC:用於移動端模型自動壓縮與加速的AutoML
營銷變局進行時:從 PC、移動再到BAT巨頭生態時代
移動互聯網廣告收入佔比不斷增長,BAT份額移動端廣告市場
地磁北極移動快,導航模型要更新
流量大變革:中國移動開始試點「流量階梯定價」
2017年貴州省移動寬頻和移動互聯網用戶情況分析:移動寬頻用戶結構加速向4G遷移
中國移動持續推動ONAP開源項目技術研發與應用推廣
小巧而極速的可移動設備,M.2硬碟盒
十分鐘設計移動端App濾鏡
玩出新花樣,移動設備上的音效技術