葉聰:朋友圈背後的計算機視覺技術與應用

騰訊雲加社群發表於2018-08-14

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文由雲加社群技術沙龍 發表於雲+社群專欄

演講嘉賓:葉聰,騰訊雲AI和大資料中心高階研發工程師。在多年的雲端計算系統研發經歷中,負責領導了多個百萬級使用者及產品的架構設計和開發。

img

AI要走進千家萬戶,融入整個社會,而不僅僅是曲高和寡的模型。所以現在非常講究AI場景化,使它成為與產業相關的部分。

一、朋友圈爆款活動背後的技術

img

今天我會從朋友圈的一些爆款的互動活動作為切入點,帶大家過一遍一些計算及視覺技術與應用,或者把AI技術產業化。我們經常在朋友圈會看到一些比較有趣的互動的活動,比如像軍裝照、武士青年這類活動視覺比較流行的應用,也是目前探索出來的計算機視覺能夠最快來到大家身邊的方式。以過去的五四青年節的活動為例,這個有趣的活動就應用了人臉檢測與人臉檢索的技術相結合。

上傳一張照片最匹配民國時候有為青年的照片,做成這種頁面供大家分享。這種模式最開始就是由騰訊開啟,現已成為了整個行業應用的參考。除了這個活動,H5這類應用往往會出現使用者訪問爆發性的增長,為了應對這種突如其來的流量暴增,使用一整套雲架構部署,而不是傳統機房裡面用幾臺伺服器處理。比如像五四青年的活動,5萬KPS的架構就有這樣的承載能力。從個人角度想要做這樣的應用,需要了解以下的基礎知識。

二、計算機視覺定義

img

首先從計算機視覺的基本定義開始,學術角度來講是研究如何讓計算機從影像和視訊中獲取高階抽象的資訊的一種方法。但我比較喜歡後面這種工程角度的解釋,計算機視覺是可以使機器來模仿人類自動化。現在我們利用計算機視覺讓整個流程更自動化,機器可以部分的代替人力去理解圖片中的一些資訊。計算機視覺還包含一些子分支,現在這個分支還會慢慢擴張,這個分類也在慢慢的擴大。主要包括物體識別、物件檢測、語義分割、3D的重建,動作識別等等。

img

底下有幾個比較常見的視覺應用,第一個是人臉識別;第二個是無人駕駛;第三個是語義分割。語義分割在人工智慧這個領域還是比較常見的。一般指詞性的分割,或者詞的分割。影像分割裡面的語義分割一般指的是把影像裡面的不同型別的物件進行標註和區分。右邊這張圖就是個例子。這張圖上基本上把人、路、車都用了不同的顏色標註。

提到機器視覺,首先就要知道機器是怎麼去理解圖片的?這裡就要帶入RGB-alpha 的一個演算法。

顧名思義,就是紅綠藍三色,然後,alpha 是什麼?如果大家在早期的時候玩過一些電腦硬體,你可能會發現,最早期的顯示卡是 24 位彩色,後來出現一個叫 32 位真彩色,都是彩色的,有什麼不同嗎?因為在計算機領域,我們用 8 位的二進位制去表示一種顏色,紅綠藍加在一起就是 24 位,基本上我們把所有顏色都表示出來了。

三、曾經的影像處理——傳統方法

img

首先聊一下一些傳統的影像處理的方法。上面這幾個濾波器如果有學影像相關的同學都會經常用到,包括空間濾波器、小波濾波器。如果對影像進行分類,我們肯定要提取影像中的一些特徵,然後根據這些影像提取出的特徵用演算法進行一些分類,所以是兩步走。

img

關於如何提取影像的特徵,現在已經有很多比較成熟的方法。最容易想到的就是影像裡面物件會有邊緣。邊緣就代表了影像的特點。除了邊緣檢測的方法還會有其他的特徵,比如Haar特徵。物件具有邊緣、對角線、中心都可以利用這種黑白的對比圖,標註出它灰度的變化,把剛才說的三種維度的資訊組成一個集合,這樣就可以提取圖片的特徵。

img

還有一個比較新的特徵提取方法,就是2012年的時候康奈爾提出來的,利用一個圖片裡面物件的區域性對稱性來提取特徵。左邊這個圖有不同形狀的物件,右邊這個圖就把它的對稱性理解為重心提取出來,圖上越白色的地方代表對稱性越強。這種演算法優點是整個圖形提取出的特徵是比較有對稱性。這樣就容易把這個東西從背景裡面提出來。

img

