用 AI 搞視訊編解碼器,現在路子有點“野”。
插幀、過拟合、語義感覺、GAN…… 你想過這些“腦洞”或 AI 算法,也能被用到編解碼器上面嗎?
例如,原本的算法每幀壓縮到 16.4KB 後,樹林開始變得無比模糊:

又例如,用插幀的思路結合神經編解碼器,能讓最新壓縮算法效果更好……
這一系列算法的思路,背後究竟是什麼原理,用 AI 搞編解碼器,潛力究竟有多大?
我們采訪了高通工程技術副總裁、高通 AI 研究方向負責人侯紀磊博士,了解了高通一些 AI 編解碼器中的算法細節和原理。
編解碼器标準逐漸“内卷”
當然,在了解 AI 算法的原理之前,需要先了解視訊到底是怎麼壓縮的。
如果不壓縮,1 秒 30 幀、8bit 單通道色深的 480p 視訊,每秒就要傳輸 80+Mbps 資料,想在網上實時看高清視訊的話,幾乎是不可能的事情。
目前,主要有色度子采樣、幀内預測(空間備援)和幀間預測(時間備援)幾個次元的壓縮方法。
色度子采樣,主要是基于我們眼睛對亮度比對顔色更敏感的原理,壓縮圖像的色彩資料,但視覺上仍然能保持與原圖接近的效果。
幀内預測,利用同一幀中的大片相同色塊(下圖地闆等),預測圖像内相鄰像素的值,得出的結果比原始資料更容易壓縮。
幀間預測,用來消除相鄰幀之間大量重複資料(下圖的背景)的方法。利用一種名叫運動補償的方法,用運動向量(motion vector)和預測值計算兩幀之間像素差:
這些視訊壓縮的方法,具體到視訊編解碼器上,又有不少壓縮工作可以進行,包括分區、量化、熵編碼等。
然而,據侯紀磊博士介紹,從 H.265 到 H.266,壓縮性能雖然提升了 30% 左右,但這是伴随着編碼複雜度提高 30 倍、解碼複雜度提高 2 倍達成的。
這意味着編解碼器标準逐漸進入了一個“内卷”的狀态,提升的壓縮效果,本質上是用編解碼器複雜度來交換的,并不算真正完成了創新。
是以,高通從已有壓縮方法本身的原理、以及編解碼器的構造入手,搞出了幾種有意思的 AI 視訊編解碼方法。
3 個方向提升壓縮性能
具體來說,目前的 AI 研究包括幀間預測方法、降低解碼複雜度和提高壓縮品質三個方向。
“預判了 B 幀的預判”
從幀間預測來看,高通針對 B 幀編解碼提出了一種新思路,論文已經登上 ICCV 2021。
I 幀:幀内編碼幀(intra picture)、P 幀:前向預測編碼幀(predictive-frame)、B 幀:雙向預測内插編碼幀(bi-directional interpolated prediction frame)
目前的編解碼大多集中在 I 幀(幀内預測)和 P 幀上,而 B 幀則是同時利用 I 幀和 P 幀的雙向運動補償來提升壓縮的性能,在 H.265 中正式支援(H.264 沒有)。
雖然用上 B 幀後,視訊壓縮性能更好,但還是有兩個問題:
一個是視訊需要提前加載(必須提前編碼後面的 P 幀,才能得到 B 幀);另一個是仍然會存在備援,如果 I 幀和 P 幀高度相關,那麼再用雙向運動補償就顯得很浪費。
打個比方,如果從 I 幀→B 幀→P 幀,視訊中隻有一個球直線運動了一段距離,那麼再用雙向運動補償的話,就會很浪費:
這種情況下,用插幀似乎更好,直接通過時間戳就能預測出物體運動的狀态,編碼計算量也更低。
但這又會出現新的問題:如果 I 幀和 P 幀之間有個非常大的突變,例如球突然在 B 幀彈起來了,這時候用插幀的效果就很差了(相當于直接忽略了 B 幀的彈跳)。
是以,高通選擇将兩者結合起來,将基于神經網絡的 P 幀壓縮和插幀補償結合起來,利用 AI 預測插幀後需要進行的運動補償:
别說,效果還确實不錯,比谷歌之前在 CVPR 2020 上保持的 SOTA 紀錄更好,也要好于目前基于 H.265 标準實作開源編解碼器的壓縮性能。
除此之外,高通也嘗試了一些其他的 AI 算法。
用“過拟合”降低解碼複雜度
針對編解碼器标準内卷的情況,高通也想到了用 AI 做自适應算法,來像“過拟合”一樣根據視訊比特流更新一個模型的權重增量,已經有相關論文登上 ICLR 2021。
這種方法意味着針對單個模型進行“過拟合”,對比特流中的權重增量進行編碼,再與原來的比特流進行一個比較。如果效果更好的話,就采用這種傳輸方式。
事實證明,在不降低壓縮性能的情況下,這種方法能将解碼複雜度降低 72%,同時仍然保持之前 B 幀模型達到的 SOTA 結果。
當然,除了視訊壓縮性能以外,單幀圖像被壓縮的品質也需要考慮,畢竟視覺效果也是視訊壓縮追求的标準之一。
用語義感覺和 GAN 提高壓縮品質
用語義感覺和 GAN 的思路就比較簡單了。
語義感覺就是讓 AI 基于人的視覺來考慮,選出你在看視訊時最關注的地方,并着重那部分的比特配置設定情況。
例如你在看網球比賽時,往往并不會關注比賽旁邊的觀衆長什麼樣、風景如何,而是更關注球員本身的動作、擊球方法等。
那麼,就訓練 AI,将更多的比特放到目标人物身上就行,像這樣:
從結構上來講也比較簡單,也就是我們常見的語義分割 Mask(掩膜):
這種方法能很好地将受關注的局部區域幀品質提升,讓我們有更好的觀看效果,而不是在視訊被壓縮時,看到的整幅圖像都是“打上馬賽克”的樣子。
據高通表示,這種語義感覺的圖像壓縮,目前已經在擴充到視訊壓縮上了,同樣是關注局部的方法,效果也非常不錯。
而基于 GAN 的方法,則更加緻力于用更少的比特數生成視覺效果同樣好的圖像品質:
據高通表示,資料集來自 CVPR 中一個針對圖像壓縮的 Workshop CLIC,提供了大約 1600 張的高清圖檔,利用自研的模型,能在上面訓練出很好的效果:
也就是開頭的圖檔效果,即使在大小被壓縮後,基于 GAN 的圖像還是能取得更好的視覺品質:
期待這些技術能馬上應用到手機等裝置上,讓我們看視訊的時候真正變得不卡。
相關論文:
[1]https://arxiv.org/abs/2104.00531
[2]https://arxiv.org/abs/2101.08687
參考連結:
[1]https://www.qualcomm.com/news/onq/2021/07/14/how-ai-research-enabling-next-gen-codecs
[2]https://github.com/leandromoreira/digital_video_introduction