0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于轉(zhuǎn)碼系統(tǒng)優(yōu)化原理與實(shí)踐

LiveVideoStack ? 來源:LiveVideoStack ? 2024-01-16 10:11 ? 次閱讀

編者按

轉(zhuǎn)碼主要有三個目的:提高碼流的兼容性、改善畫質(zhì)和降碼率省帶寬。轉(zhuǎn)碼系統(tǒng)對公司的帶寬和體驗是非常重要的,尤其在降本增效大背景下。LiveVideoStackCon 2023 深圳站邀請到嗶哩嗶哩公司蔡春磊老師講解B站降低碼率相關(guān)的原理和實(shí)踐。

文/蔡春磊

大家好,我是蔡春磊。今天和大家分享一些關(guān)于轉(zhuǎn)碼系統(tǒng)優(yōu)化原理的思考。我畢業(yè)后加入嗶哩嗶哩,主要從事傳統(tǒng)實(shí)用轉(zhuǎn)碼系統(tǒng)的設(shè)計和優(yōu)化。同時我對深度學(xué)習(xí)編碼也有過研究,我經(jīng)常思考它們之間本質(zhì)上的聯(lián)系,今天和大家探討一下。

01

廣義轉(zhuǎn)碼框架

cbbc94a4-b403-11ee-8b88-92fbcf53809c.png

我們從轉(zhuǎn)碼系統(tǒng)切入。轉(zhuǎn)碼主要有三個目的:提高碼流的兼容性、改善畫質(zhì)和降碼率省帶寬。今天主要探討降低碼率相關(guān)的原理和實(shí)踐,因為帶寬成本是視頻公司最沉重的負(fù)擔(dān)之一。

cbd0805e-b403-11ee-8b88-92fbcf53809c.png

現(xiàn)在的轉(zhuǎn)碼系統(tǒng)不僅僅是簡單的解碼再編碼,而是包括了預(yù)分析、前處理、參數(shù)決策、終端增強(qiáng)和質(zhì)量評價等模塊的龐大系統(tǒng)。其基本原理是在更大的系統(tǒng)尺度上,對壓縮率進(jìn)行聯(lián)合優(yōu)化,用更多算力換取更高的壓縮率,可以稱之為廣義轉(zhuǎn)碼系統(tǒng)。

cbe3288a-b403-11ee-8b88-92fbcf53809c.png

廣義轉(zhuǎn)碼系統(tǒng)具體表現(xiàn)形式非常多,不同公司的實(shí)現(xiàn)方法不同,叫法也不同。例如,內(nèi)容自適應(yīng)轉(zhuǎn)碼系統(tǒng)、窄帶高清轉(zhuǎn)碼系統(tǒng)等。上面列出了全球部分代表性公司對轉(zhuǎn)碼系統(tǒng)各個模塊的投入,從投入力度上可以發(fā)現(xiàn),轉(zhuǎn)碼系統(tǒng)對公司的帶寬和體驗是非常重要的,在降本增效的大背景下更是如此。

cbfb045a-b403-11ee-8b88-92fbcf53809c.png

B站在轉(zhuǎn)碼系統(tǒng)優(yōu)化上起步較晚,那我們該如何做才能迅速追趕行業(yè)先進(jìn)水平呢?首先,不能著急投入到具體的技術(shù)實(shí)踐當(dāng)中,因為不同的應(yīng)用場景對轉(zhuǎn)碼系統(tǒng)的要求截然不同,比如適合 OGV 內(nèi)容為主的轉(zhuǎn)碼系統(tǒng)不適合直接用在 UGV 為主的應(yīng)用中,反之亦然。我們首先要做的是找到底層的優(yōu)化原理。

cc126db6-b403-11ee-8b88-92fbcf53809c.png

具體來講,就是要先思考上述這些技術(shù)點(diǎn),有沒有共同的優(yōu)化原則。

02

壓縮的信息論原理

我先嘗試構(gòu)建一套基于信息論的優(yōu)化理論框架,然后對其合理性進(jìn)行驗證。

cc27a082-b403-11ee-8b88-92fbcf53809c.png

先忽略轉(zhuǎn)碼系統(tǒng)復(fù)雜多變的表現(xiàn)形式。轉(zhuǎn)碼本質(zhì)是一個信源編碼系統(tǒng),目的是用最少的比特數(shù)表達(dá)視頻數(shù)據(jù)中人眼感興趣的信息,最短平均比特數(shù)等于視頻數(shù)據(jù)的信息熵。在實(shí)際應(yīng)用中,有意義的自然視頻多,無意義的噪聲視頻少,概率分布不均勻,所以信息熵小于像素數(shù)據(jù)無損表示所需要的比特數(shù),因此視頻數(shù)據(jù)可以被壓縮。計算信息熵,前提是要明確視頻中所有像素取值的聯(lián)合概率分布。我們先用信息熵的概念作為基座,再看兩條定理,它們構(gòu)成了理論框架的支柱。

cc3d8e92-b403-11ee-8b88-92fbcf53809c.png

第一條定理是說,真實(shí)視頻的像素聯(lián)合取值空間非常大,其概率分布不可能通過統(tǒng)計得到。所以在實(shí)際編碼時,是基于對概率分布的預(yù)測,由此進(jìn)行實(shí)際熵編碼得到的碼率叫做交叉熵,可以證明交叉熵≥信息熵。對分布預(yù)測得越準(zhǔn)確,所能達(dá)到的實(shí)際碼率越低。

cc60c510-b403-11ee-8b88-92fbcf53809c.png

第二條定理可以用以上圖直觀表示,它有多種理解方式:1. 編碼多維數(shù)據(jù),可以先編碼一部分信息,再用已編碼信息作為先驗條件來編碼另一部分信息,這樣所需比特數(shù)要少于對他們進(jìn)行獨(dú)立編碼。2. 當(dāng)解碼端事先已具備與信源相關(guān)的先驗信息(相關(guān)信息)時,編碼信源所需碼率(條件信息)可以減少。3. 相關(guān)的先驗信息越多,所需碼率越少。

