丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能 正文
發(fā)私信給楊曉凡
發(fā)送

0

為了讓iPhone實時運行人臉檢測算法,蘋果原來做了這么多努力

本文作者: 楊曉凡 2017-11-22 14:47
導語:每個能在移動設備上實時運行的深度學習算法背后都充滿了故事

為了讓iPhone實時運行人臉檢測算法,蘋果原來做了這么多努力

雷鋒網(wǎng) AI 科技評論按:蘋果從iOS11開始正式在系統(tǒng)中帶有機器學習API,同步提供了許多基于機器學習/深度學習的手機功能。其實這之前蘋果就已經(jīng)做了很多研究和開發(fā),但當他們決定在手機上運行深度神經(jīng)網(wǎng)絡、提供好用的功能同時還不要干擾正常的用戶體驗的時候,重大的挑戰(zhàn)同樣也等待蘋果解決。

近日蘋果機器學習博客的一篇新文章就介紹了蘋果是如何設計、實現(xiàn)在iPhone上運行的人臉檢測系統(tǒng)的,不僅模型設計花了功夫,運行環(huán)境的優(yōu)化也用了多種技巧。結(jié)合蘋果機器學習博客往期的幾篇文章,我們也繼續(xù)感受到許多企業(yè)、許多創(chuàng)業(yè)者所說過的,有創(chuàng)新只是第一步,把創(chuàng)新變成實實在在的產(chǎn)品還有很長的路要走、還有很多的困難要克服。

雷鋒網(wǎng) AI 科技評論把這篇文章全文翻譯如下。

自iOS10以來,蘋果開始把基于深度學習的人臉檢測方法融入系統(tǒng)中。隨著蘋果的Vision框架的發(fā)布,開發(fā)者們可以在自己的app中運用這項技術(shù)以及許多其它的計算機視覺算法。為了能夠保護用戶隱私以及高效地在本地設備上運行,蘋果在開發(fā)過程中也遇到了不小的困難。這篇文章中就討論了這些困難,并且介紹了蘋果的人臉檢測算法是如何解決這些困難的。

簡介

蘋果最初是通過 CIDdetector 類中 Core Image 框架的一個公有API 提供人臉檢測功能的。蘋果自己編寫的應用(比如照片)內(nèi)部也在使用這個API。最早版本的 CIDdetector 基于 Viola-Jones 檢測算法(雷鋒網(wǎng) AI 科技評論注:Viola Jones Face Detector是Paul viola 和 Michael J Jones 在CVPR2001論文中共同提出的一種人臉檢測框架。它極大地提高了人臉檢測的速度和準確率,是第一個實時的人臉檢測算法,即便到現(xiàn)在也還有巨大影響力),然后蘋果又在 CIDdetector 中加入了一些基于傳統(tǒng)計算機視覺方法的優(yōu)化。

隨著深度學習逐步發(fā)展,以及深度學習在計算機視覺中的應用越來越多,頂級的人臉檢測算法準確率也有了大踏步的提升。蘋果的開發(fā)人員們意識到自己需要重新思考面部識別的做法,以便跟上這種新的范式。與傳統(tǒng)計算機視覺方法相比,深度學習學到的模型消耗的內(nèi)存要多幾個數(shù)量級,更不用提需要更多的磁盤空間以及對計算資源的渴求。

即便今天的智能手機已經(jīng)有了長足的性能增長和豐富的功能支持,典型的高端手機仍然不足以讓基于深度學習的計算機視覺模型運行起來。業(yè)界內(nèi)比較普遍的做法是繞過這個困難,通過云計算API提供深度學習功能。在基于云計算的方案中,移動設備需要把圖像發(fā)送到服務器,在服務器上運行深度學習推理,分析、檢測其中的人臉。云計算服務通常要使用性能強勁的、帶有大量可用顯存的桌面級GPU。大規(guī)模的深度神經(jīng)網(wǎng)絡模型,甚至多個大規(guī)模網(wǎng)絡的融合模型就可以在服務器端運行,讓客戶端(比如智能手機)享受到深度學習帶來的種種好處,而且無需在本地運行(實際上也無法在本地運行)。

