1. 程式人生 > >R Talk | 曠視科技孫劍博士:雲、端、芯上的視覺計算

R Talk | 曠視科技孫劍博士:雲、端、芯上的視覺計算

「R Talk 」是一個深度學習專欄,將通過不定期的推送展示曠視科技的學術分享及階段性技術成果。「R」是 Research 的縮寫,也是曠視研究院的內部代號;而所有「Talk」都是來自曠視 Researcher。「R Talk 」旨在通過一場場精彩紛呈的深度學習演講,拋磚引玉,推陳出新,推動中國乃至全球領域深度學習技術的大發展。

近日,2018 全球人工智慧與機器人峰會(CCF-GAIR)在深圳盛大召開。作為中國人工智慧和機器人學術界、工業界及投資界三大領域的頂級交流盛會,CCF-GAIR 2018 旨在打造國內人工智慧領域最具實力的跨界交流合作平臺。

6 月 30 日,計算機視覺專場舉行,會場現場爆滿,議題同時涵蓋計算機視覺技術的前沿研究動態與相關的具體落地方向,不少聽眾站著聽完了長達數小時的分享。曠視科技首席科學家、研究院院長孫劍博士為大家帶來題為 “雲、端、芯上的視覺計算”的精彩 Talk。

孫劍博士在 CCF-GAIR 2018 現場演講

孫劍認為,計算機視覺簡單講就是使機器能看,曠視科技希望能夠做到“賦能億萬攝像頭”,讓應用在所有領域的攝像頭都具備智慧,不管是在雲、端還是在芯上。

計算機視覺的發展史就是研究如何表示影象的歷史。深度學習流行之前,最好的辦法是基於特徵的,從影象裡抽取特徵,再進行分析;但是這個方法有兩個大缺點:首先,該方法完成的非線性變換次數非常有限;其二,大多數引數都是人工設計的,包括 Feature。

深度神經網路的辦法彌補了手工設計特徵的缺陷,整個非線性變換可以做非常多次,換句話說可以很深,所以特徵表示能力非常強,並且可以自動地聯合訓練所有引數。孫劍在微軟時提出 152 層的 ResNet,第一次在 ImageNet 大規模影象分類任務上超過了人的能力。

接著,孫劍從計算機平臺的角度對出現的各種神經網路結構進行了分類:GoogleNet、ResNet 在“雲”上;MobileNet 以及曠視提出的 ShuffleNet 屬於“端”這一類;BNN、XNOR Net 和曠視提出的 DorefaNet 則是在“芯”上。針對目前分平臺設計相關網路的現狀,孫劍相信未來會有一個“MetaNet 出現,能夠統一解決各個平臺上的神經網路設計和優化問題”。

最後,孫劍簡單介紹了曠視在雲、端、芯三個平臺上的計算機視覺應用,包括人臉識別、車輛識別、人臉支付、智慧安防、智慧金融、城市大腦、倉儲物流、新零售等。

以下為孫劍 Talk 全文,本文進行了不改變原意的編輯。

目前人工智慧一般劃分為感知和認知兩塊,這一張圖可以看到計算機視覺在人工智慧領域所處的位置,綠色表示技術上有重大突破或者應用落地相對成熟、橙色和黃色表示還需重大突破。

曠視科技成立至今已經 7 年,一直專注於計算機視覺領域。去年,曠視獲得了兩個非常好的榮譽,MIT 評選的 2017 年度十大突破性技術中曠視科技的“刷臉支付技術”榜上有名,這是中國公司的技術第一次獲此殊榮;MIT 也將曠視列為 2017 年度全球五十大最聰明公司的第 11 位。曠視去年也完成了新一輪 4.6 億美金的融資,用於做更好、更深入的研究和商業落地。

簡單來講,計算機視覺就是讓機器能看。曠視科技自創立就一直在回答“如果機器能自動理解一張影象或者一段視訊,我們能做什麼?”這個問題。當然這麼說比較抽象,其實具體講我們想做的是“賦能億萬攝像頭”。日常生活和各個行業中有很多的攝像頭,比如說手機、安防、工業、零售、無人車、機器人、家庭、無人機、醫療、遙感等等。在這些地方,大多攝像頭還沒智慧化,我們的使命是使這些攝像頭有智慧,不管是在雲、端還是在晶片上;我們要構建智慧大腦來理解智慧攝像頭輸入的大量資訊。