cc814ab0-b403-11ee-8b88-92fbcf53809c.png

這就是一套關(guān)于轉(zhuǎn)碼優(yōu)化的理論框架了,非常簡潔:一條信息熵的基本概念、兩條信息論定理。檢驗此框架的合理性,可以用此來解釋轉(zhuǎn)碼系統(tǒng)中各個模塊的設(shè)計原理以及優(yōu)化路徑,如果能解釋明白,那就可以認(rèn)為此框架是合理的。

cccc260c-b403-11ee-8b88-92fbcf53809c.png

我們先以傳統(tǒng)編碼的發(fā)展為例。如果從技術(shù)角度來理解我們所熟悉的變換和預(yù)測混合編碼方法,門檻是很高的,因為里面涉及了太多的模塊。現(xiàn)在我嘗試從理論角度出發(fā),對傳統(tǒng)編碼框架的設(shè)計原理和優(yōu)化路徑進(jìn)行重新梳理。

對視頻像素數(shù)據(jù)進(jìn)行壓縮,前提是要明確像素取值的聯(lián)合概率分布,但視頻由時域上很多幀組成,其像素數(shù)量極其龐大,數(shù)據(jù)間聯(lián)合取值的范圍幾乎無窮。所以首先對數(shù)據(jù)進(jìn)行降維處理,也就是一幀一幀地去編碼。上面的公式表明,為了保持理論上的最低碼率,在編碼時要充分利用已經(jīng)編碼幀給未編碼幀提供相關(guān)信息。但在實(shí)際標(biāo)準(zhǔn)中,由于復(fù)雜度問題,采用的都是有限數(shù)量的參考幀結(jié)構(gòu),這是傳統(tǒng)編碼中幀間編碼的概念。原理上幀間參考信息越多,碼率越低,所以隨著標(biāo)準(zhǔn)的發(fā)展,逐漸出現(xiàn)了 P 幀、B 幀,同時封閉式的 GOP 結(jié)構(gòu)向開放式 GOP 結(jié)構(gòu)發(fā)展。

ccf1846a-b403-11ee-8b88-92fbcf53809c.png

現(xiàn)在我們將問題拆解成對一幀進(jìn)行編碼。但是,一幀 1080P 圖像就有百萬數(shù)量級的像素,它們之間的聯(lián)合取值范圍也近乎無窮大。繼續(xù)降低維度,把圖像拆成一個一個塊進(jìn)行編碼,原理上在編碼時為了保證盡可能低的碼率,要充分利用已編碼圖像塊,給未編碼塊提供相關(guān)信息來降低碼率。但由于復(fù)雜度原因,在實(shí)際發(fā)展過程中首先出現(xiàn)的是諸如 H.264 中 16×16 的小塊,且僅參考相鄰域圖像塊的邊緣像素。從公式可以輕松推導(dǎo)出,當(dāng) LCU 越大的時候,對具體的 CU,能參考的信息就越多,理論上碼率就會越低。所以編碼標(biāo)準(zhǔn)一定是朝著編碼塊越來越大的方向去發(fā)展,同時還會引入更多的鄰域相關(guān)信息,比如多行參考。

wKgZomWl5fGAeY5bAAjxNJP_WEM823.png

假設(shè)已經(jīng)將圖像拆成了 8×8 的像素塊,但是其維度依然很高,聯(lián)合分布的取值范圍仍然極大。而且其取值非常分散,很難對其分布進(jìn)行建模預(yù)測。對像素數(shù)據(jù)的分布進(jìn)行預(yù)測,換句話說,其實(shí)是在問,自然圖像塊有沒有共同規(guī)律?

其實(shí)這個規(guī)律早在 1968 年就被發(fā)現(xiàn)了:自然視頻能量大多集中在低頻部分,圖像塊經(jīng)過 DCT 變換后,系數(shù)會呈現(xiàn)很強(qiáng)的規(guī)律性,非零系數(shù)不多,且集中在低頻部分。根據(jù)這個規(guī)律,就可以對系數(shù)的分布進(jìn)行建模預(yù)測,如右邊曲線所示。同時由于這個規(guī)律性很強(qiáng),也就是說預(yù)測可以很準(zhǔn)確,所以交叉熵就會很低,編碼所需碼率就低。再結(jié)合 zigzag、熵編碼等工具就能實(shí)現(xiàn)壓縮的目的。DCT 變換編碼這個天才般的發(fā)明,直到現(xiàn)在依然是傳統(tǒng)編碼中最核心的模塊。而 zigzag 則成了 FFmpeg 的 logo。

cd6000f2-b403-11ee-8b88-92fbcf53809c.png

分塊加變換編碼,就構(gòu)成了 JPEG 的基本框架。想要進(jìn)一步降低碼率,原理表明,可以用相鄰的圖像塊給當(dāng)前圖像塊提供先驗的相關(guān)信息,那么當(dāng)前塊所需要編碼的就剩下了條件信息,而條件信息比自信息低,所以碼率就低。

在傳統(tǒng)編碼中,相對信息的表達(dá)方式是周圍圖像塊對當(dāng)前圖像塊在像素域上的預(yù)測值。條件信息的表達(dá)方式是當(dāng)前塊的像素預(yù)測殘差。而條件信息比自信息更低,則表現(xiàn)為預(yù)測殘差經(jīng)過 DCT 變換之后,其系數(shù)會變得更加集中,非零系數(shù)更少,對其進(jìn)行概率預(yù)測,所取得的交叉熵會更低,實(shí)際碼率也就更低。這就是傳統(tǒng)編碼中另一個核心技術(shù):預(yù)測編碼。

在這里先拋出一個問題,在傳統(tǒng)編碼中,相關(guān)信息和條件信息都是在像素域進(jìn)行表達(dá)的,那么它們是否只能在像素域進(jìn)行表達(dá)呢?