蘋果的 iClould Photo Library 就是一個視頻和圖像的云存儲解決方案,按理說可以方便地用服務器識別用戶已經(jīng)上傳的內(nèi)容。然而,由于蘋果對用戶隱私做出了很高的承諾、以高標準處理用戶信息,他們就無法在 iCloud 服務器上做計算機視覺的相關(guān)計算。每張上傳到 iClould Photo Library 的照片、每段上傳的視頻都是首先在設備上加密之后才上傳服務器的,要解密也只有這個 iCloud 賬戶下注冊的設備才可以解密。所以,如果要給客戶們帶來基于深度學習的計算機視覺解決方案的話,蘋果只能直接面對、嘗試解決這個困難:讓深度學習算法在iPhone本地運行。

蘋果的開發(fā)人員們面對的困難有好幾個。

首先,深度學習模型要作為操作系統(tǒng)的一部分,隨著手機一起來到用戶手中,這會占據(jù)珍貴的設備中的NAND閃存存儲空間;其次,模型需要加載到RAM中,并且需要消耗可觀的GPU和/或CPU計算時間;基于云的服務往往是專用服務器,其上的所有資源都可以集中提供給一個視覺問題使用,而在設備上本地進行的計算就需要和其它正在運行的應用一起共享系統(tǒng)資源;最后,計算過程必須足夠高效,在合理的短時間內(nèi)就能處理完一個很大的照片庫,同時還不能有大幅度的功耗增加、不能有明顯的發(fā)熱。

這篇文章余下的篇幅就介紹了蘋果是如何設計深度學習人臉檢測算法、如何克服困難達到頂級的準確率的。主要討論的內(nèi)容有:

  • 如何全面利用GPU和CPU(使用 BNNS 和 Metal)

  • 優(yōu)化網(wǎng)絡推理、圖像加載和緩存時的內(nèi)存使用

  • 如何在與iPhone的其它大量同時運行的功能時間不造成沖突的條件下實現(xiàn)這個網(wǎng)絡

從Viola-Jones算法到深度學習

當蘋果的開發(fā)人員們在2014年開始研究基于深度學習的圖像中的人臉檢測方法時,深度卷積網(wǎng)絡(deep convolutional networks,DCN)才剛剛開始在物體檢測任務中嶄露頭角。當時最突出的是一個名叫“OverFeat”的方法,它讓很多簡單的卷積神經(jīng)網(wǎng)絡思想變得流行起來,也表明了深度卷積網(wǎng)絡掃描圖像尋找物體時的高效性。

OverFeat在神經(jīng)網(wǎng)絡的全連接層和卷積網(wǎng)絡的卷積層之間找到了平衡,它的做法是把相同空間維度的過濾器的有效卷積作為輸入。這項研究清楚地表明,一個感受野大小固定(比如32x32大小,帶有16像素的自然步幅)的二分分類網(wǎng)絡可以高效地應用于任意大小的圖像(比如320x320的圖像),并且生成合適大小的輸出映射(這種情況下大小為20x20)。OverFeat這篇論文也提供了巧妙的做法,通過高效地降低網(wǎng)絡步幅產(chǎn)生更高密度的輸出映射。

蘋果的開發(fā)人員們根據(jù)OverFeat論文中學到的新觀點構(gòu)建了最初的模型架構(gòu),做出了一個全卷積網(wǎng)絡( 圖1),它可以執(zhí)行如下兩個功能:

  • 一個預測輸入中是否包含人臉的二分類分類器

  • 一個回歸函數(shù),預測一組參數(shù),它們形成的邊界框能最好地框出輸入中的人臉

