從CV到ML 直播場景下新技術的應用

從CV到ML 直播場景下新技術的應用

本文來自花椒直播海外技術負責人唐賡在LiveVideoStackCon 2017上的分享,並由LiveVideoStack整理而成,在分享中唐賡詳細介紹了直播的基本組成部分以及ARKit、3D引擎、深度學習等技術在直播場景下的應用。

文 / 唐賡

整理 / LiveVideoStack

大家好,我是唐賡,現就職於花椒直播。主要負責iOS和一些新技術的應用。本次的分享內容主要是介紹一下我們包括個人對直播這項新技術應用的一些看法。

1. 直播的基本組成部分

從CV到ML 直播場景下新技術的應用

直播行業大約是在2015開始火起來,由於是剛起步,所以整個直播行業不是特別成熟。在早期時甚至會出現音畫不同步等一些基礎的問題。之後也做了很多的工作,比如直播視頻秒開的優化,包括網絡自適應、碼率自適應、分辨率以及幀率的自適應。對於碼率自適應,在點播的場景下,服務器會事先準備幾段不同碼率的視頻,觀眾根據不同的需要、網絡狀況從服務器上拉取不同的碼流。但是在直播的場景下,網絡自適應更多的是發生在主播端,比如當主播的網絡不太好時,我們就會根據上行的碼流情況來實時的進行調整,包括調整視頻的分辨率、碼率、幀率。然後對於超大型的聊天室或者一些直播網站,就要求每個直播間能夠承受百萬量級併發的在線用戶,包括私信、群組,這都是我們過去已經做過的一些優化工作。

隨著直播行業的發展,單向的直播已經沒有什麼新意了,現在大家開始關注連麥、一對一的單聊、群聊等。這些功能在我們的APP中都已經實現了,包括上層的展現,比如美顏、濾鏡、瘦臉、大眼、人臉識別貼紙、3D頭盔等等。我們在2015年5月份左右起步做直播,這些都是我們在這兩年裡做過的一些事情,目前這些功能已經逐漸成為直播APP的標配,那麼下一步該如何去做?在我個人認為至少可以關注以下方面,如Augment Reality,Computer Graphics、Computer Vision以及Machine Learning.,接下來將分別給大家介紹一下這四個方面。

2. Augment Reality

首先是人臉識別技術,從2016年開始已經初步實現,而我們可以說是第一個把這項技術應用到直播場景中的。2016年初,我們發現手機上實時的人臉識別非常消耗CPU內存,因此就可能導致直播卡頓,無法播放。為了解決這個問題,我們當時進行了非常多的優化,比如,最先在有限的手機資源之上實現了實時的人臉貼紙功能。但當時人臉識別的SDK普遍的CPU消耗都在50%以上,甚至蘋果自己提供的人臉識別的消耗都在80%以上,而且抖動非常厲害。到了2017年,在不斷的優化之後,人臉識別在手機上的應用就非常成熟了。

現在基於ARKit、ARCore、SenseAR或者是基於IMU都可以實現很多玩法,比如利用AI/AR可以實現手勢識別與真實場景的結合。那麼AR可以怎麼利用呢?從一些小視頻可以看到,拍攝者與表演者以及一些動畫效果要配合的很好才能實現AR特效,但是這些都是假的AR,而我們用AR技術就完全可以把這些做成真的。另外,基於AR在直播間裡的視頻上面展現一些廣告或者好玩的東西,這實際也是比較經典的AR應用。

3. Computer Fraphics

從CV到ML 直播場景下新技術的應用

AR可以反饋一些基本場景的認知信息,包括平面在哪裡,牆在哪裡等。那麼如何在上面疊加這些場景,這就需要基於圖形學的一些技術。最常見的就是基於OpenGL/Metal提供的一些API去實現,當然也有利用像Unity、Unreal之類相對成熟的引擎,包括蘋果提供的SceneKit 3D引擎。另外就是利用一些開源的引擎,比如Cocos2d-x、Crystal Space、Blender Game Engine,它們的功能也都比較強。像Cocos2DX目前已經發展出比較強的3D能力,它能夠展現骨骼動畫以及一些比較複雜的光影效果。如果能力足夠也可以開發自制引擎,據我所知,國內的很多遊戲廠商比如騰訊、暢遊、搜狐,他們用的都是自己研發的強大引擎。

