用 AI 打破編解碼器內卷,高通最新頂會論文腦洞大開
用 AI 搞視訊編解碼器,現在路子有點“野”。
插幀、過擬合、語義感知、GAN…… 你想過這些“腦洞”或 AI 演算法,也能被用到編解碼器上面嗎?
例如,原本的演算法每幀壓縮到 16.4KB 後,樹林開始變得無比模糊:
但在用上 GAN 後,不僅畫面更清晰,每幀影象還更小了,只需要 14.5KB 就能搞定!
又例如,用插幀的思路結合神經編解碼器,能讓最新壓縮演算法效果更好……
這一系列演算法的思路,背後究竟是什麼原理,用 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