為了訓練這樣的網(wǎng)絡,蘋果的開發(fā)人員們做了好幾種不同的實驗。比如,一種簡單的訓練方式就是建立一個數(shù)據(jù)集,其中包含大量固定大小的圖像塊,這些圖像塊的大小和模型允許的最小輸入大小相同;這樣,每個圖像塊在經(jīng)過網(wǎng)絡之后都只得到一個輸出。訓練數(shù)據(jù)集是平衡到理想狀態(tài)的,也就是說一半的圖像塊里包含一張臉(正例),另一半圖像里不包含人臉(負例)。對于每一個正例,都會同步提供給模型這張臉的真實位置(x,y,w,h)。然后蘋果就以前述的兩條網(wǎng)絡功能為目標,訓練優(yōu)化這個網(wǎng)絡。經(jīng)過訓練后,網(wǎng)絡就可以預測圖像塊中是否包含有一張人臉;如果包含有人臉的話,它同時還會輸出圖像塊中人臉的位置坐標和大小。

為了讓iPhone實時運行人臉檢測算法,蘋果原來做了這么多努力

圖1. 一個用于人臉識別的修改過的深度卷積網(wǎng)絡架構(gòu)

由于網(wǎng)絡是全卷積的,它可以高效地處理任意大小的圖像,并且產(chǎn)生二維輸出映射。映射中的每個點都對應著輸入圖像中的一個小塊,并且包含了網(wǎng)絡對圖像塊中是否包含人臉、輸入中的人臉位置和大小的預測結(jié)果。

有了這樣的網(wǎng)絡以后,就可以在它的基礎上構(gòu)建相對標準的圖像處理流水線進行人臉檢測。這個流水線由一個多尺度的圖像金字塔、人臉檢測網(wǎng)絡和后處理模塊組成。這里,為了處理各種不同大小的圖像需要一個多尺度的圖像金字塔。人臉識別網(wǎng)絡在圖像金字塔的每一個尺寸下都會執(zhí)行,每個尺寸都要選出候選的檢測結(jié)果。接下來后處理模型就會把不同大小的候選檢測結(jié)果組合起來,生成一個邊界框列表,對應著整個網(wǎng)絡對圖像中人臉預測的最終結(jié)果。

為了讓iPhone實時運行人臉檢測算法,蘋果原來做了這么多努力

圖2. 面部檢測工作流程

這種做法開始有點接近能夠在設備上運行、而且能詳盡地掃描整張圖像的深度卷積網(wǎng)絡了。不過網(wǎng)絡的復雜度和大小仍然是運行時的性能瓶頸??朔@個困難意味著不僅要把網(wǎng)絡限制、簡化為一個簡單的拓撲結(jié)構(gòu),同時還要限制網(wǎng)絡中的層的數(shù)量、每個層中通道的數(shù)量、以及卷積層的卷積核大小。這種種限制就凸顯出了一個嚴重的問題:產(chǎn)生的預測結(jié)果讓人覺得可以接受的網(wǎng)絡結(jié)構(gòu)必然非常復雜,多數(shù)時候要超過20層,而且有數(shù)個一個網(wǎng)絡中嵌套另一個網(wǎng)絡的模塊。把這樣的網(wǎng)絡用在前述的圖像掃描框架中可以說是完全不可行的了,性能表現(xiàn)和電量消耗都無法接受。實際上,這樣規(guī)模的網(wǎng)絡都沒辦法加載到移動設備的內(nèi)存中去。下面蘋果的開發(fā)人員們就面臨了一個巨大的挑戰(zhàn):如何訓練一個簡單、緊湊的網(wǎng)絡,讓它能夠模仿高度復雜的網(wǎng)絡的行為,達到可比擬的準確率,同時還能高效、節(jié)省資源地運行。