另外還有一些特徵提法,比如SIFT,尺度不變特徵。我先解釋一下什麼是尺度,我們看待一個東西,從遠到近,越遠它尺度越大,就說明這個東西相對我們越模糊,能觀測到的特徵點就少。隨著靠近,看到的越多就能越發現一些特點。有些特點是不管遠近都能辨識出來的,就認為是尺度不變的特徵。

img

還有一種跟灰度有關的方法叫HOG方向梯度直方圖,它也是利用灰度的原理,把整個圖形分成很多塊,描述裡面灰度變化最小的或者最大的。一般選用最小的方向。好處是它計算起來的成本比較靠譜的,比如這張圖上,人穿黑色的衣服,所以在黑色衣服上它的灰度變化最小一定是垂直的。到了旁邊白色背景可能就是水平的。利用它這個HOG的梯度圖的方向,很容易把這個人從背景中間區分出來。

img

聊了很多的Feature Design的方法,並不存在最優的。在影像分割和物件檢測這個領域也有一些其他演算法,例如非常有意思的分水嶺演算法,顧名思義是利用影像的灰度特性把影像整個灰度的曲線顯示出來。假設往裡面灌水,隨著水越來越多,肯定會有兩個相鄰的山谷聯通,在那裡建一道壩,這些壩在圖上來看就是紫色的曲線,這樣就可以把物件裡灰度不同的部分給分割出來。

img

ASM,中文名叫可變模板匹配,或者叫主觀形狀模型。物件檢測的常用演算法主觀形狀模型以人臉為標準,提取人臉上68個點,對這些點進行變換,然後去匹配目標。剛才聊了一些傳統方法,隨著近幾年硬體效能的提升以及大資料的廣泛的應用,讓本來已經沉寂許久的深度學習演算法變成了可行。深度學習這個名字是比較抽象,其實可以理解為深度比較高的神經網路,多重神經網路。這樣會比較貼切。簡單介紹一下神經網路,左邊和右邊兩張圖就是神經網路。一般談及神經網路的,是不說輸入層的,所以左邊是兩層神經網路,右邊是三層。

四、影像處理的爆發——深度學習方法

img

下面有兩個深度學習的網路,所謂的深度學習實際就是深度神經網路,叫深度神經網路大家更容易理解。左邊那個是一個兩層的神經網路,這裡要解釋一下,我們一般說神經網路的層數是不算輸入層的。

輸入層就是你輸入訊號的地方,將中間過程的結果進行彙總,若做分類它會把它進行歸類的一層。這其中學過統計或者相關的同學都會用的邏輯迴歸很有意思傳統的機器學習演算法和深度學習演算法很有關係。底下寫了一行字(英文),這兩者其實都是很特殊的單層神經網路,所以深度學習並不是遙不可及的,它的由來是很有邏輯性的,是從深度演算法中間慢慢剝離出來的。說完簡單的神經網路再來談談複雜的。在實際使用的時候,不一定是簡單的一兩層,很有可能是多層的。比如這個圖上面至少有三層,實際上我們使用的神經網路是很複雜的。不是像上面這張圖那麼簡單。除了剛才看到的哪些三角形或者金字塔形的神經網路,神經網路是有非常多種的,比如感知器,FF,RBF,使用的場景都不太一樣。所以神經網路研究者往往會根據場景選不同的網路,對網路進行一些比較,有的時候也可以解決相似的問題。深度學習研究的方向跟傳統學習的區別,可能在網路上會更加的鑄磨,包括怎麼調整中間多加一層,少加一層,在這個方向做一些測試。

img

在影像識別領域應用比較廣的神經網路是CNN,即卷積神經網路。這個圖上是一個非常標準的,或者說非常初級的CNN的網路,包括比如像卷積層,卷積層一般是用來做影像的特徵學習的。最後會有一個全連結層,把所有前一層的資料進行全連結。自動做分類。這個想法其實來源於傳統的機器學習,最後會有一個層去做分類。

img

在CNN之後非常聰明的科學家們就發現了很多可以更加優化的點,所以已經很少有人單純用這個CNN做訓練了。目前比較流行的做影像分割的還有很多基於 CNN 的新網路。比如在 CNN 基礎上大家又加入了一個叫 Region Proposal Network 的東西,利用它們可以去優化傳統 CNN 中間的一些資料的走向。Faster-RCNN 不是一蹴而就的,它是從RCNN中借鑑了 SPPNET 的一些特性,然後發明了 Fast-RCNN,又在 Fast-RCNN 的基礎上進一步的優化變成了 Faster-RCNN。

img

即便到了Faster R-CNN這個領域也遠遠沒有走到盡頭。我們一直做物件檢測的時候都是採用,要儘量的縮小範圍的思路。每一個上面提到的演算法都能找到一兩篇非常好的論文,大家可以瞭解一下這個演算法是怎麼演變過來的。我們的目的是用分類的方法一次性把一個圖片裡面的資訊全部理解,就出現了右邊的演算法。