相對於語音識別來說,計算機視覺應用面非常廣泛。語音識別的輸入和輸出較為單一,核心目標是把一段語音變成一句文字。但計算機視覺系統的輸出要豐富很多,你需要知道影象/視訊裡面的物體、運動、場景,其中有什麼人、人的位置、行為、表情、注意力等等。你會在不同行業或場景中面臨各種各樣不同的任務,這也讓計算機視覺成為一個很大並增長很快的學術領域(今年計算機視覺年會 CVPR 參會人達到近 7000 人),也誕生出眾多的優秀創業公司。

計算機視覺的核心問題包括分類、檢測、分割,分別是對一張圖、一張圖的不同區域和一張圖的每個畫素做識別。另外如果輸入的是視訊,我們還需要利用時間關係做識別;其中最核心的是分類問題,因為它是後面三個任務的核心和基礎。

其實,人工智慧一出現時,計算機視覺也誕生了。計算機視覺有一個先驅人物叫 David Marr,他在 80 年代初期提出了 Primal Sketch 方法,以及一個研究計算機視覺的大框架,認為影象應該先檢測 Edge,然後出 2 ½ D sketch 和 3D 模型。但是 MIT 教授 Marvin Minsky 批評說你這個理論很好,但是忽略了核心問題的研究——如何表述一張影象。

計算機視覺的早期影象表示模型是 Part-based,比如人體可以分解成頭、胳膊、腿;人臉可以分解成眉毛、眼睛、鼻子,這樣就可以通過 Part 這種組合式的方法表示物體。如果一個物體有結構,這種組合式方法很合適,但很多自然場景的物體沒有這麼強的結構就不合適了。

80 年代,早期的神經網路也成功運用在人臉和手寫數字識別上,但是僅限於這兩個領域。2001 年有一個叫作 Viola & Jones 的人臉檢測的方法,它先是定義一組 Haar 小波基,然後通過機器學習的方法學習 Harr 小波基的組合來表示影象。這個方法的好處是引入學習來構造影象表示,壞處是它限定在這個小波基上,對有結構的物體做得好,對沒有結構的物體就不一定合適了。

大概在 2000 - 2012 年,在深度學習之前最流行的表示是 Local Feature-based。該方法從一張圖片裡面抽取數百個 Feature,去人工形成一些諸如 SIFT/HOG 的 Descriptor,編碼獲得高維向量之後,再送給 SVM 分類器,這是深度學習之前最好的方法。

對人臉也類似。我以前的研究組也用同樣方法做過人臉關鍵點抽取,獲得高維 Feature,這也是當時最好的人臉識別方式,但是它有兩個大缺點:第一,這個方法整體上是從輸入向量到另外高維向量的非線性變換,這個向量的變換次數是有限的,如果真正算它的非線性變換也就三、四次,變多了是不行的,效能不會提高;第二,其中大多數引數是人工設計的,包括 Feature,但人設計複雜系統的能力是有限的。

今天的主流方法是深度神經網路,這兩個特性就被改變了,整個非線性變換非常長,可以做非常多次,所以系統的表示能力非常強;第二是所有的引數聯合訓練。這兩點讓深度神經網路真正能夠取得非常好的效果,也包括當時我們在微軟提出的 152 層的殘差網路 ResNet,第一次在 ImageNet 上超過了人的效能。

ResNet 為什麼能夠工作呢?到今天也沒有一個明確答案,當然有很多解釋。最直觀的解釋是說當你的非線性變換層數非常多,相鄰兩層變換的差別就非常小,與其直接學習這個對映,不如學習對映的變化,這樣的方式就讓整個學習過程,特別是訓練優化過程變得更容易。

還有一個解釋來自該論文(Kaiming He,Xiangyu Zhang,Shaoqing Ren,Jian Sun. Deep Residual Learning For Image Recognition. CVPR 2016.)的第二作者張祥雨,他認為 ResNet 的整個學習過程是一個由淺到深的動態過程,在訓練初期等效訓練一個淺層網路,在訓練後期等效訓練一個深層網路。

論文第一作者何愷明有另外一個更“科學”的解釋,他認為整個訓練過程相當於深度學習的梯度下降過程中,最為困難的梯度消失問題被 ResNet 解決了,該解釋也發表在 ECCV 2016 的一篇論文(Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Identity Mapping in Deep Residual Networks. ECCV 2016.)中,並在該論文中第一次訓練了一個 1001 層的神經網路。