cd88d766-b403-11ee-8b88-92fbcf53809c.png

在傳統(tǒng)編碼中,預(yù)測殘差越少,DCT 系數(shù)越集中,交叉熵越低。所以傳統(tǒng)編碼中一個重要的優(yōu)化方向是不斷引入更多的相關(guān)信息來提高對當(dāng)前圖像塊的預(yù)測準(zhǔn)確率,降低殘差,從而降低碼率。從這個角度看,就可以對很多傳統(tǒng)編碼工具的設(shè)計和發(fā)展路徑進(jìn)行解釋,例如幀間參考的原理就是在參考當(dāng)前幀圖像塊的基礎(chǔ)上增加相鄰幀圖像的參考,本質(zhì)是引入更多相關(guān)信息從而減少條件信息,可以降低碼率。至此,我們已經(jīng)從原理出發(fā),重新推導(dǎo)了傳統(tǒng)的基于變換與預(yù)測的混合編碼框架,以及各個模塊的優(yōu)化路徑。

cdef3452-b403-11ee-8b88-92fbcf53809c.png

編碼模式信息同樣不可忽視,上圖第一行公式成立的前提是解碼器提前知道劃分模式,但是通用解碼器預(yù)先是不知道具體編碼模式的,所以模式信息也要編碼,也要消耗碼率。同樣,模式信息也是可以引入更多先驗條件來降低碼率的。實(shí)際編碼時,不同模式的概率預(yù)測難度不同,其實(shí)際碼率也不同,且無法提前得知,所以需要嘗試不同模式并計算各自的碼率,從而搜索到碼率最低的模式,這就是模式搜索的概念。

ce04ec34-b403-11ee-8b88-92fbcf53809c.png

上述都是無損編碼,但實(shí)際用的大多是有損編碼。有損編碼的原理可以解釋為:為編碼提供了一個先驗條件,即允許在編碼過程中對部分像素數(shù)據(jù)進(jìn)行丟棄。在這個條件之下,編碼可以減少數(shù)據(jù)量來降低碼率。率失真優(yōu)化 RDO 就是綜合考慮了失真和碼率的模式搜索,在實(shí)際標(biāo)準(zhǔn)發(fā)展過程中,編碼模式及其之間的組合急劇增加,模式搜索的空間不斷增大,因此實(shí)用編碼必須要引入一門重要的技術(shù)——快速算法

ce1f8b3e-b403-11ee-8b88-92fbcf53809c.png

傳統(tǒng)編碼的原理解釋先到這里,希望能為大家?guī)硪恍﹩l(fā)。接下來,繼續(xù)用此框架來梳理深度學(xué)習(xí)編碼的發(fā)展歷程。

ce3920e4-b403-11ee-8b88-92fbcf53809c.png

介紹一下深度學(xué)習(xí)的發(fā)展背景。約翰內(nèi)斯巴萊最早提出了基于 CNN 的端到端圖像編碼,該方法具有開創(chuàng)性,為編碼領(lǐng)域開辟了一條全新的賽道,并掀起了全球?qū)ι疃葘W(xué)習(xí)編碼的研究熱潮。深度學(xué)習(xí)編碼性能快速發(fā)展,如果對標(biāo)傳統(tǒng)標(biāo)準(zhǔn),8 年時間就從 JPEG 發(fā)展到 H.266,甚至下一代標(biāo)準(zhǔn)的水平,走完了傳統(tǒng)編碼約 30 年的性能提升之路。

ce617436-b403-11ee-8b88-92fbcf53809c.png

回顧一下深度學(xué)習(xí)圖像編碼的基本框架,和傳統(tǒng)編碼遇到的問題一樣,對像素域的分布預(yù)測很難,也要變換到分布更加有規(guī)律的特征域,以進(jìn)行更加準(zhǔn)確的預(yù)測。

ce76a914-b403-11ee-8b88-92fbcf53809c.png

問題轉(zhuǎn)變成了對特征進(jìn)行編碼,特征的聯(lián)合概率分布空間依然很大,也需要先降維,拆解成一個一個通道,一個一個特征去編碼。原理上要想取得盡可能低的碼率,需要充分利用已編碼的特征給未編碼特征提供相關(guān)信息。接下來要回顧的深度學(xué)習(xí)圖像編碼,其實(shí)就是一個不斷提高特征預(yù)測準(zhǔn)確率,同時引入更多相關(guān)信息的過程。

ce9f018e-b403-11ee-8b88-92fbcf53809c.png

看幾個關(guān)鍵節(jié)點(diǎn),2017 年第一個 CNN 圖像編碼,有兩個關(guān)鍵點(diǎn),一是相同通道內(nèi)的特征共享同一個固定的概率分布表,二是已編碼特征沒有用來給未編碼特征做參考。由于這兩個特點(diǎn),在公式上很容易證明,該方法的壓縮率是有限的,概率預(yù)測準(zhǔn)確率不高,相關(guān)信息利用不夠充分,碼率就不可能很低。原理上有二個優(yōu)化方向,一是提高特征分布的預(yù)測準(zhǔn)確率,二是利用已編碼特征提供相關(guān)信息。

ceb88c30-b403-11ee-8b88-92fbcf53809c.png

2018 年,他們實(shí)現(xiàn)了這兩個優(yōu)化。具體來說,從通道級固定概率表發(fā)展到元素級可變的概率估計,同時空間相鄰元素之間有參考。這兩點(diǎn)改進(jìn)使壓縮率從 JPEG2000一下子就發(fā)展到了 2013 年 HEVC。如果繼續(xù)梳理,站在原理框架的視角去看,接下來的發(fā)展脈絡(luò)其實(shí)非常清晰,就是不斷引入更多已編碼特征提供相關(guān)信息的過程。不過在實(shí)踐中,利用的相關(guān)信息越多,復(fù)雜度就越高,并行性越弱,速度和壓縮率之間需要有取舍。

有一點(diǎn)需要注意,在深度學(xué)習(xí)圖像編碼中,相關(guān)信息和條件信息的表達(dá)已經(jīng)不在像素域,而在特征域了,這些方法都在特征域進(jìn)行元素間的參考預(yù)測和殘差編碼。所以,之前問題的答案,相關(guān)信息和條件信息,并不是只能在像素域進(jìn)行表達(dá)。我認(rèn)為這個本質(zhì)的差別,決定了深度學(xué)習(xí)編碼的性能天花板要比傳統(tǒng)方法高得多。

ced23a9a-b403-11ee-8b88-92fbcf53809c.png

繼續(xù)來到深度學(xué)習(xí)的視頻編碼,上面第一行公式,表明如果對視頻進(jìn)行一幀一幀編碼是不高效的,需要引入幀間參考,提供相關(guān)信息來降低碼率。第一個深度學(xué)習(xí)視頻編碼 DVC 在圖像編碼基礎(chǔ)上,引入了前向幀間參考,完全遵循了傳統(tǒng)的編碼框架,用像素域光流預(yù)測表達(dá)幀間相關(guān)信息,用像素域預(yù)測殘差表達(dá)條件信息。雖然用光流替代了傳統(tǒng)運(yùn)動估計,但這在原理上,DVC 和傳統(tǒng)方法并沒有本質(zhì)差別,所以 DVC 框架的性能天花板其實(shí)是有限的。

d04c063a-b403-11ee-8b88-92fbcf53809c.png

有兩個優(yōu)化方向:一是引入更多相關(guān)信息,降低碼率。二是將相關(guān)信息和條件信息在更有效的變換域內(nèi)進(jìn)行表達(dá)。

第一條好理解,就是引入更多的參考幀。第二條用上面的示意圖可以直觀地解釋,同樣兩組數(shù)據(jù),可以從不同維度去觀察它們的相關(guān)性,在不同空間內(nèi),他們之間的相關(guān)信息量是不一樣的。所以總是存在更有效的空間,它們之間的相關(guān)信息更多,條件信息更少,那么在這個域上編碼條件信息,碼率就會更低。傳統(tǒng)方法都是在像素域內(nèi)表達(dá)相關(guān)信息和條件信息,這是最容易實(shí)現(xiàn)的,但未必是最優(yōu)的,深度學(xué)習(xí)圖像編碼全面超越傳統(tǒng)方法已經(jīng)證明了這一點(diǎn),那么深度學(xué)習(xí)視頻編碼同樣可以這樣去優(yōu)化。

目前最新也是最好的方法 DCVC-DC,實(shí)現(xiàn)了這兩點(diǎn)優(yōu)化。具體來說,一是利用深度學(xué)習(xí)特征的傳導(dǎo),引入了前向多幀的相關(guān)信息。二是幀間參考信息和當(dāng)前條件信息都是在特征域進(jìn)行表達(dá)的,而不是在像素域。該方法比目前正在研發(fā)的下一代 ECM(可以認(rèn)為 H.267)在相同 GOP 結(jié)構(gòu)下的性能更好。該方法對于前向非相鄰幀的參考還是比較隱蔽的,如果使用更加顯式的方法,引入更多相關(guān)信息,或許可以進(jìn)一步提升壓縮率。

總結(jié)一下深度學(xué)習(xí)編碼,原理是利用深度神經(jīng)網(wǎng)絡(luò)強(qiáng)大的優(yōu)化能力和巨大的算力,對編碼問題中概率預(yù)測的問題進(jìn)行更加直接的求解,所以深度學(xué)習(xí)編碼的性能發(fā)展速度遠(yuǎn)遠(yuǎn)快于傳統(tǒng)編碼??梢灶A(yù)見的是,在未來本就激烈的編碼標(biāo)準(zhǔn)競爭格局中,深度學(xué)習(xí)編碼必將以強(qiáng)勢的姿態(tài)加入競爭,并取得重要的席位。

wKgZomWl5hmASc-nAAhgU0hgK-0187.png

沿著編碼發(fā)散一下,一是用大模型給解碼端提供更多先驗知識,二是相關(guān)信息和條件信息在內(nèi)容語義層面進(jìn)行更高效的表達(dá)。例如,英偉達(dá)提出在會議場景下的極低碼率編碼。原理是在解碼端利用面部重建模型,提供了從關(guān)鍵點(diǎn)和共享紋理構(gòu)造人臉的先驗知識。同時該方法對幀間相關(guān)信息表達(dá)為共享的面部紋理和參考關(guān)鍵點(diǎn),條件信息表達(dá)為當(dāng)前幀人臉的關(guān)鍵點(diǎn)信息,所以只需要對人臉關(guān)鍵點(diǎn)信息進(jìn)行編碼,而關(guān)鍵點(diǎn)可以以極低的碼率去表示。

還有最近比較火的“郭德綱說英文”的有趣應(yīng)用,如果從轉(zhuǎn)碼角度去看這項技術(shù),其實(shí)可以實(shí)現(xiàn)對同一視頻內(nèi)容的不同語言版本進(jìn)行極其高效的壓縮和傳輸,這能夠在對視頻內(nèi)容進(jìn)行全球化分發(fā)的業(yè)務(wù)中節(jié)省大量的成本。假設(shè)我們先用傳統(tǒng)方法分發(fā)一個中文和英文版的視頻,盡管只有嘴型不同,但是傳統(tǒng)方法需要單獨(dú)編碼兩個視頻,碼率成倍上升。

換個思路,如果提前給解碼端幾個大模型,如翻譯模型、文字轉(zhuǎn)語音模型、語音驅(qū)動嘴唇的模型。此時就只需要編碼傳輸一個英文版本的視頻,其他語言版本的視頻可以通過解碼端的大模型完全重構(gòu)出來,此時對其他所有版本的視頻編碼所需要的比特數(shù)為零,這就實(shí)現(xiàn)了極其高效的壓縮。

d085bbc8-b403-11ee-8b88-92fbcf53809c.png

沿著編碼繼續(xù)發(fā)散,原理上解碼端擁有相關(guān)信息越多,碼率就越低。可以推測有兩個發(fā)展方向,一是專用場景下的編碼,這相當(dāng)于提供了一個非常強(qiáng)的場景先驗信息,比如英偉達(dá)的會議場景下的編碼。專用編碼目前還很難推廣,是因為傳統(tǒng)標(biāo)準(zhǔn)依賴專用解碼芯片,不同標(biāo)準(zhǔn)無法共享高效的芯片核心,限制了解碼的效率。但假設(shè)未來深度學(xué)習(xí)編碼能夠普及,那么各類專用編碼器的差異可能就在于模型結(jié)構(gòu)和參數(shù)的不同,而底層推理芯片是一樣的,也就不存在解碼效率差異的問題了,安裝專用場景的硬件解碼器只需要像安裝軟件一樣,下發(fā)解碼模型文件即可。

二是用世界大模型進(jìn)行視頻編碼,其原理是用更龐大的算力和更海量的數(shù)據(jù),對編碼中的概率估計問題進(jìn)行更加直接有效的求解,從而取得更低的交叉熵。此時,大模型會學(xué)習(xí)海量關(guān)于視頻數(shù)據(jù)的先驗信息,對視頻的壓縮表示會轉(zhuǎn)變成視頻在大模型中的概率表索引,這個索引可能就是我們所熟知的 prompt,對保真度的要求越高,prompt 就要越準(zhǔn)確越具體,或者額外傳輸一些語義級別的殘差信息。最近有學(xué)者認(rèn)為大模型本質(zhì)就是壓縮模型,從我們的原理框架出發(fā),也演繹出了類似的結(jié)論。

d0ac8212-b403-11ee-8b88-92fbcf53809c.png

編碼先說這么多。那么轉(zhuǎn)碼系統(tǒng)中其他模塊的優(yōu)化原理是什么呢?其他模塊都可以歸納為一個范式:為轉(zhuǎn)碼系統(tǒng)提供和人眼視覺感知系統(tǒng)相關(guān)的先驗信息,就可以減少編碼人眼感知信息所需要的條件信息。這些先驗信息包括人眼更關(guān)注人臉、人眼對復(fù)雜紋理的失真不敏感等,先驗信息與人眼視覺系統(tǒng)越匹配,能夠給轉(zhuǎn)碼系統(tǒng)賦予的相關(guān)信息就越多,剩余條件信息越少,碼率越低。在實(shí)際系統(tǒng)中,前處理和 ROI、JND 等預(yù)分析的目的就是確保這些先驗條件能夠充分而準(zhǔn)確的實(shí)現(xiàn)。

d0f2dde8-b403-11ee-8b88-92fbcf53809c.png

再看編碼參數(shù)決策,其原理也是給轉(zhuǎn)碼過程提供了先驗信息,比如人眼對畫質(zhì)存在拐點(diǎn),畫質(zhì)達(dá)到一定水平后,再增加碼率對主觀畫質(zhì)提升是有限的。還有對一批視頻進(jìn)行編碼時,如果能夠保持每個視頻的畫質(zhì)足夠穩(wěn)定,那么對用戶體驗的提升是有幫助的。參數(shù)決策的目的也是確保這些先驗條件能夠準(zhǔn)確而充分的實(shí)現(xiàn),比如通過參數(shù)決策保持視頻編碼后的畫質(zhì)恒定。

d11d5938-b403-11ee-8b88-92fbcf53809c.png

我們?yōu)檗D(zhuǎn)碼系統(tǒng)提供的先驗信息,具備有效性的前提是符合人眼視覺系統(tǒng) HVS,那么視頻質(zhì)量評價 VQA 的目的,就是確保這個前提的成立。VQA 評價了一個視頻中有多少人眼真正感興趣的信息,或者相比于源視頻丟失了多少人眼感知信息。當(dāng) VQA 越準(zhǔn)確的時候,整個轉(zhuǎn)碼系統(tǒng)所依賴的先驗信息就與 HVS 越相關(guān),所能提供的相關(guān)信息就越多,條件信息越少,碼率越低。

只要是從事過轉(zhuǎn)碼系統(tǒng)相關(guān)工作的人,應(yīng)該都會發(fā)現(xiàn),整個轉(zhuǎn)碼系統(tǒng)中的各個模塊,對 VQA 都有很強(qiáng)的依賴。所以 VQA 是如此得重要,以至于 VQA 是整個視頻行業(yè)投入最多的方向之一。但是 HVS 非常復(fù)雜,所以對 VQA 的研究也一直在持續(xù)。

d139c226-b403-11ee-8b88-92fbcf53809c.png

我們對傳統(tǒng)編碼和深度學(xué)習(xí)編碼以及其他模塊的優(yōu)化原理進(jìn)行了重新梳理,目前看來,我們的原理框架是合理的?,F(xiàn)在我們就可以用此框架來指導(dǎo)實(shí)際轉(zhuǎn)碼系統(tǒng)的設(shè)計。

03

B站轉(zhuǎn)碼優(yōu)化實(shí)踐

接下來,介紹一些B站轉(zhuǎn)碼優(yōu)化的實(shí)踐經(jīng)驗。

d1529c7e-b403-11ee-8b88-92fbcf53809c.png

這是B站規(guī)劃的廣義轉(zhuǎn)碼系統(tǒng)的框架圖,有些模塊還在研發(fā)中。我們最開始投入的自研編碼器,然后是 Per-Category 級別的參數(shù)決策。

d19a078a-b403-11ee-8b88-92fbcf53809c.png

