本文來自花椒直播海外技術負責人唐賡在LiveVideoStackCon 2017上的分享,并由LiveVideoStack整理而成,在分享中唐賡詳細介紹了直播的基本組成部分以及ARKit、3D引擎、深度學習等技術在直播場景下的應用。
大家好,我是唐賡,現(xiàn)就職于花椒直播。主要負責iOS和一些新技術的應用。本次的分享內容主要是介紹一下我們包括個人對直播這項新技術應用的一些看法。
1. 直播的基本組成部分
直播行業(yè)大約是在2015開始火起來,由于是剛起步,所以整個直播行業(yè)不是特別成熟。在早期時甚至會出現(xiàn)音畫不同步等一些基礎的問題。之后也做了很多的工作,比如直播視頻秒開的優(yōu)化,包括網(wǎng)絡自適應、碼率自適應、分辨率以及幀率的自適應。對于碼率自適應,在點播的場景下,服務器會事先準備幾段不同碼率的視頻,觀眾根據(jù)不同的需要、網(wǎng)絡狀況從服務器上拉取不同的碼流。但是在直播的場景下,網(wǎng)絡自適應更多的是發(fā)生在主播端,比如當主播的網(wǎng)絡不太好時,我們就會根據(jù)上行的碼流情況來實時的進行調整,包括調整視頻的分辨率、碼率、幀率。然后對于超大型的聊天室或者一些直播網(wǎng)站,就要求每個直播間能夠承受百萬量級并發(fā)的在線用戶,包括私信、群組,這都是我們過去已經(jīng)做過的一些優(yōu)化工作。
隨著直播行業(yè)的發(fā)展,單向的直播已經(jīng)沒有什么新意了,現(xiàn)在大家開始關注連麥、一對一的單聊、群聊等。這些功能在我們的APP中都已經(jīng)實現(xiàn)了,包括上層的展現(xiàn),比如美顏、濾鏡、瘦臉、大眼、人臉識別貼紙、3D頭盔等等。我們在2015年5月份左右起步做直播,這些都是我們在這兩年里做過的一些事情,目前這些功能已經(jīng)逐漸成為直播APP的標配,那么下一步該如何去做?在我個人認為至少可以關注以下方面,如Augment Reality,Computer Graphics、Computer Vision以及Machine Learning.,接下來將分別給大家介紹一下這四個方面。
2. Augment Reality
首先是人臉識別技術,從2016年開始已經(jīng)初步實現(xiàn),而我們可以說是第一個把這項技術應用到直播場景中的。2016年初,我們發(fā)現(xiàn)手機上實時的人臉識別非常消耗CPU內存,因此就可能導致直播卡頓,無法播放。為了解決這個問題,我們當時進行了非常多的優(yōu)化,比如,最先在有限的手機資源之上實現(xiàn)了實時的人臉貼紙功能。但當時人臉識別的SDK普遍的CPU消耗都在50%以上,甚至蘋果自己提供的人臉識別的消耗都在80%以上,而且抖動非常厲害。到了2017年,在不斷的優(yōu)化之后,人臉識別在手機上的應用就非常成熟了。
現(xiàn)在基于ARKit、ARCore、SenseAR或者是基于IMU都可以實現(xiàn)很多玩法,比如利用AI/AR可以實現(xiàn)手勢識別與真實場景的結合。那么AR可以怎么利用呢?從一些小視頻可以看到,拍攝者與表演者以及一些動畫效果要配合的很好才能實現(xiàn)AR特效,但是這些都是假的AR,而我們用AR技術就完全可以把這些做成真的。另外,基于AR在直播間里的視頻上面展現(xiàn)一些廣告或者好玩的東西,這實際也是比較經(jīng)典的AR應用。
3. Computer Fraphics
AR可以反饋一些基本場景的認知信息,包括平面在哪里,墻在哪里等。那么如何在上面疊加這些場景,這就需要基于圖形學的一些技術。最常見的就是基于OpenGL/Metal提供的一些API去實現(xiàn),當然也有利用像Unity、Unreal之類相對成熟的引擎,包括蘋果提供的SceneKit 3D引擎。另外就是利用一些開源的引擎,比如Cocos2d-x、Crystal Space、Blender Game Engine,它們的功能也都比較強。像Cocos2DX目前已經(jīng)發(fā)展出比較強的3D能力,它能夠展現(xiàn)骨骼動畫以及一些比較復雜的光影效果。如果能力足夠也可以開發(fā)自制引擎,據(jù)我所知,國內的很多游戲廠商比如騰訊、暢游、搜狐,他們用的都是自己研發(fā)的強大引擎。
4. Computer Vision
直播行業(yè)目前對計算機視覺的依賴也變得非常的強烈。計算機視覺的開源實現(xiàn)主要體現(xiàn)在兩個開源庫,分別是OpenCV和Dlib。OpenCV是由Intel發(fā)布的一個非常強大的視覺庫。包括實時計算機視覺、機器學習,包括一些圖像處理、分析等基本都離不開它,而且它的代碼實現(xiàn)非常的簡單快速。Dlib的使用非常方便,而且它自帶了它所依賴的一些東西,包括網(wǎng)絡、線程、GUI、各種各樣的線性代數(shù)、機器學習、圖像處理等各種模塊。它最大的一個優(yōu)勢是自帶強大的人臉識別引擎。接下來可以看一下基于OpenCV和Dlib實現(xiàn)的一些功能。
A.人臉朝向識別
從上面這幅圖可以看到,根據(jù)Dlib給出的人臉關鍵點坐標信息,計算出了人臉的朝向,人臉前面的這根紅線就是顯示出了人臉的朝向。基于人臉關鍵點坐標、朝向信息,就可以實現(xiàn)比較炫酷的3D頭盔功能,此處例子的實現(xiàn)目前在網(wǎng)上有開源的代碼可以進行參考。
B.精確估算手勢位置和姿勢
從上圖可以看到,在直播中可以精確的估算主播的手指頭的位置以及姿勢,主播可以利用這種技術完成很多有趣的交互。
目前,在PC上已經(jīng)可以實現(xiàn)對于一個場景中多個人的復雜的肢體運動的實時識別。但是面臨的一個非常大的挑戰(zhàn)是如何將這個能力內嵌到手機APP中,如果能夠做到這一點,那么就可以把主播跳舞之類的身體動作實時截取出來并與動畫人偶相結合,會使得整個直播間顯得非常生動。
5. Machine Learning
接下來簡單介紹一下機器學習。機器學習在直播中已經(jīng)有了很多的運用,比如人臉識別、物體識別、手勢識別、背景分割摳像等,再進一步的運用就是實時翻譯、跨語種連麥、畫質改進以及自動生成主播漫畫人偶。
機器學習的運用除了此前介紹到的一些前臺功能,還具有后臺功能,包括實時判斷主播的性別年齡、顏值才藝類型、識別場景、口才打分、人氣等。
下面幾頁PPT簡單介紹一下深度學習的一些入門知識。上面展現(xiàn)的是Google的一個Neural Network Playground ,在playground.tensorflow.org上可以看到,可以嘗試設計自己的神經(jīng)網(wǎng)絡,了解深度學習的過程。(DEMO)。實際上深度學習就是在不斷地調整它的超參數(shù),增加深度學習的深度以及細胞的數(shù)量。現(xiàn)在所謂的深度學習的研究實際上就是用各種各樣的排列組合來找出一種網(wǎng)絡結構能夠更適合的解決某一類問題。
上面列出了各種開源的網(wǎng)絡結構,它們都是由各種學術機構花了很多的時間精力找出的比較適合解決某些問題的網(wǎng)絡結構。當網(wǎng)絡結構越復雜時,訓練模型的時間就越久。
這是一個簡單的深度學習的例子,其中高亮的幾行是對網(wǎng)絡結構的描述。它使用Keras/TensorFlow訓練模型,在進行了一千次迭代之后,誤差就降到了千分之四,我們就可以認為訓練出來的模型已經(jīng)學會了異或運算法則。
前面例子中訓練出來的模型可以直接放在CoreML中使用,運行出來的結果可以在上圖中的輸出看到,所以說CoreML開發(fā)過程是非常簡單快速的。
上面這個例子也是實現(xiàn)判斷異或功能,但是它沒有依賴任何框架,只是利用了一個最基本的數(shù)學運算庫,這個例子可以看到深度學習核心算法的工作原理,右邊是訓練跑出來的結果,可以看到最終得到的結果跟前面的一樣。所以深度學習就是這么簡單暴力。
綜上所述,有這么多的技術等著我們去把它放到直播中使用,我覺得后面的前景還是非常廣闊的,我們還有很多事情要去做。
-
深度學習
+關注
關注
73文章
5527瀏覽量
121892 -
arkit
+關注
關注
0文章
23瀏覽量
11322
原文標題:從CV到ML 直播場景下新技術的應用
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論