蘋果的開發(fā)人員們決定利用一種新的方法,它有個非正式的稱呼是“老師-學生”訓練(雷鋒網(wǎng) AI 科技評論注: FitNets: Hints for Thin Deep Nets)。這種方法帶來了一種新的機制,它可以訓練第二個又窄又深的網(wǎng)絡(“學生”),過程里要讓它的輸出和上文描述的大的、復雜的網(wǎng)絡(“老師”)高度吻合。學生網(wǎng)絡是由簡單的多次重復的3x3卷積和池化層結(jié)構(gòu)組成的;網(wǎng)絡架構(gòu)經(jīng)過了高度訂制,讓它能夠最好地利用蘋果在iPhone中搭載的神經(jīng)網(wǎng)絡推理引擎的計算能力。

這樣,蘋果終于找到了一個用于人臉識別的深度神經(jīng)網(wǎng)絡算法,而且是可以直接在設備上執(zhí)行的。蘋果的開發(fā)人員們進行了數(shù)次訓練迭代,最終得到了一個具有足夠精度的網(wǎng)絡模型,可以支持蘋果規(guī)劃的相關(guān)應用。雖然這個網(wǎng)絡現(xiàn)在已經(jīng)足夠準確、也能夠運行了,但是在把它真正部署到上百萬用戶的設備中去之前,還有許許多多的工作要做。

優(yōu)化圖像處理流水線

在產(chǎn)品設計的抉擇中,深度學習相關(guān)的實際考量也產(chǎn)生了深深的烙印,因為蘋果想要做的是開發(fā)者也可以方便使用的軟件框架,蘋果把它稱作Vision。有一件事很快就變得明顯起來,那就是只靠優(yōu)秀的算法還不足以建立一個優(yōu)秀的軟件框架。蘋果還需要建立一個經(jīng)過高度優(yōu)化的圖像處理流水線。

蘋果并不希望讓開發(fā)者考慮圖像縮放、圖像轉(zhuǎn)換以及圖像來源之類的問題。不管是處理攝像頭實時捕捉的視頻流、處理視頻、還是處理磁盤以及網(wǎng)上的圖像,人臉檢測都應當達到好的工作效果。它應當在各種圖像表示和格式下都能工作。

蘋果也很在意電量消耗和內(nèi)存使用,尤其是在視頻流傳輸和圖像捕捉的時候。內(nèi)存消耗量有可能造成一些問題,比如在拍攝6400萬的全景照片時就需要消耗很多內(nèi)存。為了消除這些風險,蘋果用了一些技巧,比如區(qū)域降采樣編碼、自動拼貼,以便能夠在大圖像上執(zhí)行計算機視覺任務,即便是在非典型的寬高比下。

另一個挑戰(zhàn)是顏色空間的匹配。蘋果有許多種不同的色彩空間API,但是他們并不想讓開發(fā)者們?yōu)榱松士臻g的事情費腦筋。Vision框架就會自動處理色彩匹配的問題,這樣也就進一步降低了在任何應用中使用計算機視覺算法的門檻。

Vision框架還通過中間過程的高效處理和復用進行了一些優(yōu)化。人臉檢測、面部關(guān)鍵點檢測以及其它一些計算機識別任務都可以在同一張縮放后的中間過程圖像上工作。通過算法接口抽象、為待處理的圖像或者緩沖找到歸屬地,Vision可以創(chuàng)建、緩存中間過程圖像,無需開發(fā)者做任何操作就可以提高多種計算機視覺任務執(zhí)行時的性能表現(xiàn)。

反過來說也有很大好處。從中心接口的角度來看,算法開發(fā)的方向可以是更高的復用程度或者更多的中間過程共享。Vision框架承載著幾個不同的、獨立的計算機視覺算法。為了讓不同的算法更好地協(xié)同工作,實現(xiàn)算法時設計的分辨率和色彩空間也應當盡可能多地在不同的算法之間共享。

為設備的本地執(zhí)行做優(yōu)化

