Introduction of Megvii (Face++)
AI Surveillance
leiphone 作者:张栋
7月14日,對岸「智慧城市·視覺智慧」專場正式拉開帷幕,本專場全面圍繞「未來城市級視覺 AI 的發展方向」這一主題展開。
會上,曠視首席科學家、研究院院長、西安交通大學人工智慧學院院長孫劍帶來了題為《深度學習變革視覺計算》的精彩分享。
孫劍從視覺智慧、電腦攝影學,以及 AI 計算三個方面,介紹了電腦視覺研究領域的變革。
他首先回顧了深度學習發展歷史,深度學習發展到今天並不容易,過程中遇到了兩個主要障礙:
第一,深度神經網路能否很好地被訓練。在深度學習獲得成功之前,曾被很多人懷疑,相比傳統的機器學習理論,深度學習神經網路的參數,要比數據大十倍,甚至上百倍;
第二,當時的訓練過程非常不穩定,論文即使給出了神經網路訓練方法,其他研究者也很難把結果復現出來。
這些障礙直到 2012 年,才開始慢慢被解除。
孫劍認為,深度學習和傳統機器學習,最大的差別是,隨著數據量越來越大,使用更大的神經網路,就有可能超越人類性能。
而具體到計算平台上,目前包括雲、端、晶上的很多硬體上,都可以部署智慧,技術發展趨勢,是如何自適應地,根據計算平台做自動模型設計。在這方面,曠視提出了 Single Path One-Shot NAS 的模型搜索新方法,它分為兩步:
第一步是訓練一個 SuperNet,是一個超網路,包含我們想搜索的子網路,先訓 SuperNet 所有的加權;
第二步是搜索 Sub-Nets 子網路,好處是第二步不需要訓練,非常高效。整個模型搜索時間,只是正常訓練時間的 1.5-2 倍,但可以得到非常好的效果。目前在多個測試集上得到了領先的結果。
此外,為了建構核心技術,曠視還打造了自研的人工智慧框架 Brain++,包括具備多中心、強大算力的 Brain++ Infrastructure,公司全員使用的深度學習引擎 Brain++ Engine,以及整合最新模型搜索的 AutoML 技術;同時,曠視還有人工智慧數據標注和管理平台 Data++,借助算法輔助數據清洗和標注。
曠視首席科學家、研究院院長、西安交通大學人工智慧學院院長孫劍
以下是孫劍博士大會現場演講內容,小編作了不改變原意的整理及編輯:
孫劍:謝謝大家,今天非常高興來到本次盛會,會議的火爆程度比去年高很多。這次 Talk 的主題是回顧深度學習,對電腦視覺研究帶來的變化。
我們知道,電腦視覺在人工智慧裡佔有非常重要的地位。人工智慧可分為感知、認知兩大部分,語音、自然語言、視覺是人工智慧的三大支柱。我用不同的顏色,表示不同方向的技術突破,和落地程度。
曠視成立之初,一直致力於電腦視覺研究,其發展如此興盛的原因,與我們周圍存在的海量攝影機有關。
我們知道,攝影機作為一種重要載體,有非常多的應用場景,這也是今天電腦視覺領域,有非常多公司的原因之一。
今天的分享主要分為三個方面,這也是深度學習引入電腦視覺後,對我們的研究帶來的三大變革:
- 第一,視覺智能是回答了機器如何理解一張照片或者影像,這方面的研究發生了哪些變化?
- 第二,電腦攝影學研究,如何從輸入圖像生成另一幅我們期望的圖像,這個領域發生了哪些變化?
- 第三,今天的 AI 計算發生了哪些變化?
視覺智慧
Marvin Minsky 是人工智慧領域的奠基者。他在研究人工智慧之初,曾研究一個電腦視覺問題:將一個攝影機,對著一堆積木用機械臂去抓取,以及讓機器堆放的,和人擺放的一樣。
他招了幾個實習生,希望能在幾個月就完成這個項目,但是幾年後都沒有太大進展。這說明電腦視覺是個非常難的課題。
電腦視覺研究雖然場景很多,至今可以歸類為幾個問題:分類、檢測、分割,以及將前三者用於影像序列的辨識工作。
電腦視覺尤其是語義理解核心,是如何在電腦中表示一張照片,以至於可以操作它、理解它,用它做各種各樣的應用。最早期的研究包括 David Marr 提出的 2.5D Sketch, 和 Part-base 的表示。
90 年代的神經網路,主要用來做做字符辨識、人臉檢測。2000 年左右,類似 Boosting 的機器學習方法,第一次引入學習特徵。
2000 年後最好的方法是 Feature-base,從一張圖中抽取很多局部的特徵,編碼成一個非常長的向量。2010 年深度學習後,神經網路給我們帶來了,更強大的視覺表示方法。
深度神經網路有兩個特徵:
首先,它是對一張圖片做映射,映射到一個高維空間的向量上;它由非常長的非線性變換組成,進來的信號進行多次非線性變換,直到人們得到想要的圖像表示。第二,這個非線性變換中的所有參數,都是根據監督信號全自動學習的,不需要人工設計。
這是一個可視化工作,展示了神經網路,在前面一些層學到了類似邊緣、角點,或紋理等初級模式,在後面一些層學到越來越多的語義模式,例如物體或物體部分。整體學到了分層結構的表示。
深度學習走到今天經歷了很多的坎坷,直到2010年才重新佔據了統治性地位,發展過程中主要遇到了兩個障礙:
- 第一,深度神經網路能否很好地被訓練。 在今天深度學習成功之前很多人是不相信的。按照傳統的機器學習理論,深度學習神經網路的參數,比訓練數據要大10倍,甚至上百倍,如何很好地學習出來,很多人不相信。
- 第二,當時的訓練過程非常不穩定,論文報了深度學習或者神經網路訓練的方法,別人很難把結果復現出來。作為一名導師,很難鼓勵他的學生從事這方面研究。
這兩個障礙直到 2012 年開始慢慢地被解除。
從 2012 年 AlexNet,一個 8 Layers的神經網路,後來有 VGG, 一個 19 Layers 的神經網路,到了 2015 年,我們提出了 152 Layers 的神經網路。隨著網路層數的增加與數據的增多,我們第一次在 ImageNet 數據集上,讓機器超越了人類。
從 ImageNet 數據集建立,到打破人類的性能大概用了 5-6 年時間。我想當初李飛飛教授團隊完全沒有想像到可以這麼快,機器的能力超過人的能力。
我們當時做 152 Layers 網路經常被問一個問題:為什麼這個網路是 152 Layers?我們的缺省的回答,是當時內存就可以裝這麼多層。
去年一個朋友給了一個更好的答案:8 乘以 19 等於 152。AlexNet 是 8 層,VGG 網路是 19層,所以 ResNet 是 152 層。
ResNet 的核心思想是加入跳層連接,不要學習直接的映射,而是學習殘差映射,這樣非常有利於訓練或優化。
ResNet 出來後,同行給了各種各樣的解釋。這是我比較相信的解釋:而非 ResNet 很容易表示 0 映射,即輸入信號和輸出很接近 0;而 ResNet 很容易表示 Identity 映射,即輸入信號和輸出很接近,直觀的理解是當一個網路非常深時,相鄰的變化越來越小。這種參數化的形式,更利於學習,以至於我們神經網路的優化更容易。
這裡列出深度學習之前遇到的很多困難:
- 數據、計算力不夠;
- 如何初始化網路的方式;
- 如何使用非線性單元等。
ResNet 補充了一點:網路結構應當對優化更友好。綜合這些在深度學習方面的各種進展,今天每個人都可以很好地重現結果,做出高度可重複的實驗。
深度學習的映射能力非常強大,ResNet 去年被用到 AlphaGo Zero 中,他們用一個 40 或者 80 Layers 的 ResNet,來預測棋子應該放置的位置。下棋這麼複雜的映射,都可以被一個簡單的 ResNet 很好地學到,說明瞭其映射能力之強。
在實際過程中,在有監督學習問題上,深度學習和傳統機器學習,最大的差別在於:隨著數據量越來越大,如果用更大的網路,很有可能超越人類的性能。
曠視第一個雲服務的產品——Faceplusplus.com,提供了各種電腦視覺 API,服務了全世界的開發者。
我們另一個產品是 FaceID.com,它是目前最大的第三方身份認證平台,由於它遠超人類的能力,目前服務於包括網路金融、銀行客服、交通出行等領域。
上述討論的產品主要應用在雲端上,不用太考慮計算速度,和神經網路的大小。雲端模型的目標是突破認知邊界,看我們能做得多好。
但是在線下場景,很多應用需要在行動端或手機上運行。在行動端這個計算平台上,有兩個代表性的神經網路設計可以參考:
- 一個是 Google 的 MobileNet 系列;
- 一個是曠視 ShuffleNet 系列。
ShuffleNet 有 V1 和 V2 版本,核心是提出了一套設計原理:比如讓卷積更平衡;盡量不要產生分支;降低整體結構的碎片化,避免逐元素操作。
我們的 ShuffleNet V2 設計性能非常出色。這是 Google AI 團隊給出評測報告,他們評測 ShuffleNet V2 在實際運行速度上經常比 MobileNet V2 快 30-50%。
由此曠視助力中國全部的一線手機廠商,做出了第一款 2D 人臉解鎖手機、第一款 3D 結構光人臉辨識解鎖手機、第一款紅外線人臉解鎖手機等。
隨著端上對功耗要求更低、面積體積更小,所以需要進一步研究,如何把神經網路在晶片上高效運行。
因此出現了以低比特,表示為代表的一系列工作,包括 DorefaNet(曠視首先提出),在低比特運算方面,這是第一個提出將加權、激活向量、和梯度,都進行低比特化的工作。
在晶片上,比計算最大的問題,是內存訪問頻寬受限,需要內存訪問量很大程度壓下去,才可能高效運行。
這是我們在 2017 年推出的第一款,以 FPGA 的智慧相機,我們把 DorefaNet 放在智慧相機裡。
2018 年,我們把 DorefaNet 放在了一顆,我們與合作夥伴聯合研發的 ASIC 晶片上,提供了比 FPGA 高非常多的性能。
它不但可以用在手機上,還能用在即時的自動化場景中,用來搬運貨架或物品,它有兩個攝影機,朝下和朝前看,分別做車的導航和避障,類似室內無人車。
攝影機是機械臂的眼睛,它在搬運物體需要即時辨識箱子在哪裡,在哪裡抓取箱子。在自動化流程過程中,需要高效、高速地,在端上做智慧計算。
用了這些晶片的計算方法,可以應用到非常多的智慧硬體上。這張圖是都是曠視自研的硬體。
在神經網路設計的最新研究方面,目前很熱的趨勢叫 AutoML 或者 NAS 。這是一個很好的網站(automl.org),大家可以在這裡看最新的文章。
NAS 的問題核心,是解一個嵌套的加權重訓練問題,和網路結構搜索問題。
這個問題非常難,需要非常大的計算量。最早 Google 用增強學習或演化計算方法,降低計算量,但計算量依然非常大。
最新流行的方式是用加權分享的方式,比如用 Darts 或 Proxy Less 等工作。我們曠視今年年初推出了 Single Path One-Shot 的新方法,分為兩步:
第一步是訓練一個 SuperNet,這是一個超大的網路,任何子網路是我們想搜索的網路。我們先訓 SuperNet 所有的加權;第二步是做對 SuperNet 採樣其中的子網路,好處是這一步不需要訓練,非常高效,訓練時間是正常訓練時間的 1.5 - 2 倍,可以得到非常好的效果。目前在多個測試集上,得到了最好效果。
我們的方法不但可以做圖像分類,也可以做物體檢測。
我們的方法還可以用來做模型簡化(Pruning),同樣可以用 SuperNet 的方法,先訓一個 PruningNet,它相當於一個 SuperNet,由 Pruning Net 生成很多子網路,得到很多很好的 Pruning 的效果。
以上是今天的第一部分,說的是視覺智慧,我們從 Feature 的功能化定義,到走向模型的設計,再走到現在的模型搜索。
計算攝影學
第二部分,我想分享以前做了很多年的研究方向 —— 計算攝影學。除了計算智慧,電腦視覺中,還有一個問題是給輸入一個圖像,輸出是另一個圖像。從輸入品質比較差的圖像(比如模糊、有噪聲、光照不好)恢復更好的圖像,這就是計算攝影學,也是目前研究很活躍的方向。
計算攝影學以前是怎麼做的?這篇(上圖)是我們 2009 年的 Dehaze 去霧,引入黑通道先驗,並結合霧的物理產生過程,來恢復沒有霧的圖像,效果非常好,並獲得了 CVPR 2009 最佳論文。
這是我們以前和同事一起做的(上圖),如何從一張模糊圖像,和噪聲圖像恢復成清晰的圖像,這裡用了很多傳統的反卷積方法。
這是另一問題,被稱為圖像摳圖:左邊是輸入,右邊是輸出,目的是把前景精細分離出來。
這是我和今天第一位講者賈佳亞教授,當年聯合做的一篇文章(上圖)。
這是我和賈佳亞合作的第二篇文章(左上圖)。一張圖上缺失一部分,或者想移除一個人,我們透過交互的方法,上面畫一些線;後來我們又利用 Patch 自然統計的方法,能夠做的更好。
總結一下傳統的計算攝影學方法:「八仙過海」,每個問題需要尋找不同的假設,每個問題都要單獨的去建模和求解。
不同的研究員有不同的方法,好處是你有能力的話,可以做出非常有意思的方法,壞處是每一個方法都要獨立設計。
今天的深度學習的方法,是拋棄了以前的做法,不需要做任何顯式的假設,透過全卷積的 Encoder-Decoder 輸出想要的圖像。
舉個例子,關於 Image Matting 問題,今天的方法是:透過一個多任務的網路,可以直接輸出 Matting 的結果,非常細的毛髮都能提取出來。我們的工作在圖像 Matting 最大的兩個 benchmark 上都排名第一。
Matting 不光可以做圖像合成,它還可以用單攝影機,就拍出像單眼一樣的效果。
還有一個變革,是這對相機裡面的圖像信號處理器 ISP (Image Signal Processor), 上面是傳統的圖像 ISP,和圖像信號處理流程,後面是 AI-ISP,用一個神經網路來做。
左邊是之前,右邊是之後,AI-ISP 可以得到非常好的降噪效果,和高品質的圖像。
這個方法獲得了今年 CVPR 圖像降噪的冠軍,同時我們將這個方法,應用在 OPPO 今年最新的旗艦手機 OPPO Reno 10 倍變焦版的夜攝超畫質拍攝技術上。
AI 計算
最後我想分享我們在計算上的變革。
左邊傳統的馮諾伊曼計算架構,服務了我們很多年。但隨著數據的日益增大,出現了「馮諾伊曼瓶頸」,指內存和計算單元之間搬運數據的瓶頸。
右邊是今天神經網路做訓練、推理的方法,它突破了這個瓶頸。因為神經網路計算非常簡單,基本上只包含向量和矩陣之間的操作,可以避免很多判斷和分支,用大規模並行的計算方式消除瓶頸。
雖然摩爾定律慢慢消失了,AI 計算能力反而在超指數成長,從 2016 年 10 TFLOPS 的算力,現在到幾百的 TFLOPS。
前期帶來的變化,是從以前的大規模計算 CPU Cloud(大盒子)遷移到了 GPU Box(小盒子)。但是大概 2015 年後,大家發現這些小盒子也不行,因為我們現在用更大的模型,我們今天在 ImageNet 上的模型,比我們 2015 年用的大 10 倍都不止。另外,很多人一起工作時的,每人一個小盒子的效率,是非常低效的。
在模型大小方面,物體辨識目前最權威的比賽是 COCO,2017 年我們得到了三項冠軍,隨著我們更大的模型,效果越來越好。2018 年我們有更大的模型,拿下了四項 COCO 冠軍。
這麼大的模型,在一個小盒子裡是不行的。2018 年我們提出一個方法 MegDet,結論是你可以用多個計算單元,可以把訓練速度非常高效的提高,幾乎是線性速度的加速,性能更好,這是模型的變化,是第一個方面。
數據的話也會越來越大,這是曠視和北京智源人工智慧研究院,共同推出的 Objects365,第一階段開源超過 1000 萬的標注框,這是目前世界上最大的檢測數據集,不光是數據大,可以真正學到更好的 Feature,這是第二方面。
第三方面,如果你的數據非常大,無法放在小盒子裡,必須放在中心。帶來的問題是,如果我們同時訓練,傳輸是很大的問題。
於是,在 2015 年之後,我們又從小盒子又回到大盒子,但這個大盒子是是 GPU 或者 TPU Cloud。
為了做這件事,曠視自研了我們的 AI 平台 Brain++,底層是物理算力,上面有 Engine、Computing,Data,和 AutoML。
這個 Brain++ Engine 是我們自研的深度學習引擎,之前大家用最多的是 Caffe、TessorFlow、Pytorch,曠視從 2014 年研發 Brain++ Engine,到現在曠視全員使用已經的版本已經是 7.0 版本。
據我所知,曠視是所有創業公司中,唯一一家自研深度學習引擎,並且全員使用的公司。引擎之下是計算環境,包括硬體管理,包括計算儲存管理、模型訓練支持等。
0 comments:
張貼留言