移動深度學習:人工智能的深水區

人工智能技術經歷6年的快速發展,從新定義了不少行業的用戶體驗,而這僅是開始。html

隨着5G商用大規模落地,以及智能手機硬件性能愈來愈強、AIoT設備的快速普及,基於雲-邊緣-端算法和算力結構的移動端人工智能,仍有很是大的發展空間,亟待咱們快速理解移動端深度學習的原理,掌握如何將其應用到實際業務中。算法

file

在互聯網行業中,在移動端應用深度學習技術的案例愈來愈多。從深度學習技術的運行端來看,主要能夠分爲下面兩種。性能優化

一種是徹底運行在移動端,這種方式的優勢顯而易見,那就是體驗好。在移動端高效運行神經網絡,用戶使用起來會感受沒有任何加載過程,很是流暢。前面的「拾相」和手機百度中的圖像搜索都屬於這一流派,還有其餘一些比較好的應用,典型的如識別植物花卉的App「識花」。服務器

另外一種是在服務器端運行深度學習技術,移動端只負責UI展現。在第一種流派出現以前,絕大部分App都是使用這種在服務器端運算、在移動端展現的方式的。這種方式的優勢是實現相對容易,開發成本低。網絡

▊ 植物花卉識別框架

花卉識別的App近兩年來頗多,「識花」是微軟亞洲研究院推出的一款用於識別花卉的 App,以下圖所示,用戶能夠在拍攝後查看花卉信息,App會給出該類花卉的詳細相關信息。精準的花卉分類是其對外宣傳的一大亮點。機器學習

file

識花App性能

▊ 奇妙的風格化效果學習

將計算機視覺技術應用在App中,能夠爲圖片實現濾鏡效果。使用深度學習技術實現的風格化濾鏡效果很是魔幻。例如,Philm這款App就能夠提供很是出色的體驗,它使用了深度學習技術,有很多風格化濾鏡效果,下面第一張圖是原圖,第二張是增長濾鏡效果以後的圖。優化

file

file

Philm的濾鏡效果展現

除此以外,還有許多產品也嘗試了在移動端支持視頻、圖片的風格化,如Prisma和Artisto這兩款App也均可以實現風格化的效果。

▊ 視頻主體檢測技術在App中的應用

深度學習技術在移動端的應用愈來愈多,視頻主體檢測技術在App中的應用也在加速。目前,手機使用視頻主體檢測技術進行身份認證已是很是廣泛的事。視頻主體檢測技術主要根據物體的特徵來進行判別,整個流程(如識別和監測這樣的操做)包含大量的神經網絡計算。下圖是咱們團隊在2017年作的一個Demo,它經過實時識別視頻中的圖像主體,再經過該區域進行圖像搜索,就能夠獲得商品、明星等多種垂直分類相關圖片的信息。

file

你可能會問,這一功能的意義是什麼?直接來看,咱們能夠利用此技術爲視頻動態添加演員註解,而且動態支持「跳轉到xxx(某個明星的名字)出現的第一個鏡頭」這樣的命令。擴展來看,咱們還能夠思考一下這一功能實現商業化的方式可能有哪些。例如,假設某個女士看到視頻中出現了她喜歡的包包,可是不知道在哪裏可以買到。使用了視頻主體檢測技術後,可讓用戶自行篩選,而後在視頻中自動提示包包的產地、品牌等信息,甚至可讓用戶直接購買。這樣就能擴展出很是多的移動AI場景。

file

在移動端應用深度學習技術,要考慮各類機型和App指標的限制,所以難點較多。如何使深度學習技術穩定高效地運行在移動設備上是最大的考驗。拆解落地過程當中的複雜算法問題,就是移動端團隊面臨的首要挑戰。

▊ 在服務器端和移動端應用深度學習技術的難點對比

經過對比服務器端的狀況,更容易呈現移動端應用深度學習技術的難點,對好比下表所示。

表:在服務器端和移動端應用深度學習技術的難點對比

在移動端App的開發過程當中,須要克服以上全部困難,才能在移動端應用相關技術。將Demo的演示效果轉化爲億級安裝量的App線上效果,並非一件容易的事情。在移動端和嵌入式設備的App中使用深度學習技術,能夠大大提高App給用戶帶來的體驗。可是,只應用深度學習技術還不能實現全部想要的效果,每每還要結合計算機視覺相關的技術,才能解決從實驗到上線的難題。工程師須要具有很高的將工程與算法結合的能力,才能綜合運用多種技術解決問題。在移動端應用深度學習技術時,每每沒有太多能夠查閱和參考的資料,須要開發人員活學活用,因地制宜。接下來經過實例看一下,如何使用諸多辦法來實現AR實時翻譯功能。

▊ 實現AR實時翻譯功能

AR實時翻譯可以實現所見即所得的翻譯效果,什麼意思呢?來看下面的實例,在下圖中,電腦屏幕上有「實時翻譯」四個字,將其放在百度App圖像搜索實時翻譯框中,就能獲得「Real-Time translation」,並且手機上的文字和電腦屏幕上的文字具備一樣的背景色和字色。

file

實時翻譯效果圖

AR實時翻譯功能最先在Google翻譯軟件中應用並上線,Google使用了翻譯和OCR(圖片轉文本)模型所有離線的方式。翻譯和OCR離線的好處是,用戶不聯網也能使用實時翻譯功能,且每幀圖像在及時處理運算後實時貼圖,以達到即視效果。