如果面部檢測API既不能在實時應用中使用、又不能在系統(tǒng)后臺進程中工作,那么即便它設計得便于使用,也不會讓用戶感受到任何樂趣。對用戶來說,識別照片庫中的人臉應當運行得非常流暢,或者一張照片拍好以后馬上就能對它進行分析。但同時他們也不希望電量快速下降,或者讓系統(tǒng)的性能表現(xiàn)慢得像龜爬。蘋果的移動設備都是同時要執(zhí)行多個任務的設備,要么在后臺執(zhí)行的計算機視覺功能也就不應當顯著影響系統(tǒng)其它功能的執(zhí)行速度。

蘋果的開發(fā)人員采取了幾個策略來最小化內(nèi)存消耗和GPU使用。為了減小內(nèi)存消耗,iOS中通過分析計算圖的方法為神經(jīng)網(wǎng)絡的中間層分配地址;這樣可以把多個層通過假名指向同一塊緩沖區(qū)。雖然這個過程是完全確定性的,但這個技巧既對性能沒有造成什么影響、也沒造成地址的碎片化,就減小了內(nèi)存消耗。CPU和GPU上也都可以使用這個方法。

在Vision框架中,面部檢測器下需要運行5個網(wǎng)絡(如前文圖2,每個網(wǎng)絡對應一種圖像金字塔中的圖像尺寸)。這5個網(wǎng)絡有同樣的權(quán)重和參數(shù),但是輸入的形狀、輸出以及中間層有所區(qū)別。為了進一步減小內(nèi)存消耗,蘋果在這5個網(wǎng)絡共同形成的計算圖上開啟了運行時的內(nèi)存優(yōu)化算法,也顯著減小了內(nèi)存消耗。另外,多個網(wǎng)絡可以復用同一組權(quán)重和參數(shù)緩沖區(qū),也降低了內(nèi)存需求。

為了達到更快的運行速度,蘋果的開發(fā)人員們利用了這個全卷積網(wǎng)絡的本質(zhì)特點:為了匹配輸入圖像的分辨率,所有的大小都是動態(tài)縮放的。相比于把圖像規(guī)格化到方形網(wǎng)格的像素點中,讓網(wǎng)絡大小匹配圖像的大小則可以大幅度減少總的操作數(shù)目,由于操作的拓撲邏輯并不會被尺寸縮放改變,剩余的分配器還有很高的性能,動態(tài)尺寸縮放并不會帶來內(nèi)存分配相關(guān)的性能開銷。

為了保證后臺運行深度神經(jīng)網(wǎng)絡的時候用戶界面仍有足夠的響應性和流暢性,蘋果的開發(fā)人員把網(wǎng)絡中每一層的GPU運算任務不斷拆分,直到每個子任務消耗的時間都不超過千分之一秒。這樣,當用戶界面動畫這樣的高優(yōu)先級任務出現(xiàn)的時候驅(qū)動程序就可以先切換給它們執(zhí)行,減輕、甚至有時候完全杜絕了幀率下降的問題。

以上的所有方法結(jié)合起來就共同保證了用戶可以盡情享用本地計算的、低延遲的、隱私保護的深度學習推理功能,同時無需知道他們的手機正在以每秒數(shù)百GFlops的速度運行著神經(jīng)網(wǎng)絡。

如何使用Vision框架

蘋果是否真的達到了自己設定的“開發(fā)一個高性能、便于使用的面部檢測API”目標呢?開發(fā)者可以自己嘗試一下Vision軟件,自己做個判斷。以下是入門方法:

(完)

via Apple Machine Learning Journal,雷鋒網(wǎng) AI 科技評論編譯

相關(guān)文章:

蘋果的機器學習開發(fā)日記:如何設計能在Apple Watch上實時運行的中文手寫識別系統(tǒng)

蘋果揭秘“Hey Siri”的開發(fā)細節(jié),原來不僅有兩步檢測,還能辨別說話人

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

為了讓iPhone實時運行人臉檢測算法,蘋果原來做了這么多努力

分享:
相關(guān)文章

讀論文為生

日常笑點滴,學術(shù)死腦筋
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說