從華為P20 DxOMark的勝利來說AI與機器學習

從華為P20 DxOMark的勝利來說AI與機器學習

華為在上週釋出了P20 Pro和P20,在當天公佈的DxOMark手機攝像上排行名列前茅,並且領先幅度並不是1分2分,P20 Pro比之前的榜首三星Galaxy S9 Plus高了10分,可以說完全不是一個紀元,而是領先了一到兩個時代。當然P20 Pro的1/1。73英寸的CMOS規格難免有些欺負人,但1/2。7英寸 CMOS的P20相比Galaxy S9 Plus、Pixel 2僅僅是規格稍高,然而其成像畫質也有明顯優勢,那這個優勢是由何而來的呢?

攝影畫質的提升是有兩個思路,一個是暴力拼硬體,如採用更大面積更大畫素的CMOS,增加機械的光學防抖,更大光圈;而第二個思路則是軟實力:演算法和最佳化。

從華為P20 DxOMark的勝利來說AI與機器學習

第一個思路的典型案例是三星Galaxy S9 Plus,之前的Galaxy S8相對Galaxy S7拍照基本只是原地踏步,而Galaxy S9 Plus率先使用了全新帶有DRAM的三層堆疊的1。4µm CMOS,但這個僅僅是拍照提升的次要因素,真正大進步的主要因素是光學元件的大躍進,Galaxy S9 Plus突破性的採用了F1。5的超大光圈。但使用這樣大的光圈是需要付出很高代價的,首先F1。8以上的大光圈生產難度很大,良品率很低,導致鏡頭模組生產成本很高,第二個是光圈過大,在明亮場景會使得影象過曝,GS9甚至引入了物理可變光圈來解決了這個問題,這樣大大提升了攝像元件的複雜度,降低了可靠性。

從華為P20 DxOMark的勝利來說AI與機器學習

另外一個思路就是軟體演算法上的最佳化,這個典型案例就是Pixel 2,12。2MP、1。4µm pixels、f/1。8單攝像頭的硬體規格並不算很誇張,但還是可以壓倒iPhone X等一票硬體怪物,這就得益於DeepLab-v3+演算法。這個演算法是基於AI的深度學習自然網路,可以對景物進行實時分析,識別目標場景內容,進行最佳化。並對場景進行HDR+處理,在一定程度避免過曝情況的發生。DeepLab-v3+演算法最看門的絕技是單攝像頭透過演算法實現景深拍照,這樣的功能實現需要大量的編碼和解碼操作,進行多次取樣和轉換,運算量十分巨大。Google Pixel 2為了實現該功能甚至還專門開發了一顆名為Pixel Visual Core的加速晶片來進行演算法處理,這個加速晶片的FPU浮點效能是Apple A11 Bionic的五倍。Google還看上去大公無私地將DeepLab-v3+演算法進行了開源,免費給全世界分享。當然Google這樣做也是有自己小算盤,一方面,可以充分利用開源界的免費開發資源繼續完善,另外一方面其主要競爭對手高通驍龍835/845的AI效能還不如A11,並且跑不動這套需要極高效能的演算法,於是自以為不用擔心,別人單有演算法也沒有足夠效能的硬體來來實現。

P20樣片對比和分析