4. Computer Vision

從CV到ML 直播場景下新技術的應用

直播行業目前對計算機視覺的依賴也變得非常的強烈。計算機視覺的開源實現主要體現在兩個開源庫,分別是OpenCV和Dlib。OpenCV是由Intel發佈的一個非常強大的視覺庫。包括實時計算機視覺、機器學習,包括一些圖像處理、分析等基本都離不開它,而且它的代碼實現非常的簡單快速。Dlib的使用非常方便,而且它自帶了它所依賴的一些東西,包括網絡、線程、GUI、各種各樣的線性代數、機器學習、圖像處理等各種模塊。它最大的一個優勢是自帶強大的人臉識別引擎。接下來可以看一下基於OpenCV和Dlib實現的一些功能。

A. 人臉朝向識別

從CV到ML 直播場景下新技術的應用

從上面這幅圖可以看到,根據Dlib給出的人臉關鍵點座標信息,計算出了人臉的朝向,人臉前面的這根紅線就是顯示出了人臉的朝向。基於人臉關鍵點座標、朝向信息,就可以實現比較炫酷的3D頭盔功能,此處例子的實現目前在網上有開源的代碼可以進行參考。

B. 精確估算手勢位置和姿勢

從CV到ML 直播場景下新技術的應用

從上圖可以看到,在直播中可以精確的估算主播的手指頭的位置以及姿勢,主播可以利用這種技術完成很多有趣的交互。

目前,在PC上已經可以實現對於一個場景中多個人的複雜的肢體運動的實時識別。但是面臨的一個非常大的挑戰是如何將這個能力內嵌到手機APP中,如果能夠做到這一點,那麼就可以把主播跳舞之類的身體動作實時截取出來並與動畫人偶相結合,會使得整個直播間顯得非常生動。

5. Machine Learning

從CV到ML 直播場景下新技術的應用

接下來簡單介紹一下機器學習。機器學習在直播中已經有了很多的運用,比如人臉識別、物體識別、手勢識別、背景分割摳像等,再進一步的運用就是實時翻譯、跨語種連麥、畫質改進以及自動生成主播漫畫人偶。

從CV到ML 直播場景下新技術的應用

機器學習的運用除了此前介紹到的一些前臺功能,還具有後臺功能,包括實時判斷主播的性別年齡、顏值才藝類型、識別場景、口才打分、人氣等。

從CV到ML 直播場景下新技術的應用

下面幾頁PPT簡單介紹一下深度學習的一些入門知識。上面展現的是Google的一個Neural Network Playground ,在playground.tensorflow.org上可以看到,可以嘗試設計自己的神經網絡,瞭解深度學習的過程。(DEMO)。實際上深度學習就是在不斷地調整它的超參數,增加深度學習的深度以及細胞的數量。現在所謂的深度學習的研究實際上就是用各種各樣的排列組合來找出一種網絡結構能夠更適合的解決某一類問題。

從CV到ML 直播場景下新技術的應用

上面列出了各種開源的網絡結構,它們都是由各種學術機構花了很多的時間精力找出的比較適合解決某些問題的網絡結構。當網絡結構越複雜時,訓練模型的時間就越久。

從CV到ML 直播場景下新技術的應用

從CV到ML 直播場景下新技術的應用

這是一個簡單的深度學習的例子,其中高亮的幾行是對網絡結構的描述。它使用Keras/TensorFlow訓練模型,在進行了一千次迭代之後,誤差就降到了千分之四,我們就可以認為訓練出來的模型已經學會了異或運算法則。

從CV到ML 直播場景下新技術的應用

前面例子中訓練出來的模型可以直接放在CoreML中使用,運行出來的結果可以在上圖中的輸出看到,所以說CoreML開發過程是非常簡單快速的。

從CV到ML 直播場景下新技術的應用

上面這個例子也是實現判斷異或功能,但是它沒有依賴任何框架,只是利用了一個最基本的數學運算庫,這個例子可以看到深度學習核心算法的工作原理,右邊是訓練跑出來的結果,可以看到最終得到的結果跟前面的一樣。所以深度學習就是這麼簡單暴力。

綜上所述,有這麼多的技術等著我們去把它放到直播中使用,我覺得後面的前景還是非常廣闊的,我們還有很多事情要去做。


分享到:


相關文章: