1. 程式人生 > >葉聰:朋友圈背後的計算機視覺技術與應用

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

平臺 假設 計算 互動 hog 雲計 做成 基於 出發

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

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

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

技術分享圖片

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

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

技術分享圖片

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

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

二、計算機視覺定義

技術分享圖片

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

技術分享圖片

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

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

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

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

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

技術分享圖片

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

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

五、解析雲端AI能力支撐

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

技術分享圖片

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

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

六、技能進階建議

技術分享圖片

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

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

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

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

技術分享圖片

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

Q&A

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

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

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

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

問答

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

相關閱讀

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

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

江鋮:乳腺癌識別By AI

此文已由作者授權騰訊雲+社區發布,原文鏈接:https://cloud.tencent.com/developer/article/1183692?fromSource=waitui

搜索關註公眾號「雲加社區」,第一時間獲取技術幹貨,關註後回復1024 送你一份技術課程大禮包!

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

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