TWI834087B - 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品 - Google Patents

用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品 Download PDF

Info

Publication number
TWI834087B
TWI834087B TW110146894A TW110146894A TWI834087B TW I834087 B TWI834087 B TW I834087B TW 110146894 A TW110146894 A TW 110146894A TW 110146894 A TW110146894 A TW 110146894A TW I834087 B TWI834087 B TW I834087B
Authority
TW
Taiwan
Prior art keywords
input
subsets
output
image
size
Prior art date
Application number
TW110146894A
Other languages
English (en)
Other versions
TW202228081A (zh
Inventor
塞米赫 艾森力克
賈攀琦
伊蕾娜·亞歷山德羅夫娜 阿爾希娜
Original Assignee
大陸商華為技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/EP2020/086798 external-priority patent/WO2022128105A1/en
Application filed by 大陸商華為技術有限公司 filed Critical 大陸商華為技術有限公司
Publication of TW202228081A publication Critical patent/TW202228081A/zh
Application granted granted Critical
Publication of TWI834087B publication Critical patent/TWI834087B/zh

Links

Images

Abstract

本發明涉及基於神經網路的位元流的圖像解碼和編碼,其中,所述圖像由從位元流獲得的樣本輸入集表示。所述圖像從輸出子集重建,所述輸出子集是通過處理所述樣本輸入集L生成的。所述輸入集被劃分為多個輸入子集Li。所述多個輸入子集各自用具有一個或多個層的神經網路進行處理。所述神經網路使用一個輸入子集的多個樣本作為輸入,並生成輸出子集的一個樣本。通過組合所述輸出子集,重建所述圖像。具體地,至少一個輸入子集的大小小於通過所述神經網路的所述一個或多個層處理之後獲得相應的輸出子集的大小所需的大小。

Description

用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品
本發明的實施例大體上涉及圖像或視訊編解碼領域,具體涉及基於神經網路的位元流的編解碼。
視訊譯碼(視訊編碼和解碼)廣泛用於數位視訊應用,例如廣播數位電視、基於網際網路和行動網路的視訊傳輸、視訊聊天、視訊會議等實時會話應用、DVD和藍光光碟、視訊內容採集和編輯系統以及可攜式攝像機的安全應用。
即使視訊較短,也需要大量的視訊資料來描述,當資料要在頻寬容量受限的通訊網路中流式傳輸或以其它方式傳輸時,這樣可能會造成困難。因此,視訊資料通常要先壓縮,然後通過現代電信網路進行傳輸。由於內存資源有限,當在儲存設備中儲存視訊時,需要考慮該視訊的大小。視訊壓縮設備通常在資訊源側使用軟體和/或硬體對視訊資料進行編碼,然後傳輸或儲存視訊資料,從而減少表示數位視訊圖像所需的資料量。然後,對視訊資料進行解碼的視訊解壓縮設備在目的地側接收壓縮資料。在有限的網路資源以及對更高視訊品質的需求不斷增長的情況下,需要改進壓縮和解壓縮技術,這些改進的技術在幾乎不影響圖像品質的情況下能夠提高壓縮比。
利用人工神經網路的神經網路(neural network,NN)和深度學習(deep-learning,DL)技術已經使用了一段時間,這些技術也用於視訊、圖像(如靜止圖像)等的編解碼技術領域。
希望進一步提高基於訓練網路的這種圖像譯碼(視訊圖像譯碼或靜止圖像譯碼)的效率,該訓練網路考慮了可用記憶體和/或處理速度的限制。
本發明的一些實施例提供了用於以高效的方式對圖像進行解碼和/或編碼的方法和裝置,從而減少了處理單元的記憶體占用空間和所需的操作頻率。具體地,本發明可以在基於NN的視訊編解碼框架內在內存資源與計算複雜度之間實現權衡。
上述和其它目的通過獨立請求項請求保護的主題實現。其它實現方式從附屬請求項、說明書和圖式中是顯而易見的。
根據本發明的一方面,提供了一種用於從位元流重建圖像的方法,該方法包括:根據位元流,獲得表示圖像的樣本輸入集(L)(亦稱為輸入集、輸入樣本);將樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2)(亦稱為子集);從位元流解析邊資訊;根據邊資訊,確定兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2));處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);通過組合兩個或更多個輸出子集重建圖像(R),其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
因此,通過利用從位元流解析的邊資訊,將樣本輸入集L劃分為多個輸入子集L1和L2,可以從樣本輸入集L高效地重建圖像,其中,每個輸入子集Li用神經網路處理。此外,因為正在處理的輸入子集的大小小於相應的輸出子集的大小,所以圖像重建只需要用較少的內存即可執行。
在一些示例性實現方式中,處理兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。
因此,輸入子集中缺失的樣本可以通過填充過程添加,這提高了重建輸出子集Ri的品質。因此,在組合輸出子集Ri之後,重建圖像的品質也得到了提高。
在一個示例中,根據邊資訊確定待填充樣本的位置和/或量。
因此,解碼側可以根據指示的邊資訊快速確定填充樣本的位置和數量。
例如,兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。
因此,通過包括神經網路的處理生成的輸出子集Ri更精確,因為使用了相鄰輸入子集的樣本(對應於重疊樣本,並且通常位於相鄰輸入子集Li之間的邊界)。因此,Li的重疊提高了重建圖像的整體品質,重建圖像是輸出子集Ri的聯集。具體地,沿著輸入子集Li的邊界的失真被減輕。
根據一個實現方式示例,組合兩個或更多個輸出子集(R1,R2)包括兩個或更多個輸出子集(R1,R2)之間重疊一個或多個組合樣本,組合樣本是作為來自第一輸出子集(R1)的樣本和來自第二輸出子集(R2)的樣本的組合而獲得的樣本。
因此,通過重疊輸出子集Ri的樣本,進一步提高了重建圖像的品質。具體地,可以提高沿邊界重建的圖像的品質,從而減少圖像退化和失真。
在一種示例性實現方式中,處理兩個或更多個輸入子集中的每一個輸入子集包括:在用所述一個或多個層處理之後,裁剪一個或多個樣本。
根據一個示例,裁剪是在用神經網路處理兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集;兩個或更多個輸出子集的組合是沒有重疊的融合。
裁剪可以使重建圖像的大小變小和/或改變圖像的縱橫比(長寬)。因此,重建圖像的大小可以適配顯示器的優選大小,這改善了顯示器上圖像的觀看再現(自適應圖像大小)。
例如,根據邊資訊確定待裁剪樣本的位置和/或量。
因此,解碼側可以根據指示的邊資訊確定裁剪樣本的位置和/或量。
在該實現方式的另一個示例中,待裁剪樣本的位置和/或量是根據邊資訊中指示的輸入子集的大小以及神經網路的神經網路大小調整參數確定的,其中,神經網路大小調整參數表示網路的輸入的大小與網路的輸出的大小之間的關係。
因此,位置和/或裁剪量可以通過考慮輸入子集的大小和神經網路的特徵(即其大小調整參數)來更精確地確定。因此,裁剪量和/或位置可以適配神經網路的性質,這進一步提高了重建圖像的品質。
根據該方法的一個實現方式示例,邊資訊包括以下中的一個或多個的指示:
─輸入子集的數量,
─樣本輸入集的大小,
─兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),
─重建圖像(R)的大小(H,W),
─兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),
─兩個或更多個輸入子集(L1,L2)之間的重疊量,
─兩個或更多個輸出子集(R1,R2)之間的重疊量。
因此,可以以靈活的方式在邊資訊中對各種參數進行指示。因此,指示開銷可以根據在邊資訊中指示上述參數中的哪些參數來進行調整,而其它參數根據被指示的那些參數推導。
例如,兩個或更多個輸入子集(L1,L2)中的每一個輸入子集都是矩形樣本輸入集(L)的矩形區域,並且兩個或更多個輸出子集(R1,R2)中的每一個輸出子集是矩形重建圖像(R)的矩形區域。
因此,由於輸出子集Ri是矩形形狀,所以可以快速組合輸出子集Ri,這進一步提高了圖像重建的效率。此外,輸入子集和輸出子集的矩形形狀可以由最少的參數(例如寬度和高度)來表徵,因為該形狀是高度規則的。因此,適合邊資訊的參數的數量可以保持在最少,從而可以減少指示開銷。由於輸入子集和輸出子集的形狀都是矩形,所以它們各自的大小通過簡單的運算相互關聯(並相互確定)。
在一種示例性實現方式中,兩個或更多個輸入子集(L1,L2)獨立處理。
因此,輸入子集可以並行處理,這是指一個輸入子集不使用另一個子集的處理的任何(中間或最終)結果。因此,輸入子集的處理可以快速執行,從而進一步提高圖像重建的性能。或者,輸入子集中的每一個輸入子集可以順序處理,即例如根據預定義的序列順序一次處理一個輸入子集,即使在L1和L2的處理中不存在依賴關係時也如此。由於處理的獨立性,串行方法和並行方法都減少了所需的內存。
根據一個示例,解析邊資訊包括解析序列參數集或圖像參數集或圖像標頭中的一個或多個。通常,邊資訊可以從參數集或標頭中獲取。例如,標頭可以是條帶標頭、分塊標頭或圖像標頭或存取單元標頭。參數集可以是自適應參數集、圖像參數集或序列參數集。因此,邊資訊可以以靈活的方式解析,這是指可以控制序列的部分(圖像、圖像組、圖像部分)。
根據本發明的一方面,提供了一種用於將圖像編碼到位元流中的處理方法,該方法包括:將表示圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);根據兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊;處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);將邊資訊插入位元流中,其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
因此,通過利用邊資訊,將樣本輸入集L劃分為多個輸入子集L1和L2,可以從樣本輸入集L高效地編碼圖像,其中,每個輸入子集Li用神經網路處理。此外,因為正在處理的輸入子集Li的大小小於相應的輸出子集Ri的大小,所以圖像編碼只需要用較少的內存即可執行。
例如,該方法還包括將兩個或更多個輸出子集(R1,R2)的指示插入位元流。
將輸出子集指示到位元流中可以有助於在解碼側將樣本輸入集L劃分為輸入子集。
在一個示例中,處理兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。
因此,輸入子集中缺失的樣本可以通過填充過程添加。
在另一個示例中,根據邊資訊確定待填充樣本的位置和/或量。
因此,編碼側可以根據指示的邊資訊確定填充樣本的位置和數量。
根據一種示例性實現方式,兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。
因此,通過包括神經網路的處理生成的輸出子集Ri更精確,因為使用了相鄰輸入子集的樣本(對應於重疊樣本,並且通常位於相鄰輸入子集Li之間的邊界)。因此,Li的重疊提高了生成的輸出子集Ri的整體品質。具體地,沿著輸入子集Li的邊界的失真被減輕。
在另一個示例中,處理兩個或更多個輸入子集中的每一個輸入子集包括,在用所述一個或多個層處理之後,裁剪一個或多個樣本。
例如,裁剪是在用神經網路處理兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集。
裁剪可以使待重建圖像的大小變小和/或改變圖像的縱橫比(長寬)。因此,圖像的大小可以適配顯示器的優選大小,這改善了顯示器上圖像的觀看再現(自適應圖像大小)。
在一種實現方式中,邊資訊是根據待裁剪樣本的位置和/或量確定的。
因此,解碼側可以根據指示的邊資訊快速確定裁剪樣本的位置和/或量。
根據該方法的一種實現方式,待裁剪樣本的位置和/或量是根據邊資訊中指示的輸入子集的大小以及神經網路的神經網路大小調整參數確定的,其中,神經網路大小調整參數表示網路的輸入的大小與網路的輸出的大小之間的關係。
因此,位置和/或裁剪量可以通過考慮輸入子集的大小和神經網路的特徵(即其大小調整參數)來更精確地確定。因此,裁剪量和/或位置可以適配神經網路的性質,這進一步提高了重建圖像的品質。
在另一個實現方式示例中,邊資訊包括以下中的一個或多個的指示:
─輸入子集的數量,
─樣本輸入集的大小,
─兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),
─重建圖像(R)的大小(H,W),
─兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),
─兩個或更多個輸入子集(L1,L2)之間的重疊量,
─兩個或更多個輸出子集(R1,R2)之間的重疊量。
因此,可以以靈活的方式在邊資訊中對各種參數進行指示。因此,指示開銷可以根據在邊資訊中指示上述參數中的哪些參數來進行調整,而其它參數根據被指示的那些參數推導。
例如,兩個或更多個輸入子集(L1,L2)中的每一個輸入子集都是矩形樣本輸入集(L)的矩形區域,並且兩個或更多個輸出子集(R1,R2)中的每一個輸出子集是矩形區域。
因此,輸入子集和輸出子集的矩形形狀可以由最少的參數(例如寬度和高度)來表徵,因為該形狀是高度規則的。因此,適合邊資訊的參數的數量可以保持在最少,從而可以減少指示開銷。此外,由於輸入子集和輸出子集的形狀都是矩形的,所以它們各自的大小通過簡單的運算相互關聯(並相互確定)。
在另一個示例中,兩個或更多個輸入子集(L1,L2)獨立處理。
因此,輸入子集可以並行處理,這是指一個輸入子集不使用另一個子集的處理的任何(中間或最終)結果。因此,輸入子集的處理可以快速執行,從而進一步提高編碼器-解碼器框架內圖像重建的性能。
根據一個實現方式示例,插入邊資訊包括將邊資訊插入序列參數集或圖像參數集或圖像標頭中的一個或多個。因此,邊資訊可以以靈活的方式插入(並因此被指示),這是指可以控制序列的部分(圖像、圖像組、圖像部分)。
根據本發明的一方面,提供了一種儲存在非暫態介質中的電腦程式產品,該電腦程式產品包括程式碼,當一個或多個處理器執行程式碼時,該程式碼執行本發明的任一上述方面的步驟。
根據本發明的一方面,提供了一種用於從位元流重建圖像的裝置,該裝置包括處理電路,該處理電路用於:根據位元流,獲得表示圖像的樣本輸入集(L);將樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);從位元流解析邊資訊;根據邊資訊,確定兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2));處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);通過組合兩個或更多個輸出子集重建圖像(R),其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
根據本發明的一方面,一種用於將圖像編碼到位元流中的處理裝置,處理裝置包括處理電路,處理電路用於:將表示圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);根據兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊;處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);將邊資訊插入位元流中,其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
根據本發明的一方面,提供了一種用於從位元流重建圖像的裝置,裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,該非暫態電腦可讀記錄媒體與一個或多個處理器耦合併儲存由一個或多個處理器執行的程式,其中,當一個或多個處理器執行該程式時,該程式使編碼器執行根據本發明中涉及重建圖像的任一上述方面的方法。
根據本發明的一方面,提供了一種處理裝置,用於將圖像編碼到位元流中,該處理裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,該非暫態電腦可讀記錄媒體與一個或多個處理器耦合併儲存由一個或多個處理器執行的程式,其中,當一個或多個處理器執行該程式時,該程式使解碼器執行根據本發明中涉及對圖像進行編碼的任一上述方面的方法。
本發明既適用於端到端AI編解碼器,也適用於混合AI編解碼器。例如,在混合AI編解碼器中,濾波操作(重建圖像的濾波)可以通過神經網路(neural network,NN)執行。本發明應用於這種基於NN的處理模組。通常,如果處理的至少一部分包括NN,並且該NN包括卷積或轉置卷積操作,則本發明可以應用於整個或部分視訊壓縮和解壓縮過程。例如,本發明適用於作為編碼器和/或解碼器執行的處理的一部分執行的單個處理任務,包括迴圈內濾波(In-Loop Filtering)和/或後濾波和/或預濾波。
需要說明的是,本發明不限於具體框架。此外,本發明不限於圖像或視訊壓縮,並且也可以應用於對象檢測、圖像生成和識別系統。
本發明可以通過硬體(hardware,HW)和/或軟體(software,SW)實現。此外,基於HW的實現方式可以與基於SW的實現方式相結合。
為了清楚起見,上述任一實施例可以與上述其它實施例中任何一個或多個組合以創建本發明範圍內的新實施例。
圖式及以下說明中將詳細描述一個或多個實施例。其它特徵、目標和優點在說明書、圖式以及請求項中顯而易見。
下面,結合圖式描述本發明的一些實施例。圖1至圖3涉及可以與其它圖式中描述的本發明的更多具體實施例一起使用的視訊譯碼系統和方法。具體來說,關於圖1至3描述的實施例可以與下文進一步描述的編碼/解碼技術一起使用,編碼/解碼技術利用神經網路來對位元流進行編碼和/或對位元流進行解碼。
在以下描述中,參考構成本發明的一部分的圖式,這些圖式通過說明的方式示出本發明的具體方面或可以使用本發明實施例的具體方面。應理解,實施例可用於其它方面,並且包括在圖式中未示出的結構上或邏輯上的變化。因此,以下詳細描述不作為限制意義,並且本發明的範圍由所附請求項限定。
例如,應理解,參考所描述的方法公開的內容對於用於執行該方法的對應的設備或系統也可以成立,反之亦然。例如,如果描述了一個或多個特定的方法步驟,則對應的設備可以包括一個或多個單元,例如用於執行所描述的一個或多個方法步驟的功能單元(例如,執行一個或多個步驟的一個單元;或者多個單元,每個單元執行多個步驟中的一個或多個),即使一個或多個單元在圖式中未明確描述或示出時也是如此。此外,例如,如果一個或多個單元(例如功能單元)來描述特定裝置,則對應的方法可以包括用於執行一個或多個單元的功能的一個步驟(例如執行一個或多個單元的功能的一個步驟,或多個步驟,每個步驟執行多個單元中的一個或多個單元的功能),即使一個或多個步驟在圖式中未明確描述或示出時也是如此。此外,應理解,除非特別指出,否則本文描述的各種示例性實施例和/或方面的特徵可以彼此組合。
視訊譯碼通常指對構成視訊或視訊序列的圖像序列進行的處理。在視訊譯碼領域,術語“幀(frame)”與“圖像(picture/image)”可以用作同義詞。視訊譯碼(或通常為譯碼)包括視訊編碼和視訊解碼兩部分。視訊編碼在源端執行,並且通常包括處理(例如,通過壓縮)原始視訊圖像,以減少表示視訊圖像所需的資料量(以獲得更高效的儲存和/或傳輸)。視訊解碼在目的端執行,並且通常包括相對於編碼器的逆處理以重建視訊圖像。實施例涉及的視訊圖像(或通常稱為圖像)的“譯碼”應理解為視訊圖像或各自視訊序列的“編碼”或“解碼”。編碼部分和解碼部分也合稱為編解碼(編碼和解碼)。
在無損視訊譯碼情況下,可以重建原始視訊圖像,即重建視訊圖像與原始視訊圖像具有相同的品質(假設儲存或傳輸期間沒有傳輸損耗或其它資料丟失)。在有損視訊譯碼的情況下,通過量化等方式進行進一步壓縮,以減少表示視訊圖像所需的資料量,在解碼端無法完全重建視訊圖像,即,重建視訊圖像的品質比原始視訊圖像的品質低或差。
若干個視訊譯碼標準屬“有損混合視訊編解碼器”組(即,將樣本域中的空間和時間預測與2D變換譯碼相結合,以在變換域中進行量化)。視訊序列中的每個圖像通常分割為一組不重疊的塊,譯碼通常在塊級進行。換句話說,在編碼端,通常在塊(視訊塊)級別上對視訊進行處理(即,編碼),例如,通過使用空間(幀內圖像)預測和/或時間(幀間圖像)預測來生成預測塊,從當前塊(當前處理/待處理塊)中減去預測塊以獲得殘差塊,變換殘差塊並在變換域中量化殘差塊以減少待發送(壓縮)的資料量,而在解碼端,相對於編碼器的逆處理用於編碼的或壓縮的塊,以重建當前塊用於表示。此外,編碼器按照解碼器處理循環來處理,使得兩者生成相同的預測(例如,幀內和幀間預測)和/或重建,以用於進行處理,即,對後續塊進行譯碼。最近,一部分或整個編解碼鏈已經通過使用神經網路,或一般地,使用任何機器學習或深度學習框架來實現。
在以下實施例中,視訊譯碼系統10、視訊編碼器20和視訊解碼器30根據圖1進行描述。
圖1A為示例性視訊譯碼系統10(例如可以使用本申請技術的視訊譯碼系統10(或簡稱為譯碼系統))的示意性方塊圖。視訊譯碼系統10中的視訊編碼器20(或簡稱為編碼器20)和視訊解碼器30(或簡稱為解碼器30)為可用於根據本申請中描述的各種示例執行各技術的設備示例。
如圖1A所示,視訊譯碼系統10包括源設備12,源設備12用於將編碼圖像資料21提供給目的地設備14等,以用於對編碼圖像資料21進行解碼。
源設備12包括編碼器20,並且可以另外(即可選地)包括圖像源16、預處理器(預處理單元)18(例如圖像預處理器)和通訊介面(或通訊單元)22。本發明的一些實施例(例如,涉及兩個過程層之間的初始重新縮放或重新縮放)可以由編碼器20實現。一些實施例(例如涉及初始重新縮放)可以由預處理器18實現。
圖像源16可以包括或可以是:任何類型的圖像擷取設備,例如用於擷取真實世界圖像的攝像機;和/或任何類型的圖像生成設備,例如用於生成電腦動畫圖像的電腦圖形處理器;或用於獲取和/或提供真實世界圖像、電腦動畫圖像(例如螢幕內容、虛擬實境(virtual reality,VR)圖像),和/或其任何組合(例如增強實境(augmented reality,AR)圖像)的任何類型的設備。圖像源可以為儲存上述圖像中任何圖像的任何類型的記憶體或儲存裝置。
為了與預處理器18和由預處理器18執行的處理進行區分,圖像或圖像資料17也可以稱為原始圖像或原始圖像資料。
預處理器18用於接收(原始)圖像資料17,並對圖像資料17進行預處理,以獲得預處理圖像資料(或預處理圖像)19。預處理器18執行的預處理可以包括修正(trimming)、顏色格式轉換(例如從RGB到YCbCr)、顏色校正或去噪等。可以理解的是,預處理器18可以是可選的組件。
視訊編碼器20用於接收預處理圖像資料19並提供編碼圖像資料21(例如,下文根據圖25進一步詳細描述)。編碼器20可以通過處理電路46實現,以實現結合圖25的編碼器20和/或本文描述的任何其它編碼器系統或子系統所討論的各種模組。
源設備12中的通訊介面22可以用於:接收編碼圖像資料21並通過通訊信道13向目的地設備14等另一個設備或任何其它設備發送編碼圖像資料21(或任何其它處理後的版本),以用於儲存或直接重建。
目的地設備14包括解碼器30(例如視訊解碼器),並且可以另外(即可選地)包括通訊介面(或通訊單元)28、後處理器32(或後處理單元)和顯示設備34。
目的地設備14的通訊介面28用於例如直接從源設備12,或從任何其它源(例如儲存設備,例如編碼圖像資料儲存設備)接收編碼圖像資料21或(或任何其它處理後的版本),並將編碼圖像資料21提供給解碼器30。
通訊介面22和通訊介面28可以用於通過源設備12與目的地設備14之間的直接通訊鏈路(例如直接有線或無線連接),或者通過任何類型的網路(例如有線網路、無線網路、有線網路和無線網路的任何組合、任何類型的私網和公網、任何類型的私網和公網的組合),發送或接收編碼圖像資料21(或編碼資料)。
例如,通訊介面22可以用於將編碼圖像資料21封裝為報文等合適的格式,和/或使用任何類型的傳輸編碼或處理來處理編碼圖像資料,以便在通訊鏈路或通訊網路上進行傳輸。
通訊介面28與通訊介面22對應,例如,可以用於接收所發送資料,並使用任何類型的對應傳輸解碼或處理和/或解封裝過程對傳輸資料進行處理,以獲得編碼圖像資料21。
通訊介面22和通訊介面28均可配置為如圖1A中從源設備12指向目的地設備14的通訊信道13的箭頭所指示的單向通訊介面,或配置為雙向通訊介面,並且可用於發送和接收消息,建立連接,確認並交換與通訊鏈路和/或資料傳輸(例如編碼圖像資料傳輸)相關的任何其它資訊等。
解碼器30用於接收編碼圖像資料21並提供解碼圖像資料31(或解碼圖像)(例如,下文根據圖3和圖26進一步詳細描述)。解碼器30可以通過處理電路46實現,以實現結合圖26的解碼器30所討論的各種模組和/或本文所描述的任何其它解碼器系統或子系統。
目的地設備14的後處理器32用於對解碼圖像資料31(也稱為重建圖像資料),例如解碼圖像,進行後處理,以獲得後處理圖像資料33,例如後處理圖像。由後處理器32執行的後處理可以包括顏色格式轉換(例如從YCbCr到RGB)、顏色校正、修剪或重采樣或任何其它處理,以準備解碼圖像資料31供顯示設備34等顯示。
本發明的一些實施例可以由解碼器30或後處理器32實現。
目的地設備14的顯示設備34用於接收後處理圖像資料33,以例如向用戶或觀看者顯示圖像。顯示設備34可以是或包括用於呈現重建圖像的任何類型的顯示器,例如整合的或外部的顯示器或監控器。例如,顯示器可以包括液晶顯示器(liquid crystal display,LCD)、有機發光二極體(organic light emitting diode,OLED)顯示器、等離子顯示器、投影機、微LED顯示器、液晶覆矽(liquid crystal on silicon,LCoS)、數位光處理器(digital light processor,DLP)或任何類型的其它顯示器。
儘管圖1A將源設備12和目的地設備14作為單獨的設備進行描述,但是設備實施例還可以包括兩種設備或兩種功能,即源設備12或對應功能以及目的地設備14或對應功能。在此類實施例中,源設備12或對應的功能與目的地設備14或對應的功能可以通過相同的硬體和/或軟體、通過單獨的硬體和/或軟體或其任何組合來實現。
根據描述,圖1A所示的源設備12和/或目的地設備14中的不同單元或功能的存在和(準確)劃分可能根據實際設備和應用而有所不同,這對技術人員來說是顯而易見的。
編碼器20(例如視訊編碼器20)或解碼器30(例如視訊解碼器30),或編碼器20和解碼器30兩者都可通過如圖1B所示的處理電路實現,處理電路例如一個或多個微處理器、數位訊號處理器(digital signal processor,DSP)、專用積體電路(application-specific integrated circuit,ASIC)、現場可程式化邏輯閘陣列(field-programmable gate array,FPGA)、離散邏輯、硬體、視訊譯碼專用處理器或其任意組合。編碼器20可以通過處理電路46實現,以實現本文描述的各種模組和/或任何其它編碼器系統或子系統。解碼器30可以通過處理電路46實現,以實現本文描述的各種模組和/或任何其它解碼器系統或子系統。處理電路可以用於執行本文所描述的各種操作。如圖3所示,如果所述技術部分地以軟體形式實現,則設備可以將軟體的指令儲存在合適的非暫態電腦可讀記錄媒體中,並且可以使用一個或多個處理器執行硬體中的指令,以執行本發明的技術。視訊編碼器20和視訊解碼器30中的任一個可作為組合編解碼器(encoder/decoder,codec)的一部分整合在單個設備中,如圖1B所示。
源設備12和目的地設備14可以包括多種設備中的任一種,包括任何類型的手持設備或固定設備,例如,筆記型電腦或膝上型電腦、手機、智慧手機、平板或平板電腦、攝像機、臺式電腦、機上盒、電視機、顯示設備、數位媒體播放器、視訊遊戲控制台、視訊流設備(如內容業務伺服器或內容分發伺服器)、廣播接收器設備、廣播發送器設備等,並且可以使用或不使用任何類型的操作系統。在一些情況下,源設備12和目的地設備14可以用於無線通訊。因此,源設備12和目的地設備14可以是無線通訊設備。
在一些情況下,圖1A所示的視訊譯碼系統10僅是示例性的,並且本申請的技術可適用於視訊譯碼設置(例如,視訊編碼或視訊解碼),這些設置未必包括編碼設備與解碼設備之間的任何資料通訊。在其它示例中,資料可以從本地記憶體檢索、通過網路流式傳輸等。視訊編碼設備可以對資料進行編碼並將資料儲存到記憶體,和/或視訊解碼設備可以從記憶體檢索和解碼資料。在一些示例中,編碼和解碼由不彼此通訊但簡單地將資料編碼到記憶體和/或從記憶體檢索和解碼資料的設備執行。
為便於描述,本文參考由ITU-T視訊編碼專家組(video coding experts group,VCEG)和ISO/IEC運動圖像專家組(motion picture experts group,MPEG)的視訊編碼聯合工作組(joint collaboration team on video coding,JCT-VC)開發的高效視訊編碼(high-efficiency video coding,HEVC)或通用視訊編碼(versatile video coding,VVC)(下一代視訊編碼標準)參考軟體等描述一些實施例。本領域普通技術人員應理解本發明實施例不限於HEVC或VVC。
圖2為本發明實施例提供的視訊譯碼設備400的示意圖。視訊譯碼設備400適合於實現如本文所描述的公開實施例。在一個實施例中,視訊譯碼設備400可以是解碼器(如圖1A的視訊解碼器30)或編碼器(如圖1A的視訊編碼器20)。
視訊譯碼設備400包括:用於接收資料的入埠410(或輸入埠)和接收單元(Rx)420;用於處理資料的處理器430(或邏輯單元或中央處理單元(central processing unit,CPU));用於發送資料的發送單元(Tx)440和出埠450(或輸出埠);以及用於儲存資料的記憶體460。視訊譯碼設備400還可以包括耦合到入埠410、接收單元420、發送單元440和出埠450的光電(optical-to-electrical,OE)組件和電光(electrical-to-optical,EO)組件,用作光訊號或電訊號的出口或入口。
處理器430通過硬體和軟體實現。處理器430可以實現為一個或多個CPU晶片、核(例如,多核處理器)、FPGA、ASIC和DSP。處理器430與入埠410、接收單元420、發送單元440、出埠450和記憶體460通訊。處理器430包括譯碼模組470。譯碼模組470實現以上所描述的公開實施例。例如,譯碼模組470執行、處理、準備或提供各種譯碼操作。因此,將譯碼模組470包括在內,這為視訊譯碼設備400的功能提供了實質性的改進,並且影響了視訊譯碼設備400到不同狀態的轉換。或者,以儲存在記憶體460中並由處理器430執行的指令來實現譯碼模組470。
記憶體460可以包括一個或多個磁碟、磁帶機和固態硬碟,並且可以用作溢出資料儲存設備,以在選擇此類程式用於執行時儲存程式,以及儲存在程式執行期間讀取的指令和資料。例如,記憶體460可以是暫態性和/或非暫態性的,並且可以是唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random access memory,RAM)、三態內容定址記憶體(ternary content-addressable memory,TCAM)和/或靜態隨機存取記憶體(static random-access memory,SRAM)。
圖3為示例性實施例提供的裝置500的簡化方塊圖,該裝置500可以用作圖1中的源設備12和目的地設備14中的任一者或兩者。
裝置500中的處理器502可以是中央處理器。或者,處理器502可以是能夠操縱或處理現在存在或以後開發的資訊的任何其它類型的設備或多個設備。儘管所公開的實現方式可以通過單個處理器(例如處理器502)實施,但是可以通過一個以上的處理器來提高速度和效率。
裝置500中的記憶體504在一種實現方式中可以是唯讀記憶體(read only memory,ROM)設備或隨機存取記憶體(random access memory,RAM)設備。可以使用任何其它合適類型的儲存設備作為記憶體504。記憶體504可以包括處理器502使用匯流排512存取的程式碼和資料506。記憶體504還可以包括操作系統508和應用程式510,應用程式510包括使處理器502執行本文描述的方法的至少一個程式。例如,應用程式510可以包括應用1至N,還可以包括執行本文描述方法的視訊譯碼應用。
裝置500還可以包括一個或多個輸出設備,例如顯示器518。在一個示例中,顯示器518可以是觸控敏感顯示器,觸控敏感顯示器將顯示器與可操作以感測觸控輸入的觸控敏感元件相結合。顯示器518可以通過匯流排512耦合到處理器502。
儘管在這裡描述為單個匯流排,但裝置500的匯流排512可以由多個匯流排組成。此外,輔助儲存裝置514可以直接耦合到裝置500的其它組件,或者可以通過網路存取,並且可以包括單個整合單元(例如儲存卡)或多個單元(例如多個儲存卡)。因此,可以以多種配置實現裝置500。
圖25為用於實現本申請技術的示例性視訊編碼器20的示意性方塊圖。在圖25的示例中,視訊編碼器20包括輸入端201(或輸入介面)、殘差計算單元204、變換處理單元206、量化單元208、反量化單元210和逆變換處理單元212、重建單元214、迴路濾波器(loop filter unit)220、解碼圖像緩衝區(decoded picture buffer,DPB)230、模式選擇單元260、熵編碼單元270和輸出端272(或輸出介面272)。模式選擇單元260可以包括幀間預測單元244、幀內預測單元254和分割單元262。幀間預測單元244可以包括運動估計單元和運動補償單元(圖中未示出)。圖25所示的視訊編碼器20也可以稱為混合視訊編碼器或根據混合視訊編解碼器的視訊編碼器。
編碼器20可以用於通過輸入端201等接收圖像(或圖像資料17),例如,形成視訊或視訊序列的圖像序列中的圖像。接收到的圖像或圖像資料還可以是預處理圖像(或預處理圖像資料19)。為簡單起見,以下描述中稱為圖像17。圖像17也可以稱為當前圖像或待譯碼圖像(具體地,在視訊譯碼中,是為了將當前圖像與同一視訊序列(即同樣包括當前圖像的視訊序列)中的其它圖像(例如先前的編碼圖像和/或解碼圖像)區分開)。
(數位)圖像是或可以看作具有強度值的二維樣本陣列或矩陣。陣列中的樣本也可以稱為像素(pixel/pel)(圖像元素的簡稱)。陣列或圖像的水平和垂直方向(或軸線)上的樣本數定義圖像的大小和/或解析度。通常使用三個顏色分量來表示顏色,即,可以通過三個樣本陣列來表示圖像或圖像可以包括三個樣本陣列。在RGB格式或色彩空間中,圖像包括對應的紅、綠、藍樣本陣列。但是,在視訊譯碼中,每個像素通常以亮度和色度格式或顏色空間表示,例如,顏色空間為YCbCr,其中包括Y表示的亮度分量(有時也用L表示)和Cb和Cr表示的兩個色度分量。亮度分量Y表示亮度或灰度強度(例如在灰度級圖像中),而兩個色度分量Cb和Cr表示色度或顏色資訊分量。相應地,YCbCr格式的圖像包括亮度樣本值的亮度樣本陣列(Y)和色度值的兩個色度樣本陣列(Cb和Cr)。RGB格式的圖像可以轉換或變換為YCbCr格式,反之亦然,該過程也稱為顏色變換或轉換。如果圖像是黑白的,則該圖像可以只包括亮度樣本陣列。相應地,圖像可以為例如單色格式的亮度樣本陣列或4:2:0、4:2:2和4:4:4彩色格式的亮度樣本陣列和兩個對應的色度樣本陣列。
視訊編碼器20的實施例可以包括圖像分割單元(圖2中未示出),用於將圖像17分割成多個(通常為不重疊的)圖像塊203。這些塊也可以稱為根塊或宏塊(H.264/AVC標準)或稱為編碼樹塊(coding tree block,CTB)或編碼樹單元(coding tree unit,CTU)(H.265/HEVC和VVC標準)。圖像分割單元可以用於對視訊序列中的所有圖像和定義塊大小的對應的栅格使用相同的塊大小,或者改變圖像或子集或圖像組之間的塊大小,並將每個圖像分割為對應的塊。縮寫AVC代表高級視訊編碼。
在其它實施例中,視訊編碼器可以用於直接接收圖像17的圖像塊203,例如,組成圖像17的一個、若干個或所有塊。圖像塊203也可以稱為當前圖像塊或待譯碼圖像塊。
儘管圖像塊203的尺寸小於圖像17,但是與圖像17一樣,圖像塊203也是或也可以被認為是具有強度值(樣本值)的樣本的二維陣列或矩陣。換句話說,圖像塊203例如可以包括一個樣本陣列(例如,在圖像17為黑白圖像的情況下,亮度陣列;或圖像17為彩色圖像的情況下,一個亮度陣列或一個色度陣列)、三個樣本陣列(例如,在圖像17為彩色圖像的情況下,一個亮度陣列和兩個色度陣列)或任何其它數量和/或類型的陣列,這取決於應用的顏色格式。圖像塊203在水平和垂直方向(或軸線)上的樣本數定義了圖像塊203的大小。相應地,某圖像塊可以為M×N(M列×N行)個樣本陣列,或M×N個變換係數陣列等。
在圖25所示的視訊編碼器20的實施例中,視訊編碼器20可以用於對圖像17逐塊地進行編碼,例如對每個圖像塊203執行編碼和預測。
圖25所示的視訊編碼器20的實施例還可以使用條帶(也稱為視訊條帶)對圖像進行分割和/或編碼,其中,可以使用一個或多個條帶(通常為不重疊的)對圖像進行分割或編碼,並且每個條帶可以包括一個或多個塊(例如,CTU)。
圖25所示的視訊編碼器20的實施例還可以使用分塊組(也稱為視訊分塊組)和/或分塊(也稱為視訊分塊)對圖像進行分割和/或編碼,其中,可以使用一個或多個分塊組(通常為不重疊的)對圖像進行分割或編碼,每個分塊組可以包括一個或多個塊(例如,CTU)或一個或多個分塊等,其中,每個分塊可以為矩形等形狀,可以包括一個或多個塊(例如,CTU),例如完整或部分塊。
圖26為用於實現本申請的技術的視訊解碼器30的示例。視訊解碼器30用於接收例如由編碼器20編碼的編碼圖像資料21(例如,編碼位元流),以獲得解碼圖像331。編碼圖像資料或位元流包括用於對編碼圖像資料進行解碼的資訊,例如表示編碼視訊條帶(和/或分塊組或分塊)的圖像塊的資料和相關的語法元素。
熵解碼單元304用於解析位元流(或通常稱為編碼圖像資料21),並對編碼圖像資料21進行熵解碼,以獲得量化係數309和/或解碼譯碼參數(圖3中未示出)等,例如幀間預測參數(如參考圖像索引和運動向量)、幀內預測參數(如幀內預測模式或索引)、變換參數、量化參數、迴路濾波參數和/或其它語法元素等中的任一者或全部。熵解碼單元304可以用於進行對應於編碼器20的熵編碼單元270所描述的編碼方案的解碼算法或方案。熵解碼單元304還可以用於向模式應用單元360提供幀間預測參數、幀內預測參數和/或其它語法元素,並向解碼器30的其它單元提供其它參數。視訊解碼器30可以在視訊條帶級和/或視訊塊級接收語法元素。除了條帶和相應語法元素或作為條帶和相應語法元素的替代,還可以接收和/或使用分塊組和/或分塊以及相應語法元素。
重建單元314(例如,加法器或求和器)可以用於將重建殘差塊313添加到預測塊365,以獲得樣本域中的重建塊315,例如,通過將重建殘差塊313的樣本值添加到預測塊365的樣本值。
圖26中所示的視訊解碼器30的實施例可用於使用條帶(也稱為視訊條帶)對圖像進行分割和/或解碼,其中,可以使用一個或多個條帶(通常不重疊的)對圖像進行分割或解碼,並且每個條帶可以包括一個或多個塊(例如,CTU)。
在實施例中,圖26所示的視訊解碼器30可以用於使用分塊組(也稱為視訊分塊組)和/或分塊(也稱為視訊分塊)對圖像進行分割和/或解碼。一個圖像可以分割成一個或多個分塊組(通常為不重疊的)或使用一個或多個分塊組(通常為不重疊的)進行解碼;每個分塊組可以包括一個或多個塊(例如,CTU)或一個或多個分塊等;每個分塊可以為矩形等,可以包括一個或多個完整或部分塊(例如,CTU)等。
可以使用其它形式的視訊解碼器30對經編碼的圖像資料21進行解碼。例如,解碼器30能夠在沒有迴路濾波器320的情況下産生輸出視訊流。例如,基於非變換的解碼器30能夠在沒有逆變換處理單元312的情況下直接反量化某些塊或幀的殘差訊號。在另一種實現方式中,視訊解碼器30可以具有組合成單個單元的反量化單元310和逆變換處理單元312。
應理解,在編碼器20和解碼器30中,可以針對當前環節的處理結果進行進一步處理,然後輸出到下一環節。例如,在插值濾波、運動向量推導或迴路濾波等之後,可以對插值濾波、運動向量推導或迴路濾波的處理結果進一步進行限幅(clip)或移位(shift)等操作。
在下文中,描述本發明的更具體的、非限制性的和示例性的實施例。先進行一些解釋,以幫助理解本發明。
人工神經網路
人工神經網路(artificial neural network,ANN)或連接論系統是一類計算系統,它受到構成動物大腦的生物神經網路的模糊啟發。這些系統通過考慮示例來“學習”執行任務,通常不用特定任務規則編程。例如,在圖像識別中,這些系統可以通過分析手動標記為“貓”或“無貓”的示例性圖像,並使用結果識別其它圖像中的貓來學習識別包含貓的圖像。這些系統事先對貓沒有任何瞭解,例如,這些貓是否有毛皮、尾巴、鬍鬚和貓一樣的臉。而是,這些系統會從處理的示例中自動生成識別特徵。
ANN是基於被稱為人工神經元的連接單元或節點的集合,這些連接單元或節點鬆散地模擬生物大腦中的神經元。每一個連接,就像生物大腦中的突觸一樣,都可以向其它神經元傳遞訊號。一個人工神經元接收訊號,然後對該訊號進行處理,並可以向連接到該神經元的神經元發出訊號。在ANN實現方式中,連接處的“訊號”是實數,每個神經元的輸出可以通過其輸入之和的一些非線性函數計算。這些連接稱為邊(edge)。神經元和邊通常具有隨著學習進行調整的權重。權重可以增加或減少連接上的訊號的強度。神經元可以有一個閾值,這樣只有在聚合訊號超過該閾值時,才會發送訊號。通常,神經元被聚集到各層中。不同的層可以對其輸入執行不同的變換。訊號從第一層(輸入層)傳輸到最後一層(輸出層),在這期間可能多次遍歷這些層。
ANN方法的最初目標是以與人腦相同的方式解決問題。隨著時間的推移,注意力轉移到執行特定任務上,導致偏離了生物學。ANN已用於各種任務,包括電腦視覺、語音識別、機器翻譯、社交網路過濾、棋盤和視訊遊戲、醫學診斷,甚至在傳統上被認為是人類專屬的活動,如繪畫。
卷積神經網路
“卷積神經網路”(convolutional neural network,CNN)的名稱表明該網路使用了一種稱為卷積的數學運算。卷積是一種專門的線性運算。卷積網路是簡單的神經網路,卷積網路在其多個層中的至少一個層中使用卷積代替一般矩陣乘法。卷積神經網路由輸入層、輸出層和多個隱藏層組成。輸入層是被提供輸入以進行處理的層。
例如,圖4的神經網路是CNN。CNN的隱藏層通常由一系列卷積層組成,這些卷積層用乘法或其它點積進行卷積。層的結果是一個或多個特徵圖,有時也稱為通道。部分或所有層可能涉及子采樣。因此,特徵圖可能會變小。CNN中的激勵函數可以是如上所述的整流線性單元(rectified linear unit,RELU)層或GDN層。激勵函數之後可以是附加的卷積,例如池化層、全連接層和歸一化層,這些卷積稱為隱藏層,因為這些卷積的輸入和輸出被激勵函數和最終卷積掩蓋。根據慣例,層被通俗地稱為卷積。從數學上講,卷積在技術上是一個滑動點積或互相關。這對矩陣中的索引具有重要意義,因為卷積影響在特定索引點確定權重的方式。
在對CNN進行編程以用於處理圖像時,輸入是一個張量,該張量形狀為(圖像數量)×(圖像寬度)×(圖像高度)×(圖像深度)。然後,在穿過卷積層之後,圖像被抽象為特徵圖,形狀為(圖像數量)×(特徵圖寬度)×(特徵圖高度)×(特徵圖通道)。神經網路中的卷積層應具有以下屬性:通過寬度和高度(超參數)定義的卷積核。輸入通道和輸出通道的數量(超參數)。卷積濾波器(輸入通道)的深度應等於輸入特徵圖的數量通道(深度)。
過去,傳統的多層感知器(multilayer perceptron,MLP)模型被用於圖像識別。但是,由於節點之間的全連接,這些節點受到高維度的影響,並且在高解析度圖像中無法很好地擴展。具有RGB顏色通道的1000×1000像素的圖像具有300萬權重,這個權重太大,以致於無法在全連接的情況下高效地進行大規模處理。此外,這種網路架構不考慮資料的空間結構,從而以與對待靠近的像素相同的方式對待相距很遠的輸入像素。這在計算上和在語義上都忽略了圖像資料中的參考局部性。因此,神經元的全連接對於由空間局部輸入模式主導的圖像識別等目的是浪費的。
卷積神經網路是受生物學啟發的多層感知器變體,專門設計用於模擬視覺皮層的行為。CNN模型通過利用自然圖像中存在的強空間局部相關性來減輕MLP架構帶來的挑戰。卷積層是CNN的核心構建塊。該層的參數由一組可學習的濾波器(上述內核)組成,這些濾波器具有一個小的接受域,但延伸到輸入卷的整個深度。在正向傳遞期間,每個濾波器在輸入卷的寬度和高度上卷積,計算濾波器條目與輸入之間的點積,並生成該濾波器的2維激活圖(2-dimensional activation map)。因此,網路學習濾波器,這些濾波器在輸入中的某個空間位置檢測到某些特定類型的特徵時激活。
沿深度維度堆疊所有濾波器的激活圖形成卷積層的完整輸出卷。因此,輸出卷中的每個條目也可以被解釋為神經元的輸出,該神經元查看輸入中的一個小區域,並與同一激活圖中的神經元共享參數。特徵圖或激活圖是給定濾波器的輸出激活。特徵圖和激活具有相同的含義。在一些論文中稱為激活圖,因為它是對應於圖像不同部分的激活的映射,也稱為特徵圖,因為它也是圖像中找到某種特徵的映射。高激活是指找到了某個特徵。
CNN的另一個重要概念是池化,池化是非線性下采樣的一種形式。有幾種非線性函數可以實現池化,其中,最大池化是最常見的。最大池化將輸入圖像劃分為一組非重疊矩形,並對於每個這樣的子區域輸出最大值。直觀地講,特徵的確切位置沒有該特徵相對於其它特徵的粗略位置重要。這就是在卷積神經網路中使用池的想法。池化層用於逐步減小表示的空間大小,以減少網路中的參數數量、內存占用空間和計算量,從而也控制過擬合。在CNN架構中,在連續的卷積層之間定期插入池化層是常見的。池化操作提供了另一種形式的平移不變性。
池化層對輸入的每個深度條帶(depth slice)獨立操作,並在空間上對這些深度條帶進行大小調整。最常見的形式是具有大小為2×2的濾波器的池化層,該池化層對輸入的每個深度條帶應用步長為2的下采樣,沿寬度和高度均應用步長2,丟棄75%的激活。在這種情況下,每個最大化操作都超過4個數字。深度維度保持不變。
除了最大池化之外,池化單元還可以使用其它函數,如平均池化或ℓ2-norm池化。過去經常使用平均池化,但與最大池化相比,平均池化最近已經沒有了優勢,最大池化在實踐中表現更好。由於表示(representation)的大小大幅減少,最近有一種趨勢是使用較小的濾波器或完全丟棄池化層。“感興趣區域”池化(也稱為ROI池化)是最大池化的變體,其中,輸出大小是固定的,輸入矩形是參數。池化是卷積神經網路的重要組成部分,用於根據Fast R-CNN架構進行對象檢測。
上述ReLU是修正線性單元的縮寫,ReLU應用非飽和激勵函數。ReLU將負值設置為零,從而有效地從激活圖中刪除負值。ReLU增加了決策函數和整體網路的非線性性質,而不影響卷積層的接受域。其它函數也用於增加非線性,例如飽和雙曲正切和sigmoid函數。ReLU通常比其它函數更受歡迎,因為ReLU訓練神經網路的速度快幾倍,而不會對泛化精度造成重大影響。
在經過幾個卷積層和最大池化層之後,神經網路中的高級推理是通過全連接層完成的。全連接層中的神經元與前一層中的所有激活都有連接,如常規(非卷積)人工神經網路中所示。因此,它們的激活可以作為仿射變換計算,矩陣乘法後跟偏置偏移(學習或固定偏置項的向量加法)。
“損失層”指定訓練如何懲罰預測標籤(輸出)與真實標籤之間的偏差,通常是神經網路的最後一層。可以使用適合不同任務的各種損失函數。Softmax損失用於預測K個互斥類中的單個類。Sigmoid交叉熵損失用於預測[0,1]中的K個獨立概率值。歐幾里德損失(Euclidean loss)用於回歸到實值標籤。
圖像大小
圖像大小是指圖像的寬度w或高度h,或寬度-高度對。圖像的寬度和高度通常以亮度樣本數來衡量。
下采樣
在下采樣的過程中,離散輸入訊號的采樣率(采樣間隔)降低。例如,如果輸入訊號是圖像,其大小為h和w,而下采樣的輸出大小為h2和w2,則以下至少一項為真:
Ÿ h2 < h
Ÿ w2 < w
在一種示例性實現方式中,下采樣可以通過僅保留每第m個樣本,同時丟棄輸入訊號(例如圖像)的其餘部分來實現。
上采樣:
在上采樣的過程中,離散輸入訊號的采樣率(采樣間隔)增加。例如,如果輸入圖像的大小為h和w,而下采樣的輸出大小為h2和w2,則以下至少一項為真:
Ÿ h2 > h
Ÿ w2 > w
重采樣:
下采樣和上采樣過程都是重采樣的示例。在重采樣的過程中,輸入訊號的采樣率(采樣間隔)改變。重采樣是一種大小調整(或重新縮放)輸入訊號的方法。
在上采樣過程或下采樣過程中,可以應用濾波以提高重采樣訊號的精度並減少混疊效應。插值濾波通常包括重采樣位置周圍樣本位置的樣本值的加權組合。插值濾波可以實現為:
f()指的是重采樣訊號, 是重采樣坐標(重采樣樣本的坐標),C(k)是插值濾波器係數,s(x,y)是輸入訊號。坐標x、y是輸入圖像樣本的坐標。對位於 附近的(x,y)執行求和運算。換句話說,新樣本 作為輸入圖像樣本 的加權和獲得。通過係數C(k)進行加權,其中,k表示濾波器係數在濾波器掩碼中的位置(索引)。例如,在1D濾波器的情況下,k取從1到濾波器的階數之間的值。在可以應用於2D圖像的2D濾波器的情況下,k可以是表示所有可能(非零)濾波器係數中的一個濾波器係數的索引。根據慣例,索引與濾波器掩碼(濾波器內核)中係數的具體位置相關聯。
裁剪:
修剪(切割)數位圖像的外邊緣。裁剪可用於使圖像更小(就樣本數而言)和/或更改圖像的縱橫比(長寬)。裁剪可以理解為從訊號中移除樣本,通常是訊號邊界處的樣本。
填充:
填充是指通過使用預定義的樣本值或在輸入圖像中的現有位置使用(例如複製或合併)樣本值生成新樣本(例如在圖像邊界處)來增加輸入(即輸入圖像)的大小。生成的樣本是不存在的實際樣本值的近似值。
大小調整(resizing):
大小調整是更改輸入圖像的大小的一般術語。大小調整可以使用填充方法或裁剪方法之一執行。或者,大小調整可以通過重采樣來執行。
整數除法:
整數除法是丟棄小數部分(餘數)的除法。
卷積:
輸入訊號f()和濾波器g()的一維卷積可以定義為:
這裡,m是輸入訊號和濾波器內的索引。n表示濾波器相對於輸入訊號的位置(移位)。n和m都是整數。2D中的S卷積可以類似地工作,正如本領域眾所周知的那樣。為了一般性起見,可以認為m具有在負無窮大到正無窮大之間的值,如上面的公式所示。但是,在實踐中,濾波器f[]可能具有有限的長度,在這種情況下,對於超過濾波器大小的m,濾波器係數f[m]等於零。
下采樣層:
下采樣層是神經網路的一層,該層可以使輸入減小至少一個維度。通常,輸入可以有3個或更多個維度,其中,維度可以包括通道數、寬度和高度。下采樣層通常涉及減小寬度維度和/或高度維度。下采樣層可以使用卷積(可能有步長)、求平均值、最大池化等操作來實現。
特徵圖:
特徵圖是通過將濾波器(內核)或特徵檢測器應用於輸入圖像或先前層的特徵圖輸出來生成的。特徵圖可視化提供了對模型中每個卷積層特定輸入的內部表示的深入瞭解。通常,特徵圖是神經網路層的輸出。特徵圖通常包括一個或多個特徵元素。
潛在空間:
潛在空間是指在NN的瓶頸層生成的特徵圖。這在圖5和圖9所示的示例中得到了說明。在NN拓撲的情況下,網路的目的是降低輸入訊號的維度(如在自動編碼器拓撲中),瓶頸層通常是指輸入訊號的維度降低到最小的層。降低維度的目的通常是實現更緊湊的輸入表示。因此,瓶頸層是適合壓縮的層,因此在視訊譯碼應用的情況下,位元流是根據瓶頸層生成的。
自動編碼器拓撲通常由編碼器和解碼器組成,編碼器和解碼器在瓶頸層相互連接。編碼器的目的是降低輸入的維度,使其更緊湊(或更直觀)。解碼器的目的是對編碼器的操作進行反向操作,從而根據瓶頸層盡可能好地重建輸入。
上采樣層:
上采樣層是神經網路的一層,該層可以使輸入增加至少一個維度。通常,輸入可以有3個或更多個維度,其中,維度可以包括通道數、寬度和高度。上采樣層通常涉及增加寬度維度和/或高度維度。它可以通過反卷積、複製等操作來實現。
自動編碼器和無監督學習
自動編碼器是一種人工神經網路,用於以無監督的方式學習高效的資料譯碼。自動編碼器的示意圖如圖5所示,可被視為圖4的基於CNN的VAE結構的簡化表示。自動編碼器旨在通過訓練網路忽略訊號“噪聲”來學習資料集的表示(編碼),通常是為了降維。除了降維側,還學習了重建側,其中,自動編碼器嘗試從簡化的編碼中生成盡可能接近其原始輸入的表示,因此得名。
在最簡單的情況下,給定一個隱藏層,自動編碼器的編碼器級獲取輸入 並將其映射到
該圖像 通常被稱為程式碼、潛在變量或潛在表示。這裡, 是逐元素激勵函數(element-wise activation function),例如sigmoid函數或修正線性單位。 是權重矩陣, 是偏置向量。權重和偏置通常是隨機初始化的,然後在訓練期間通過反向傳播迭代更新。之後,自動編碼器的解碼器級將h映射到與 形狀相同的重建
其中,解碼器的 可以與編碼器的對應的 無關。
變分自動編碼器模型對潛在變量的分布做出了強假設。這些變分自動編碼器模型使用變分方法進行潛在表示學習,這得到了附加的損失分量和訓練算法的特定估計器,稱為隨機梯度變分貝葉斯(Stochastic Gradient Variational Bayes,SGVB)估計器。假設資料是由有向圖形模型 生成的,並且編碼器正在學習後驗分布 的近似值 ,其中, 分別表示編碼器(識別模型)和解碼器(生成模型)的參數。VAE的潛在向量的概率分布通常比標準自動編碼器更接近地匹配訓練資料的概率分布。VAE的目標具有以下形式:
在這裡, 代表KL散度。潛在變量的先驗通常被設置為中心各向同性多元高斯 。通常,變分和似然分布的形狀被選擇為因子化高斯:
其中, 是編碼器輸出,而 是解碼器輸出。
人工神經網路領域,特別是卷積神經網路的最新進展使研究人員有興趣將基於神經網路的技術應用於圖像和視訊壓縮任務。例如,提出了端到端優化圖像壓縮,端到端優化圖像壓縮使用基於變分自動編碼器的網路。因此,資料壓縮被認為是工程中的一個基本的和深入研究的一個問題,通常以最小熵為給定的離散資料集合設計程式碼為目標。該方案在很大程度上依賴於對資料概率結構的瞭解,因此該問題與概率源建模密切相關。但是,由於所有實用程式碼都必須具有有限熵,所以連續值資料(例如圖像像素強度的向量)必須量化為有限離散值集,這引入了誤差。在這種情況下,即有損壓縮問題,必須權衡兩個相互競爭的成本:離散表示的熵(速率)和量化産生的誤差(失真)。不同的壓縮應用(例如資料儲存或通過有限容量通道傳輸)需要不同的速率-失真權衡。速率和失真的聯合優化較困難。如果沒有進一步的約束,高維空間中最優量化的一般問題是難以解決的。因此,大多數現有的圖像壓縮方法進行以下操作:將資料向量線性變換為合適的連續值表示,獨立量化其元素,然後使用無損熵譯碼對得到的離散表示進行編碼。由於變換的核心作用,此方案被稱為變換譯碼。例如,JPEG對像素塊使用離散餘弦變換,JPEG 2000使用多尺度正交小波分解。通常,變換譯碼方法的三個組成部分(變換、量化和熵譯碼)分別進行優化(通常通過手動參數調整)。現代視訊壓縮標準(例如HEVC、VVC和EVC)也使用變換表示來對預測後的殘差訊號進行譯碼。離散餘弦變換(discrete cosine transform,DCT)、離散正弦變換(discrete sine transform,DST)和低頻不可分離手動優化變換(low frequency non-separable manually optimized transform,LFNST)等幾種變換用於此目的。
可以認為VAE框架是一個非線性變換譯碼模型。變換過程主要可分為四個部分,圖6中進行了舉例說明,並示出了VAE框架。
變換過程主要可分為四個部分,圖6舉例說明了VAE框架。在圖6中,編碼器601通過函數y=f(x)將輸入圖像x映射到潛在表示(由y表示)。在下文中,這種潛在表示也可以被稱為“潛在空間”的一部分或點。函數f()是一個變換函數,它將輸入訊號x變換為更可壓縮的表示y。量化器602通過 將潛在表示y變換為具有(離散)值的量化潛在表示 ,其中,Q表示量化器函數。熵模型或超編碼器/解碼器(hyper encoder/ decoder)(也稱為超先驗(hyperprior))603估計量化潛在表示 的分布,以獲得可通過無損熵源譯碼實現的最小速率。
潛在空間可以理解為壓縮資料的表示,其中,類似的資料點在潛在空間中更接近。潛在空間對於學習資料特徵和查找用於分析的資料的更簡單表示非常有用。
量化潛在表示T和超先驗3的 和邊資訊 使用算術譯碼(arithmetic coding,AE)包括在位元流2中(被二值化)。
此外,提供了解碼器604,其將量化潛在表示變換為重建圖像 。訊號 是輸入圖像x的估計。希望x盡可能接近 ,換句話說,重建品質盡可能高。但是, 與x之間的相似性越高,傳輸所需的邊資訊的量就越大。邊資訊包括圖6所示的位元流1和位元流2,它們由編碼器生成並傳輸到解碼器。通常情況下,邊資訊的量越大,重建品質越高。但是,大量的邊資訊意味著壓縮比低。因此,圖6中描述的系統的一個目的是平衡重建品質和位元流中傳輸的邊資訊的量。
在圖6中,組件AE 605是算術編碼器,它將量化潛在表示 的樣本和邊資訊 的樣本轉換為二進制表示位元流1。例如, 的樣本和 的樣本可以包括整數或浮點數。算術編碼模組的一個目的是(通過二值化過程)將樣本值轉換為二進制數字字符串(然後,二進制數字字符串被包括在位元流中,該位元流可以包括對應於編碼圖像或其它邊資訊的其它部分)。
算術解碼(arithmetic decoding,AD)是恢復二值化過程的過程,其中,二進制數字被轉換回樣本值。算術解碼由算術解碼器606提供。
需要說明的是,本發明並不限於這種特定框架。此外,本發明不限於圖像或視訊壓縮,並且也可以應用於對象檢測、圖像生成和識別系統。
在圖6中,有兩個子網相互級聯。在該上下文中,子網是整個網路各部分之間的邏輯劃分。例如,在圖6中,模組(編碼器)601、(量化器)602、(解碼器)604、(算術編碼器)605和(算術解碼器)606被稱為“編碼器/解碼器”子網。“編碼器/解碼器”子網負責對第一位元流“位元流1”進行編碼(生成)和解碼(解析)。圖6中的第二網路包括模組(超編碼器)603、(量化器)608、(算術編碼器)609、(算術解碼器)610和(超解碼器)607,並被稱為“超編碼器/解碼器”子網。第二子網負責生成第二位元流“位元流2”。這兩個子網的目的不同。
第一子網負責:
Ÿ 將輸入圖像x變換(編碼器601)為其潛在表示y(這更容易壓縮x),
Ÿ 將潛在表示y量化(量化器602)為量化潛在表示
Ÿ 算術編碼器605使用AE壓縮量化潛在表示 ,以獲得位元流“位元流1”,
Ÿ 使用算術解碼器606經由AD解析位元流1,以及
Ÿ 使用解析的資料重建(解碼器604)重建圖像( )。
第二子網的目的是獲得“位元流1”的樣本的統計屬性(例如位元流1的樣本之間的平均值、方差和相關性),以便第一子網對位元流1的壓縮更高效。第二子網生成第二位元流“位元流2”,第二位元流包括所述資訊(例如位元流1的樣本之間的平均值、方差和相關性)。
第二網路包括編碼部分,該編碼部分包括將量化潛在表示 變換(超編碼器603)為邊資訊z,將邊資訊z量化為量化後的邊資訊 (量化器608),以及將量化後的邊資訊 編碼(例如二值化)(算術編碼器609)到位元流2中。在本示例中,二值化由算術編碼(arithmetic encoding,AE)執行。第二網路的解碼部分包括算術解碼(arithmetic decoding,AD),算術解碼器(AD)610將輸入位元流2變換為解碼後的量化邊資訊 可以與 相同,因為算術編碼和解碼操作是無損壓縮方法。然後,解碼後的量化邊資訊 被變換(超解碼器607)為解碼後的邊資訊 表示 的統計屬性(例如 樣本的平均值,或樣本值的方差等)。然後,解碼後的潛在表示 被提供給上述算術編碼器605和算術解碼器606,以控制 的概率模型。
圖6描述了變分自動編碼器(variational auto encoder,VAE)的一個示例,其細節在不同的實現方式中可能有所不同。例如,在特定的實現方式中,可以存在附加組件,以更高效地獲得位元流1樣本的統計屬性。在一個這種實現方式中,可以存在上下文建模器,其目標是提取位元流1的互相關資訊。由第二子網提供的統計資訊可以由算術編碼器(arithmetic encoder,AE)605和算術解碼器(arithmetic decoder,AD)606組件使用。
圖6在單個圖中示出了編碼器和解碼器。如本領域技術人員所清楚的,編碼器和解碼器可以而且經常嵌入在相互不同的設備中。
圖7和圖8分開示出了VAE框架的編碼器和解碼器組件。根據一些實施例,編碼器接收圖像作為輸入。輸入圖像可以包括一個或多個通道,例如顏色通道或其它類型的通道,例如深度通道或運動資訊通道等。編碼器的輸出(如圖7所示)是位元流1和位元流2。位元流1是編碼器的第一子網的輸出,位元流2是編碼器的第二子網的輸出。
類似地,在圖8中,兩個位元流(位元流1和位元流2)作為輸入接收,並在輸出端生成重建(解碼)圖像
如上所述,VAE可以劃分為執行不同操作的不同邏輯單元。這在圖7和圖8中進行了舉例說明。圖7示出了參與訊號(如視訊和提供的編碼資訊)編碼的組件。然後,例如,該編碼資訊由圖8中示出的解碼器組件接收,以用於編碼。需要說明的是,用數字9xx和10xx表示的編碼器和解碼器的組件在其功能上可以對應於上面在圖6中提到的並用數字6xx表示的組件。
具體來說,如圖7中所示,編碼器包括編碼器901,編碼器901將輸入x變換為訊號y,然後將訊號y提供給量化器902。量化器902向算術編碼器905和超編碼器903提供資訊。超編碼器903將上面已經討論過的位元流2提供給超解碼器907,超解碼器907又向算術編碼器605發送訊號資訊。
算術編碼模組的輸出是位元流1。位元流1和位元流2是訊號編碼的輸出,然後位元流1和位元流2被提供(傳輸)給解碼過程。
儘管單元901被稱為“編碼器”,但也可以將圖7中描述的完整子網稱為“編碼器”。編碼過程通常是指單元(模組)將輸入轉換為編碼(如壓縮)輸出。從圖7可以看出,單元901實際上可以被視為整個子網的核心,因為它執行輸入x到y的轉換,y是x的壓縮版本。例如,編碼器901中的壓縮可以通過應用神經網路或通常通過具有一個或多個層的任何處理網路來實現。在這種網路中,壓縮可以通過包括下采樣的級聯處理來執行,該下采樣減小了輸入的大小和/或通道數量。因此,編碼器可以被稱為基於神經網路(neural network,NN)的編碼器等。
圖中的其餘部分(量化單元、超編碼器、超解碼器、算術編碼器/解碼器)都是提高編碼過程效率或負責將壓縮輸出y轉換為一系列比特(位元流)的部分。可以提供量化以通過有損壓縮進一步壓縮NN編碼器901的輸出。AE 905與用於配置AE 905的超編碼器903和超解碼器907的組合可以執行二值化,二值化可以通過無損壓縮進一步壓縮量化訊號。因此,也可以將圖7中的整個子網稱為“編碼器”。
大多數基於深度學習(deep learning,DL)的圖像/視訊壓縮系統在將訊號轉換為二進制數字(位)之前會降低訊號的維度。例如,在VAE框架中,編碼器是非線性變換,該編碼器將輸入圖像x映射到y中,其中,y的寬度和高度小於x。由於y的寬度和高度較小,因此大小較小,訊號的維度(大小)被減小,因此,更容易壓縮訊號y。需要說明的是,通常,編碼器不一定需要在兩個(或通常所有)維度上減小大小。相反,一些示例性實現方式可以提供僅在一個維度(或通常是一個子集)上減小大小的編碼器。
壓縮的一般原理在圖9中進行了舉例說明。潛在空間是編碼器的輸出和解碼器的輸入,潛在空間表示壓縮資料。需要說明的是,潛在空間的大小可以遠小於輸入訊號大小。在這裡,術語大小可以指解析度,例如編碼器輸出的特徵圖的多個樣本。解析度可以作為每個維度的樣本數的乘積給出(例如輸入圖像或特徵圖的寬度×高度×通道數)。
輸入訊號大小的減小在圖9中進行了舉例說明,它表示了基於深度學習的編碼器和解碼器。在圖9中,輸入圖像x對應於輸入資料,這是編碼器的輸入。變換後的訊號y對應於潛在空間,該潛在空間在至少一個維度上的尺寸或大小小於輸入訊號的尺寸或大小。每列圓表示編碼器或解碼器處理鏈中的一層。每層中的圓的數量表示該層訊號的大小或維度。
從圖9可以看出,編碼操作對應於輸入訊號大小的減小,而解碼操作對應於圖像原始大小的重建。
減小訊號大小的方法之一是下采樣。下采樣是降低輸入訊號的采樣速率的過程。例如,如果輸入圖像的大小為h和w,而下采樣的輸出為h2和w2,則以下至少一項為真:
Ÿ h2 < h
Ÿ w2 < w
訊號大小的減小通常沿著處理層鏈逐步發生,而不是一次發生。例如,如果輸入圖像x具有h和w(分別表示高度和寬度)的維度(或維度大小),而潛在空間y具有h/16和w/16的維度,則在編碼期間,大小的減小可以發生在4層,其中,每個層在每個維度中將訊號的大小減小一半。
一些基於深度學習的視訊/圖像壓縮方法使用多個下采樣層。例如,圖4的VAE框架使用6個下采樣層,這些下采樣層被標記為801至806。在對層的描述中,包括下采樣的層用向下的箭頭表示。對層的描述“Conv Nx5x5/2↓”是指該層是一個有N個通道的卷積層,卷積核的大小為5×5。如上所述,2↓是指在該層中執行因子為2的下采樣。因子為2的下采樣會導致輸入訊號的維度之一在輸出端減少一半。在圖4中,2↓表示輸入圖像的寬度和高度都減少了一半。由於有6個下采樣層,如果輸入圖像814(也用x表示)的寬度和高度為w和h,則輸出訊號 的寬度和高度分別等於w/64和h/64。由AE和AD表示的模組是算術編碼器和算術解碼器,上面已經參考圖6至圖8解釋了這些模組。算術編碼器和算術解碼器是熵譯碼的具體實現方式。AE和AD(作為組件813和815的一部分)可以被其它熵譯碼方式取代。在資訊論中,熵編碼是一種無損資料壓縮方案,用於將符號的值轉換為二進制表示,這是一個可恢復的過程。此外,圖中的“Q”對應於上文關於圖6提到的量化操作,在上面“量化”一節中進行了解釋。此外,量化操作和作為組件813或815的一部分的對應的量化單元不一定存在和/或可以被另一個單元替換。
在圖4中,還示出了包括上采樣層807至812的解碼器。在上采樣層811和810之間以輸入的處理順序提供另一層,該層被實現為卷積層820,但不對接收到的輸入進行上采樣。還示出了解碼器的對應的卷積層830。可以在NN中提供這種層,以用於對輸入執行不改變輸入大小但改變具體特徵的操作。但是,不是必須提供這種層。
當按照解碼器對位元流2的處理順序時,上采樣層通過的順序相反,即從上采樣層812到上采樣層807。這裡示出了每個上采樣層,以提供上采樣比為2的上采樣,上采樣通過↑表示。當然,不一定所有上采樣層都具有相同的上采樣比,上采樣層可以使用如3、4、8等其它上采樣比。上采樣層807至812被實現為卷積層(conv)。具體來說,由於這些卷積層旨在對輸入進行與編碼器所進行的操作相反的操作,所以上采樣層可以對接收到的輸入應用反卷積操作,使得該輸入的大小增加與上采樣比對應的因子。但是,本發明通常不限於反卷積,並且上采樣可以以任何其它方式執行,例如通過兩個相鄰樣本之間的雙線性插值,或通過最近相鄰樣本複製等。
在第一子網中,一些卷積層(下采樣層801至803)在編碼器側跟隨廣義分散歸一化(generalized divisive normalization,GDN),在解碼器側跟隨逆GDN(inverse GDN,IGDN)。在第二子網中,應用的激勵函數是ReLu。需要說明的是,本發明並不限於這種實現方式,並且通常可以使用其它激勵函數來代替GDN或ReLu。
圖10示出了基於VAE的編碼器-解碼器結構的另一個示例,該結構類似於圖4中的一個結構。在圖10中,示出了編碼器和解碼器(一起用1200表示)可以包括多個下采樣和上采樣層。每層應用因子為2的下采樣或因子為2的上采樣。此外,編碼器和解碼器可以包括其它組件,如編碼器側的廣義分散歸一化(generalized divisive normalization,GDN)1201和解碼器側的逆GDN(inverse GDN,IGDN)1202。此外,編碼器和解碼器都可以包括一個或多個ReLu,具體來說,泄漏ReLu 1203。還可以在編碼器處提供分解熵模型1205並在解碼器處提供高斯熵模型1206。此外,可以提供多個卷積掩碼1204。此外,在圖10的實施例中,編碼器包括通用量化器(UnivQuan)1207,解碼器包括注意力模組1208。
下采樣操作和步長的總數定義了輸入通道大小(即神經網路的輸入的大小)的條件。
在這裡,如果輸入通道大小是64=2×2×2×2×2×2的整數倍,則在所有進行下采樣操作之後,通道大小保持整數。通過在上采樣期間在解碼器中應用對應的上采樣操作,並通過在上采樣層的輸入處理結束時應用相同的重新縮放,輸出大小再次與編碼器處的輸入大小相同。
從而,獲得了原始輸入的可靠重建。
接受域:
在神經網路的上下文中,接受域被定義為輸入中在輸出特徵圖處産生樣本的區域的大小。基本上,接受域是(任何層的)輸出特徵與輸入區域(片)關聯的度量。需要說明的是,接受域的概念適用於局部操作(即卷積、池化等)。例如,具有大小為3×3的內核的卷積操作在輸入層中具有3×3樣本的接受域。在該示例中,卷積節點使用9個輸入樣本獲得1個輸出樣本。
總接受域:
總接受域(total receptive field,TRF)是指一組輸入樣本,用於通過應用(例如)神經網路的一個或多個處理層獲得指定的輸出樣本集。
總接受域可以用圖11來舉例說明。在圖11中,舉例說明了具有2個連續轉置卷積(也稱為反卷積)層的一維輸入(圖左側的7個樣本)的處理。從左到右處理輸入,即“反卷積層1”首先處理輸入,“反卷積層2”處理“反卷積層1”的輸出。在該示例中,兩個反卷積層中的內核大小都為3。這是指需要3個輸入樣本才能在每層獲得1個輸出樣本。在該示例中,輸出樣本集被標記在虛線矩形內,並且包括3個樣本。由於反卷積核的大小,在輸入端需要7個樣本來獲得包括3個輸出樣本的輸出樣本集。因此,被標記的3個輸出樣本的總接受域是輸入端的7個樣本。
在圖11中,有7個輸入樣本、5個中間輸出樣本和3個輸出樣本。樣本數的減少是由於輸入訊號是有限的(不是在每個方向上延伸到無窮大),在輸入端的邊界上存在“缺失樣本”。換句話說,由於反卷積操作需要3個輸入樣本對應於每個輸出樣本,如果輸入樣本數為7,則只能生成5個中間輸出樣本。事實上,可以生成的輸出樣本量是(k–1)個樣本,少於輸入樣本量,其中,k是內核大小。由於在圖11中,輸入樣本數為7,在內核大小為3的第一次反卷積之後,中間樣本數為5。在內核大小為3的第二次反卷積之後,輸出樣本數為3。
如圖11所示,3個輸出樣本的總接受域在輸入端為7個樣本。通過連續應用內核大小大於1的處理層來增加總接受域的大小。通常,一組輸出樣本的總接受域是通過跟蹤從輸出層開始到輸入層的每個節點的連接來計算的,然後找到輸入中直接或間接(通過一個以上的處理層)連接到輸出樣本集的所有樣本的聯集。例如,在圖11中,每個輸出樣本連接到前一層中的3個樣本。聯集包括中間輸出層中的5個樣本,這些樣本連接到輸入層中的7個樣本。
有時,希望在每次操作(卷積或反卷積或其它)後保持樣本數相同。在這種情況下,可以在輸入端的邊界應用填充,以補償“缺失樣本”。圖12示出了當樣本數量保持相等時的這種情況。需要說明的是,本發明適用於這兩種情況,因為填充不是卷積、反卷積或任何其它處理層的強制性操作。
這不能與下采樣混淆。在下采樣過程中,對於每M個樣本,輸出端有N個樣本,N<M。不同的是,M通常遠小於輸入的數量。在圖11中,沒有下采樣,樣本數的減少是由於輸入的大小不是無限的,而且輸入處存在“缺失樣本”。例如,如果輸入樣本數為100,由於內核大小為k=3,則當使用兩個卷積層時,輸出樣本數為100–(k–1)–(k–1)=96。相比之下,如果兩個反卷積層都在執行下采樣(下采樣比為M和N的比率,M=2,N=1),則輸出樣本數為:
=22。
圖13舉例說明了使用2個卷積層的下采樣,下采樣比為2(N=1和M=2)。在該示例中,由於邊界處的下采樣和“缺失樣本”的綜合影響,7個輸入樣本變為3個。輸出樣本數可以在每個處理層之後使用以下公式計算: ,其中,k是內核大小,r是下采樣比。
卷積操作和反卷積(即轉置卷積)操作從數學表達式的角度來看是相同的。差異源於反卷積操作假設發生了先前的卷積操作。換句話說,反卷積是對訊號進行過濾以補償先前應用的卷積的過程。反卷積的目標是重新創建與卷積發生之前存在的訊號一樣的訊號。本發明同時適用於卷積操作和反卷積操作(事實上,適用於內核大小大於1的任何其它操作,如後面解釋的)。
圖14示出了解釋如何計算總接受域的另一個示例。在圖14中,二維輸入樣本陣列由兩個卷積層處理,每個卷積層的內核大小為3×3。應用兩個反卷積層之後,得到輸出陣列。輸出樣本集(陣列)用實心矩形(“輸出樣本”)標記,包括2×2=4個樣本。該輸出樣本集的總接受域包括6×6=36個樣本。總接受域可計算為:
Ÿ 每個輸出樣本連接到中間輸出中的3×3個樣本。中間輸出中連接到輸出樣本集的所有樣本的聯集包括4×4=16個樣本。
Ÿ 中間輸出中的16個樣本中的每一個樣本都連接到輸入中的3×3個樣本。輸入中連接到中間輸出中16個樣本的所有樣本的聯集包括6×6=36個樣本。因此,2×2個輸出樣本的總接受域在輸入端為36個樣本。
在圖像和視訊壓縮系統中,對大小非常大的輸入圖像的壓縮和解壓縮通常通過將輸入圖像分為多個部分來執行。VVC和HEVC采用這種劃分方法,例如,將輸入圖像分割為分塊或波前處理單元。
當在傳統的視訊譯碼系統中使用分塊時,輸入圖像通常被劃分為多個矩形形狀部分。圖15舉例說明了一種這種分割。在圖15中,部分1和部分2可以彼此獨立處理,並且用於對每個部分進行解碼的位元流被封裝到可獨立解碼的單元中。因此,解碼器可以獨立解析(獲取樣本重建所需的語法元素)每個位元流(對應於第1部分和第2部分),並可以獨立重建每個部分的樣本。
在圖16所示的波前並行處理中,每個部分通常由1行編碼樹塊(coding tree block,CTB)組成。波前並行處理與分塊之間的區別在於,在波前並行處理中,與每個部分對應的位元流幾乎可以彼此獨立解碼。但是,樣本重建不能獨立執行,因為每個部分的樣本重建仍然具有樣本之間的依賴關係。換句話說,波前並行處理使解析過程獨立,同時保持樣本重建的依賴。
波前和分塊都是可以彼此獨立執行整個或部分解碼操作的技術。獨立處理的好處是:
Ÿ 可以使用1個以上相同的處理核心來處理整個圖像,從而可以提高處理速度。
Ÿ 如果處理核心的能力不足以處理大圖像,則可以將圖像劃分為多個部分,這樣,處理所需的資源就較少。在這種情況下,能力不足的處理單元即使由於資源限制而無法處理整個圖像,也還是可以處理每個部分。
為了滿足處理速度和/或內存的要求,HEVC/VVC使用足夠大的處理內存來處理整個幀的編碼/解碼。頂級GPU卡用於實現這一目標。在傳統編解碼(如HEVC/VVC)的情況下,處理整個幀的內存要求通常不是一個大問題,因為是先將整個幀劃分為多個塊,然後再對每個塊逐個進行處理。但是,處理速度是一個主要的問題。因此,如果使用單個處理單元來處理整個幀,則處理單元的速度必須非常高,因此處理單元通常非常昂貴。
另一方面,基於NN的視訊壓縮算法在編碼/解碼中考慮了整個幀,而不是傳統的混合譯碼器中基於塊的編碼/解碼。內存要求太高,無法通過基於NN的編碼/解碼模組進行處理。
在傳統的混合視訊編碼器和解碼器中,所需的內存量與最大允許塊大小成正比。例如,在VVC中,最大塊大小為128×128個樣本。
但是,基於NN的視訊壓縮所需的內存與大小W×H成正比,其中,W和H表示輸入/輸出圖像的寬度和高度。可以看出,與混合視訊譯碼器相比,內存要求可能會非常高,因為典型的視訊解析度包括3840×2160圖像大小(4K視訊)。
另一個問題是,為了使用單個處理單元(例如CPU或GPU)處理大的輸入,處理單元必須非常快,因為該單元每單位時間需要執行大量的操作。這就要求該單元需要具有高時脈頻率和高內存頻寬,這對於晶片製造商來說是昂貴的設計標準。具體地,由於物理限制,增加內存頻寬和時脈頻率並不容易。
用於編碼和/或解碼的基於NN的視訊譯碼算法處於早期開發階段,沒有任何消費類設備包括圖6中描述的VAE的實現方式。此外,消費類設備的成本受所實現的內存影響很大。
因此,為了使基於NN的視訊譯碼算法變得成本效益高,以便在手機等消費類設備中實現,需要減少處理單元的內存占用空間和所需的操作頻率。這類優化尚未完成。
本發明既適用於端到端AI編解碼器,也適用於混合AI編解碼器。例如,在混合AI編解碼器中,濾波操作(重建圖像的濾波)可以通過神經網路(neural network,NN)執行。本發明應用於這種基於NN的處理模組。通常,如果處理的至少一部分包括NN,並且如果該NN包括卷積或轉置卷積操作,則本發明可以應用於整個或部分視訊壓縮和解壓縮過程。例如,本發明適用於作為編碼器和/或解碼器執行的一個處理部分執行的單個處理任務,包括迴圈內濾波、後濾波和/或預濾波。
本發明的一些實施例可以在基於NN的視訊編解碼框架中實現內存資源與計算複雜度之間的權衡,從而提供上述問題的解決方案。
本發明將輸入劃分為多個部分,每個部分彼此獨立處理,總結如下:
1. 確定輸入空間L i中的N個區域,其中,L i的聯集構成完整的輸入空間。N > 1。
2. 使用NN獨立處理每個L i,以獲得重建區域R i
3. 融合R i,以獲得重建圖像,其中,R i的聯集構成完整的目標輸出。
目標輸出是輸出重建圖像。輸出重建圖像的大小可以根據位元流中的指示獲得。或者,輸出重建圖像的大小可以顯式編碼到位元流中。
在一個示例中,輸入空間可以是通過解析位元流而根據位元流獲得的潛在空間。輸入空間可以具有寬度=w、高度=h和大小等於D的第三維度(如深度或通道數)的矩陣形式。
N個區域L i優選通過將輸入樣本分組為重疊或非重疊集來獲得。這些集優選包括彼此相鄰(不分離)的樣本。
在一個示例中,Li可以通過將輸入空間劃分為N個區域來獲得,其中,每個區域具有大小wi、hi和D,其中,wi是Li的寬度,hi是高度,D是深度。Li的深度等於整個潛在空間的深度,因為最好僅在寬度和高度的方向上劃分輸入空間。
處理可以是解碼或編碼。
在下面討論的示例性實現方式中,所述神經網路(neural network,NN)可以是:
Ÿ 包括至少一個處理層的網路,其中,使用1個以上的輸入樣本來獲得輸出樣本(這是出現本發明要解決的問題時的一般條件)。
Ÿ 包括至少一個卷積(或轉置卷積)層的網路。在一個示例中,卷積的內核大於1。
Ÿ 包括至少一個池化層(最大池化、平均池化等)的網路。
Ÿ 解碼網路、超解碼器網路或編碼網路。
Ÿ 以上網路的一部分(子網)。
所述輸入可以是:
Ÿ 特徵圖;
Ÿ 隱藏層的輸出;
Ÿ 潛在空間特徵圖,潛在空間可以根據位元流獲得;
Ÿ 輸入圖像。
第一實施例
在這個示例性和非限制性實施例中,提供了一種用於從位元流重建圖像的方法。該方法可以包括根據位元流獲得表示圖像的樣本輸入集(L,如圖17A及/或17B所示)。該方法包括將樣本輸入集L劃分為兩個或更多個輸入子集(如圖17及/或17B中所示的L1,L2)。然後,該方法可以包括確定兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2))。
該確定可以根據來自位元流的邊資訊。但是,在本實施例中,這種指示在某些實現方式中不是必要的。例如,可以假設輸入子集包括相應的輸出子集的總接受域。當另外假設輸出子集將以預先確定的方式組合(例如,沒有重疊或已知的預設重疊),並且當輸入/輸出大小關係和總接受域已知為神經網路的特徵時,不需要指示。
該方法還可以包括以下步驟:處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2)。
接下來的步驟是通過組合兩個或更多個輸出子集重建圖像(R)。在本實施例中,輸入子集的大小等於在通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。換句話說,區域L1、L2包括總接受域。
一個示例性實現方式可以包括以下步驟:
1. 確定輸入空間(L i)中的N個重疊區域,其中,每個區域L i包括R i中一個的完整(即總)接受域,其中,R i的聯集構成完整的目標圖像。
2. 使用NN獨立處理每個L i,以獲得重建區域R i
3. 融合R i,以獲得重建輸出(即重建圖像)。
在上述示例性實現方式中,輸入空間的劃分使得每個區域Li分別包括R i的完整接受域。此外,R i的聯集構成了整個目標圖像R。
圖17A示出了示例性實現方式。首先,輸入被劃分為4個重疊區域L 1、L 2、L 3和L 4。L 1和L 2如圖所示。可以注意到L 1和L 2是重疊的。在圖中,L和R的索引對於輸入和輸出中的對應劃分是相同的。例如,L 4對應R 4。Ri的放置遵循與Li相同的模式,這是指如果L1對應於輸入空間的左上角,則R1對應於輸出空間的左上角。如果L2在L1的右側,則R2在R1的右側。
總接受域的確定取決於每個處理層的內核大小。總接受域可以通過沿處理的相反方向跟蹤輸入樣本來確定。總接受域由輸入樣本的聯集組成,這些樣本都用於計算一組輸出樣本。因此,總接受域取決於每層之間的連接,並且可以通過在輸入方向上跟蹤從輸出開始的所有連接來確定。
在圖14所示的卷積層的示例中,卷積層1和2的核大小分別為K1×K1和K2×K2,下采樣比分別為R1和R2。卷積層通常使用常規的輸入輸出連接(例如,每個輸出始終使用K×K輸入樣本)。在該示例中,總接受域大小的計算可以如下所示:
其中,H和W表示總接受域的大小,h和w分別是輸出樣本集的高度和寬度。
在上面的示例中,卷積操作是在二維空間中描述的。當應用卷積的空間的維度數量較多時,可以應用3D卷積操作。3D卷積操作是2D卷積操作的直接擴展,其中,將附加的維度添加到所有操作中。例如,內核大小可以表示為K1×K1×N和K2×K2×N,總接受域可以表示為W×H×N,其中,N表示第三維度的大小。由於從2D卷積操作到3D卷積操作的擴展是簡單的,所以本發明適用於2D卷積操作和3D卷積操作。換句話說,第三維度(甚至第四維度)的大小可以大於一,並且本發明可以以相同的方式應用。
上面的公式是一個示例,該公式示出了如何確定總接受域的大小。總接受域的確定取決於每個層的實際輸入輸出連接。
接下來,每個L i都獨立處理。在該示例中,處理單元是解碼器。因此,L 1的處理僅取決於L 1的樣本,而不取決於L 1以外的任何其它樣本。因此,例如,Li的集可以並行處理。解碼過程的輸出是R i。R i的聯集構成了目標重建圖像。在該示例中,R i具有重疊區域,因此首先應用裁剪操作以獲得沒有重疊區域的裁剪區域R-crop i。最後,將裁剪區域R-crop i級聯,以獲得完整的輸出重建圖像。
在該示例中,L i包括R i的總接受域。
R i和L i的確定可按以下方式進行:
Ÿ 首先確定N個非重疊裁剪區域R-crop i。例如,裁剪區域R-crop i可以是大小相等的N×M個區域,其中,N×M由解碼器根據內存限制確定。
Ÿ 確定裁剪區域R-crop i的總接受域。L i分別設置為每個裁剪區域R-crop i的總接受域。
Ÿ 處理每個L i,以獲得R i。這是指R i是由NN生成的輸出樣本集的大小。需要說明的是,可能不需要實際的處理。一旦確定了L i的大小,就可以根據函數確定R i的大小和位置,因為NN的結構是已知的,大小L i和R i之間的關係是已知的。因此,可以根據L i通過函數計算R i,而不實際執行處理。
Ÿ 如果大小R i不等於裁剪區域R-crop i,則裁剪R i以獲得裁剪區域R-crop i
§ 如果在NN處理輸入或中間輸出樣本期間應用填充操作,則裁剪區域R-crop i的大小可以不等於R i。例如,如果輸入和中間輸出樣本必須滿足某些大小要求,則填充可以應用於NN。例如,NN(例如,由於其特定結構)可以要求輸入大小必須是16個樣本的倍數。在這種情況下,如果在一個方向上L i不是16個樣本的倍數,則可以在該方向上應用填充,使其成為16的倍數。換句話說,填充樣本是虛擬樣本,用於確保每個Li具有相應NN層的大小要求的整數倍數。
§ 待裁剪樣本可以通過確定“在其計算中包括填充樣本的輸出樣本”來獲得。該選項可適用於所討論的示例性實現方式。
R i和L i的確定可以如下進行,並且可稱為圖17B所示的“簡單”非裁剪情況:
Ÿ 首先,確定N個非重疊區域R i。例如,R i可以是大小相等的N×M個區域,其中,N×M由解碼器根據內存限制確定。
Ÿ 確定R i的總接受域。L i分別設置為等於每個R i的總接受域。總接受域是通過沿向後方向跟蹤R i中每個輸出樣本直到L i來計算的。因此,L i由用於計算R i中至少一個樣本的所有樣本組成。
Ÿ 對每個L i進行處理,以獲得R i。這是指R i是NN生成的輸出樣本集的大小。
該示例性實現方式通過將輸入空間劃分為多個較小的獨立可處理區域來解決總峰值內存的問題。
在上述示例性實現方式中,與不將輸入劃分為區域相比,L i的重疊區域需要附加的處理。重疊區域越大,需要的額外處理越多。特別是在某些情況下,R i的總接受域可能太大。在這種情況下,獲得整個重建圖像的計算總數量可能會增加太多。
注釋1:示例性實現方式不需要在位元流中包括任何附加的指示。這與本發明及其相關實現方式不同(參見下面論述的第二實施例)。稍後將解釋在本發明中需要在位元流中包括附加的指示的原因。反過來,在這裡的示例性實現方式中,不需要附加的指示,因為所有輸出樣本的處理使用它們各自的總接受域中的所有樣本。這是指重建每個輸出樣本所需的所有樣本都可用。因此,遵循示例性實現方式的規則的輸入空間的任何劃分都將導致相同的輸出。換句話說,例如,解碼器可以將輸入空間劃分為M×N個大小相等的區域(例如,由於實現的內存一次只能支持處理M×N個樣本)。如果遵循示例性實現方式的規則,則輸出可以與輸入被劃分為K×L個樣本時的結果相同。因此,從編碼器到解碼器的位元流中不需要包括指示,因為解碼器可以自由選擇自己的劃分模式和大小。
本文描述的所有實施例和/或示例性實現方式也可以以相同的方式應用於編碼器。當應用於編碼器時,輸入空間為x(如圖6所示),重建輸出為 (如圖6所示)。
上面討論的示例性實現方式可以提供以下優點:
Ÿ 該示例性實現方式可以通過應用多個NN處理步驟獲得重建輸出。由於NN處理步驟是獨立的,因此可以使用具有較小能力(例如較小內存)的多個處理單元進行處理。或者,NN處理可以使用同一處理單元多次執行。由於執行劃分是為了包含總接受域,因此可以獲得與不執行劃分時獲得的重建輸出相同的重建輸出。因此,不需要在位元流中包括有關分割的資訊,因此指示開銷減少。
Ÿ Li的數量和大小可以由解碼器根據其能力決定,因為結果與進行任何劃分或不進行任何劃分時的結果相同。此外,編碼器不需要在位元流中包括指示,編碼器和解碼器可以獲得相同的結果,因為滿足以下條件:“每個區域包括R i之一的總接受域”。
第二實施例
在前面討論的示例性實現方式中,每個輸入圖像部分Li使用其總接受域,這可以增加待處理的輸入樣本數。因此,使用總接受域可能會對處理單元的儲存和/或速度提出更高的要求,以處理更多數量的樣本。
本實施例中解決了這個問題,因為輸入空間被劃分為多個L i,其中,每個L i(i是輸入空間的整數子集)僅包括R i的總接受域的子集。
根據本發明的實施例,提供了一種用於從位元流重建圖像的方法。該圖像可以是靜止圖像或視訊圖像,例如對應於視訊序列(運動圖像)的幀。
該方法在圖21的流程圖中示出,並且包括步驟S2110:根據位元流獲得表示圖像的樣本輸入集(L)。樣本輸入集可以包括圖像的樣本。例如,可以通過使用混合編解碼器(例如HEVC或VVC或其它編解碼器)重建來獲得樣本輸入集。例如,重建可以在圖26所示的解碼器(參見重建單元314)或在圖25所示的編碼器(參見重建單元214)處執行。或者,輸入樣本集也可以通過從位元流中解析輸入特徵圖來獲得。解析可以包括解碼,因為特徵圖可以通過使用(例如)熵譯碼(例如算術譯碼)或另一種可變長度譯碼來編碼。
此外,該方法包括步驟S2120:將樣本輸入集L劃分為兩個或更多個輸入子集L1和L2。輸入子集可以各自包括一個或多個樣本。輸入子集(L1,L2)可以覆蓋部分或整個輸入空間。在本示例中,圖18中所示的L1和L2覆蓋了圖像L左側的輸入空間的子集。但是,另外兩個輸入子集L3和L4可以以類似的方式提供在輸入圖像L的右側。
在一種示例性實現方式中,兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。因此,通過包括神經網路的處理生成的輸出子集Ri更精確,因為使用了相鄰輸入子集的樣本(對應於重疊樣本)。因此,Li的重疊提高了重建圖像的整體品質,重建圖像是輸出子集Ri的聯集。具體地,沿著輸入子集Li的邊界的失真被減少。
重疊是指輸入子集(每個輸入子集包括輸入集的一個或多個樣本)共享相同的一個或多個樣本。因此,輸入子集的聯集覆蓋了整個樣本輸入集,因此覆蓋了整個圖像。子集可以對應於相互相鄰的樣本的區域。如圖18所示,L1是具有矩形形狀的相鄰樣本的子集。但是,本發明並不限於這樣的輸入子集。相反,Li可以是不連續樣本集。所述不連續樣本集可以是交錯狀、棋盤狀、分塊狀等。
該方法還包括步驟S2130:從位元流解析邊資訊。在一種示例性實現方式中,解析邊資訊包括解析序列參數集(sequence parameter set,SPS)或圖像參數集(picture parameter set,PPS)或圖像標頭(picture header,PH)中的一個或多個。通常,邊資訊可以屬與序列或圖像或圖像的條帶或分塊相關的標頭。因此,邊資訊可以以靈活的方式解析,這是指可以控制序列的部分(圖像、圖像組、圖像部分)的處理。術語SPS、PPS和PH從一些當前的混合編解碼(例如HEVC或VVC等)中已知。通常,本發明不限於這些編解碼的位元流語法/語義。術語“邊資訊”通常是指除了編碼圖像資料之外,位元流中伴隨編碼圖像資料的任何資訊。這種邊資訊可以具有由標準等約定定義的語法,使得編碼器和解碼器可以以相同的方式解析和解釋邊資訊。邊資訊可以被構造成傳遞應用於整個視訊序列或序列的圖像子集的設置的語法元素。可以存在應用於一個特定圖像,甚至應用於圖像的一部分(例如條帶或分塊或編碼單元等)的設置(參數)。本發明的邊資訊可以在神經網路處理之前/之後發生分割的任何級別(序列、圖像組、圖像、圖像的一部分)指示。如上所述,序列級別、圖像組或圖像的級別可以應用於與本發明相關的邊資訊的指示。該指示可以在這些級別中的任何一個級別進行。或者,級別可以是可選擇的(例如,通過存在標誌,該存在標誌在每個級別上指示是否存在這種邊資訊)。
此外,該方法包括步驟S2140:根據邊資訊,確定兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2))。確定輸入子集和/或輸出子集的大小可以包括解析相應的參數,這些參數包括直接來自位元流的(h1,w1)、(h2,w2)、(H1,W1)和/或(H2,W2)中的任何一個。或者,大小的確定可以包括通過從位元流中作為邊資訊包括的一個或多個其它參數推導不作為邊資訊包括在位元流中的參數。因此,推導可以利用網路(例如神經網路)的特徵。例如,這些特徵可以包括層的數量、每個處理層的內核大小K和/或NN的第一個處理層和最後一個處理層的可用輸入樣本數或輸出樣本數。對於不同區域Li,大小((h1,w1);(h2,w2))可以相同或不同。類似地,對於不同區域Ri,大小((H1,W1);(H2,W2))可以相同或不同。
換句話說,輸入子集和/或輸出子集的大小可以被解析和/或推導出,因為它們可以是相互關聯的。因此,可以通過位元流中包括的邊資訊來指示全部或部分參數。指示的一些示例將在下面進一步描述。
該方法還包括步驟S2150:處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,該步驟包括S2152:用包括一個或多個層的神經網路處理。每個輸入子集的處理可以包括端到端編碼或迴圈內濾波,例如圖25和圖26中的迴路濾波器220、320。或者,或另外,處理可以是對來自解碼器30的輸出端332的輸出訊號的後濾波。
在一種示例性實現方式中,兩個或更多個輸入子集(L1,L2)獨立處理。因此,輸入子集可以並行處理,這是指一個輸入子集不使用另一個子集的處理的任何(中間或最終)結果。因此,輸入子集的處理可以更快速執行,從而進一步提高圖像重建的性能。或者,輸入子集中的每一個輸入子集可以順序處理,即例如根據預定義的序列順序一次處理一個輸入子集,即使在L1和L2的處理中不存在依賴關係時也如此。由於處理的獨立性,串行方法和並行方法都減少了所需的內存。
在一種示例性實現方式中,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本。在該處理中,神經網路因此為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2)。
例如,神經網路(neural network,NN)使用的多個樣本可以取決於NN的第一輸入層的內核大小。神經網路(neural network,NN)的一個或多個層可以包括一個或多個池化層和/或一個或多個子采樣層。NN可以通過一個或多個池化層對多個樣本進行池化來生成輸出子集的一個樣本。或者,或另外,一個輸出樣本可以由NN通過一個或多個下采樣卷積層的子采樣(即下采樣)生成。池化和下采樣可以組合以生成一個輸出樣本。
該方法還包括步驟S2160:通過組合兩個或更多個輸出子集來重建圖像(R)。根據該方法的一個實現方式示例,組合兩個或更多個輸出子集(R1,R2)包括兩個或更多個輸出子集(R1,R2)重疊一個或多個組合樣本,如圖20所示。在圖20的示例中,解碼器在處理輸入子集L1至L4之後獲得四個輸出子集R1至R4,每個輸出子集具有對應於圖20中標記的區域x的重疊。可以看到,在區域Ri的相應的樣本被組合之後,區域Ri在所述區域x中重疊。因此,組合樣本是作為第一輸出子集(R1)的樣本和第二輸出子集(R2)的樣本的組合而獲得的樣本。因此,通過重疊輸出子集Ri的樣本,進一步提高了重建圖像的品質。具體地,可以提高沿邊界重建的圖像的品質,從而減少圖像退化和失真。
兩個或更多個輸出子集的組合還可以包括輸出子集的裁剪、(加權)平均或融合。裁剪是指刪除屬相應區域Ri的重疊區域的輸出子集的樣本。(加權)平均是指將區域R1和區域R2中的樣本求和,並將相應的和乘以權重。權重可以是整數或實數。融合是指組合輸出子集,使得區域R1和R2的相應輸出樣本相鄰。
根據一個實現方式示例,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
一個或多個層可以包括用於填充和/或大小調整的一個或多個層。對於這一個或多個層,一個或多個輸入子集的大小較小是指相應的輸入子集的輸入樣本數可能無法覆蓋神經網路的第一層(總接受域)等提供的所有樣本。換句話說,輸入子集的大小僅覆蓋總接受域的一個子集。
通過上述圖像處理,通過利用從位元流解析的邊資訊,將樣本輸入集L劃分為多個輸入子集L1和L2,可以從樣本輸入集L高效地重建圖像,其中,每個輸入子集Li用神經網路處理。此外,因為正在處理的輸入子集的大小小於相應的輸出子集的大小,所以圖像重建只需要用較少的內存即可執行。
上述樣本覆蓋在總接受域(及其子集)方面的含義可以參考圖11進行解釋。如上所述,總接受域是指一組輸入樣本,用於通過應用(例如)神經網路的一個或多個處理層獲得指定的輸出樣本集。圖11舉例說明了具有2個連續轉置卷積層的輸入(圖左側的7個樣本)的處理。
在上面的示例中,輸入層最多支持7個樣本。實際生成3個輸出樣本需要這些最大輸入樣本。因此,神經網路的第一層支持的樣本數定義了總接受域(total receptive field,TRF)。但是,輸入子集的大小(即所述子集的樣本數)可以小於TRF的大小。換句話說,輸入子集並不覆蓋整個TRF,而是覆蓋TRF的一個子集。
上述方法的示例性實現方式(稱為實現方式2)可以總結如下:
1. 確定輸入空間(L i)中的N個重疊區域,其中,至少一個區域包括R i之一的總接受域的子集,其中,R i的聯集構成完整的目標圖像。
2. 使用NN獨立處理每個L i,以獲得重建區域R i
3. 融合R i,以獲得重建圖像。
根據該方法的一個實現方式示例,兩個或更多個輸入子集(L1,L2)中的每一個輸入子集是矩形樣本輸入集(L)的矩形區域。類似地,兩個或更多個輸出子集(R1,R2)中的每一個輸出子集是矩形重建圖像(R)的矩形區域。因此,由於輸出子集Ri是矩形形狀,所以可以快速組合輸出子集Ri,這進一步提高了圖像重建的效率。此外,輸入子集和輸出子集的矩形形狀可以由最少的參數(例如寬度和高度)來表徵,因為該形狀是高度規則的。因此,適合邊資訊的參數的數量可以保持在最少,從而可以減少指示開銷。此外,由於輸入子集和輸出子集的形狀都是矩形的,所以它們各自的大小通過簡單的運算相互關聯(並相互確定)。圖18至20分別示出了輸入子集Li和輸出子集Ri的那些矩形區域的示例。輸入子集和輸出子集使用矩形形狀使得可以無縫地組合從矩形輸入子集生成的輸出子集。
圖18舉例說明了本發明的示例性實現方式。與圖17相比,輸入區域L i現在更小,如圖18所示,因為它們僅代表相應R i的總接受域的子集。每個區域L i由解碼器獨立處理,從而獲得兩個區域R1和R2(即輸出子集)。
由於總接受域的子集用於獲得一組輸出樣本,因此可能需要填充操作來生成缺失樣本。
在一種示例性實現方式中,處理兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。因此,輸入子集中缺失的樣本可以通過填充過程添加,這提高了重建輸出子集Ri的品質。因此,在組合輸出子集Ri之後,重建圖像的品質也得到了提高。
填充是指通過使用預定義的樣本值或在輸入圖像中的位置使用樣本值生成新樣本(在圖像邊界處)來增加輸入(即輸入圖像)的大小。生成的樣本是不存在的實際樣本值的近似值。因此,例如,可以根據待填充樣本的一個或多個最近相鄰樣本獲得填充樣本。例如,通過複製最近相鄰樣本來填充樣本。如果在相同距離上有更多的相鄰樣本,則這些相鄰樣本中要使用的相鄰樣本可以由約定(例如標準)指定。另一種可能性是從多個相鄰樣本中插值填充樣本。或者,填充可以包括使用零值樣本。也可能需要填充通過處理生成的中間樣本。中間樣本可以根據包括一個或多個填充樣本的輸入子集的樣本生成。所述填充可以在神經網路的輸入之前或在神經網路內執行。但是,填充應在處理一個或多個層之前進行。
根據一個實現方式示例,根據邊資訊確定待填充樣本的位置和/或量。因此,解碼側可以根據指示的邊資訊快速確定填充樣本的位置和數量。例如,可以通過將該大小與總接受域的大小進行比較,從相應的輸入區域Li的大小(wi,hi)確定填充樣本數。此外,可以通過將填充類型包括到邊資訊中來指示填充類型。
圖12示出了用於實現方式2的填充操作的應用。在圖12所示的示例中,輸出樣本集包括5個樣本。兩個轉置卷積(反卷積)操作應用於輸入,其中,每個反卷積操作包括應用大小為3的內核。由於內核大小為3,因此在應用每個反卷積操作之前,輸入的每一側都需要一個填充樣本。填充樣本用空心圓圈示出。從圖12可以看出,填充通常發生在樣本邊界處。
填充操作有兩個目的:
Ÿ 由於使用總接受域的子集而生成缺失樣本。換句話說,輸入子集的大小小於如上所述的總接受域的大小。為了從“缺失”樣本生成所需的輸出樣本,(在實現方式2中)需要在輸入和/或中間輸出樣本處應用填充。這在圖12中進行了舉例說明。“填充樣本1”用於計算輸出樣本1。因此,填充樣本1用於完成總接受域中的“缺失”樣本。
Ÿ 填充操作有助於在應用內核大小大於1的卷積/反卷積操作之後保持樣本數恒定或所需數量。例如,當內核大小大於1時,可能需要在輸入空間的邊界處應用填充操作,以便補償每次應用卷積/反卷積(con/deconv)操作之後大小的收縮。這在圖12中進行了舉例說明。“填充樣本2”不用於任何輸出樣本的計算,但其目的是使NN輸出的大小遵循一定的限制。在圖12的示例中,輸出的大小應與輸入大小相同。需要說明的是,在每個輸入子集Li包括總接受域的情況下,也可能需要填充,這和第一實施例的情況一樣。如圖11所示,當每個輸入子集Li包括總接受域(total receptive field,TRF)時,如果輸入子集Li的大小小於TRF,則可能需要在TRF邊界處填充那些樣本。
在圖12中,受填充樣本影響的輸出樣本用虛線填充示出。在輸出階段,7個樣本中的4個在計算輸出值時至少使用了一個填充樣本。由於填充樣本不是實際樣本,而是實際樣本的近似值,因此使用填充樣本的輸出樣本的精度較低。換句話說,由於在計算輸出樣本時使用了至少一個填充樣本,重建的品質會降低。
另一方面,對於在計算中使用至少一個填充樣本的所有輸出樣本,重建品質的下降程度並不相同。例如,在圖12中,輸出樣本2的計算比輸出樣本1的計算需要更多的填充樣本。因此,輸出樣本1預計比輸出樣本2更精確。但是,輸出樣本1的精度仍然低於在計算中沒有使用任何填充樣本的樣本的精度。
在該方法的示例性實現方式中,處理兩個或更多個輸入子集中的每一個輸入子集包括:在用所述一個或多個層處理之後,裁剪一個或多個樣本。裁剪是指刪除屬相應區域Ri的重疊區域的輸出子集的樣本。可以在合併Ri之前裁剪輸出子集Ri。在一個示例中,裁剪是在用神經網路處理兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集。裁剪可以使重建圖像的大小變小和/或改變圖像的縱橫比(長寬)。因此,重建圖像的大小可以適配顯示器的優選大小,這改善了顯示器上圖像的觀看再現(自適應圖像大小)。
因此,在將R i融合到重建輸出之前,可以對R i執行裁剪操作(即第三步驟可以添加到上述處理中)。圖18和圖19示出了在輸入子集Li已經被解碼器處理之後,解碼器提供仍然具有重疊區域的輸出子集Ri作為輸出。在這種情況下,然後在神經網路之後執行裁剪。或者,裁剪可以在網路中執行,在這種情況下,通過網路內部裁剪,所提供的輸出子集Ri不再具有它們的重疊區域。裁剪支持匹配圖像大小。
根據一個示例,兩個或更多個輸出子集的組合是沒有重疊的融合。這在圖18和圖19中示出,示出在輸出子集Ri經過裁剪之後,相應的裁剪區域R-crop i被無縫融合,而沒有裁剪區域的任何重疊。
在上述示例性實現方式中,輸入空間的區域Li重疊。該實現方式可以調整為使得L不重疊。相應的替代實現方式可以如下所示:
1. 確定輸入空間(L i)中的N個非重疊區域,其中,至少一個區域包括R i之一的總接受域的子集,其中,R i的聯集構成完整的目標圖像。
2. 使用NN獨立處理每個L i,以獲得重建區域R i
3. 融合R i,以獲得重建圖像。
圖19示出了這種情況,其中,Li被選擇為非重疊區域。這是一個特殊情況,在這種情況下,最大限度地減少了獲得整個重建輸出(即輸出圖像)所需的計算總量。但是,重建品質可能會受到影響。
如上所述,與第一實施例的處理相反,輸入子集(L1,L2)可以不包括總接受域(total receptive field,TRF)。由於使用TRF的子字段,解碼側可能不知道圖像在編碼器側是如何分割的。因此,可以向解碼器側指示資訊(例如關於參數的資訊),以便確定在一些示例性實現方式中如何分割圖像。
因此,在第二實施例的示例性實現方式中,需要知道每個Ri和Li的大小和坐標,以便推斷如何在輸入空間和輸出空間中執行分割。輸入空間和輸出空間的分割適用於解碼器和編碼器。此外,由於可能需要將裁剪應用於Ri,因此也需要知道每個Ri的裁剪量。這會在下面繼續論述。
根據該方法的示例性實現方式,待裁剪樣本的位置和/或量可以根據邊資訊確定。因此,解碼側可以根據指示的邊資訊快速確定裁剪樣本的位置和/或量。
如上所述,邊資訊包括在位元流中。由於邊資訊是從位元流中解析的,因此所述確定所需的所有參數都可以在邊資訊中進行指示。或者,部分參數可以包括在位元流中,而所需的其餘參數可以從指示的參數推導。
例如,邊資訊包括以下一項或多項的指示:
─輸入子集的數量,
─樣本輸入集的大小,
─兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),
─重建圖像(R)的大小(H,W),
─兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),
─兩個或更多個輸入子集(L1,L2)之間的重疊量,
─兩個或更多個輸出子集(R1,R2)之間的重疊量。
因此,可以以靈活的方式在邊資訊中對各種參數進行指示。因此,指示開銷可以根據在邊資訊中指示上述參數中的哪些參數來進行調整,而其它參數根據被指示的那些參數推導。兩個或更多個輸入子集中的每一個輸入子集的大小可以不同。或者,輸入子集可以具有共同的大小。
在一個示例中,待裁剪樣本的位置和/或量是根據邊資訊中指示的輸入子集的大小以及神經網路的神經網路大小調整參數確定的,其中,神經網路大小調整參數表示網路的輸入的大小與網路的輸出的大小之間的關係。因此,位置和/或裁剪量可以通過考慮輸入子集的大小和神經網路的特徵(即其大小調整參數)來更精確地確定。因此,裁剪量和/或位置可以適配神經網路的性質,這進一步提高了重建圖像的品質。
大小調整參數可以是加性項,從輸入大小中減去該加性項,以獲得輸出大小。換句話說,輸出子集的輸出大小與其對應的輸入子集僅有一個整數相關。或者,大小調整參數可以是比率。在這種情況下,輸出子集的大小與輸入子集的大小相關,通過將輸入子集的大小乘以該比率,得到輸出子集的大小。
如上所述,Li、Ri和裁剪量的確定可以根據預定義的規則或兩者的組合從位元流中獲得。
Ÿ 指示裁剪量的指示可以包括在位元流中(並從位元流中解析)。在這種情況下,裁剪量(即重疊量)包括在邊資訊中。
Ÿ 裁剪量可以是固定的數量。例如,該數量可以由標準預定義,或者一旦知道輸入與輸出的大小(維度)之間的關係,該數量就被固定下來。
Ÿ 裁剪量可以與水平方向、垂直方向或同時與這兩個方向的裁剪有關。
可以根據預配置的規則進行裁剪。獲取裁剪量之後,裁剪規則可以如下:
Ÿ 根據Ri在輸出空間中的位置(左上角、中心等)。如果Ri的一側與輸出邊界不重合,則可以在該側(頂部、左側、底部或右側)上應用裁剪。
Li的大小和/或坐標可以包括在位元流中。或者,分割部分的數量可以在位元流中指示,每個Li的大小可以根據輸入的大小和分割部分的數量計算。
每個輸入子集Li的重疊量可以是:
Ÿ 指示重疊量的指示可以包括在位元流中(並從位元流解析或從位元流推導)。
Ÿ 重疊量可以是固定的數量。如上所述,在該上下文中,“固定”是指該數量是已知的,例如通過標準或專有配置等約定,或預先配置為編碼參數或神經網路參數的一部分。
Ÿ 重疊量可以與水平方向、垂直方向或同時與這兩個方向的裁剪有關。
Ÿ 重疊量可以根據裁剪量計算。
下面提供了一些數值示例來說明哪些參數可以通過位元流中包括的邊資訊進行指示(並從中解析),以及然後如何使用這些指示的參數來推導剩餘參數。這些實施例僅僅是示例性的,而不限制本發明。
例如,在位元流中,可以包括與Li的指示相關的以下資訊:
Ÿ 沿縱軸的分割部分的數量=2。這對應於圖中空間L被垂直劃分為2個分割部分的示例。
Ÿ 沿橫軸的分割部分的數量=2。這對應於圖中空間L被水平劃分為2個分割部分的示例。
Ÿ 等大小分割部分標誌=True。這在圖中通過示出具有相同大小的L1、L2、L3和L4來舉例說明。
Ÿ 輸入空間L的大小(wL=200,hL=200)。在這些示例中,寬度w和高度h是以樣本數為單位測量的。
Ÿ 重疊量=10。在該示例中,重疊是以樣本數為單位測量的。
根據上面的資訊,因為該資訊指示重疊量為10,且分割部分大小相等,所以可以得到分割部分的大小,為w=(200/2 + 10)=110,h=(200/2 + 10)=110。
此外,由於分割部分的大小為(110,110),沿每個軸的分割部分的數量為2,因此可以獲得分割部分的左上角坐標,為:
Ÿ 屬第一個分割部分的左上角坐標,L1(x=0,y=0),
Ÿ 屬第二個分割部分的左上角坐標,L2(x=90,y=0),
Ÿ 屬第三個分割部分的左上角坐標,L3(x=0,y=90),
Ÿ 屬第四個分割部分的左上角坐標,L4(x=90,y=90)。
下面的示例舉例說明了指示全部或部分上述參數的不同選項,這在圖20中示出。圖20示出了與輸入子集Li、輸出子集Ri、輸入圖像和重建圖像相關的各種參數是如何鏈接的。
需要說明的是,上述訊號參數並不限制本發明。如下所述,有許多指示資訊的方法,根據這些資訊,可以推導輸入和輸出空間以及子空間、裁剪或填充的大小。下面介紹了一些進一步的示例。
第一指示示例:
圖20示出了第一示例,其中,以下資訊被包括在位元流中:
Ÿ 潛在空間(對應解碼器側的輸入空間)中的區域數,該區域數等於4。
Ÿ 潛在空間的總大小(高度和寬度),該總大小等於(h,w)。(上面稱為wL、hL)。
Ÿ  h1和w1,用於推導區域的大小(這裡是四個Li的大小),即輸入子集。
Ÿ 重建輸出R的總大小(H,W)。
Ÿ H1和W1。H1和W1表示輸出子集的大小。
繼而,以下資訊是預定義的或預先確定的:
Ÿ 區域Ri之間的重疊量X。例如,X還用於確定裁剪量。
Ÿ 區域Li之間的重疊量y。
根據位元流中包括的資訊和預先確定的資訊,Li和Ri的大小可以如下確定:
Ÿ L1=(h1+y,w1+y)
Ÿ L2=((h–h1)+y,w1+y)
Ÿ L3=(h1+y,(w–w1)+y)
Ÿ L4=((h–h1)+y,(w–w1)+y)
Ÿ R1=(H1+X,W1+X)
Ÿ R2=((H–H1)+X,W1+X)
Ÿ R3=(H1+X,(W–W1)+X)
Ÿ R4=((H–H1)+X,(W–W1)+X)。
如可以從第一指示示例中看出的,輸入子集L1的大小(h1,w1)用於推導所有剩餘輸入子集L2至L4的相應大小。這是有可能的,因為輸入子集L1至L4使用了相同的重疊量y,如圖20所示。在這種情況下,只需要指示幾個參數。類似的參數也適用於輸出子集R1至R4,其中,只需要輸出子集R1的大小(H1,W1)的指示來推導輸出子集R2至R4的大小。
在上面,h1和w1,H1和W1分別是輸入空間和輸出空間中間的坐標。因此,在該第一指示示例中,使用單個坐標(h1,w1)和(H1,W1)分別計算出將輸入空間和輸出空間劃分為4個分割部分。或者,可以指示一個以上的輸入子集和/或輸出子集的大小。
在另一個示例中,如果知道處理Li的NN的結構,則可以從Li計算Ri,即,如果輸入的大小是Li,則Ri是輸出的大小。在這種情況下,輸出子集Ri的大小(Hi,Wi)可以不通過邊資訊指示。但是,在一些其它實現方式中,由於在實際執行NN操作之前有時可能不能確定大小Ri,因此(如在這種情況下)可能希望在位元流中指示大小Ri。
第二指示示例:
在指示的第二個示例中,包括根據公式以及h1和w1確定H1和W1。例如,公式可改為:
Ÿ H1=(h1 + y)*標量–X
Ÿ W1=(w1 + y)*標量–X
其中,標量為正數。標量與編碼器和/或解碼器網路的大小調整比有關。例如,對於解碼器,標量可以是整數,如16,對於編碼器,標量可以是分數,如1/16。因此,在第二指示示例中,H1和W1不在位元流中指示,而是從相應輸入子集L1的指示大小推導。此外,標量是大小調整參數的一個示例。
第三指示示例:
在第三指示示例中,區域Li之間的重疊量y不是預先確定的,而是在位元流中指示。然後,根據輸入子集的裁剪量y,根據以下公式確定輸出子集的裁剪量X:
Ÿ X=y*標量
其中,標量為正數。標量與編碼器和/或解碼器網路的大小調整比有關。例如,對於解碼器,標量可以是整數,如16,對於編碼器,標量可以是分數,如1/16。
到目前為止,上述方法涉及重建圖像,以及通過邊資訊指示支持裝置(例如解碼器)執行對應於重建方法的處理的各種參數。如上所述,相同或類似的處理可以由處理裝置執行,該處理裝置準備要包括在位元流中的邊資訊,以及將表示圖像的資訊編碼到位元流中。下面,詳細說明編碼處理,編碼處理可以由編碼裝置執行。
根據本發明的實施例,提供了一種將圖像編碼到位元流中的處理方法。該圖像可以是靜止圖像或視訊圖像,例如對應於視訊序列(運動圖像)的幀。
該方法在圖22的流程圖中示出,並且包括步驟S2210:將表示圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2)。樣本輸入集可以包括圖像的一個或多個樣本。輸入子集可以包括一個或多個樣本。輸入子集(L1,L2)可以覆蓋部分或整個輸入空間。
需要說明的是,在編碼器側,輸入空間L可以表示經過NN的一層或多層處理之後的圖像的通道和潛在空間的輸出空間R通道。然後,輸出空間通道可以被編碼到位元流中,該位元流可以是攜帶邊資訊的位元流或不同的位元流。位元流生成(二值化)可以被視為NN的一部分(例如層),或者位元流生成可以由NN之後的二值化(例如熵譯碼)模組實現。另一方面,在解碼側,輸入空間L表示從位元流推導(例如解析(可能包括熵解碼)並解釋)的潛在空間通道,輸出空間R表示重建圖像。在本發明中,術語“樣本”不僅用於指圖像樣本,而且用於指特徵圖樣本(元素)。總之,L表示輸入,R表示NN的輸出。
該方法還包括步驟S2220:根據兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊。需要說明的是,在編碼器側,輸入子集(和/或輸出子集和/或填充/裁剪量)的大小可以是可優化的,即,可以由用戶或使用編碼器的應用程式配置,或者通過執行率失真優化或還考慮內存成本的優化等優化來配置。
此外,該方法包括步驟S2230:處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,該步驟包括步驟S2232:用包括一個或多個層的神經網路處理。每個輸入子集的處理可以包括端到端譯碼,或迴圈內濾波/後濾波/預濾波。此外,該處理還可以包括後處理。
在一種示例性實現方式中,兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。重疊是指輸入子集L1和L2(每個輸入子集包括輸入集的一個或多個樣本)共享相同的一個或多個樣本。因此,輸入子集(L1,L2)的聯集覆蓋了整個樣本輸入集,因此覆蓋了整個圖像。子集(L1,L2)可以對應於相互相鄰的樣本的區域和/或不連續的樣本集。所述不連續樣本集可以是交錯狀、棋盤狀等。因此,通過包括神經網路的處理生成的輸出子集Ri更精確,因為使用了相鄰輸入子集的樣本(對應於重疊樣本,並且通常位於相鄰子集Li之間的邊界)。因此,Li的重疊提高了生成的輸出子集Ri的整體品質。具體地,沿著輸入子集Li的邊界的失真被減輕。
在一種示例性實現方式中,兩個或更多個輸入子集(L1,L2)獨立處理。因此,輸入子集可以並行處理,這是指一個輸入子集不使用另一個子集的處理的任何(中間或最終)結果。因此,輸入子集的處理可以快速執行,從而進一步提高編碼器-解碼器框架內圖像重建的性能。或者,輸入子集中的每一個輸入子集可以順序處理,即例如根據預定義的序列順序一次處理一個輸入子集,即使在L1和L2的處理中不存在依賴關係時也如此。
在該方法的示例性實現方式中,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2)。因此,通過利用邊資訊,將樣本輸入集L劃分為多個子集L1和L2,可以從樣本輸入集L高效地編碼圖像,其中,每個輸入子集Li用神經網路處理。此外,因為正在處理的輸入子集Li的大小小於相應的輸出子集Ri的大小,所以圖像編碼只需要用較少的內存即可執行。
例如,神經網路(neural network,NN)使用的多個樣本可以取決於NN的第一輸入層的內核大小。神經網路(neural network,NN)的一個或多個層可以包括一個或多個池化層和/或一個或多個子采樣層。NN可以通過一個或多個池化層對多個樣本進行池化來生成輸出子集的一個樣本。或者,或另外,一個輸出樣本可以由NN通過一個或多個下采樣卷積層的子采樣(即下采樣)生成。池化和下采樣可以組合以生成一個輸出樣本。
該方法還包括步驟S2240:將邊資訊插入位元流中。根據示例性實現方式,將兩個或更多個輸出子集(R1,R2)的指示插入位元流中。換句話說,(編碼)輸入子集和/或(編碼)輸出子集可以插入位元流中。將輸出子集指示到位元流中可以有助於在解碼側將樣本輸入集L劃分為輸入子集。在一個實現方式示例中,插入邊資訊包括將邊資訊插入序列參數集或圖像參數集或圖像標頭中的一個或多個。因此,邊資訊可以以靈活的方式插入(並因此被指示),這是指可以控制序列的部分(圖像、圖像組、圖像部分)。
根據一個實現方式示例,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
通過上述處理,通過利用邊資訊,將樣本輸入集L劃分為多個子集L1和L2,可以從樣本輸入集L高效地編碼圖像,其中,每個輸入子集Li用神經網路處理。此外,因為正在處理的輸入子集Li的大小小於相應的輸出子集Ri的大小,所以圖像編碼只需要用較少的內存即可執行。
一個或多個層可以包括用於填充和/或大小調整的一個或多個層。對於這一個或多個層,一個或多個輸入子集的大小較小是指相應的輸入子集的輸入樣本數可能無法覆蓋神經網路的第一層(總接受域)等提供的所有樣本。換句話說,輸入子集的大小僅覆蓋總接受域的一個子集。
上述樣本覆蓋在總接受域(及其子集)方面的含義已經在上面結合圖11的重建方法解釋過。為了完整性,如上所述,關於解碼器側,總接受域(total receptive field,TRF)是指一組輸入樣本,該組輸入樣本用於通過應用一個或多個處理層(如NN層)獲得指定的輸出樣本集。這些層可以是卷積層,這些層用一個或多個內核處理輸入(類似於上面針對反卷積層所描述)。通過應用內核(或池化層等)進行處理,輸出樣本的總接受域可以大於輸入樣本數。換句話說,在一些情況下,輸入子集並不覆蓋整個TRF,而是覆蓋TRF的子集。
根據該方法的一個實現方式示例,兩個或更多個輸入子集(L1,L2)中的每一個輸入子集都是矩形樣本輸入集(L)的矩形區域,兩個或更多個輸出子集(R1,R2)中的每一個輸出子集是矩形區域。圖18至20分別示出了輸入子集Li和輸出子集Ri的那些矩形區域的示例。因此,輸入子集和輸出子集的矩形形狀可以由最少的參數(例如寬度和高度)來表徵,因為該形狀是高度規則的。因此,適合邊資訊的參數的數量可以保持在最少,從而可以減少指示開銷。此外,由於輸入子集和輸出子集的形狀都是矩形的,所以它們各自的大小通過簡單的運算相互關聯(並相互確定)。輸入子集和輸出子集使用矩形形狀使得可以無縫地組合從矩形輸入子集生成的輸出子集。每個區域Li可以由編碼器獨立處理,從而獲得兩個區域R1和R2(即輸出子集)。
與上面討論的重建方法類似,在編碼側也可能需要填充操作來生成缺失的樣本,因為總接受域的子集用於獲得一組輸出樣本。
在一種示例性實現方式中,處理兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。因此,輸入子集中缺失的樣本可以通過填充過程添加。
如上所述,例如,填充是指通過在圖像或圖像區域的一個或多個邊界插入新樣本來增加輸入(即輸入圖像)的大小。填充樣本可以是具有預定義值(如零)的樣本,也可以是具有從現有圖像(區域)值推導的值的樣本(因為圖像在這種情況下是輸入)。填充樣本可以被推導出來,例如通過將圖像(區域)的最近相鄰樣本(區域)的值(例如,在預定義的相對位置處的樣本(例如,填充樣本左側或頂部的樣本)的值)複製到填充樣本而推導出來。
根據示例,根據邊資訊確定待填充樣本的位置和/或量。因此,編碼側可以根據指示的邊資訊確定填充樣本的位置和數量。
如上所述,參考圖12以非限制性的方式示出了填充。該示例也適用於此。
在一個實現方式示例中,處理兩個或更多個輸入子集中的每一個輸入子集包括,在用所述一個或多個層處理之後,裁剪一個或多個樣本。裁剪是指刪除屬相應區域Ri的重疊區域的輸出子集的樣本。在一個示例中,裁剪是在用神經網路處理兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集。裁剪可以使待重建圖像的大小變小和/或改變圖像的縱橫比(長寬)。因此,圖像的大小可以適配顯示器的優選大小,這改善了顯示器上圖像的觀看再現(自適應圖像大小)。裁剪支持匹配圖像大小。附加地,當輸出子集(R1和R2)具有重疊區域時,裁剪有助於刪除輸出的重疊部分。
因此,在將Ri融合到重建輸出之前,可以對Ri執行裁剪操作(即第三步驟可以添加到上述處理中)。圖18和圖19示出了在輸入子集Li已經被解碼器處理之後,解碼器提供仍然具有重疊區域的輸出子集Ri作為輸出。在這種情況下,然後在神經網路之後執行裁剪。或者,裁剪可以在網路中執行,在這種情況下,通過網路內部裁剪,所提供的輸出子集Ri不再具有它們的重疊區域。
如上面針對圖像重建所論述的,與第一實施例的處理相反,輸入子集(L1,L2)可以不包括總接受域(total receptive field,TRF),這也適用於編碼器側的處理。由於使用TRF的子字段,編碼側本身不知道如何分割圖像。因此,編碼側可能需要確定指示如何分割圖像的邊資訊。例如,相應的邊資訊可以包括與圖像相關的參數或其它參數。例如,然後,邊資訊可以在位元流中向解碼器側指示。
具體地,編碼器可以決定輸入空間和輸出空間中重疊參數的可接受選擇,以控制重建品質。例如,編碼器可以使用輸入圖像的大小(h,w)並根據神經網路的輸入-輸出特徵確定輸入子集Li的重疊量y和/或輸出子集Ri的重疊量X。這種特徵可以是輸入大小與輸出大小之間的比率(在一個或多個維度中)等。通常,特徵可以是網路的具體層或整個網路的輸入/輸出大小關係中的一個或多個參數、應用於NN的一個或多個層中的內核的大小,或包括在NN的層中執行的子采樣、上采樣、池化等在內的其它操作的大小。本發明不限於任何具體參數。
根據該方法的示例性實現方式,邊資訊是根據待裁剪樣本的位置和/或量確定的。因此,解碼側可以根據指示的邊資訊快速確定裁剪樣本的位置和/或量。在一個示例中,待裁剪樣本的位置和/或量是根據邊資訊中指示的輸入子集的大小以及神經網路的神經網路大小調整參數確定的,其中,神經網路大小調整參數表示網路的輸入的大小與網路的輸出的大小之間的關係。因此,位置和/或裁剪量可以通過考慮輸入子集的大小和神經網路的特徵(即其大小調整參數)來更精確地確定。因此,裁剪量和/或位置可以適配神經網路的性質,這進一步提高了重建圖像的品質。
大小調整參數可以是加性項,從輸入大小中減去該加性項,以獲得輸出大小。換句話說,輸出子集的輸出大小與其對應的輸入子集僅有一個整數相關。或者,大小調整參數可以是比率。在這種情況下,輸出子集的大小與輸入子集的大小相關,通過將輸入子集的大小乘以該比率,得到輸出子集的大小。
在該方法的一種示例性實現方式中,邊資訊包括以下一項或多項的指示:
─輸入子集的數量,
─樣本輸入集的大小,
─兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),
─重建圖像(R)的大小(H,W),
─兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),
─兩個或更多個輸入子集(L1,L2)之間的重疊量,
─兩個或更多個輸出子集(R1,R2)之間的重疊量。
因此,可以以靈活的方式在邊資訊中對各種參數進行指示。因此,指示開銷可以根據在邊資訊中指示上述參數中的哪些參數來進行調整,而其它參數根據被指示的那些參數推導。兩個或更多個輸入子集中的每一個輸入子集的大小可以不同。或者,輸入子集可以具有共同的大小。
此外,編碼器還可以使用關於可用內存和/或處理速度(例如CPU的時脈頻率)的資訊來確定重疊量y和/或X(即裁剪量),以便實現可接受的權衡。可接受的權衡點可以取決於應用程式的類型。例如,在將視訊流式傳輸到行動設備的情況下,可能需要選擇小的重疊參數和大量的分割部分,因為在這種情況下,內存和計算資源是有限的。在其它應用中,可能更關注品質,在這種情況下,可以增加重疊量。
因此,編碼側可以在邊資訊中包括各種不同類型的上述參數,以將參數指示給解碼側。結合解碼側討論了不同指示場景的一些示例。儘管圖20示出了解碼器側,但通過簡單地將箭頭表示的“解碼器”重命名為“編碼器”,類似的處理也適用於編碼器側。這是因為在編碼器上,如上所述,L表示圖像空間(輸入空間),R表示潛在空間。
上面關於解碼器側描述的第一指示示例、第二指示示例和第三指示示例也適用於編碼器側。在編碼器側,生成位元流,在解碼器側,解析位元流。但是,第一指示示例、第二指示示例和第三指示示例中描述的、位元流中包括的指示參數同時適用於編碼器側和解碼器側。因此,在編碼器側實施例中,作為上述邊資訊提供的參數被插入到位元流中。在解碼器側實施例中,從位元流解析這些參數。
根據本發明的實施例,提供了一種儲存在非暫態介質中的電腦程式產品,該電腦程式產品包括程式碼,當一個或多個處理器執行該程式碼時,該程式碼執行上述任何方法的步驟。
此外,如上所述,本發明還提供了用於執行上述方法的步驟的設備。
根據本發明的實施例,提供了一種用於從位元流重建圖像的裝置。圖23示出了用於重建圖像的裝置2300的方塊圖。該裝置包括處理電路2310,用於:根據位元流,獲得表示圖像的樣本輸入集(L);將樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);從位元流解析邊資訊;根據邊資訊,確定兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2));處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);通過組合兩個或更多個輸出子集重建圖像(R),其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
在裝置2300的一種示例性實現方式中,處理電路2310的配置可以為所述電路包括用於處理的相應的模組。這可以包括獲取模組2312、劃分模組2314、解析模組2316、確定模組2318、處理模組2320和重建模組2322,如圖23所示。
根據本發明的實施例,提供了一種用於從位元流重建圖像的裝置,該裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,該非暫態電腦可讀記錄媒體與一個或多個處理器耦合併儲存由一個或多個處理器執行的程式,其中,當一個或多個處理器執行該程式時,該程式使該裝置執行與重建上述圖像有關的方法。
在一個實現方式示例中,用於從位元流重建圖像的裝置可以包括處理電路,該處理電路用於執行根據上述重建方法的任何方面的方法的步驟。
根據本發明的一方面,提供了一種用於將圖像編碼到位元流中的處理裝置。圖24示出了用於對圖像進行編碼的處理裝置2400的方塊圖。處理裝置包括處理電路2410,處理電路2410用於:將表示圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);根據兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊;處理兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,處理包括用包括一個或多個層的神經網路進行處理,神經網路使用兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為兩個或更多個輸入子集獲得相應的兩個或更多個輸出子集(R1,R2);將邊資訊插入位元流中,其中,輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。
在裝置2400的一種示例性實現方式中,處理電路2410的配置可以為所述電路包括用於處理的相應的模組。這可以包括劃分模組2412、確定模組2414、處理模組2416和插入模組2418,如圖24所示。
根據本發明的一方面,提供了一種處理裝置,用於將圖像編碼到位元流中,該處理裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,該非暫態電腦可讀記錄媒體與一個或多個處理器耦合併儲存由一個或多個處理器執行的程式,其中,當一個或多個處理器執行該程式時,該程式使該裝置執行與編碼上述圖像有關的方法。
在一個實現方式示例中,用於將圖像編碼到位元流中的處理裝置可以包括處理電路,該處理電路用於執行根據上述編碼方法的任何方面的方法的步驟。
上面論述的本發明的示例性實現方式可以提供以下優點:
Ÿ 第二實施例的示例性實現方式能夠調整輸出區域Ri和輸入區域Li的大小,從而在重建品質與計算複雜度之間獲得期望的權衡,同時減少對所需內存的需求。
Ÿ 與第一實施例的示例性實現方式相比,第二實施例的示例性實現方式可以提供的優點是提供調整重建品質和計算複雜度的靈活性。儘管在該示例性實現方式中,總接受域的子集被用作輸入,但編碼器可以決定輸入空間和輸出空間中重疊參數的可接受選擇,以控制重建品質。
例如,編碼器可以使用輸入圖像的大小(h,w)並根據神經網路的輸入-輸出特徵確定輸入子集Li的重疊量y和/或輸出子集Ri的重疊量X。此外,編碼器還可以使用關於可用內存和/或處理速度(例如CPU的時脈頻率)的資訊來確定重疊量y和/或X。可接受的權衡點取決於應用程式的類型。例如,在將視訊流式傳輸到行動設備的情況下,可能需要選擇小的重疊參數和大量的分割部分,因為在這種情況下,內存和計算資源是有限的。在其它應用中,可能更關注品質,在這種情況下,可以增加重疊量。
例如,假設總接受域及其子集由以下公式給出:
Ÿ 總接受域大小:(H,W)
Ÿ 子集大小:(H–X,W–X)
所需峰值內存和計算複雜度的降低(通過從總接受域到子集)為比率(X(H+W)+X 2)/(W*H)。例如,如果H=W=20,則當X僅等於1時,複雜度降低為10.25%。該示例性計算表明,輸入空間大小僅減少1行,就相當於內存和總計算量減少了大約25%。這是由於內存和計算的總量與輸入的寬度和高度的乘積成正比。
內存要求和計算複雜度與待處理的樣本數成正比,待處理的樣本數與輸入的寬度乘以高度成正比。在上面的示例中,當使用總接受域作為輸入時,輸入大小為W×H。當使用總接受域的子集時,輸入大小將減少到(W–X)×(H–X)(在這種情況下,X是大於0的整數)。因此,計算複雜度和內存要求的百分比降低可以通過以下公式給出:
但是,重建品質的降低將遠小於計算複雜度的降低,X較小時尤其如此。當X較小時,這是指輸入中不包括總接受域的離群值部分的樣本。圖12示出了輸入邊界處的樣本(在該示例中因為輸入邊界處的樣本缺失,所以為填充樣本)僅影響少量的輸出樣本。例如,圖12中的填充樣本1僅影響輸出的2個樣本(輸出樣本1和輸出樣本2),其中一個樣本甚至不包括在輸出樣本集中(輸出樣本2)中。另一方面,中間的可用樣本1影響5個輸出樣本。因此,從圖12可以看到,刪除填充樣本1(換句話說,使用填充版本代替缺失的實際值)只會對重建品質産生很小的影響。
總之,當X較小時,複雜度的降低將超過重建品質的降低。本發明支持(自適應地或以預先確定的方式)選擇X,使得可以實現希望的權衡。可接受的權衡點取決於應用程式的類型。例如,在將視訊流式傳輸到行動設備的情況下,可能需要選擇小的重疊參數和大量的分割部分,因為在這種情況下,內存和計算資源是有限的。在其它應用中,可能更關注品質,這時可以增加重疊量X。
本發明的實施例提供了獨立於其餘輸入樣本處理輸入部分的可能性。這是指一次處理的樣本量減少,從而降低內存要求。本發明可以通過以下方式進一步實現對整個輸入的處理:
Ÿ 使用多個能力較低的處理單元(即內存較少的單元)或
Ÿ 使用具有多個處理回合的單個能力較低的處理單元。
特別是第一種方案的實現成本預計會更便宜,因為處理速度有一個物理限制,而這往往很難克服。另一方面,處理單元(如CPU和GPU)的狀態包括多個能力較低的相同處理核心,這些核心以較低的操作頻率運行。
需要說明的是,本發明不限於具體框架。此外,本發明不限於圖像或視訊壓縮,並且也可以應用於對象檢測、圖像生成和識別系統。
本發明可以通過硬體(hardware,HW)和/或軟體(software,SW)實現。此外,基於HW的實現方式可以與基於SW的實現方式相結合。
為了清楚起見,上述任一實施例可以與上述其它實施例中任何一個或多個組合以創建本發明範圍內的新實施例。
概括地說,本發明涉及基於神經網路的位元流的圖像解碼和編碼,其中,圖像由從位元流獲得的樣本輸入集表示。圖像從輸出子集Ri重建,輸出子集是通過處理輸入集L生成的。具體來說,輸入集L被劃分為多個輸入子集Li,從位元流解析的邊資訊用於確定輸入子集和輸出子集的大小。輸入子集各自進行處理,包括用具有一個或多個層的神經網路進行處理。神經網路使用輸入子集的多個樣本作為輸入,並生成輸出子集的一個樣本,從而為每個輸入子集獲得相應的輸出子集。通過組合輸出子集,重建圖像。具體地,至少一個輸入子集的大小小於通過神經網路的一個或多個層處理之後獲得相應的輸出子集(R1,R2)的大小所需的大小。編碼側可以執行類似的處理。這種處理能夠在基於神經網路的框架工作中高效地重建整個圖像,並在內存和計算資源的要求和/或限制之間進行權衡。
10:視訊譯碼系統 12:源設備 13:通訊信道 14:目的地設備 16:圖像源 17:圖像資料(圖像) 18:預處理器 19:預處理圖像資料 20,601,901:編碼器(視訊編碼器) 21:編碼圖像資料 22,28:通訊介面 30,604,1004:解碼器(視訊解碼器) 31:解碼圖像資料 32:後處理器 33:後處理圖像資料 34,45:顯示設備 40:視訊譯碼系統 41:成像設備 42:天線 43,430,502:處理器 44,460,504:記憶體 46:處理電路 201:輸入端 203:圖像塊 204:殘差計算單元 205:殘差塊 206:變換處理單元 207:變換係數 208:量化單元 209,309:量化係數 210,310:反量化單元 211,311:解量化係數 212,312:逆變換處理單元 213,313:重建殘差塊 214,314:重建單元 215,315:重建塊 220,320:迴路濾波器 221,321:濾波塊 230,330:解碼圖像緩衝區 231,331:解碼圖像 244,344:幀間預測單元 254,354:幀內預測單元 260:模式選擇單元 262:分割單元 265,365:預測塊 266,366:語法元素 270:熵編碼單元 272,332:輸出端 304:熵解碼單元 360:模式應用單元 400:視訊譯碼設備 410:入埠 420:接收單元(Rx) 440:發送單元(Tx) 450:出埠 470:譯碼模組 500,2300,2400:裝置 506:資料 508:操作系統 510:應用程式 512:匯流排 518:顯示器 602,608,902:量化器(Q) 603,903:超編碼器 605,609,905:算術編碼器(AE) 606,610,1006:算術解碼器(AD) 607,907,1007:超解碼器 801~806:下采樣層 807~812:上采樣層 820,830:卷積層 813,815:組件 814:輸入圖像 1201:廣義分散歸一化 1202:逆GDN 1203:泄漏ReLu 1204:卷積掩碼 1206:高斯熵模型 2310,2410:處理電路 2312:獲取模組 2314,2412:劃分模組 2316:解析模組 2318,2414:確定模組 2320,2416:處理模組 2322:重建模組 2418:插入模組 (h1,w1),(h2,w2):輸入子集的大小 (H1,W1),(H2,W2):輸出子集的大小 (L):樣本輸入集 L:圖像(空間) (L1,L2),L1,L2,Li:輸入子集(區域) L i,L 1,L 2:輸入空間(區域) (R1,R2),(R1),(R2),R1~R4,Ri:輸出子集(區域) R i,R 1,R 2,R 3,R 4:重建區域 R-crop i,R-crop 1,R-crop 2,R-crop 3,R-crop 4:裁剪區域 S2110,S2120,S2130,S2140,S2150,S2152,S2160,S2210,S2220,S2230,S2232,S2240:步驟
圖1A為用於實現本發明實施例的視訊譯碼系統的一個示例的方塊圖。 圖1B為用於實現本發明實施例的視訊譯碼系統的另一個示例的方塊圖。 圖2為編碼裝置或解碼裝置的一個示例的方塊圖。 圖3為編碼裝置或解碼裝置的另一個示例的方塊圖。 圖4為包括超先驗模型的變分自動編碼器架構的示意圖。 圖5為示例性自動編碼器的各部分的方塊圖。 圖6為符合VAE框架的編碼器和解碼器的方塊圖。 圖7為根據一個實施例的具有根據圖6的相應部件的編碼器的方塊圖。 圖8為根據一個實施例的具有根據圖6的相應部件的解碼器的方塊圖。 圖9示出了編碼器對輸入資料的壓縮和解碼器對資料的解壓縮,其中,壓縮資料由潛在空間表示。 圖10為包括類似於圖4的超先驗模型的變分自動編碼器架構的另一個示例的示意圖。 圖11示出了包括生成輸出樣本所需的所有輸入樣本的總接受域。 圖12示出了總接受域的子集,在這種情況下,輸出樣本是由較少量的樣本(子集)生成的,並作為總接受域的樣本數。可能需要填充樣本。 圖13示出了使用兩個卷積層將輸入樣本下采樣到一個輸出樣本。 圖14示例性地使用兩個具有3×3內核大小的卷積層計算一組2×2輸出樣本的總接受域。 圖15示出了並行處理的一個示例,其中,圖像被劃分為兩個分塊,相應位元流的解碼和樣本重建均獨立執行。 圖16示出了並行處理的示例,其中,編碼樹塊(coding tree block,CTB)被劃分為條帶(行),其中,每個條帶的位元流(幾乎)獨立解碼,但條帶的樣本重建不是獨立執行的。 圖17A示出了將輸入圖像劃分為重疊區域Li、在重疊區域中的樣本的後續裁剪以及裁剪區域的級聯的示例。每個Li包括總接受域。 圖17B示出了將輸入圖像劃分為重疊區域Li的另一個示例,類似於圖17A,但取消了裁剪。 圖18示出了將輸入圖像劃分為重疊區域Li、在重疊區域中的樣本的後續裁剪以及裁剪區域的級聯的示例。每個Li包括總接受域的子集。 圖19示出了將輸入圖像劃分為非重疊區域Li、樣本的後續裁剪以及裁剪區域的級聯的示例。每個Li包括總接受域的子集。 圖20示出了可以包括在位元流中(並從位元流解析)的各種參數,例如區域Li、Ri和重疊區域等的大小。 圖21示出了用於重建圖像的處理方法的流程圖。 圖22示出了用於對圖像進行編碼的處理方法的流程圖。 圖23示出了用於重建圖像的裝置的方塊圖,該裝置包括處理電路。處理電路可以包括執行重建方法的處理的模組。 圖24示出了用於對圖像進行編碼的裝置的方塊圖,該裝置包括處理電路。處理電路可以包括執行編碼方法的處理的模組。 圖25為用於實現本發明實施例的示例性混合編碼器的方塊圖。 圖26為用於實現本發明實施例的示例性混合解碼器的方塊圖。
L1,L2:區域
R1,R2:重建區域
R-crop1,R-crop2,R-crop3,R-crop4:裁剪區域

Claims (31)

  1. 一種用於從位元流重建圖像的方法,由用於從位元流重建圖像的裝置執行,其特徵在於,所述方法包括:根據所述位元流,獲得表示所述圖像的樣本輸入集(L);將所述樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);從所述位元流解析邊資訊;根據所述邊資訊,確定所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2));處理所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,所述處理包括用包括一個或多個層的神經網路進行處理,所述神經網路使用所述兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成所述兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為所述兩個或更多個輸入子集獲得所述相應的兩個或更多個輸出子集(R1,R2);通過組合所述兩個或更多個輸出子集重建所述圖像(R),其中,所述輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得所述相應的輸出子集(R1,R2)的大小所需的大小。
  2. 如請求項1所述的方法,其特徵在於,所述處理所述兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。
  3. 如請求項2所述的方法,其特徵在於,待填充樣本的位置和/或量是根據所述邊資訊確定的。
  4. 如請求項1至3中任一項所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。
  5. 如請求項1所述的方法,其特徵在於,所述組合所述兩個或更多個輸出子集(R1,R2)包括所述兩個或更多個輸出子集(R1,R2)之間重疊一個或多個組合樣本,所述組合樣本是作為第一輸出子集(R1)的樣本和第二輸出子集(R2)的樣本的組合而獲得的樣本。
  6. 如請求項1所述的方法,其特徵在於,所述處理所述兩個或更多個輸入子集中的每一個輸入子集包括:在用所述一個或多個層處理之後,裁剪一個或多個樣本。
  7. 如請求項6所述的方法,其特徵在於,所述裁剪是在用所述神經網路處理所述兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得所述兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集;所述兩個或更多個輸出子集的所述組合是沒有重疊的融合。
  8. 如請求項6或7所述的方法,其特徵在於,待裁剪樣本的位置和/或量是根據所述邊資訊確定的。
  9. 如請求項8所述的方法,其特徵在於,所述待裁剪樣本的所述位置和/或量是根據所述邊資訊中指示的所述輸入子集的大小以及所述神經網路的神經網路大小調整參數確定的,其中,所述神經網路大小調整參數表示所述網路的輸入的大小與所述網路的輸出的大小之間的關係。
  10. 如請求項9所述的方法,其特徵在於,所述邊資訊包括以下一項或多項的指示:所述輸入子集的數量,所述樣本輸入集的大小,所述兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),所述重建的圖像(R)的大小(H,W),所述兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),所述兩個或更多個輸入子集(L1,L2)之間的重疊量,所述兩個或更多個輸出子集(R1,R2)之間的重疊量。
  11. 如請求項1所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集是矩形樣本輸入集(L)的矩形區域,所述兩個或更多個輸出子集(R1,R2)中的每一個輸出子 集是矩形重建圖像(R)的矩形區域。
  12. 如請求項1所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)獨立處理。
  13. 如請求項1所述的方法,其特徵在於,所述解析所述邊資訊包括解析序列參數集或圖像參數集或圖像標頭中的一個或多個。
  14. 一種用於將圖像編碼到位元流中的處理方法,由用於將圖像編碼到位元流中的處理裝置執行,其特徵在於,所述方法包括:將表示所述圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);根據所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊;處理所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,所述處理包括用包括一個或多個層的神經網路進行處理,所述神經網路使用所述兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成所述兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為所述兩個或更多個輸入子集獲得所述相應的兩個或更多個輸出子集(R1,R2); 將所述邊資訊插入所述位元流中,其中,所述輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得所述相應的輸出子集(R1,R2)的大小所需的大小。
  15. 如請求項14所述的方法,其特徵在於,還包括將所述兩個或更多個輸出子集(R1,R2)的指示插入所述位元流。
  16. 如請求項14或15所述的方法,其特徵在於,所述處理所述兩個或更多個輸入子集中的每一個輸入子集包括在用所述一個或多個層處理之前進行填充。
  17. 如請求項16所述的方法,其特徵在於,待填充樣本的位置和/或量是根據所述邊資訊確定的。
  18. 如請求項14所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)之間重疊一個或多個樣本。
  19. 如請求項14所述的方法,其特徵在於,所述處理所述兩個或更多個輸入子集中的每一個輸入子集包括:在用所述一個或多個層處理之後,裁剪一個或多個樣本。
  20. 如請求項19所述的方法,其特徵在於,所述裁剪是在用所述神經網路處理所述兩個或更多個輸入子集中的一個或多個輸入子集之後進行的,以獲得所述兩個或更多個輸出子集(R1,R2)中相應的一個或多個輸出子集。
  21. 如請求項19或20所述的方法,其特徵在於,所述邊資訊是根據所述待裁剪樣本的位置和/或量確定的。
  22. 如請求項21所述的方法,其特徵在於,所述待裁剪樣本的所述位置和/或量是根據所述邊資訊中指示的所述輸入子集的大小以及所述神經網路的神經網路大小調整參數確定的,其中,所述神經網路大小調整參數表示所述網路的輸入的大小與所述網路的輸出的大小之間的關係。
  23. 如請求項22所述的方法,其特徵在於,所述邊資訊包括以下一項或多項的指示:所述輸入子集的數量,所述樣本輸入集的大小,所述兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),所述圖像(R)的大小(H,W),所述兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),所述兩個或更多個輸入子集(L1,L2)之間的重疊量,所述兩個或更多個輸出子集(R1,R2)之間的重疊量。
  24. 如請求項14所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集是矩形樣本輸入集(L)的矩形區域,所述兩個或更多個輸出子集(R1,R2)中的每一個輸出子 集都是矩形區域。
  25. 如請求項14所述的方法,其特徵在於,所述兩個或更多個輸入子集(L1,L2)獨立處理。
  26. 如請求項14所述的方法,其特徵在於,所述插入所述邊資訊包括將所述邊資訊插入序列參數集或圖像參數集或圖像標頭中的一個或多個。
  27. 一種儲存在非暫態介質中的電腦程式產品,其特徵在於,所述電腦程式產品包括程式碼,當一個或多個處理器執行所述程式碼時,所述程式碼執行請求項1至26中任一項的步驟。
  28. 一種用於從位元流重建圖像的裝置,其特徵在於,所述裝置包括處理電路,所述處理電路用於:根據所述位元流,獲得表示所述圖像的樣本輸入集(L);將所述樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);從所述位元流解析邊資訊;根據所述邊資訊,確定所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2));處理所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,所述處理包括用包括一個或多個層的神經網路進 行處理,所述神經網路使用所述兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成所述兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為所述兩個或更多個輸入子集獲得所述相應的兩個或更多個輸出子集(R1,R2);通過組合所述兩個或更多個輸出子集重建所述圖像(R),其中,所述輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得所述相應的輸出子集(R1,R2)的大小所需的大小。
  29. 一種用於將圖像編碼到位元流中的處理裝置,其特徵在於,所述處理裝置包括處理電路,所述處理電路用於:將表示所述圖像的樣本輸入集(L)劃分為兩個或更多個輸入子集(L1,L2);根據所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集的大小((h1,w1),(h2,w2))和/或兩個或更多個輸出子集(R1,R2)中的每一個輸出子集的大小((H1,W1),(H2,W2)),確定邊資訊;處理所述兩個或更多個輸入子集(L1,L2)中的每一個輸入子集,其中,所述處理包括用包括一個或多個層的神經網路進行處理,所述神經網路使用所述兩個或更多個輸入子集(L1,L2)中的一個輸入子集的多個樣本來生成所述兩個或更多個輸出子集(R1,R2)中的相應的輸出子集的一個樣本,從而為所述兩 個或更多個輸入子集獲得所述相應的兩個或更多個輸出子集(R1,R2);將所述邊資訊插入所述位元流中,其中,所述輸入子集中的至少一個輸入子集的大小小於通過所述一個或多個層處理之後獲得所述相應的輸出子集(R1,R2)的大小所需的大小。
  30. 一種用於從位元流重建圖像的裝置,其特徵在於,所述裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,所述非暫態電腦可讀記錄媒體與所述一個或多個處理器耦合併儲存由所述一個或多個處理器執行的程式,其中,當所述一個或多個處理器執行所述程式時,所述程式使所述處理器執行如請求項1至13中任一項所述的方法。
  31. 一種用於將圖像編碼到位元流中的處理裝置,其特徵在於,所述處理裝置包括:一個或多個處理器;非暫態電腦可讀記錄媒體,所述非暫態電腦可讀記錄媒體與所述一個或多個處理器耦合併儲存由所述一個或多個處理器執行的程式,其中,當所述一個或多個處理器執行所述程式時,所述程式使所述處理器執行如請求項14至26中任一項所述的方法。
TW110146894A 2020-12-17 2021-12-15 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品 TWI834087B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/EP2020/086798 WO2022128105A1 (en) 2020-12-17 2020-12-17 Decoding and encoding of neural-network-based bitstreams
WOPCT/EP2020/086798 2020-12-17

Publications (2)

Publication Number Publication Date
TW202228081A TW202228081A (zh) 2022-07-16
TWI834087B true TWI834087B (zh) 2024-03-01

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200186809A1 (en) 2018-12-05 2020-06-11 Google Llc Hybrid Motion-Compensated Neural Network with Side-Information Based Video Coding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200186809A1 (en) 2018-12-05 2020-06-11 Google Llc Hybrid Motion-Compensated Neural Network with Side-Information Based Video Coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
期刊 DAVID MINNEN ET AL: "Spatially adaptive image compression using a tiled deep network", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 2018-02-07 XP081219784.

Similar Documents

Publication Publication Date Title
US20230336784A1 (en) Decoding and encoding of neural-network-based bitstreams
TWI830107B (zh) 通過指示特徵圖資料進行編碼
US20230336759A1 (en) Decoding with signaling of segmentation information
US20230353764A1 (en) Method and apparatus for decoding with signaling of feature map data
CN115606179A (zh) 用于使用学习的下采样特征进行图像和视频编码的基于学习的下采样的cnn滤波器
CN116965029A (zh) 使用卷积神经网络对图像进行译码的装置和方法
JP2023543520A (ja) 機械学習を基にしたピクチャコーディングにおけるクロマサブサンプリングフォーマット取り扱いのための方法
US20240037802A1 (en) Configurable positions for auxiliary information input into a picture data processing neural network
US20240161488A1 (en) Independent positioning of auxiliary information in neural network based picture processing
CN116508320A (zh) 基于机器学习的图像译码中的色度子采样格式处理方法
TW202337211A (zh) 條件圖像壓縮
TW202318265A (zh) 基於注意力的圖像和視訊壓縮上下文建模
WO2023172153A1 (en) Method of video coding by multi-modal processing
TWI834087B (zh) 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品
TW202416712A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
US20240015314A1 (en) Method and apparatus for encoding or decoding a picture using a neural network
WO2024002497A1 (en) Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WO2024002496A1 (en) Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WO2023091040A1 (en) Generalized difference coder for residual coding in video compression
WO2024083405A1 (en) Neural network with a variable number of channels and method of operating the same
CN117501696A (zh) 使用在分块之间共享的信息进行并行上下文建模