但在這個問題上Google卻失算了,華為麒麟970率先內建了NPU處理器,可以提供足夠的效能來實現與此同級別的基於深度學習的演算法,用來提升拍攝的畫質表現。基於深度學習的AI演算法是如何提升畫質表現的,讓我們從DxO的對比樣張來看看。(對比圖片來源:https://www。dxomark。com/huawei-p20-pro-camera-review-innovative-technologies-outstanding-results/,具體對比原圖可以在這個頁面檢視)

從華為P20 DxOMark的勝利來說AI與機器學習

低光照和防眩光

這是一個典型的夜景場景,華為P20 Pro左下角的黑色頂棚還原真實,而iPhone X和Pixel 2明顯過曝,右下的街燈iPhone X和Pixel 2也有明顯眩光。P20 Pro透過深度學習對場景進行偵測,很大程度避免了過曝情況的發生。而右上角的樹枝華為P20 Pro細節更好,但也沒有由於過度銳化而導致躁點上升,這也是大面積感測器更好高感光度+後期演算法共同作用的結果。

從華為P20 DxOMark的勝利來說AI與機器學習

變焦和光學防抖

我曾經天真地認為底大就是正義,雖然這點在DSLR領域是正義,但在手機領域並不是如此。之前索尼/魅族曾經採用1/2。7英寸的大底感測器,但也是由於大底,在手機空間就無法為其加上OIS光學防抖,結果得不償失,我一度認為大底和光學防抖,如魚與熊掌不可兼得。

從華為P20 DxOMark的勝利來說AI與機器學習

而華為P20 Pro則創新地引入AIS功能,使得其可以兼顧大底CMOS和光學防抖。其大概的工作原理是透過三號攝像頭取景判斷手持的運動趨勢,然後再透過AI後處理透過多幀穩定演算法進行防抖,完成了我一度認為不可完成的任務。

從華為P20 DxOMark的勝利來說AI與機器學習

人像場景

從華為P20 DxOMark的勝利來說AI與機器學習

國外品牌手機的人像和美顏拍攝一直都是落後於國內品牌,究其原因是不夠上心,國內對於人像和美顏的痛點更為迫切,迫使國內的手機廠商在這方面有更多的投入。而華為充分利用自己的技術優勢,透過AI深度學習演算法對人物面容進行3D面容識別,並對面板和色澤進行最佳化增強,上面樣張P20 Pro顯得更為紅潤動人。由於人物是實時變動的,需要實時將影象並透過同之前神經網路深度學習結果進行分析比對,變成3D面容資訊,然後再進行最佳化,實時處理的運算量還是很大的。

從華為P20 DxOMark的勝利來說AI與機器學習

HDR場景

這張場景是人像,但是逆光,窗外的場景亮度過高,iPhone X的窗外嚴重過曝,Pixel 2過曝控制較好,而P20 Pro控制更為完美,同時室內人物又沒有過暗。由於深度學習的場景積累使得對於這樣明暗差異大的複雜場景進行分割判斷,設定不同的曝光策略,麒麟970強大的NPU效能使得這些處理更為遊刃有餘。

從華為P20 DxOMark的勝利來說AI與機器學習

雙攝最開始的用途就是副攝作為景深感測器獲得場景的深度資訊,透過多幀合成和後期處理的方式形成景深效果。但在AI時代之前的演算法,對於前景和背景的識別區分存在問題,特別是比較複雜的植被,邊緣部分就容易出現瑕疵。

從華為P20 DxOMark的勝利來說AI與機器學習

景深效果和邊緣判斷

而基於AI深度學習之後的場景判斷,由於大量場景的資料積累使得相機對前後景的判斷更為精確,邊緣部分的分割更為精細,但又不會出現上面不支援AI雙攝複雜邊緣處理不當的問題。

從華為P20 DxOMark的勝利來說AI與機器學習

整體而言,麒麟970的NPU對19類500多個場景進行機器學習的訓練,如貓狗、食物、人群、微距、夜景/文字、花卉、藍天、雪景、沙灘等都有相應的最佳化方案。實現這樣的功能需要大量的資料積累,在實時拍照的時候也需要透過神經網路對大量資料進行處理,因此對於演算法和運算能力提出了很高的要求。華為P20的DXOMark登頂不僅僅是植根於CMOS和光學元件的優勢,更有優秀的演算法來錦上添花。而優秀演算法需要強大的算力來保證,麒麟970的NPU功不可沒。

針對AI深度學習的需求,華為頗有前瞻性地在麒麟970研發之初就加入了NPU獨立單元。

從華為P20 DxOMark的勝利來說AI與機器學習

前面提及,影象處理核心工作是場景分析識別,這個工作有兩個階段。第一個階段是訓練,需要給予大量的樣本透過卷積神經網路Convolutional Neural Network進行學習分析,這個訓練的過程可以是在移動裝置本地進行,也可以是到雲端大型伺服器去操作,但後續的新照片,分析判斷就基本只能在本地完成。雖然這只是單個全新樣本的分析,但也需要和之前積累資料進行比對,並將這個分析歸納到機器學習成果之中。並且這個卷積神經網路Convolutional Neural Network過程要進行大量的分支判斷過程,這需要強大的FP16浮點處理能力。

從華為P20 DxOMark的勝利來說AI與機器學習

高通驍龍845的所謂“NPU”是Hexagon 685,Hexagon 685只是之前Hexagon 682的小改。嚴格的說,這個只算是DSP,而不是像麒麟970和A11那樣真正意義上的NPU,只是簡單化的向量處理單元,並且這個DSP計算能力還有可能被其他任務佔用。驍龍845中更為複雜的AI機器學習任務依然需要GPU甚至是CPU來實現,而這樣的代價是巨大的。

從華為P20 DxOMark的勝利來說AI與機器學習

這個是TechInsights的麒麟970核心圖,我們可以發現A53小核下方是NPU晶片區域,目前移動SoC中,僅有Apple A11和麒麟970有真正意義的NPU。

從華為P20 DxOMark的勝利來說AI與機器學習

AI和深度學習不僅僅是硬體問題,移動AI處理是一個軟硬結合的多層次系統專案。最上層是應用層,其下是API作為應用層和硬體層的互動應用介面。目前Android平臺中AI加速的API主要有兩個:一個是Google官方的Android AI Runtime,類似Windows下的Direct Compute,軟硬體相容性好,是行業規範;另一個是華為的HiAI,這個是麒麟獨有的API。類似NVIDIA的CUDA,雖然硬體上有限制,但效率更高。在API層下面還有一個HiAI異構資源管理系統,分配任務給下面的硬體層。下面的硬體層可以是NPU,也可以是GPU、CPU、DSP,甚至是ISP。

從華為P20 DxOMark的勝利來說AI與機器學習

這說明AI不是一定只能跑在NPU上,其他CPU,GPU、DSP什麼也都可以,但在效能和效率上卻有著根本性差別:GPU效能是CPU的4倍,而NPU則是CPU的25倍。除開絕對效能,能耗比的差距更為明顯,NPU相比GPU和CPU有高達8倍和50倍的差距。這對於電量捉襟見肘的移動裝置而言,這完全可以說是有本質的差距。

從華為P20 DxOMark的勝利來說AI與機器學習

麒麟970用NPU對物品進行實時識別,效能可以達到16GFlops的運算能力,單個處理耗時僅為32ns,而工作電流僅為300mA,相比動輒幾瓦的CPU和GPU而言是十分的綠色。

從華為P20 DxOMark的勝利來說AI與機器學習

從華為P20 DxOMark的勝利來說AI與機器學習

從魯大師的AI效能測試我們可以看出麒麟970相對驍龍845的開發機效能優勢明顯。魯大師的AI測試包含了InceptionV3、Resnet34、VGG16 3個專案,這3個測試專案是使用三種不同演算法分別識別100張圖片,透過耗時對效能進行評估。這三種演算法基本是目前訓練人工智慧識圖的神經網路僅有的三種演算法,非常有代表性,可以說是當前AI深度學習演算法的全部。這三種演算法中,InceptionV3更多是依賴CPU和GPU,麒麟970和驍龍845兩個平臺差距不大;而Resnet34、VGG16在演算法上更為先進,可以充分利用NPU的效能優勢,因此在後面兩個測試專案上帶有NPU的麒麟970效能優勢明顯。

特別是VGG16演算法,其包含看13個卷積層和3個全鏈層結合的16層結構,十分合適NPU。這個演算法的計算精度是FP16,而CPU的發射都是FP32,有更高精度。但用來處理FP16時,單個發射還是隻能處理單個FP16,這樣資源就會嚴重浪費。因此對於VGG16這種以FP16為主的計算,對FP16最佳化過的NPU更為高效,可以更充分地利用資源。

有公司甚至在吹驍龍660的AI效能,但驍龍660的Hexagon 680 DSP根本沒有FP16計算能力,那AI是靠什麼來算?CPU還是GPU?的確它可以跑AI,我們也不能責難它虛假宣傳,只不過效能和功耗不好看而已。

在AI之前的時代,提升攝像畫質對於沒有底層研發實力的品牌並無明顯門檻,只需要捨得多花幾美元找索尼爸爸買更好的CMOS,再忍受更低的良品率硬上大光圈,套用高通或者三星的公版ISP演算法折騰折騰,也可以做出不錯的拍照手機。然而在AI到來以後,傳統思路就不再行得通,單純的比拼硬體頂多使沒有底層研發實力的品牌可以攢出不錯的硬體。但如果在基於AI深度學習的智慧演算法上存在缺失,就會使得產品理念完全落後。兩個梯隊的差距就被拉開,繼而出現鴻溝,最終很難跟上頂級AI企業的水平。

而擁有演算法研發實力的公司境遇雖然略好,可以參與進AI深度學習的遊戲。但這些公司缺乏晶片級的研發能力,在上游晶片提供商不能提供足夠NPU算力產品的情況下,也只能怨天尤人而勉強跟隨。

從華為P20 DxOMark的勝利來說AI與機器學習

因此,現在有AI機器學習開發能力的企業能算是二流,但有晶片研發能力和平臺生態構建的企業才是頂級。華為在底層有麒麟品牌作為基礎,中間有HiAI和開發機作為平臺支援,上層更有消費級的電子產品和軟體應用直接同終端客戶接觸,這樣的生態體系就是一個健康可持續發展的AI生態。對於消費者而言,基於深度學習的AI只是個黑盒,使用者並不需要去了解其工作原理和方式,只需享受其美滋滋的成果即可。而華為麒麟就是這種美滋滋的幕後英雄,她的努力訓練將會使得以後我們的生活變得更為美好。