img

接下來談一下在有了一個模型演算法以後,應如何做一些應用。講幾個騰訊雲這邊支援過的AI應用的例子。首先是五四青年的活動,它是解決影像匹配的一個活動。首先我們將民國時候的老照片作為訓練資料,對它進行提取,和標註資料,對每個照片都進行標註,生成一個模型。大家在玩這個遊戲的時候會傳一張照片測試資料,等特徵提取完,模型會返回一個它的分類,這個分數不是執行度,不可以完全參考。而是會選擇一個分數最大的值返回到前端,生成一個頁面,這就是整個流程。

img

第二個應用也比較流行:人臉融合的一個應用。類似軍裝照這類,原理上跟剛才的PPT有點類似,首先會對影像的人臉部分進行關鍵點的定位,將特徵提取出來。因為角度也是會影響很多的匹配效果,所以要對圖片進行一定程度的旋轉,把它與模版圖進行統一化。下一步將上傳圖片的人臉部分根據特徵值摳出來。跟我們的模版圖進行融合。由於上傳的照片各種光線角度不完全一樣,還要對圖片進行一些優化,將光影、曲線調得比較平緩,這樣就可以呈現一個非常好的效果。

img

這是我之前在史丹佛的時候做的一個專案,對圖片的內容進行描述生成一個故事。我們做了一個模型是可以任意的幫助使用者根據圖片生成不同型別的故事。比如可以是浪漫小說,可以是科幻小說,不同的訓練集可以根據情況調整大家想做一些自己專案的時候也可以像我們一樣採用開源資料庫。資源很多,不會成為大家研究的瓶頸。

五、解析雲端AI能力支撐

img

聊過剛才的這些部分,背後是什麼樣的?如果我寫了一個模型做了一個有趣的應用,是不是我就可以把它放到網上大家就可以玩了?其實不是這麼簡單。如果只是簡單的讓我們把它放到一個網站託管,為了支撐這麼龐大的一個系統我們需要做些什麼?應該採用雲服務,儘量不在我們的物理集上部署。比如採用這個圖裡面提出的靜態應用加速,虛擬機器,物件儲存,以及GPU雲伺服器加速我們出結果的速度。

img

整個系統裡面用到了跨地域的負載均衡,彈性降級。上面提到的應用一般都會有短時間達到特別高的訪問峰值,持續一段時間會有很快的回落。負載均衡會把一些機器釋放掉降低成本。這是一整套的商業化的體系的運作。再介紹一下騰訊雲人工智慧目前的提供的服務領域,包括各種人臉合成,身份證識別,智慧監控,人臉軋機還有智慧語音方面上的:關鍵詞搜尋,語音合成等等。同時還有一些機器學習的平臺可以幫助大家快速的去實現一些模型。同時還有大資料,可以做海量資料的資料探勘。還有其他一些底層的服務,包括CPU等等。相當於像物理機,但是完全可以交給物理雲去託管。

img

介紹一下人臉識別的例子。人臉識比較常見的幾個應用,比如微信,人臉合成只需知道你的身份。可靠性高達99.5%。人臉檢測又分靜態與活體的檢測,靜態檢測只是比對你的特徵與庫裡面是否一致。但假設有人用一些視訊或照片來攻擊這個系統,可以採取包括以下幾種模式的一整套活體檢測的方法:一是讓你讀一段文字或者做一些動作,或者是螢幕用不同的光線去照射臉部,利用反射光的一些特點來對臉部做區分,3D建模,從而判斷是視訊還是真人。除此之外還可採用具有3D建模能力的攝像頭,打一道光到人臉上,再將反射光收集起來。目前這些技術我們的這些技術都已比較成熟。

img

剛才講的是1比1的人臉合成,除此之外還有用於大型場所管理的1:N的。大家如果有機會,如果去深圳可以去騰訊的濱海大廈參觀一下,整套系統都是用這個搭建的。另外我們提供針對場景的雲智智慧視訊管理平臺。同時提供裝置管理以及視訊監控、對外介面等一整套服務。

img

再來說下文字OCR,後面冀博士會詳細的介紹這部分。目前我們能使用的領域也非常廣泛,包括名片識別,傳單識別,快遞單識別等等。到了技能進階這個部分,很多人覺得做AI並不需要做演算法,其實不然。首先從有想法到落地分非常多的環節。演算法是非常重要的,只是相關性沒有那麼強。從AI演算法的角度來講,首先要打好數學基礎,若想繼續發展還需要積累一定的演算法知識。同時鍛鍊自己對最新演算法學術成果吸收能力,讀論文實現演算法,整套技能的提高。