可是所有離線的方式也有弊端,那就是OCR和翻譯模型體積較大,且須要用戶下載到手機中才可使用。另外離線OCR和離線翻譯模型壓縮體積後會致使準確率下降,用戶體驗變差:Google翻譯App中的詞組翻譯效果較好,在翻譯整句和整段時表現就不夠理想。

2017年下半年,筆者參與並主導了百度App中的實時翻譯工做的落地。在開始時,團隊面對的首要問題是,翻譯計算過程是使用服務器端返回的結果,仍是使用移動端的本地計算結果?若是使用移動端的計算結果,用戶就不須要等待服務器端返回結果,可以減小沒必要要的延遲。咱們只須要針對移動端的OCR和翻譯的計算過程,在移動端作性能調優,便可保證每一幀圖像均可以快速貼圖。移動端性能優化技術實際上是咱們更擅長的。這樣看來,彷佛使用移動端計算結果的優勢不少,可是其缺點也不容忽視——長文本可能出現「不說人話」的翻譯效果。通過分析和討論,咱們回到問題的本質:AR實時翻譯的本質是要給用戶更好的翻譯效果,而不是看似酷炫的實時貼合技術。

最後,咱們選擇了使用服務器端的返回結果。下圖就是上線第一個版本後的試用效果,左邊是原文,右邊是融合了翻譯結果和背景色的效果。

file

實時翻譯效果圖

上圖中的效果,若是從頭作這件事,應該如何拆解過程? 首先,須要將文本提取和翻譯分紅兩部分;接着,拿到翻譯結果後,還須要找到以前的位置,準確地貼圖。依次介紹以下。

-- OCR提取文本

  1. 須要把單幀圖片內的文本區域檢測出來。a. 檢測文本區域是典型的深度學習技術範疇,使用檢測模型來處理。b. 對文本區域的準確識別決定了貼圖和背景色的準確性。
  2. 要對文本的內容進行識別,就要知道寫的具體是什麼。a. 識別文本內容須要將圖像信息轉化爲文本,這一過程能夠在移動端進行,也能夠在服務器端進行。其原理是使用深度學習分類能力,將包含字符的小圖片逐個分類爲文本字符。b. 使用的網絡結構GRU是LSTM網絡的一種變體,它比LSTM網絡的結構更加簡單,並且效果也很好,所以是當前很是流行的一種網絡結構。
  • 翻譯獲取
  1. 若是是在移動端進行文本提取,那麼在獲得提取的文本後,就要將文本做爲請求源數據,發送到服務器端。服務器端返回數據後,就能夠獲得這一幀的最終翻譯數據了。
  2. 請求網絡進行圖像翻譯處理,移動端等待結果返回。

-- 找到以前的位置

當翻譯結果返回後,極可能遇到一個相似「刻舟求劍」的問題:在移動端發送請求並等待結果的過程當中,用戶可能移動了手機攝像頭的位置,服務器端返回的結果就會和背景脫離關係,從而沒法貼合到對應的位置,這是從服務器端提取結果的弊端。解決這一問題須要使用跟蹤技術。

  1. 須要用一個完整的三維座標系來描述空間,這樣就能知道手機如今和剛纔所處的位置。
  2. 須要倒推原來文本所在位置和如今的位置之間的偏移量。
  3. 在跟蹤的同時須要提取文字的背景顏色,以儘可能貼近原圖效果。文字和背景的顏色提取後,在移動端學習獲得一張和原文環境差很少的背景圖片。
  4. 將服務器端返回的結果貼合在背景圖片上,大功告成。

下圖是咱們團隊在初期對AR實時翻譯功能進行的技術拆解,從中能夠看到,在移動端進行AI創新,每每須要融合使用深度學習和計算機視覺等技術。

file

實時翻譯流程圖

若是你看過AR實時翻譯的案例後仍然以爲晦澀,請不要着急,等學過移動端的機器學習、線性代數、性能優化等後,就會以爲明朗許多。

file

file

李永會/著

移動深度學習須要克服模型壓縮、編譯裁剪、代碼精簡、多平臺支持、彙編優化等諸多挑戰,本書正是基於做者在此過程當中的實戰經驗。首先介紹基礎的數學原理和深度學習模型,而後深刻移動計算設備的體系結構,以及如何在這種體系結構上進行高效的深度學習計算。

▶ 關 於 內 容

本書由淺入深地介紹瞭如何將深度學習技術應用到移動端運算領域,書中儘可能避免羅列公式,嘗試用淺顯的語言和幾何圖形去解釋相關內容。本書第1章展現了在移動端應用深度學習技術的Demo,幫助讀者創建直觀的認識;第2章至第4章講述瞭如何在移動端項目中應用深度學習技術;第5章至第8章的難度略大,主要講述如何深刻地調整框架,適配並定製本身的框架。本書適合移動端研發工程師閱讀,也適合全部對移動端運算領域感興趣的朋友閱讀。

▶ 關 於 做 者

李永會,百度App移動研發部資深工程師。2015年起在百度從事圖像搜索和語音搜索客戶端研發工做,主持了多個重要創新項目,包括百度Lens、實時翻譯等。同時負責開源移動端深度學習框架Paddle-Lite的開發,長期從事移動端AI高性能計算優化工做,在多種軟硬件平臺上高性能運行深度學習技術。在工做之餘有讀史、書法等愛好。

瞭解本書詳情:京東噹噹

相關文章
相關標籤/搜索