還有一些同行提出的解釋。一種是把 ResNet 和 RNN 關聯起來,認為如果有 Weight Share, ResNet 可以看作是一種 RNN。還有一種解釋把 ResNet 看成是指數多個不同深度網路的整合。用“整合”這個詞其實有些問題,因為一般我們做整合演算法不聯合訓練,但這裡面整個 ResNet 裡指數多個網路是聯合訓練的,所以很難定義它是不是整合。

我個人比較認同的一種解釋是 Iterative Refinement,它是說網路初期的層學習表示,後期很多層不斷迭代和 Refine 這個表示。這跟人理解看圖識字很相似,一個不容易理解的東西你要看一會,是基於當前一些已看內容的理解,反覆看才能看懂。

還有從從優化觀點的解釋,如果不用 ResNet 這種構造,系統的損失函式會非常坑坑窪窪和高低不平,所以很難優化。我們知道整個網路訓練是非凸的優化問題,如果是這種不光滑的損失函式,訓練很難跳出區域性極小;如果是上圖右邊使用 ResNet 的情況,就可以比較容易地達一個很好的區域性極小。最近研究表明,區域性極小區域的面積和平坦性和一個方法的推廣能力非常強相關。

多層 ResNet 學習高度非線性對映的能力非常強。去年,ResNet 成功應用於 DeepMind 的 AlphaGo Zero 系統中,用 一個40 或 80 層的網路就可以學到從棋盤影象到落子位置這樣一個高度複雜的對映,這非常讓人吃驚。

2012 年開始有各種各樣的神經網路結構出現。如果從計算平臺的角度看這些工作,大概可以分成三類:第一類是在“雲”上,像 GoogleNet、ResNet,其目標是向著最高精度方向走,有 GPU、TPU 可以訓練非常大的模型,來探知我們的認知邊界;第二類平臺是在“端”上,特別是一些嵌入式裝置,這些裝置上的計算能力,記憶體訪問都有限制,但很多真實的場景就是如此,那你怎麼去做這上面的研究工作呢?谷歌在去年提出 MobileNet 執行在移動端裝置上,曠視科技去年提出 ShuffleNet,其目標是說如何在一個給定計算量的裝置上得到最好的效果。

一個網路的最基本結構是多個 3×3 的卷積,ResNet 加了一個跳轉連線,我們在 ResNet 中還引入一個 Bottleneck 結構,先做 1×1,再做 3×3,再回到 1×1,這樣可以提高卷積的效率。

去年何愷明有一項工作叫 ResNeXt,它在 3x3 的基礎上引入分組卷積的方法,可以很好地提高卷積的有效性;谷歌的 MobileNet 是一個 3x3 分層卷積的方式,每個層各卷各的,這種方式非常有效,特別是在低端裝置上。ShuffleNet 結合分組卷積和分層卷積的思想,對 1×1 Conv 分組;但是如果只分組的話,組間的資訊不會交換,這樣會影響特徵學習,因此我們通過引入 Shuffle 操作,讓不同分組的資訊更好地交換,然後做 3×3 的分層卷積,再回到 1×1 分組卷積,這就是 ShuffleNet 的核心思想。和其它方法相比,在相同的精度下,ShuffleNet 在真實裝置上的速度要比 AlexNet 快 20 倍左右。

這是我們去年專為手機設計的 ShuffleNet,它在 CPU/ARM 上效果非常好;如果在 GPU 上,它的效能並不好,因為 CPU 和 GPU 的特性不太一樣,這裡面有很多原因,比如卷積的設計,Group 卷積等等,我就不贅述了。

今年我們設計了 ShuffleNet v2,也就是第二版,拋棄分組卷積的思想,引入 Channel Split 和 Channel Shuffle 組合的新方法。這個方法把 Channel 先一分為二,並把每個分支用非常簡單的結構來做,然後在用 Shuffle 操作合併 Channel,這樣做的根源是我們在網路設計中發現的一些基本指導原則,比如說我們需要平衡的卷積而不是稀疏的卷積,更加規整的卷積而不是零亂的卷積。

這項工作目前在 CPU 和 GPU 上都獲得了最好的精度和速度;不光在小模型,在大模型上同樣取得了非常好的效果,上圖最後一行是說 ShuffleNet v2 目前在計算量只有 12.7G Flops 情況下在 ImageNet 上取得了非常高的精度。