這就要求在對演算法一定要有了解的同時,要對演算法有比較強的封裝能力。有了一個演算法怎樣去封裝,讓它根據場景達到最優的效果。除此之外還可以做AI產品開發和應用,但這就要求對目標的AI應用場景比較瞭解。使用者什麼樣,他們對於AI產品的需求是怎麼樣的,怎樣打磨產品讓他們可以簡單的使用複雜的這些技術。這一整套其實都需要很多的思考。

六、技能進階建議

img

如果我們在 AI 這個方向上想有所進步的話,我們應該怎麼做?右邊有一個金字塔,並不是說AI演算法是它們的最高階。只是想表達如果想要做成這件事,需要的整個團隊的大小,首先要有AI演算法的專家,同時要有更多工程實踐的人,然後還要有更多的產品開發人員把它打磨成產品。這點上來講像亞馬遜的公司做得就非常好,每次都會尋找一個場景然後去營造場景做AI,而不是單純從技術角度出發。

演算法研究方面我們要做什麼?首先是要打好比較強的數學基礎。因為機器學習中間大量的用到了比大學高等數學更復雜的數學知識,這些知識需要大家早做研究打好基礎,這就需要讀很多論文。同時還要鍛鍊自己對新的學術成果的理解和吸收能力,像剛才提到了一個神經網路影像的分類問題,實際上,短短的十年時間實現了那麼多不同網路的進化,每一個新的網路提出了,甚至還沒有發表,只是在預發表庫裡面,大家就要很快的去吸收理解它,想把它轉化成可以執行的模型,這個是要反覆鍛鍊的。

第二塊是工程實現方面,如果想從事這方面首先要加強自己邏輯演算法封裝的能力,儘量鍛鍊自己對模型的訓練和優化能力,這塊會需要大家把一個設計好的演算法給落實到程式碼上,不斷的去調整優化實現最好的結果,這個過程也是需要反覆磨鍊的。

最後一個方向是產品應用,這個首先大家要有一定的開發能力,不管是移動開發還是 Web 開發,同時要提升自己 AI 產品場景的理解和應用。實際上很多AI產品跟傳統的產品是有很大的理解上的區別,大家可能要更新自己的這種想法,多去看一些 AI 產品目前是怎麼做的,有沒有好的點子,多去試用體會。同時如果我們想把一個 AI 的模型變成百萬級、千萬級使用者使用的流行產品,我們還需要有系統構建能力和優化能力。

img

所以在這三個領域都可以思考。關於怎麼去學習計算機視覺的一些知識,這裡有一些資料。首先史丹佛大學的一些課程是非常好的,可以利用這個作為切入點,把關鍵的知識點搞懂。如果不喜歡看電腦的話也可以看其他的幾本書。都是我覺得不錯的不同的作者寫的書。右邊是一些比較常見的,每天都會用到。底層還有一些打包好的更高階的書。

Q&A

Q:在視覺這塊的話前期講過焦躁問題。如果是人為的加入噪音的話,處理的話是不是特別麻煩?它的效果和原對比有什麼區別?

A:降噪其實是一個很複雜的問題,就像你說的這種情況,如果噪音不是自然噪音,是手動新增噪音,你要找它的模式才能去比較有針對性的調整,我沒有對這塊有特別深的研究。我的感覺是你可以用一些深度學習比較發達,利用深度學習的模型去做。比如去馬賽克這塊,打造馬賽克的一些照片,利用深度學習演算法就能恢復到原照片,或者把一些第一解析度的照片變成高解析度的。

Q:我想請問的問題是,PPT中關於多模態識別那一塊,現在無論是無人駕駛還是多模態識別都是有(英文)融入到圖片當中,我就想問一下這塊有那些工作是可以做的?比如說一個圖片裡面一個男的和女的,男的拿著戒指,這是個求婚的場景。從圖片中的內容裡面它是體現不了特徵資訊的,就是關於這塊的。

A:由於這個圖片它可能主要的內容不是那麼明顯,其實這難點是在於語義識別這塊。你要能提取戒指這個關鍵詞可能跟什麼有關。這就變成自然語言識別這塊的事了,應該有一個詞庫,可能去做搜尋。所以這塊我覺得難點不在於影像而在於後續。

問答

AI開發的語言要求是什麼?

相關閱讀

冀永楠:OCR的應用錦集及背後技術

吳琛:智慧工地——履約考勤系統的應用實踐

江鋮:乳腺癌識別By AI

此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/dev…

搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社群

相關文章