參數(shù)決策方面。我們提出了一種場景級別的畫質(zhì)恒定的轉(zhuǎn)碼方法,原理是利用了一個先驗條件:如果能將每個視頻的畫質(zhì)控制成恒定值,那么既可以避免碼率浪費(fèi),同時畫質(zhì)穩(wěn)定的視頻內(nèi)容,也有助于提高總體的用戶體驗。實(shí)際落地中,系統(tǒng)遵循了內(nèi)容自適應(yīng)轉(zhuǎn)碼(CAE)框架,期望達(dá)到 Per-Shot 與 Per-Frame 之間的優(yōu)化層次,即在場景級別和幀級別實(shí)現(xiàn)畫質(zhì)控制。

d1b22068-b403-11ee-8b88-92fbcf53809c.png

這是具體的實(shí)現(xiàn)框架。具體來說,需要解決三個問題:一是場景切換,我們直接調(diào)用了 x264 中的 scenecut 算法實(shí)現(xiàn)了高效的場景切分。二是如何對畫質(zhì)進(jìn)行衡量,在轉(zhuǎn)碼應(yīng)用中,我們發(fā)現(xiàn) VMAF 依然是目前最準(zhǔn)確最穩(wěn)定的方法,此外還引入了另一個先驗假設(shè),即 VMAF 值一樣情況下,我們認(rèn)為畫質(zhì)是接近的。第三個問題,就是在這個假設(shè)之下,怎樣保證編碼之后的 VMAF 值等于統(tǒng)一的預(yù)設(shè)值,不能高也不能低。

有兩個實(shí)現(xiàn)思路,一是進(jìn)行參數(shù)搜索,多次編碼,多次驗證,搜索得到最優(yōu)參數(shù),這個方法準(zhǔn)確率很高,但是算力很大,不適合 UGC 場景。第二種方法是單次參數(shù)預(yù)測,訓(xùn)練機(jī)器學(xué)習(xí)模型,將視頻特征作為輸入,直接預(yù)測滿足 VMAF 的編碼參數(shù)。這種方法計算簡單,算力不高,但是準(zhǔn)確率難以保證,而當(dāng)準(zhǔn)確率不高的時候,轉(zhuǎn)碼所依賴的先驗信息就不準(zhǔn)確,也就無法提供足夠多的相關(guān)信息,碼率也就不夠低。

d1c97678-b403-11ee-8b88-92fbcf53809c.png

在有限復(fù)雜度的約束下,我們提出了一種基于深度學(xué)習(xí)的 2pass 碼率因子預(yù)測方法。首先用簡單高效的傳統(tǒng)特征,訓(xùn)練一個非常簡單的神經(jīng)網(wǎng)絡(luò)進(jìn)行單次參數(shù)預(yù)測,首次能夠達(dá)到 45%的準(zhǔn)確率。然后對剩下 55%畫質(zhì)不達(dá)標(biāo)的片段進(jìn)行第二次預(yù)測,第二次預(yù)測引入第一次預(yù)測的結(jié)果作為錨定信息,此時會驚喜地發(fā)現(xiàn)能夠達(dá)到 99% 的準(zhǔn)確率。所以,該方法可以以平均 1.55 次編碼和 1 次 VMAF 的復(fù)雜度實(shí)現(xiàn) 99% 準(zhǔn)確率的場景級畫質(zhì)控制。

在該系統(tǒng)中,我們利用了一個先驗條件:認(rèn)為編碼后 VMAF 恒定的情況下,畫質(zhì)是一樣的。這個先驗條件和人眼主觀系統(tǒng)的匹配程度直接決定了轉(zhuǎn)碼系統(tǒng)的實(shí)際表現(xiàn)。在實(shí)踐中,我們發(fā)現(xiàn)對于大部分視頻,這個條件是成立的,但是對有一些動畫、三明治、大背景小前景等視頻類型,VMAF 不夠準(zhǔn)確,普遍虛高,這就造成了實(shí)際表現(xiàn)不及預(yù)期。

在沒有找到更準(zhǔn)確的畫質(zhì)評價方法之前,我們只能先打補(bǔ)丁,提高畫質(zhì)恒定這個先驗條件的準(zhǔn)確率。一種方法是 ROI 編碼,其原理是利用了一個很強(qiáng)的先驗:人眼對人臉和人體的失真非常敏感。編碼之前先檢測人臉、人體、背景三個部分,然后在碼率分配時設(shè)置不同的優(yōu)先級。在運(yùn)用了很多類似的補(bǔ)丁之后,系統(tǒng)的畫質(zhì)穩(wěn)定性得到了顯著增強(qiáng),率失真表現(xiàn)也得到了明顯提升。

未來對參數(shù)決策的優(yōu)化方向依然是不斷提高先驗條件的準(zhǔn)確率,包括嘗試再深入一層達(dá)到幀級別的質(zhì)量控制、探索更合理的畫質(zhì)評價方法等,確保給系統(tǒng)提供更多更準(zhǔn)確的先驗信息。

d2349782-b403-11ee-8b88-92fbcf53809c.png

我們還利用了視覺無損前處理來進(jìn)一步降低碼率,其原理是利用了三個先驗條件,一是人眼對結(jié)構(gòu)性信息的丟失很敏感,例如編碼后如果人臉、眼睛、鼻子等輪廓模糊,人眼能感知出來。二是人眼對高頻紋理細(xì)節(jié)的丟失不敏感,例如對草地紋理失真是不敏感的。三是站在轉(zhuǎn)碼系統(tǒng)的尺度下,利用了編碼器的一個先驗信息,即傳統(tǒng)編碼都基于 DCT 變換編碼,非零系數(shù)越少,零系數(shù)越多的時候,碼率就會越低。

實(shí)際落地要做的就是找到一個方法將這三個條件充分準(zhǔn)確地實(shí)現(xiàn)。我們設(shè)計了一種損失函數(shù)和訓(xùn)練策略,訓(xùn)練了一個簡單的 CNN 網(wǎng)絡(luò)來實(shí)現(xiàn)這三個條件。具體來說,用降質(zhì)和增強(qiáng)的圖像對,結(jié)合 L1 Loss 和 SSIM Loss ,讓網(wǎng)絡(luò)學(xué)會對結(jié)構(gòu)信息進(jìn)行恢復(fù)和保護(hù)。同時引入 DCT Loss,對處理后圖像的 DCT 高頻能量進(jìn)行約束,使其盡可能出現(xiàn)更多的零系數(shù),減少非零系數(shù)。這樣做的目的之一是減少視覺不敏感的細(xì)碎紋理信息,二是適配傳統(tǒng)的 DCT 變換編碼器,從而降低碼率。使用該方法訓(xùn)練好神經(jīng)網(wǎng)絡(luò)之后,可以直接運(yùn)用在各類傳統(tǒng)編碼器之前,都能取得 15%的碼率節(jié)省。

wKgaomWl5jSACRhQAAJMTyNCZ_Q744.png

回顧一下這個過程,我們剛開始并沒有在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)上做努力,因為從原理上還不能推導(dǎo)出神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)優(yōu)化與降低碼率之間的聯(lián)系。但是原理告訴我們引入更多和系統(tǒng)相關(guān)的先驗條件,一定可以降低碼率,因此我們僅僅利用 Loss 函數(shù)和訓(xùn)練策略的設(shè)計就實(shí)現(xiàn)了碼率的降低。

d269f760-b403-11ee-8b88-92fbcf53809c.png

最后再介紹兩個工作。無參考視頻畫質(zhì)評價,已經(jīng)上線了一個模型,用于檢測大盤的視頻畫質(zhì),但我們發(fā)現(xiàn)用其來指導(dǎo)轉(zhuǎn)碼還存在一些問題。分享三個發(fā)現(xiàn),一是無參 VQA 實(shí)際準(zhǔn)確率受數(shù)據(jù)集的影響很大,公開數(shù)據(jù)集與實(shí)際業(yè)務(wù)數(shù)據(jù)集屬性相差很大,直接將開源模型用在實(shí)際業(yè)務(wù)中,準(zhǔn)確率不高。二是視頻數(shù)據(jù)的時空域采樣方式對準(zhǔn)確率和執(zhí)行效率的影響很大,在實(shí)際系統(tǒng)中,需要進(jìn)行仔細(xì)的設(shè)計。三是基于公開數(shù)據(jù)集的無參 VQA 很難進(jìn)行細(xì)粒度的質(zhì)量評價,我理解這是因為人眼本身就存在不確定性,不同的人對同一個視頻的評價不同,即使同一個人在不同時間對同一個視頻的評價也會有差異,所以 5 分制 MOS 分?jǐn)?shù)本身就存在超過±0.5 的誤差。

d28345a8-b403-11ee-8b88-92fbcf53809c.png

另外,為了讓算法能夠快速部署和高效執(zhí)行,我們開發(fā)了一套強(qiáng)大的視頻分析與處理引擎,最近已經(jīng)升級到第二代了。

今天分享就到這里,感謝大家!

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 視頻編碼
    +關(guān)注

    關(guān)注

    2

    文章

    112

    瀏覽量

    20994
  • 視頻轉(zhuǎn)碼
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7488