我們還需要將神經網路執行在晶片上,這不光對網路結構設計有要求,還要對網路內部精度的表示做限制,現在最流行的方法是做低精度化,比如 BNN 和 XNOR Net,還有曠視科技提出的 DorefaNet。低精度方法是指神經網路的權重或啟用值用低精度表示,比如 1 位,2 位,4 位。如果可以用低精度表示兩個向量,那麼卷積計算就可以通過晶片上非常簡單的位運算完成計算。

我們提出的 DorefaNet 是第一個對梯度也做量化的研究工作,從而可以讓我們在 FPGA 甚至 ASIC 上訓練。在這些裝置上計算量是一方面,但是它的記憶體訪問限制更大,DorefaNet 這種方法可以做到更好。上圖是我們在 ImageNet 上得到的 1 位,2 位,4 位和 6 位量化精度下的最好分類結果。

上述分類問題網路設計需要考慮不同的平臺,其它問題多是以分類為基礎,比如說檢測,上圖是檢測最近幾年的發展路程,從 R-CNN 到我們提出的 SPP-Net,到 Fast R-CNN,再到我們提出的 Faster R-CNN,它們都是先應用基礎分類網路,然後構建不同的物體檢測框架。

檢測方面的目前最有權威性的競賽是 COCO,檢測精度用 mAP 來表示,越高越好。2015 年我們在微軟亞洲研究院用 ResNet 做到了 37.3,曠視研究院去年參加了這個競賽,取得第一名的成績 52.5(滿分 100 分),又推進了一大步。我們獲得 COCO 2017 冠軍的論文是 MegDet。COCO 可以對人進行檢測,也可以抽取特徵,我們也在研究後者的工作(Yilun Chen, Zhicheng Wang, Yuxiang Peng, Zhiqiang Zhang, Gang Yu, Jian Sun. Cascaded Pyramid Network for Multi-Person Pose Estimation. CVPR 2018.),提取人體骨架,通過骨架表示人體運動,進行行為分析,這樣比直接分析圖片進行行為訓練更為有效。

最後介紹一些我們做的基於雲、端、芯上的商業應用。

在雲上,曠視科技最早推出了面向開發者的 http://www.faceplusplus.com 的 AI 雲服務。第二個雲服務產品是 http://www.FaceID.com,這是目前最大的線上身份認證平臺,為網際網路金融、銀行、出行等行業提供線上身份認證服務。第三個非常大的雲服務產品是城市大腦,它的核心是通過很多的感測器,獲取大量資訊,最後做出決策。視覺是目前最大的一個感知方式,因為中國有非常多的攝像頭,通過賦能這些視覺感測器,我們可以知道人和車的屬性,瞭解交通和地域情況。其中一個很重要的應用是公共安防,即如何用賦能億萬攝像頭來協助城市安全和高效運轉。

在端上的應用更多,第一個就是手機。vivo V7 是第一款海外上市旗艦機,搭載了我們的人臉解鎖技術,還有小米 Note 3 的人臉解鎖。我們幫助 vivo 和小米在 iPhoneX 釋出之前推出了人臉解鎖手機。華為榮耀 V10 和 7C 手機同樣使用了我們的技術。華為為什麼請孫楊做代言人?因為他長期游泳,指紋已經磨光了,必須用人臉解鎖才能很好地使用手機。

不光是人臉解鎖,還包括人臉 AI 相機的場景識別,實時知道你在拍什麼,更好地調節相機引數,還可以做人臉三維重建,自動實現 3D 光效。另外一個很有趣的應用是深圳和杭州的肯德基旗艦店,消費者可以直接刷臉點餐,這些圖是我在現場刷臉支付喝到一杯果汁的過程。第二個是新零售,藉助影象感知系統,能把線下的人、貨、場的過程數字化。線上零售是數字化的,可以根據數字化的使用者統計資訊或者個人資訊做使用者畫像、大資料分析,幫助提升新零售效率。我們線上下零售,需要用影象感知來做數字化。

最後是晶片。我們去年在安防展釋出了一款智慧人像抓拍機——MegEye-C3S,把 DorefaNet 跑在 FPGA 上,再放到相機裡,這是業界第一款全畫幅(1080p)、全幀率(30fps)人臉實時檢測抓拍機。

再往下應該怎麼做呢?今天我們是分平臺,根據平臺的特性設計不同的網路。我們相信下一代會有一個“MetaNet”,統一解決各個平臺上的神經網路設計和優化的問題。

謝謝大家。