人工智能熱度很高,但泡沫也很大。人工智能在視頻領域的應用已經走入尋常人的生活,人臉識別,視頻自動摳像技術已經比較成熟。除此之外,人工智能還能為視頻應用帶來哪些變化呢?描述了人工智能在視頻應用中的實踐探索,涉及編解碼器、超分辨率等。
序:人工智能來生今世
人工智能是一個非常廣泛的領域,當前人工智能涵蓋很多大的學科,大致歸納為六個:
計算機視覺(暫且把模式識別,圖像處理等問題歸入其中);
自然語言理解與交流(暫且把語音識別、合成歸入其中,包括對話);
認知與推理(包含各種物理和社會常識);
博弈與倫理(多代理人agents的交互、對抗與合作,機器人與社會融合等議題);
機器學習(各種統計的建模、分析工具和計算的方法)。
這里值得強調幾點:
第一)目前的人工智能都是屬于弱人工智能的范圍,在某一個專業領域內作為被人類使用的工具存在。 目前還不存在離開人類主體自行運行的人工智能,更不存在可以開發人工智能自我迭代進化的強人工智能。
第二)機器學習在近幾年取得了很大進展,有些人直接把機器學習當成了人工智能的代名詞。這是不準確的。舉例來說,不可否認機器學習在計算機視覺領域發揮著越來越大的作用,但是傳統意義上,通過人工建模,分析取得的模式識別,圖像識別,圖像增強仍舊是很成功的人工智能技術,并且也是機器學習進一步發展的基礎。
第三)統計分析方法在1990年代就出現并在一定領域內使用了。統計分析方法也多種多樣的,根據實際需要產生過很多成功的案例,不一定采用目前標準的建模和分析方法。這里面舉個典型的例子,在1997年Intel推出mmx技術之前,程序員中流傳著一個非常著名的查表IDCT(反余弦變換),實際上就是對MPEG1編解碼過程的IDCT變換,做了統計分析后發現的,超過之前所有快速算法的實戰案例。具體細節請點擊『閱讀原文』下載IDCT 8x8.DOC。
第四)機器學習有這幾個比較明顯的缺陷,想要在實戰中取得良好的效果,就必須做出合理的取舍和優化。這幾個缺陷是:
嚴重依賴數據,訓練方法和訓練量非常關鍵。
計算量偏高。
雖然有時候取得了良好的效果,但是機器學習本身并不能理解這個過程,也不能給出合理的解釋。
涉及自然科學常識和社會科學常識的問題,目前機器學習還不能在開放領域內取得良好的效果。
(一)人工智能對視頻應用的滲透
傳統視頻應用的流程:
前面我們說過,目前的人工智能還處于工具階段,也就是說還沒有人工智能開發出來的任何的超越時代的編碼方法、傳輸協議、解碼、交互技術存在。目前人工智能滲透包括預處理和后處理,超分辨率,機器視覺等等,人們在這些過程中使用人工智能工具來提升開發效率或者處理效果。而編解碼技術,則屬于人類專家技術團隊才能解決的問題,目前的人工智能還很難介入。
近年來網絡直播應用的興起,出現了跟以往廣播電視編解碼不太一樣的需求。那就是:
編碼端,保證編碼實時性和碼率的要求的同時,保證盡量高的圖像質量。
發送,傳輸,緩沖,延時盡量小。
解碼器盡量能輸出最好的質量,最好能超分辨率。
這兩年我一直在努力把人工智能(主要是機器學習)技術跟編解碼做更深的融合,用來解決傳統方法一直很難解決的這幾個問題。
編碼器遇到的問題:硬件編碼器性能好,但是圖像質量差,碼率高。軟件編碼器效率較低,遇到復雜視頻,比如物體繁多,較大運動,閃光,旋轉,既不能滿足實時編碼的需求,同時輸出碼率也出現較大抖動。對于網絡應用來說是很大的障礙。
解碼器需要增強的點:大家都在構想能不能應用超分辨率技術,把較低分辨率的視頻的播放質量提升一大塊。目前有很多算法顯示出巨大的潛力,比如谷歌的RAISR,處理圖像時候效果很好。能不能實時用到視頻上,或者硬件化,或者采用更快的能實時運行的算法。我們在后面會討論一種折中方案,在犧牲一點質量的前提下,能夠實時運行的超分辨率算法。
(二)人工智能增強的編碼器
(2.1)動態編碼器
不同場景下編碼保持恒定質量的碼率:
編碼時間和碼率是正相關的,在碼率暴漲的同時,編碼時間也劇烈延長。對于低延時需求強烈的直播應用,會造成嚴重的卡頓。
一般就只好使用絕對不變碼率ABR. 不同場景下ABR的圖像質量:
這樣帶來的結果就是圖像質量不穩定。
我們希望是下圖這樣的曲線:
這就需要編碼器能夠提前判定大碼率場景出現的可能性。需要判定的幾種情況:
物體繁多且有攝像機運動。
背景不動但是有大量物體的大范圍運動,包括快速運動,旋轉,仿射,蠕變等。
出現閃光,風沙,粒子系統。
這就需要開發一種適用于高清晰度直播應用的面向場景的智能編碼技術。該技術通過監督學習將常見視頻編碼卡頓場景分類并快速識別,提前預判視頻場景的編碼復雜度和碼率抖動,使用動態參數配置來編碼,保證編碼的實時性和限定碼率下最好的圖像質量。
(2.2)內容自動植入
這里討論廣告的自動植入問題。一種是在編碼前合成到視頻里面,這個過程跟編碼關系不大。但是直接合成到視頻之后,所有的觀眾看到的內容就都一樣。
要做到個性化,精準的廣告投放,就只有在播放端解碼后合成。要做到這點,服務器不僅要發送原始視頻流,還要發送后期合成物體的定位方法和圖像數據,以便客戶端按照需求進行動態合成。
首先,自動植入的廣告跟前貼片比起來優勢很明顯,可以植入的廣告數量非常巨大,效果也更自然,用戶也不會產生明顯的反感。
其次,個性化精準投放,又進一步擴大了廣告投放的總容量和效率。
(2.3)交互式視頻
目前基本做法是圖像識別后,與搜索引擎連接,產生一個內容鏈接。
(三)人工智能增強的解碼器
(3.1)單個圖像的超分辨率
自然圖像基本上是平坦的紋理填充和顯著的邊緣(線條)組合形成的。
常規拉伸算法有雙線性插值和雙三次樣條曲線差值。一般說來,三次曲線要比線性插值效果好。
然而在 15 年前,我在金山做 DVD 播放器的時候,正在研究去隔行技術。
如上圖所示,第一排和第三排是原圖數據,第二排是需要插入的數據。普通的插值方法是在 B 方向上做一個三次插值。但是我這次計算了 A,B,C 三個方向的梯度,取方向梯度最小,像素梯度和最大的方向做簡單的線性插值。
這時候我有一個驚奇的發現,簡單的雙線性插值的目視效果居然要好過三次曲線。這是為什么呢?
圖像模糊的原因有以下幾個:
低分辨率下線條會變得模糊。
低分辨率圖像在拉伸到高分辨率時候會在線條上引入額外的模糊。
噪音的存在。
對于第2點我們具體說明:比如B樣條,三次樣條曲線有一個應用條件,那就是樣本數據本身應該是光滑的,至少是分段光滑。但是在圖像里面,物體的邊界和背景的結合處,就不滿足這個條件了。普通的三次樣條曲線插值并沒有考慮圖像內部各個物體的不同,簡單的把整個圖像作為一個整體來計算。這樣必然就在邊界處引入了嚴重的模糊。
因此超分辨率主要從以上幾個方面進行處理。噪音的處理技術已經比較成熟了。今天我們就不討輪了。
第一個討論點,如何降低線條的拉伸效應,也就是線條的銳度保持。
比如一個4x4的像素塊,比較常見的是如下的形態:
普通的三次b樣條的濾波器參數矩陣為:
比如我們打算在4x4像素塊中心插入一個點:
第一種情況,插入點在邊界上。
使用標準濾波器:
使用改進濾波器:
第二種情況,插入點在邊界內:
標準濾波:
效果可以接受。
第三種情況,插入點在邊界外:
使用標準濾波器:
使用改進濾波器:
第三種情況實際上和第一種是一樣的。所以我們只要考慮插入點在邊界上的情況就可以了。
考慮到每個像素實際是8位的,一個4x4像素塊的可能的組合基本就是128位整數。這是一個極其巨大的數字。然而實際上經常出現的可能遠遠少于理論上限,基本上考慮幾千種組合就夠用了。這種情況下需要使用統計方法,或者說是機器學習的辦法來獲得一個比較好的濾波器參數表。這是一個很稀疏的分布,需要設計比較好hash方法來構造和查找。
一般的機器學習過程都是類似的:準備一些原始 HR 圖象(2x2)和從采樣生成的 LR(1x1)圖象,作為配對數據。然后采用了幾個優化操作:
第一步,將復雜 4x4 梯度圖象點陣處理成為簡單的碼本圖象(HASH)。
第二步,針對這個碼本圖象,使用考慮臨近像素梯度權重的方法重構B樣條濾波器參數,每次都和原始的 2x2 倍圖象進行 SAD (COST函數)計算,尋找最接近的擬合曲線參數(下山法)。
第三步,對上一步獲得的大量參數計算概率分布,取最大概率的參數作為該碼本的最優解。
第四步,對近似的碼本進行合并處理,以減小碼本的數量。
還有一個討論點,就是低分圖像對邊界造成的模糊,有沒有辦法來去除。有人提出了一個梯度變換的方法:
這種算法的思路就是計算出梯度的分布,然后適當把梯度收窄。不考慮實現速度的話,這個方法取得效果也是很驚人的。
這個算法的運算量太大了。我們只能是想辦法把這個過程融合到尋找濾波器參數矩陣的過程中來。
在實際處理過程中,我們就使用上面過程獲得的進行超分辨率計算。那么我們可以估計這樣算法的大致運算量:4x4矩陣配準,查找濾波器,然后每個點16次乘加法。整個過程預估相當于40次乘法運算。因此以現在的cpu性能,使用avx256/512或者hvx充分優化,完全有可能實現1080p到4k的超分辨率上達到實時30fps。
這樣某些時候得到的圖象目視效果甚至要超過原始輸入圖象。
(3.2)視頻的超分辨率
上面是單個圖像的超分辨率。視頻的超分辨率和單個圖像是不同的。單個圖像的超分辨率算法可以融合到視頻超分辨率里面來。
視頻的超分辨率基本思路是從連續的視頻序列來重建高分辨率的圖像,涉及到圖像配準和子像素提取。研究方法和評價方法也存在很大差異。有些人用圖像的超分辨率方法來套用的話就會出現一些疑惑:
首先視頻編碼是一個有損壓縮過程,不同分辨率的序列壓縮退化過程是不同的,因此找不到合適的HR/LR配對。視頻質量的評估也是遠比圖像質量評估要復雜。因此目視質量是一個比較簡易的評估標準。當然尋找一個HR/LR配對來計算PSNR也是可以的,但是說服力遠不如圖像配對的情況。
評估模型:
比如這個過程,由于未經壓縮的視頻圖像體積巨大,所以HR(0)不適合用來做原始分辨率參照。我們可以選取HR(1)和HSR來比較獲取一個PSNR(0), 然后選取HR(1)和普通拉伸獲得的HBR來比比較獲取一個PSNR(1). 如果PSNR(0)比PSNR(1)要高的話,就說明超分辨取得了效果。
普通的視頻序列物體配準和子像素提取是非常慢的。為了加快速度,我們把這個過程簡化了一下,省去配準和空間預測的過程,參照解碼生成分數運動向量,直接在解碼過程中完成一部分像素塊的子像素提取工作。
為了進一步提高處理速度,這里面的還采用了一些優化措施:
實驗發現,在一個視頻播放序列中,如果每間隔2幀清晰度稍差的圖像,加入一幀相對高質量圖像,和逐幀高質量圖像對比起來,人眼的感覺不會造成太多差異。
因此在視頻SR過程中,可以每隔兩幀用普通 b 樣條+降噪生成的基礎圖象HBR+,做一次HSR處理:
[HSR] ,[HBR+] ,[HBR+], [HSR], [HBR+], [HBR+], [HSR], [HBR+], [HBR+]
這個視頻上面的快速超分辨率過程SR詳細過程可以描述為:
預估整個超分辨率過程輸出的HSR視頻圖像質量提升1個dB左右。
-
視頻
+關注
關注
6文章
1966瀏覽量
73511 -
編解碼器
+關注
關注
0文章
269瀏覽量
24543 -
人工智能
+關注
關注
1802文章
48319瀏覽量
243986 -
機器學習
+關注
關注
66文章
8473瀏覽量
133736 -
超分辨率
+關注
關注
0文章
27瀏覽量
9995
原文標題:人工智能在視頻應用領域的探索
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論