原文標(biāo)題:B站蔡春磊:轉(zhuǎn)碼系統(tǒng)究竟在優(yōu)化什么?

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Altium Designer Cadence 格式轉(zhuǎn)碼

    Cadence給出的 格式轉(zhuǎn)碼 指導(dǎo)文件,按照這個文件,有部分可以轉(zhuǎn)碼成功,但是還是有些圖紙轉(zhuǎn)碼不成功,不知道是不是由于在AD 里面 設(shè)計的時候不規(guī)范導(dǎo)致的。
    發(fā)表于 06-22 17:07

    如何使用API提交轉(zhuǎn)碼任務(wù)?

    摘要: 當(dāng)常規(guī)的轉(zhuǎn)碼工作流無法滿足用戶的場景時,需用戶自己判斷業(yè)務(wù)邏輯,并使用API提交轉(zhuǎn)碼任務(wù)。例如:并不是所有的視頻都需要轉(zhuǎn)碼,不同視頻需要設(shè)置不同的轉(zhuǎn)碼配置。本文將介紹API提交
    發(fā)表于 01-05 15:18

    【MPS最佳實(shí)踐】媒體工作流轉(zhuǎn)碼

    摘要: 背景 1個輸入文件對應(yīng)多個輸出文件(不同分辨率,不同格式等),通過控制臺的圖形化界面,快速搭建常用視頻處理流程。 優(yōu)勢 簡單易用,視頻上傳完成自動觸發(fā)轉(zhuǎn)碼任務(wù)。 功能強(qiáng)大,支持截圖、轉(zhuǎn)碼、轉(zhuǎn)
    發(fā)表于 02-28 11:15

    音視頻轉(zhuǎn)碼技術(shù)指南:國內(nèi)主流云轉(zhuǎn)碼服務(wù)提供商對比測評

    轉(zhuǎn)碼服務(wù)中,只有阿里云承諾99.9%的服務(wù)可用性,并支持自動賠付,騰訊云與七牛云官網(wǎng)暫時未見關(guān)于該服務(wù)可用性的承諾。六、收費(fèi)標(biāo)準(zhǔn)云服務(wù)的價格已經(jīng)趨于透明,我們可以從官方收費(fèi)標(biāo)準(zhǔn)中看到,按量付費(fèi)模式下,七
    發(fā)表于 02-28 11:51

    如何在視頻工程中使用轉(zhuǎn)碼技術(shù)?

    本文簡單介紹了視頻轉(zhuǎn)碼技術(shù)的定義、分類及實(shí)現(xiàn)手段,重點(diǎn)分析了如何在視頻工程中使用轉(zhuǎn)碼技術(shù),包括轉(zhuǎn)碼技術(shù)的使用方式及其優(yōu)勢所在。分析了在流方式和文件方式下如何使用轉(zhuǎn)碼技術(shù)。通過對移動非線
    發(fā)表于 06-02 07:06

    視頻轉(zhuǎn)碼技術(shù)與系統(tǒng)要求相匹配,不看肯定后悔

    視頻轉(zhuǎn)碼技術(shù)與系統(tǒng)要求相匹配,不看肯定后悔
    發(fā)表于 06-08 06:49

    視頻轉(zhuǎn)碼技術(shù)與系統(tǒng)要求相匹配

    視頻轉(zhuǎn)碼技術(shù)與系統(tǒng)要求相匹配  音視頻轉(zhuǎn)碼曾被視為一種直接的、傳統(tǒng)的處理過程,可將源視頻編碼,生成略差于原始未壓縮內(nèi)容的版本,然后將其重新解碼為傳輸
    發(fā)表于 02-05 09:24 ?2416次閱讀
    視頻<b class='flag-5'>轉(zhuǎn)碼</b>技術(shù)與<b class='flag-5'>系統(tǒng)</b>要求相匹配

    視頻轉(zhuǎn)碼技術(shù)及轉(zhuǎn)碼實(shí)現(xiàn)詳解

      本文簡單介紹了視頻轉(zhuǎn)碼技術(shù)的定義、分類及實(shí)現(xiàn)手段,重點(diǎn)分析了如何在視頻工程中使用轉(zhuǎn)碼技術(shù),包括轉(zhuǎn)
    發(fā)表于 11-19 11:56 ?1475次閱讀

    關(guān)于現(xiàn)代通信的理論和實(shí)踐

    關(guān)于現(xiàn)代通信的理論和實(shí)踐
    發(fā)表于 09-04 15:30 ?12次下載
    <b class='flag-5'>關(guān)于</b>現(xiàn)代通信的理論和<b class='flag-5'>實(shí)踐</b>

    MySql5.6性能優(yōu)化最佳實(shí)踐

    MySql5.6性能優(yōu)化最佳實(shí)踐
    發(fā)表于 09-08 08:47 ?13次下載
    MySql5.6性能<b class='flag-5'>優(yōu)化</b>最佳<b class='flag-5'>實(shí)踐</b>

    阿里云視頻點(diǎn)播轉(zhuǎn)碼多場景化最佳實(shí)踐

    摘要:?在面對不同行業(yè)用戶豐富的轉(zhuǎn)碼場景需求時,如何將用戶偏向自身業(yè)務(wù)特性的定制化需求通用化、產(chǎn)品化并賦予給其他用戶使用?這是點(diǎn)播轉(zhuǎn)碼一直在思考并努力去解決的,本文由阿里云視頻點(diǎn)播技術(shù)團(tuán)隊張立磊撰寫
    發(fā)表于 08-14 17:56 ?243次閱讀
    阿里云視頻點(diǎn)播<b class='flag-5'>轉(zhuǎn)碼</b>多場景化最佳<b class='flag-5'>實(shí)踐</b>

    轉(zhuǎn)碼技術(shù)在視頻領(lǐng)域內(nèi)的應(yīng)用分析

    對移動非線性編輯系統(tǒng)遠(yuǎn)程傳輸視頻數(shù)據(jù)和節(jié)目制作網(wǎng)絡(luò)素材集中上載兩個工程實(shí)例的分析,探討了轉(zhuǎn)碼系統(tǒng)工作的靈活性和通用性。闡明了作者對在專業(yè)視頻領(lǐng)域內(nèi),配合計算機(jī)設(shè)備及網(wǎng)絡(luò)架構(gòu),使用轉(zhuǎn)碼
    發(fā)表于 10-17 14:14 ?367次閱讀

    linux系統(tǒng)支持硬件轉(zhuǎn)碼,真正告別GPU+CPU轉(zhuǎn)碼時代

    大家好,我是轉(zhuǎn)碼君,近期我司推出一款支持MPEG2/MPEG4/H.264/H.265算法轉(zhuǎn)成H.264算法,支持全協(xié)議進(jìn)入轉(zhuǎn)換成各大協(xié)議等,也支持USB音視頻文件轉(zhuǎn)碼出TS流,該設(shè)備性能穩(wěn)定,低功耗,真正告別服務(wù)器高成本轉(zhuǎn)碼
    發(fā)表于 11-14 23:03 ?510次閱讀

    如何在視頻領(lǐng)域使用轉(zhuǎn)碼技術(shù),有何優(yōu)勢

      本文簡單介紹了視頻轉(zhuǎn)碼技術(shù)的定義、分類及實(shí)現(xiàn)手段,重點(diǎn)分析了如何在視頻工程中使用轉(zhuǎn)碼技術(shù),包括轉(zhuǎn)碼技術(shù)的使用方式及其優(yōu)勢所在。分析了在流方式和文件方式下如何使用轉(zhuǎn)碼技術(shù)。通過對移動
    發(fā)表于 11-24 07:49 ?831次閱讀
    如何在視頻領(lǐng)域使用<b class='flag-5'>轉(zhuǎn)碼</b>技術(shù),有何優(yōu)勢

    如何使用轉(zhuǎn)碼配合存儲實(shí)現(xiàn)內(nèi)容的分發(fā)?

    今天主要介紹與轉(zhuǎn)碼相關(guān)的服務(wù)以及如何使用轉(zhuǎn)碼配合存儲實(shí)現(xiàn)內(nèi)容的分發(fā)。轉(zhuǎn)碼是無運(yùn)維的、全托管的服務(wù),其主要利用谷歌自主研發(fā)的轉(zhuǎn)碼、容器等技術(shù)來幫助用戶實(shí)現(xiàn)高效且高速
    的頭像 發(fā)表于 01-12 11:00 ?740次閱讀