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