TW202416712A - 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq - Google Patents

使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq Download PDF

Info

Publication number
TW202416712A
TW202416712A TW112124318A TW112124318A TW202416712A TW 202416712 A TW202416712 A TW 202416712A TW 112124318 A TW112124318 A TW 112124318A TW 112124318 A TW112124318 A TW 112124318A TW 202416712 A TW202416712 A TW 202416712A
Authority
TW
Taiwan
Prior art keywords
blocks
processing
component
image
size
Prior art date
Application number
TW112124318A
Other languages
English (en)
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
Application filed by 大陸商華為技術有限公司 filed Critical 大陸商華為技術有限公司
Publication of TW202416712A publication Critical patent/TW202416712A/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本發明涉及以分塊為單位對圖像區域進行圖像編碼和解碼。具體地,在多個流水線中在空間維度上處理輸入張量的多個分量,包括第一分量和第二分量。所述第一分量的所述處理包括將所述第一分量在所述空間維度上劃分為第一多個分塊。類似地,所述第二分量的所述處理包括將所述第二分量在所述空間維度上劃分為第二多個分塊。然後分別處理相應的所述第一多個分塊和所述第二多個分塊。在所述第一多個分塊和所述第二多個分塊中,至少有兩個大小不同的相應的並置分塊。在壓縮的情況下,所述第一分量和/或所述第二分量的所述處理包括圖像編碼、速率失真優化量化和圖像濾波。在解壓縮的情況下,所述處理包括圖像解碼和圖像濾波。

Description

使用神經網路進行圖像區域的並行處理-解碼、後濾波和RDOQ
本發明實施例大體上涉及圖像或視頻編解碼領域,具體涉及基於神經網路的碼流的編解碼。
視頻解碼(視頻編碼和解碼)廣泛用於數位視頻應用,例如廣播數位電視、基於互聯網和移動網路的視頻傳輸、視頻聊天和視頻會議等即時會話應用、DVD和藍光光碟、視頻內容採集和編輯系統以及安全應用的可攜式攝像機。
即使視頻較短,也需要大量的視頻資料來描繪,當資料要在頻寬容量受限的通信網路中資料流或以其它方式傳輸時,這樣可能會造成困難。因此,視頻資料通常要先壓縮,然後通過現代電信網路進行傳輸。由於記憶體資源有限,當在存放裝置中儲存視頻時,需要考慮該視頻的大小。視頻壓縮設備通常在信源側使用軟體和/或硬體對視頻資料進行編碼,然後傳輸或儲存視頻資料,從而減少表示數位視頻圖像所需的資料量。然後,對視頻資料進行解碼的視頻解壓縮設備在目的地側接收壓縮資料。在有限的網路資源以及對更高視頻品質的需求不斷增長的情況下,需要改進壓縮和解壓縮技術,這些改進的技術在幾乎不影響圖像品質的情況下能夠提高壓縮比。
利用人工神經網路的神經網路(neural network,NN)和深度學習(deep-learning,DL)技術已經使用了一段時間,這些技術也用於視頻、圖像(如靜止圖像)等的編解碼技術領域。
希望進一步提高基於訓練後的網路(例如,神經網路(neural network,NN))的這種圖像解碼(視頻圖像解碼或靜止圖像解碼)的效率,該訓練網路考慮了可用記憶體和/或解碼器和/或編碼器的處理速度的限制。
本發明的一些實施例提供了用於以高效的方式對圖像進行編碼和/或解碼的方法和裝置,從而減少了處理單元的記憶體佔用空間和所需的操作頻率。具體地,本發明能夠在適用於移動圖像和靜止圖像的基於NN的視頻/圖像編碼-解碼框架內在記憶體資源與計算複雜度之間取得平衡。
上述和其它目的通過獨立請求項請求保護的主題實現。其它實現方式從附屬請求項、說明書和附圖中是顯而易見的。
根據本發明的一方面,提供了一種用於對表示圖像資料的輸入張量進行處理的方法,所述方法包括以下步驟:在空間維度上處理所述輸入張量的多個分量,所述多個分量包括第一分量和第二分量,所述處理包括:處理所述第一分量,包括:將所述第一分量在所述空間維度上劃分為第一多個分塊並分別處理所述第一多個分塊中的所述分塊;處理所述第二分量,包括:將所述第二分量在所述空間維度上劃分為第二多個分塊並分別處理所述第二多個分塊中的所述分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。因此,表示圖像資料的輸入張量可以通過在多個流水線內以樣本對齊的方式使用分塊而在分量基礎上高效地處理。因此,降低了記憶體要求,同時提高了處理性能(例如壓縮和解壓縮),而不增加計算複雜度。
在一些示例性實現方式中,所述第一多個分塊中的至少兩個分塊獨立或並行處理;和/或所述第二多個分塊中的至少兩個分塊獨立處理或並行處理。因此,可以快速處理輸入張量的分量,從而提高處理效率。
在另一種實現方式中,所述第一分量表示所述圖像資料的亮度分量;所述第二分量表示所述圖像資料的色度分量。因此,所述亮度和所述色度分量可以通過同一處理框架內的多個流水線來處理。
在一個示例中,在所述空間維度中的至少一個維度上相鄰的所述第一多個分塊中的分塊部分重疊;和/或在所述空間維度中的至少一個維度上相鄰的所述第二多個分塊中的分塊部分重疊。因此,可以提高重建圖像的品質,尤其是沿著分塊的邊界。因此,可以減少圖像偽影。
根據一種實現方式,所述第一分量的所述劃分包括根據第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或所述第二分量的所述劃分包括根據第二預定義條件確定所述第二多個分塊中的分塊的大小。例如,所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。因此,可以根據可用的解碼器資源和/或運動來調整和優化分塊大小,從而實現基於內容的分塊大小。在另一個示例中,確定所述第二多個分塊中的所述分塊的大小包括縮放所述第一多個分塊中的所述分塊。因此,可以快速確定第二多個分塊中的分塊大小,從而提高分塊的處理效率。
在示例性實現方式中,所確定的所述第一多個分塊和/或所述第二多個分塊中的分塊的大小的指示被編碼到碼流中。因此,所述分塊大小的指示被高效地包括在碼流中,需要的處理較少。
在另一種實現方式中,所述第一多個分塊中的所有分塊的大小相同和/或所述第二多個分塊中的所有分塊的大小相同。因此,可以高效地處理分塊,而無需附加的處理來處理不同的分塊大小,從而加速分塊處理。
在第二示例中,所述指示還包括所述第一多個分塊和/或所述第二多個分塊中的所述分塊的位置。
根據一種實現方式,所述第一分量為亮度分量,所述碼流中包括所述第一多個分塊中的所述分塊的所述大小的所述指示;所述第二分量是色度分量,所述碼流中包括縮放因數的指示,其中,所述縮放因數與所述第一多個分塊中的所述分塊的所述大小和所述第二多個分塊中的所述分塊的所述大小相關。因此,通過縮放所述亮度分量的分塊大小的快速操作,可以快速獲得所述色度分量的分塊大小。此外,可以通過使用縮放因數作為指示來減少用於指示色度的分塊大小的開銷。
在示例性實現方式中,所述輸入張量的所述處理包括作為圖像或移動圖像壓縮的一部分的處理。例如,第一分量和/或第二分量的處理包括以下步驟之一:神經網路的圖像編碼;速率失真優化量化(rate distortion optimization quantization,RDOQ);圖像濾波。因此,壓縮處理可以按包括各種處理(編碼、RDOQ和濾波)的靈活的方式執行。
另一種示例性實現方式包括:通過將所述第一分量和所述第二分量的所述處理的輸出包括到所述碼流中,生成所述碼流。因此,處理輸出可以快速包括到碼流中,需要的處理較少。
在示例性實現方式中,所述輸入張量的所述處理包括作為圖像或移動圖像解壓縮的一部分的處理。例如,第一分量和/或第二分量的處理包括以下步驟之一:神經網路的圖像解碼;圖像濾波。因此,解壓縮處理可以按包括各種處理(編碼和濾波)的靈活的方式執行。例如,所述第二分量的所述處理包括根據所述圖像的亮度分量的表示對所述圖像的色度分量進行解碼。因此,亮度分量可以用作用於對色度分量進行解碼的輔助資訊。這可以提高經解碼的色度的品質。在另一個示例中,所述第一分量和/或所述第二分量的所述處理包括圖像後濾波;對於所述第一多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的;對於所述第二多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的。因此,濾波器參數可以通過碼流高效地指示。此外,後濾波可以使用適合於分塊大小的濾波器參數來執行,從而提高重建圖像資料的品質。
在示例性實現方式中,所述輸入張量為包括所述多個分量中的一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。
根據本發明的一方面,提供了一種儲存在非暫態性媒體中的電腦程式,該電腦程式包括代碼,當所述代碼在一個或多個處理器上執行時,所述代碼執行本發明的任一上述方面的步驟。
根據本發明的一方面,提供了一種裝置,用於處理表示圖像資料的輸入張量,所述裝置包括處理電路,所述處理電路用於:在空間維度上處理所述輸入張量的多個分量,所述多個分量包括第一分量和第二分量,所述處理包括:處理所述第一分量,包括:將所述第一分量在所述空間維度上劃分為第一多個分塊並分別處理所述第一多個分塊中的所述分塊;處理所述第二分量,包括:將所述第二分量在所述空間維度上劃分為第二多個分塊並分別處理所述第二多個分塊中的所述分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。
根據本發明的一方面,提供了一種用於處理表示圖像資料的輸入張量的裝置,所述裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述處理裝置執行根據本發明的任何上述方面的方法。
本發明既適用於端到端AI轉碼器,也適用於混合AI轉碼器。例如,在混合AI轉碼器中,濾波操作(重建圖像的濾波)可以通過神經網路(neural network,NN)執行。本發明應用於這種基於NN的處理模組。通常,如果所述處理的至少一部分包括NN,並且如果該NN包括卷積或轉置卷積操作,則本發明可以應用於整個或部分視頻壓縮和解壓縮過程。例如,本發明適用於作為編碼器和/或解碼器執行的處理的一部分執行的單獨的處理任務,包括環內濾波和/或後濾波和/或預濾波。
需要說明的是,本發明不限於具體框架。此外,本發明不限於圖像或視頻壓縮,並且也可以應用於物件檢測、圖像生成和識別系統。
本發明可以通過硬體(hardware,HW)和/或軟體(software,SW)實現。此外,基於HW的實現方式可以與基於SW的實現方式相結合。
為了清楚起見,上述任一實施例可以與上述其它實施例中任何一個或多個組合以創建本發明範圍內的新實施例。
附圖及以下說明中將詳細描述一個或多個實施例。其它特徵、目標和優點在說明書、附圖以及請求項中顯而易見。
下面,結合附圖描述本發明的一些實施例。圖1至圖3涉及可以與其它附圖中描述的本發明的更多具體實施例一起使用的視頻編碼系統和方法。具體地,關於圖1至圖3描述的實施例可以與下文進一步描述的編碼/解碼技術一起使用,所述編碼/解碼技術利用神經網路來對碼流進行編碼和/或對碼流進行解碼。
在以下描述中,參考構成本發明的一部分的附圖,這些附圖通過說明的方式示出本發明的具體方面或可以使用本發明實施例的具體方面。應理解,實施例可以用於其它方面,並且包括在附圖中未示出的結構上或邏輯上的變化。因此,以下詳細描述不應以限制性的意義來理解,並且本發明的範圍由所附請求項限定。
例如,應理解,參考所描述的方法公開的內容對於用於執行該方法的對應的設備或系統也可以成立,反之亦然。例如,如果描述了一個或多個特定的方法步驟,則對應的設備可以包括一個或多個單元,例如用於執行所描述的一個或多個方法步驟的功能單元(例如,執行一個或多個步驟的一個單元;或者多個單元,每個單元執行多個步驟中的一個或多個),即使一個或多個單元在附圖中未明確描述或示出時也是如此。此外,例如,如果根據一個或多個單元(例如功能單元)來描述特定裝置,則對應的方法可以包括用於執行一個或多個單元的功能的一個步驟(例如執行一個或多個單元的功能的一個步驟,或多個步驟,每個步驟執行多個單元中的一個或多個單元的功能),即使一個或多個步驟在附圖中未明確描述或示出時也是如此。此外,應理解,除非特別指出,否則本文描述的各種示例性實施例和/或方面的特徵可以彼此組合。
視頻解碼通常是指對形成視頻或視頻序列的圖像序列進行處理。在視頻解碼領域,術語「幀(frame)」與「圖像(picture/image)」可以用作同義詞。視頻解碼(或通常稱為解碼)包括視頻編碼和視頻解碼兩部分。視頻編碼在源端執行,並且通常包括處理(例如,通過壓縮)原始視頻圖像,以減少表示視頻圖像所需的資料量(以獲得更高效的儲存和/或傳輸)。視頻解碼在目的端執行,並且通常包括相對於編碼器的逆處理以重建視頻圖像。實施例涉及的視頻圖像(或通常稱為圖像)的「解碼」應理解為視頻圖像或各自視頻序列的「編碼」或「解碼」。編碼部分和解碼部分也合稱為編解碼(編碼和解碼)。
在無損視頻解碼情況下,可以重建原始視頻圖像,即重建視頻圖像與原始視頻圖像具有相同的品質(假設儲存或傳輸期間沒有傳輸損耗或其它資料丟失)。在有損視頻解碼的情況下,通過量化等方式進行進一步壓縮,以減少表示視頻圖像所需的資料量,在解碼端無法完全重建視頻圖像,即,重建視頻圖像的品質比原始視頻圖像的品質低或差。
若干個視頻解碼標準屬於「有損混合視頻轉碼器」組(即,將樣本域中的空間和時間預測與2D變換解碼相結合,以在變換域中進行量化)。視頻序列中的每個圖像通常分割為一組不重疊的塊,解碼通常在塊級進行。換句話說,在編碼端,通常在塊(視頻塊)級別上對視頻進行處理(即,編碼),例如,通過使用空間(幀內圖像)預測和/或時間(幀間圖像)預測來生成預測塊,從當前塊(當前處理/待處理塊)中減去預測塊以獲得殘差塊,變換殘差塊並在變換域中量化殘差塊以減少待發送(壓縮)的資料量,而在解碼端,相對於編碼器的逆處理用於編碼的或壓縮的塊,以重建當前塊用於表示。此外,編碼器按照解碼器處理迴圈來處理,使得兩者生成相同的預測(例如,幀內和幀間預測)和/或重建,以用於進行處理,即,對後續塊進行解碼。最近,一部分或整個編解碼鏈已經通過使用神經網路,或一般地,使用任何機器學習或深度學習框架來實現。
在以下視頻解碼系統10的實施例中,視頻轉碼器20和視頻解碼器30根據圖1進行描述。
圖1A為示例性解碼系統10(例如可以使用本申請技術的視頻解碼系統10(或簡稱為解碼系統10))的示意性方塊圖。視頻解碼系統10的視頻轉碼器20(或簡稱為編碼器20)和視頻解碼器30(或簡稱為解碼器30)表示可以用於根據本申請中描述的各種示例執行技術的設備的示例。
如圖1A所示,解碼系統10包括源設備12,源設備12用於將經編碼的圖像資料21提供給目的地設備14等,以用於對經編碼的圖像資料13進行解碼。
源設備12包括編碼器20,並且可以附加地(即可選地)包括圖像源16、前置處理器(預處理單元)18(例如圖像前置處理器18)和通信介面或通信單元22。本發明的一些實施例(例如,涉及兩個過程層之間的初始重新縮放或重新縮放)可以由編碼器20實現。一些實施例(例如與初始重新縮放相關)可以由圖像前置處理器18實現。
圖像源16可以包括或可以是:任何類型的圖像擷取裝置,例如用於捕獲真實世界圖像的攝像機;和/或任何類型的圖像生成設備,例如用於生成電腦動畫圖像的電腦圖形處理器;或用於獲得和/或提供真實世界圖像、電腦動畫圖像(例如螢幕內容、虛擬實境(virtual reality,VR)圖像),和/或其任何組合(例如增強現實(augmented reality,AR)圖像)的任何類型的設備。圖像源可以為儲存上述圖像中任何圖像的任何類型的記憶體或儲存裝置。
為了與前置處理器18和由預處理單元18執行的處理進行區分,圖像或圖像資料17也可以稱為原始圖像或原始圖像資料17。
前置處理器18用於接收(原始)圖像資料17,並對圖像資料17進行預處理,以獲得預處理圖像19或預處理圖像資料19。前置處理器18執行的預處理可以包括修正(trimming)、顏色格式轉換(例如,通常從RGB到YCbCr或從RGB到YUV)、顏色校正或去噪等。可以理解的是,預處理單元18可以是可選的元件。在下文中,顏色空間分量(例如RGB空間的R、G、B和YUV空間的Y、U、V)也被稱為顏色通道。此外,在YUV或YCbCr顏色空間中,Y代表亮度,U、V、Cb、Cr代表色度通道(分量)。
視頻轉碼器20用於接收預處理圖像資料19並提供經編碼的圖像資料21(例如,下文根據圖4進一步詳細描述)。編碼器20可以通過處理電路46實現,以實現結合圖4的編碼器20和/或本文描述的任何其它編碼器系統或子系統所討論的各種模組。
源設備12中的通信介面22可以用於:接收經編碼的圖像資料21並通過通信通道13向目的地設備14等另一個設備或任何其它設備發送經編碼的圖像資料21(或任何其它處理後的版本),以用於儲存或直接重建。
目的地設備14包括解碼器30(例如視頻解碼器30),並且可以另外(即可選地)包括通信介面或通信單元28、後處理器32(或後處理單元32)和顯示裝置34。
目的地設備14的通信介面28用於例如直接從源設備12,或從任何其它源(例如存放裝置,例如經編碼的圖像資料存放裝置)接收經編碼的圖像資料21(或任何其它處理後的版本),並將經編碼的圖像資料21提供給解碼器30。
通信介面22和通信介面28可以用於通過源設備12與目的地設備14之間的直接通信鏈路(例如直接有線或無線連接),或者通過任何類型的網路(例如有線網路、無線網路、有線網路和無線網路的任何組合、任何類型的私網和公網、任何類型的私網和公網的組合),發送或接收經編碼的圖像資料21或經編碼的資料13。
例如,通信介面22可以用於將經編碼的圖像資料21封裝為報文等合適的格式,和/或使用任何類型的傳輸編碼或處理來處理經編碼的圖像資料,以便在通信鏈路或通信網路上進行傳輸。
例如,通信介面28(與通信介面22對應)可以用於接收所發送的資料,並使用任何類型的對應傳輸解碼或處理和/或解封裝過程對傳輸資料進行處理,以獲得經編碼的圖像資料21。
通信介面22和通信介面28均可配置為如圖1A中從源設備12指向目的地設備14的通信通道13的箭頭所表示的單向通信介面,或配置為雙向通信介面,並且可用於發送和接收消息,建立連接,確認並交換與通信鏈路和/或資料傳輸(例如經編碼的圖像資料的傳輸)相關的任何其它資訊等。
解碼器30用於接收經編碼的圖像資料21並提供經解碼的圖像資料31或經解碼的圖像31(例如,下文根據圖3和圖5進一步詳細描述)。解碼器30可以通過處理電路46實現,以實現結合圖5的解碼器30所討論的各種模組和/或本文所描述的任何其它解碼器系統或子系統。
目的地設備14的後處理器32用於對經解碼的圖像資料31(也稱為重建圖像資料),例如經解碼的圖像31,進行後處理,以獲得後處理圖像資料33,例如後處理圖像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為本發明實施例提供的視頻解碼設備200的示意圖。視頻解碼設備200適合於實現如本文所描述的公開實施例。在一個實施例中,視頻解碼設備200可以是解碼器(如圖1A的視頻解碼器30)或編碼器(如圖1A的視頻轉碼器20)。
視頻解碼設備200包括:用於接收資料的入埠210(或輸入埠210)和接收單元(Rx)220;用於處理所述資料的處理器、邏輯單元或中央處理器(central processing unit,CPU)230;用於發送所述資料的發送單元(Tx)240和出埠250(或輸出埠250);用於儲存所述資料的記憶體260。視頻解碼設備200還可以包括耦合到入埠210、接收單元220、發送單元240和出埠250的光電(optical-to-electrical,OE)組件和電光(electrical-to-optical,EO)元件,用作光信號或電信號的出口或入口。
處理器230通過硬體和軟體實現。處理器230可以實現為一個或多個CPU晶片、核(例如,多核處理器)、FPGA、ASIC和DSP。處理器230與入埠210、接收單元220、發送單元240、出埠250和記憶體260通信。處理器230包括解碼模組270。解碼模組270實現以上所描述的公開實施例。例如,解碼模組270執行、處理、準備或提供各種解碼操作。因此,將解碼模組270包括在內,這為視頻解碼設備200的功能提供了實質性的改進,並且影響了視頻解碼設備200到不同狀態的變換。或者,以儲存在記憶體260中並由處理器230執行的指令來實現解碼模組270。
記憶體260可以包括一個或多個磁片、磁帶機和固態硬碟,並且可以用作溢出資料存放裝置,以在選擇此類程式用於執行時儲存程式,以及儲存在程式執行期間讀取的指令和資料。例如,記憶體260可以是揮發性和/或非揮發性的,並且可以是唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random access memory,RAM)、三態內容定址記憶體(ternary content-addressable memory,TCAM)和/或靜態隨機存取記憶體(static random-access memory,SRAM)。
圖3為示例性實施例提供的裝置300的簡化方塊圖,該裝置300可以用作圖1中的源設備12和目的地設備14中的任一者或兩者。
裝置300中的處理器302可以是中央處理器。或者,處理器302可以是能夠操縱或處理現在存在或以後開發的資訊的任何其它類型的設備或多個設備。儘管所公開的實現方式可以通過單個處理器(例如處理器302)實施,但是可以通過一個以上的處理器來提高速度和效率。
裝置300中的記憶體304在一種實現方式中可以是唯讀記憶體(read only memory,ROM)設備或隨機存取記憶體(random access memory,RAM)設備。可以使用任何其它合適類型的存放裝置作為記憶體304。記憶體304可以包括處理器302使用匯流排312存取的代碼和資料306。記憶體304還可以包括作業系統308和應用程式310,應用程式310包括使處理器302執行本文描述的方法的至少一個程式。例如,應用程式310可以包括應用程式1至N,其還包括執行本文所描述的方法的視頻解碼應用程式。
裝置300還可以包括一個或多個輸出設備,例如顯示器318。在一個示例中,顯示器318可以是觸摸敏感顯示器,觸摸敏感顯示器將顯示器與可操作以感測觸摸輸入的觸摸敏感元件相結合。顯示器318可以通過匯流排312耦合到處理器302。
儘管在這裡描述為單個匯流排,但裝置300的匯流排312可以由多個匯流排組成。此外,輔助儲存裝置314可以直接耦合到裝置300的其它元件,或者可以通過網路存取,並且可以包括單個集成單元(例如儲存卡)或多個單元(例如多個儲存卡)。因此,可以以多種配置實現裝置300。
圖4為用於實現本申請的技術的示例性視頻轉碼器20的示意性方塊圖。在圖4的示例中,視頻轉碼器20包括輸入端401(或輸入介面401)、殘差計算單元404、變換處理單元406、量化單元408、反量化單元410、逆變換處理單元412、重建單元414、環路濾波器420、解碼圖像緩衝區(decoded picture buffer,DPB)430、模式選擇單元460、熵編碼單元470和輸出端472(或輸出介面472)。模式選擇單元460可以包括幀間預測單元444、幀內預測單元454和分割單元462。幀間預測單元444可以包括運動估計單元和運動補償單元(圖中未示出)。圖4所示的視頻轉碼器20也可以稱為混合視頻轉碼器或根據混合視頻轉碼器的視頻轉碼器。
編碼器20可以用於通過輸入端401等接收圖像17(或圖像資料17),例如,形成視頻或視頻序列的圖像序列中的圖像。接收到的圖像或圖像資料還可以是預處理圖像19(或預處理圖像資料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分割成多個(通常為不重疊的)圖像塊403。這些塊也可以稱為根塊或宏塊(H.264/AVC標準)或稱為編碼樹塊(coding tree block,CTB)或編碼樹單元(coding tree unit,CTU)(H.265/HEVC和VVC標準)。圖像分割單元可以用於對視頻序列中的所有圖像和定義塊大小的對應的柵格使用相同的塊大小,或者改變圖像或子集或圖像組之間的塊大小,並將每個圖像分割為對應的塊。縮寫AVC代表高級視頻編碼。
在其它實施例中,視頻轉碼器可以用於直接接收圖像17的塊403,例如,組成圖像17的一個、若干個或所有塊。圖像塊403也可以稱為當前圖像塊或待編碼圖像塊。
儘管圖像塊403的尺寸小於圖像17,但是與圖像17一樣,圖像塊403也是或也可以被認為是具有強度值(樣本值)的樣本的二維陣列或矩陣。換句話說,塊403例如可以包括一個樣本陣列(例如,在黑白圖像17的情況下,亮度陣列)、三個樣本陣列(例如,在彩色圖像17的情況下,一個亮度陣列和兩個色度陣列)或任何其它數量和/或類型的陣列,這取決於應用的顏色格式。塊403在水準和垂直方向(或軸線)上的樣本數定義了塊403的大小。因此,某圖像塊可以為M×N(M列×N行)個樣本陣列,或M×N個變換係數陣列等。
在圖4所示的視頻轉碼器20的實施例中,視頻轉碼器20可以用於對圖像17逐塊地進行編碼,例如對每個塊403執行編碼和預測。
圖4所示的視頻轉碼器20的實施例還可以使用條帶(slice)(也稱為視頻條帶)對圖像進行分割和/或編碼,其中,可以使用一個或多個條帶(通常為不重疊的)對圖像進行分割或編碼,並且每個條帶可以包括一個或多個塊(例如,CTU)。
圖4所示的視頻轉碼器20的實施例還可以使用分塊組(tile group)(也稱為視頻分塊組)和/或分塊(也稱為視頻分塊)對圖像進行分割和/或編碼,其中,可以使用一個或多個分塊組(通常為不重疊的)對圖像進行分割或編碼,每個分塊組可以包括一個或多個塊(例如,CTU)或一個或多個分塊等,其中,每個分塊可以為矩形等形狀,可以包括一個或多個塊(例如,CTU),例如完整或部分塊。
圖5為用於實現本申請的技術的視頻解碼器30的示例。視頻解碼器30用於接收例如由編碼器20編碼的經編碼的圖像資料21(例如,經編碼的碼流21),以獲得經解碼的圖像531。經編碼的圖像資料或碼流包括用於對經編碼的圖像資料進行解碼的資訊,例如表示經編碼的視頻條帶(和/或分塊組或分塊)的圖像塊的資料和相關的語法元素。
熵解碼單元504用於解析碼流21(或通常稱為經編碼的圖像資料21),並對經編碼的圖像資料21進行熵解碼,以獲得量化係數309和/或經解碼的解碼參數(圖3中未示出)等,例如幀間預測參數(如參考圖像索引和運動向量)、幀內預測參數(如幀內預測模式或索引)、變換參數、量化參數、環路濾波參數和/或其它語法元素等中的任一者或全部。熵解碼單元504可以用於進行對應於編碼器20的熵編碼單元470所描述的編碼方案的解碼演算法或方案。熵解碼單元504還可以用於向模式應用單元360提供幀間預測參數、幀內預測參數和/或其它語法元素,並向解碼器30的其它單元提供其它參數。視頻解碼器30可以在視頻條帶級和/或視頻塊級接收語法元素。除了條帶和相應語法元素之外或作為條帶和相應語法元素的替代,還可以接收和/或使用分塊組和/或分塊以及相應語法元素。
重建單元514(例如,加法器或求和器514)可以用於將重建殘差塊513添加到預測塊565,以獲得樣本域中的重建塊515,例如,通過將重建殘差塊513的樣本值添加到預測塊565的樣本值。
圖5中所示的視頻解碼器30的實施例可以用於使用條帶(也稱為視頻條帶)對圖像進行分割和/或解碼。一個圖像可以分割成一個或多個(通常不重疊的)條帶或使用一個或多個(通常不重疊的)條帶進行解碼,每個條帶可以包括一個或多個塊(例如CTU)。
在實施例中,圖5所示的視頻解碼器30可以用於使用分塊組(也稱為視頻分塊組)和/或分塊(也稱為視頻分塊)對圖像進行分割和/或解碼。一個圖像可以分割成一個或多個分塊組(通常為不重疊的)或使用一個或多個分塊組(通常為不重疊的)進行解碼;每個分塊組可以包括一個或多個塊(例如,CTU)或一個或多個分塊等;每個分塊可以為矩形等,可以包括一個或多個完整或部分塊(例如,CTU)等。
視頻解碼器30的其它變型可以用於對經編碼的圖像資料21進行解碼。例如,解碼器30可以在沒有環路濾波單元520的情況下生成輸出視頻流。例如,對於某些塊或幀,基於非變換的解碼器30可以在沒有逆變換處理單元512的情況下直接量化殘差信號。在另一種實現方式中,視頻解碼器30可以將反量化單元510和逆變換處理單元512組合成單個單元。
應理解,在編碼器20和解碼器30中,可以針對當前環節的處理結果進行進一步處理,然後輸出到下一環節。例如,在插值濾波、運動向量推導或環路濾波等之後,可以對插值濾波、運動向量推導或環路濾波的處理結果進一步進行限幅(clip)或移位(shift)等操作。
在下文中,描述本發明的更具體的、非限制性的和示例性的實施例。先進行一些解釋和定義,以幫助理解本發明:
圖像大小
圖像大小是指圖像的寬度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]等於零。
人工神經網路
人工神經網路(artificial neural network,ANN)或連接論系統是一種計算系統,它模糊地受到構成動物大腦的生物神經網路的啟發。這些系統通過考慮示例來「學習」執行任務,通常不用特定任務規則程式設計。例如,在圖像識別中,這些系統可能會通過分析手動標記為「貓」或「無貓」的示例性圖像,並使用結果識別其它圖像中的貓來學習識別包含貓的圖像。這些系統事先對貓沒有任何瞭解,例如,這些貓是否有有毛皮、尾巴、鬍鬚和貓一樣的臉。而是,這些系統會從處理的示例中自動生成識別特徵。
ANN是基於被稱為人工神經元的連接單元或節點的集合,這些連接單元或節點鬆散地類比生物大腦中的神經元。每一個連接,就像生物大腦中的突觸一樣,都可以向其它神經元發送信號。一個人工神經元接收信號,然後對該信號進行處理,並可以向連接到該神經元的神經元發出信號。在ANN實現方式中,連接處的「信號」是實數,每個神經元的輸出可以通過其輸入之和的一些非線性函數計算。這些連接稱為邊(edge)。神經元和邊通常具有隨著學習進行調整的權重。權重可以增加或減少連接上的信號的強度。神經元可以有一個閾值,這樣只有在聚合信號超過該閾值時,才會發送信號。通常,神經元被聚集到各層中。不同的層可以對其輸入執行不同的變換。信號從第一層(輸入層)傳輸到最後一層(輸出層),在這期間可能多次遍歷這些層。
ANN方法的最初目標是以與人腦相同的方式解決問題。隨著時間的推移,注意力轉移到執行具體任務上,導致偏離了生物學。ANN已用於各種任務,包括電腦視覺、語音辨識、機器翻譯、社交網路過濾、棋盤和視頻遊戲、醫學診斷,甚至在傳統上被認為是人類專屬的活動,如繪畫。
下採樣層:
下採樣層是神經網路的一層,該層可以使輸入減小至少一個維度。通常,輸入可能有3個或更多個維度,其中,維度可能包括通道的數量、寬度和高度。下採樣層通常涉及減小寬度維度和/或高度維度。下採樣層可以使用卷積(可能有跨步)、求平均值、最大池化等操作來實現。
上採樣層:
上採樣層是神經網路的一層,改成可以使輸入增加至少一個維度。通常,輸入可能有3個或更多個維度,其中,維度可能包括通道的數量、寬度和高度。上採樣層通常涉及增加寬度維度和/或高度維度。它可以通過反卷積、複製等操作來實現。
特徵圖:
特徵圖是通過將濾波器(內核)或特徵檢測器應用於輸入圖像或先前層的特徵圖輸出來生成的。特徵圖視覺化提供了對模型中每個卷積層特定輸入的內部表示的深入瞭解。通常,特徵圖是神經網路層的輸出。特徵圖通常包括一個或多個特徵元素。
卷積神經網路
「卷積神經網路」(convolutional neural network,CNN)的名稱表明該網路使用了一種稱為卷積的數學運算。卷積是一種專門的線性運算。卷積網路是簡單的神經網路,卷積網路在其多個層中的至少一個層中使用卷積代替一般矩陣乘法。卷積神經網路由輸入層、輸出層和多個隱藏層組成。輸入層是被提供輸入以進行處理的層。
例如,圖6A的神經網路是CNN。CNN的隱藏層通常由一系列卷積層(例如,圖6A中的卷積層601和612)組成,這些卷積層用乘法或其它點積進行卷積。層的結果是一個或多個特徵圖,有時也稱為通道。部分或所有層可能涉及子採樣。因此,特徵圖可能會變得更小。CNN中的啟動函數可以是如上所述的整流線性單元(rectified linear unit,RELU)層或GDN層。啟動函數之後可以是附加的卷積,例如池化層、全連接層和歸一化層,這些卷積稱為隱藏層,因為這些卷積的輸入和輸出被啟動函數和最終卷積掩蓋。根據慣例,層被通俗地稱為卷積。從數學上講,卷積在技術上是一個滑動點積或互相關。這對矩陣中的索引具有重要意義,因為卷積影響在特定索引點確定權重的方式。
在對CNN進行程式設計以用於處理圖像時,輸入是一個張量(例如輸入張量,例如圖6A中的張量x 614),該張量形狀為(圖像數量)×(圖像寬度)×(圖像高度)×(圖像深度)。然後,在穿過卷積層之後,圖像被抽象為特徵圖(特徵張量),形狀為(圖像數量)×(特徵圖寬度)×(特徵圖高度)×(特徵圖通道)。在圖6A中,例如,該特徵圖為y。神經網路中的卷積層應具有以下屬性:通過寬度和高度(超參數)定義的卷積核。輸入通道和輸出通道的數量(超參數)。卷積濾波器(輸入通道)的深度應等於輸入特徵圖的數量通道(深度)。例如,圖6A中的卷積N×5×5是指大小為5×5和N個通道的內核,其中,N為等於或大於1的整數。
過去,傳統的多層感知器(multilayer perceptron,MLP)模型被用於圖像識別。但是,由於節點之間的全連接,這些節點受到高維度的影響,並且在高解析度圖像中無法很好地擴展。具有RGB顏色通道的1000×1000像素的圖像具有300萬權重,這個權重太大,以致於無法在全連接的情況下高效地進行大規模處理。此外,這種網路架構不考慮資料的空間結構,從而以與對待靠近的像素相同的方式對待相距很遠的輸入像素。這在計算上和在語義上都忽略了圖像資料中的參考局部性。因此,神經元的全連接對於由空間局部輸入模式主導的圖像識別等目的是浪費的。
卷積神經網路是受生物學啟發的多層感知器變體,專門設計用於類比視覺皮層的行為。CNN模型通過利用自然圖像中存在的強空間局部相關性來減輕MLP架構帶來的挑戰。卷積層是CNN的核心構建塊。該層的參數由一組可學習的濾波器(上述內核)組成,這些濾波器具有一個小的接受域,但延伸到輸入卷的整個深度。在正向傳遞期間,每個濾波器在輸入卷的寬度和高度上卷積,計算濾波器條目與輸入之間的點積,並生成該濾波器的2維啟動圖。因此,網路學習濾波器,這些濾波器在輸入中的某個空間位置檢測到某些特定類型的特徵時啟動。
沿深度維度堆疊所有濾波器的啟動圖形成卷積層的完整輸出卷。因此,輸出卷中的每個條目也可以被解釋為神經元的輸出,該神經元查看輸入中的一個小區域,並與同一啟動圖中的神經元共用參數。特徵圖或啟動圖是給定濾波器的輸出啟動。特徵圖和啟動具有相同的含義。在一些論文中稱為啟動圖,因為它是對應於圖像不同部分的啟動的映射,也稱為特徵圖,因為它也是圖像中找到某種特徵的映射。高啟動是指找到了某個特徵。
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個獨立概率值。歐幾裡德損失用於回歸到實值標籤。
子網
神經網路可能包括多個子網。子網由1層或多層組成。不同的子網具有不同的輸入/輸出大小,從而導致不同的記憶體要求和/或計算複雜度。
流水線
處理圖像的特定分量的一系列子網。例如,圖像分量可以是R、G或B分量中的任何一個。分量也可以是亮度Y或色度分量U或V中的一個。示例可以是具有2個流水線的系統,其中,第一流水線僅處理亮度分量,第二流水線處理色度分量。一個流水線僅處理一個分量,而第二分量(例如亮度分量)可以用作幫助處理(色度分量等)的輔助資訊。例如,具有色度分量作為輸出的流水線可以具有亮度和色度分量的潛在表示作為輸入(色度分量的條件解碼)。
速率失真優化量化(rate-distortion optimized quantization,RDOQ)
RDOQ是一種僅針對編碼器的技術,說明它適用於編碼器執行的處理,而不適用於解碼器執行的處理。在寫入碼流之前,參數被量化(去縮放、舍入等)到規定的標準固定精度。在多種舍入方式中,通常可以選擇最小RD成本變體,例如,在HEVC或VVC中用於變換係數解碼。
條件分色(conditional color separation,CCS)
在用於圖像/視頻解碼/處理的NN架構中,CCS是指主色分量(例如亮度分量)的獨立解碼/處理,而次色分量(例如色度UV)是使用主分量作為輔助輸入有條件地解碼/處理的。
自動編碼器和無監督學習
自動編碼器是一種人工神經網路,用於以無監督的方式學習高效的資料編碼。自動編碼器的示意圖如圖7所示,可以被視為圖6A或圖6B的基於CNN的VAE(變分自動編碼器)結構的簡化表示。自動編碼器的目的是通過訓練網路忽略信號「雜訊」來學習一組資料的表示(編碼),通常是為了降維。除了降維側,還學習了重建側,其中,自動編碼器嘗試從簡化的編碼中生成盡可能接近其原始輸入的表示,因此得名。
在最簡單的情況下,給定一個隱藏層,自動編碼器的編碼器級獲取輸入 並將其映射到
該圖像 通常被稱為碼、潛在變數或潛在表示。在這裡, 是逐元素啟動函數(element-wise activation function),例如sigmoid函數或整流線性單元。 是權重矩陣, 是偏置向量。權重和偏差通常是隨機初始化的,然後在訓練期間通過反向傳播反覆運算更新。之後,自動編碼器的解碼器級將h映射到與 形狀相同的重建
其中,解碼器的 可以與編碼器的對應的 無關。
變分自動編碼器模型對潛在變數的分佈做出了強有力的假設。這些變分自動編碼器模型使用變分方法進行潛在表示學習,這得到了附加的損失分量和訓練演算法的特定估計器,稱為隨機梯度變分貝葉斯(Stochastic Gradient Variational Bayes,SGVB)估計器。假設資料是由有向圖形模型 生成的,並且編碼器正在學習後驗分佈 的近似值 ,其中, 分別表示編碼器(識別模型)和解碼器(生成模型)的參數。VAE的潛在向量的概率分佈通常比標準自動編碼器更接近訓練資料的概率分佈。VAE的目標具有以下形式:
在這裡, 代表KL散度。潛在變數的先驗通常被設置為中心各向同性多元高斯 。通常,變分和似然分佈的形狀被選擇為因數化高斯:
其中, 是編碼器輸出,而 是解碼器輸出。
人工神經網路領域,特別是卷積神經網路的最新進展使研究人員有興趣將基於神經網路的技術應用於圖像和視頻壓縮任務。例如,提出了端到端優化圖像壓縮,端到端優化圖像壓縮使用基於變分自動編碼器(variational autoencoder,VAE)的網路。因此,資料壓縮被認為是工程中的一個基本的和深入研究的一個問題,通常以為給定的離散資料集合設計具有最小熵的碼為目標。該方案在很大程度上依賴於對資料概率結構的瞭解,因此該問題與概率源建模密切相關。但是,由於所有實用碼都必須具有有限熵,所以連續值資料(例如圖像像素強度的向量)必須量化為有限離散值集,這引入了誤差。在這種情況下,即失真壓縮問題,必須平衡兩個相互競爭的成本:離散表示的熵(速率)和量化產生的誤差(失真)。不同的壓縮應用(例如資料儲存或通過有限容量通道傳輸)需要在速率和失真之間取得不同的平衡。速率和失真的聯合優化是困難的。如果沒有進一步的約束,高維空間中最優量化的一般問題是難以解決的。
因此,大多數現有的圖像壓縮方法進行以下操作:將資料向量線性變換為合適的連續值表示,獨立量化其元素,然後使用無損熵解碼對得到的離散表示進行解碼。由於變換的核心作用,此方案被稱為變換編碼。例如,JPEG在區塊上使用離散余弦變換,JPEG 2000使用多尺度正交小波分解。通常,變換解碼方法的三個組成部分(變換、量化器和熵解碼)分別進行優化(通常通過手動參數調整)。現代視頻壓縮標準(例如HEVC、VVC和EVC)也使用變換表示來對預測後的殘差信號進行解碼。離散余弦(discrete cosine transform,DCT)變換、離散正弦變換(discrete sine transform,DST)和低頻不可分離手動優化變換(low frequency non-separable manually optimized transform,LFNST)等幾種變換用於此目的。
潛在空間:
潛在空間是指在NN的瓶頸層生成的特徵圖。這在圖7和圖8所示的示例中進行了說明。在NN拓撲的情況下,網路的目的是降低輸入信號的維度(如在自動編碼器拓撲中),瓶頸層通常是指輸入信號的維度降低到最小的層。降低維度的目的通常是實現輸入的更緊湊的表示。因此,瓶頸層是適合壓縮的層,因此在視頻編碼應用的情況下,碼流是根據瓶頸層生成的。
自動編碼器拓撲通常由編碼器和解碼器組成,編碼器和解碼器在瓶頸層相互連接。編碼器的目的是降低輸入的維度,使其更緊湊(或更直觀)。解碼器的目的是對編碼器的操作進行反向操作,從而根據瓶頸層盡可能好地重建輸入。
變分自動編碼器(variational auto-encoder,VAE)框架
可以認為VAE框架是一個非線性變換編碼模型。變換過程主要可分為四個部分,圖9中進行了舉例說明,並示出了VAE框架。
變換過程可分為四個部分。圖9舉例說明了VAE框架,包括編碼器分支和解碼器分支。在圖9中,編碼器901通過函數y=f (x)將輸入圖像x映射到潛在表示(由y表示)。在下文中,這種潛在表示也可以被稱為「潛在空間」的一部分或點。函數f()是一個變換函數,它將輸入信號x變換為更可壓縮的表示y。量化器902通過 將潛在表示y變換為具有(離散)值的量化潛在表示 ,其中,Q表示量化器函數。量化器函數可以是RDOQ。熵模型或超編碼器/解碼器(也稱為超先驗)903估計量化潛在表示 的分佈,以獲得通過無損熵源編碼可實現的最小速率。
潛在空間可以理解為壓縮資料(例如,圖像資料)的表示,其中,類似的資料點在潛在空間中更接近。潛在空間對於學習資料特徵和查找用於分析的資料的更簡單表示非常有用。
量化的潛在表示T和超先驗903的 和邊信息 使用算術編碼(arithmetic coding,AE)包括在碼流2中(被二值化),如圖9所示。
此外,提供了解碼器904,其將量化的潛在表示變換為重建圖像 。信號 是輸入圖像x的估計。希望x盡可能接近 ,換句話說,重建品質盡可能高。但是, 與x之間的相似性越高,發送所需的邊資訊的量就越大。該邊資訊可以包括圖9所示的碼流1和碼流2,它們由編碼器生成並發送到解碼器。通常情況下,邊資訊的量越大,重建品質越高。但是,大量的邊資訊說明壓縮比低。因此,圖9中描述的系統的一個目的是平衡重建品質和碼流中傳輸的邊資訊的量。
在圖9中,元件AE 605是算術編碼模組,它將量化的潛在表示 的樣本和邊資訊 的樣本轉換為二值化表示碼流1。例如, 的樣本和 的樣本可以包括整數或浮點數。算術編碼模組的一個目的是(通過二值化化過程)將樣本值轉換為二值化數位字串(然後,二值化數位字串被包括在碼流中,該碼流可以包括對應於經編碼的圖像或其它邊資訊的其它部分)。
算術解碼(arithmetic decoding,AD)906是恢復二值化過程的過程,其中,二值化數位被轉換回樣本值。算術解碼由算術解碼模組906提供。
需要說明的是,本發明並不限於這種具體框架。此外,本發明不限於圖像或視頻壓縮,並且也可以應用於物件檢測、圖像生成和識別系統。
在圖9中,有兩個子網相互串級。在該上下文中,網路是整個網路各部分之間的邏輯劃分。例如,在圖9中,處理單元(模組)901、902、904、905和906被稱為自動編碼器/自動解碼器或簡稱為「編碼器/解碼器」網路。換句話說,網路可以根據連接以啟用功能的處理單元(模組)來定義。至於圖9中連接的模組901、902、904、905和906,相應的網路執行輸入圖像x(例如輸入張量)的編碼和解碼處理的功能。因此,圖9示例中的「編碼器/解碼器」網路(第一網路)負責對第一碼流「碼流1」進行編碼(生成)和解碼(解析)。相應地,連接的處理單元(模組)903、908、909、910和907形成另一個網路(第二網路),可以被稱為「超編碼器/解碼器」網路。第二網路負責對第二碼流「碼流2」進行編碼(生成)和解碼(解析)。在圖9的示例中,第一碼流包括經編碼的圖像資料 ,而第二碼流包括邊資訊 。因此,這兩個網路的目的不同。第一網路和第二網路的任何處理單元(模組)本身可以是網路,稱為子網,意味著特定模組是(更大)網路的一部分。例如,圖9中的模組901、902、904、905和906中的任一個是第一網路的子網。同樣,模組903、908、909、910和907中的任一個是第二網路的子網。在相應的網路中,每個處理單元(模組)根據需要執行特定的功能,以分別實現整個第一網路和第二網路的處理。在圖9的示例中,所述功能是圖像資料的編碼-解碼處理(第一網路)和邊資訊的編碼-解碼處理(第二子網)。此外,連接的模組901、902和905可以被視為編碼器子網(即編碼器-解碼器網路的子網),而模組904和906可以被視為解碼器子網。從上面的討論中可知,相應地,第一網路和第二網路可以各自被解釋為相對於包括所有處理單元的整個網路的子網。
第一個子網負責:
˙將輸入圖像x變換(901)為其潛在表示y(比x容易壓縮),
˙將所述潛在表示y量化(902)為量化後的潛在表示
˙算術編碼模組905使用AE壓縮量化後的潛在表示 ,以獲得碼流「碼流1」,
˙使用算術解碼模組906經由AD解析碼流1,
˙使用解析的資料重建(904)重建圖像( )。
第二子網的目的是獲得「碼流1」的樣本的統計性質(例如碼流1的樣本之間的平均值、方差和相關性),以便第一子網對碼流1的壓縮更高效。第二子網生成第二碼流「碼流2」,第二碼流包括所述資訊(例如碼流1的樣本之間的平均值、方差和相關性)。
第二網路包括編碼部分,該編碼部分包括將量化後的潛在表示 變換(903)為邊資訊z,將邊資訊z量化為量化後的邊信息 ,以及將量化後的邊資訊 編碼(例如二值化)(909)到碼流2中。在本示例中,二值化由算術編碼(arithmetic encoding,AE)執行。第二網路的解碼部分包括算術解碼(arithmetic decoding,AD)910,AD 910將輸入碼流2變換為解碼後的量化邊資訊 可能與 相同,因為算術編碼和解碼操作是無失真壓縮方法。然後,解碼後的量化邊資訊 被變換(907)為解碼後的邊資訊 表示 的統計性質(例如 的平均樣本值,或樣本值的方差等)。然後,解碼後的潛在表示 被提供給上述算術編碼器905和算術解碼器906,以控制 的概率模型。
圖9描述了VAE(變分自動編碼器)的一個示例,其細節在不同的實現方式中可能有所不同。例如,在特定的實現方式中,可能存在附加元件,以更高效地獲得碼流1樣本的統計屬性。在一個這種實現方式中,可能存在上下文建模器,其目標是提取碼流1的互相關資訊。由第二子網提供的統計資訊可以由算術編碼器(arithmetic encoder,AE)905和算術解碼器(arithmetic decoder,AD)906元件使用。
圖9在單個圖中示出了編碼器和解碼器。如本領域技術人員所知,編碼器和解碼器可以而且經常嵌入在相互不同的設備中,如圖9A和圖9B中舉例說明。
圖9A示出了編碼器,圖9B示出了VAE框架的解碼器組件。根據一些實施例,編碼器接收圖像(圖像資料)作為輸入。輸入圖像可以包括一個或多個通道,例如顏色通道或其它類型的通道,例如深度通道或運動資訊通道等。編碼器的輸出(如圖9A所示)是碼流1和碼流2。碼流1是編碼器的第一子網的輸出,碼流2是編碼器的第二子網的輸出。
類似地,在圖9B中,兩個碼流(碼流1和碼流2)作為輸入接收,並在輸出端生成重建(解碼)圖像
如上所述,VAE可以劃分為執行不同操作的不同邏輯單元,如圖9A和圖9B中舉例說明。圖9A示出了參與信號(如視頻)編碼並被提供經編碼的資訊的元件。然後,例如,該經編碼的資訊由圖9B中示出的解碼器元件接收,以用於編碼。因此,圖9、圖9A和圖9B中相同的附圖標記表示相應的處理單元(模組)執行相同的功能。
具體地,如圖9A中所示,編碼器包括編碼器901,編碼器901將輸入x變換為信號y,然後將信號y提供給量化器902。量化器902向算術編碼模組905和超編碼器903提供資訊。超編碼器903將上面已經討論過的碼流2提供給超解碼器907,相應地,超解碼器907向算術編碼模組605發送信號資訊。
算術編碼模組的輸出是碼流1。碼流1和碼流2是信號編碼的輸出,然後碼流1和碼流2被提供(發送)給解碼過程。
儘管單元901被稱為「編碼器」,但也可以將圖9A中描述的完整子網稱為「編碼器」。編碼過程通常是指單元(模組)將輸入轉換為編碼(如壓縮)輸出。從圖9A可以看出,單元901實際上可以被視為整個子網的核心,因為它執行輸入x到y的轉換,y是x的壓縮版本。編碼器901中的壓縮可以通過應用神經網路或通常具有一個或多個層的任何處理網路來實現。在這種網路中,壓縮可以通過包括下採樣的串級處理(即,連續處理)來執行,該下採樣減小了輸入的大小和/或通道的數量。因此,編碼器可以被稱為基於神經網路(neural network,NN)的編碼器等。
圖中的其餘部分(量化單元、超編碼器、超解碼器、算術編碼器/解碼器)都是提高編碼過程效率或負責將壓縮輸出y轉換為一系列比特(碼流)的部分。可以提供量化以通過失真壓縮進一步壓縮NN編碼器901的輸出。AE 905與用於配置AE 905的超編碼器903和超解碼器907結合可以執行二值化,二值化可以通過無失真壓縮進一步壓縮量化信號。因此,也可以將圖9A中的整個子網稱為「編碼器」。類似的情況也適用於圖9B,其中,整個子網可以被稱為「解碼器」。
大多數基於深度學習(deep learning,DL)的圖像/視頻壓縮系統在將信號轉換為二值化數位(位元)之前會降低信號的維度。例如,在VAE框架中,編碼器是非線性變換,該編碼器將輸入圖像x映射到y中,其中,y的寬度和高度小於x。由於y具有較小的寬度和高度、大小較小,所以信號的維度(的大小)被減小,使得更容易壓縮信號y。需要說明的是,通常,編碼器不一定需要在兩個(或通常所有)維度上減小大小。而是,一些示例性實現方式可以提供僅在一個維度(或通常是一個子集)上減小大小的編碼器。
壓縮的一般原理在圖8中進行了舉例說明。潛在空間是編碼器的輸出和解碼器的輸入,潛在空間表示壓縮資料。需要說明的是,潛在空間的大小可以遠小於輸入信號大小。在這裡,術語大小可以指解析度,例如編碼器輸出的特徵圖的多個樣本。解析度可以作為每個維度的樣本數的乘積給出(例如輸入圖像或特徵圖的寬度×高度×通道的數量)。
輸入信號大小的減小在圖8中進行了舉例說明,它表示了基於深度學習的編碼器和解碼器。在圖8中,輸入圖像x對應於輸入資料,這是編碼器的輸入。變換後的信號y對應於潛在空間,該空間在至少一個維度上具有比輸入信號的維度或大小更小的維度或大小。每列圓表示編碼器或解碼器處理鏈中的一層。每層中的圓的數量表示該層信號的大小或維度。
從圖8可以看出,編碼操作對應於輸入信號大小的減小,而解碼操作對應於圖像原始大小的重建。
減小信號大小的方法之一是下採樣。如上所述,下採樣是降低輸入信號採樣速率的過程。例如,如果輸入圖像的大小為h和w,而下採樣的輸出為h2和w2,則以下至少一項為真:
˙h2<h
˙w2<w
信號大小的減小通常沿著處理層鏈一步一步地發生,而不是一次發生。例如,如果輸入圖像x具有h和w(分別表示高度和寬度)的維度(或維度大小),而潛在空間y具有h/16和w/16的維度,則在編碼期間,大小的減小可能發生在4個層,其中,每個層在每個維度中將信號的大小減小一半。
一些基於深度學習的視頻/圖像壓縮方法使用多個下採樣層。例如,圖6A所示的VAE框架使用6個下採樣層,這些採樣層被標記為601至606。在對層的描述中,包括下採樣的層用向下的箭頭表示。對層的描述「卷積N×5×5/2↓」是指該層是一個有N個通道的卷積層,卷積核的大小為5×5。如上所述,2↓是指在該層中執行因數為2的下採樣。因數為2的下採樣會導致輸入信號的維度之一在輸出端減少一半。在圖6A中,2↓表示輸入圖像的寬度和高度都減少了一半。由於有6個下採樣層,如果輸入圖像814(也用x表示)的寬度和高度為w和h,則輸出信號 813的寬度和高度分別等於w/64和h/64。
由AE和AD表示的模組是算術編碼器和算術解碼器,上面已經參考圖9、圖9A和圖9B解釋了這些模組。算術編碼器和算術解碼器是熵解碼的具體實現方式。AE和AD(作為圖6A和圖6B中元件613和615的一部分)可以被其它熵解碼方式取代。在資訊理論中,熵編碼是一種無損資料壓縮方案,用於將符號的值轉換為二值化表示,這是一個可恢復的過程。此外,圖中的「Q」對應於上文關於圖6A和圖6B提到的量化操作,在上面「量化」一節中進行了解釋。此外,量化操作和作為元件613或615的一部分的對應的量化單元不一定存在和/或可以被另一個單元替換。
在圖6A和圖6B中,還示出了包括上採樣層607至612的解碼器。在上採樣層611和610之間以輸入的處理順序提供另一層620,該層620被實現為卷積層,但不對接收到的輸入進行上採樣。還示出了用於解碼器的對應的卷積層620。可以在NN中提供這種層,以用於對輸入執行不改變輸入大小但改變具體特徵的操作。但是,不是必須提供這種層。
當按照碼流2通過解碼器的處理順序時,上採樣層通過的順序相反,即從上採樣層612到上採樣層607。這裡示出了每個上採樣層,以提供上採樣比為2的上採樣,上採樣通過↑表示。當然,不一定所有上採樣層都具有相同的上採樣比,上採樣層可以使用如3、4、8等其它上採樣比。層607至612被實現為卷積層(conv)。具體地,由於這些卷積層用於對輸入進行與編碼器所進行的操作相反的操作,所以上採樣層可以對接收到的輸入應用反卷積操作,使得該輸入的大小增加與上採樣比對應的因數。但是,本發明通常不限於反卷積,並且上採樣可以以任何其它方式執行,例如通過兩個相鄰樣本之間的雙線性插值,或通過最近鄰樣本複製等。
在第一子網中,一些卷積層(601至603)在編碼器側跟隨廣義分散歸一化(generalized divisive normalization,GDN),在解碼器側跟隨逆GDN(inverse GDN,IGDN)。在第二個子網中,應用的啟動函數是ReLU。需要說明的是,本發明並不限於這種實現方式,並且通常可以使用其它啟動函數來代替GDN或ReLU。
圖6B示出了基於VAE的編碼器-解碼器結構的另一個示例,該結構類似於圖6A中的一個結構。在圖6B中,示出了編碼器和解碼器可以包括多個下採樣層和上採樣層。每層應用因數為2的下採樣或因數為2的上採樣。此外,編碼器和解碼器可以包括其它元件,如編碼器側的廣義分散歸一化(generalized divisive normalization,GDN)650和解碼器側的逆GDN(inverse GDN,IGDN)655。此外,編碼器和解碼器都可以包括一個或多個ReLU,具體是洩漏ReLU(LeakyRelu)660和665。還可以在編碼端提供分解熵模型和在解碼端提供高斯熵模型670。此外,可以提供多個卷積遮罩680。此外,在圖6B的實施例中,編碼器包括通用量化器(universal quantizer,UnivQuan),解碼器包括注意力模組。
下採樣操作和步長的總數定義了輸入通道大小(即神經網路的輸入的大小)的條件。
在這裡,如果輸入通道大小是64=2×2×2×2×2×2的整數倍,則在所有進行下採樣操作之後,通道大小保持整數。通過在上採樣期間在解碼器中應用對應的上採樣操作,並通過在上採樣層的輸入處理結束時應用相同的重新縮放,輸出大小再次與編碼器處的輸入大小相同。
從而,獲得了原始輸入的可靠重建。
接受域:
在神經網路的上下文中,接受域被定義為輸入中在輸出特徵圖處產生樣本的區域的大小。基本上,接受域是(任何層的)輸出特徵與輸入區域(塊)關聯的度量。需要說明的是,接受域的概念適用於局部操作(即卷積、池化等)。例如,具有大小為3×3的內核的卷積操作在輸入層中具有3×3樣本的接受域。在本例中,卷積節點使用9個輸入樣本獲得1個輸出樣本。
總接受域:
總接受域(total receptive field,TRF)是指一組輸入樣本,用於通過應用神經網路的一個或多個處理層獲得指定的輸出樣本集。
總接受域可以用圖10來舉例說明。在圖10中,舉例說明了具有2個連續轉置卷積(也稱為反卷積)層的一維輸入(圖左側的7個樣本)的處理。從左到右處理輸入,即「反卷積層1」首先處理輸入,「反卷積層2」處理「反卷積層1」的輸出。在本例中,兩個反卷積層中的內核大小都為3。這是指需要3個輸入樣本才能在每層獲得1個輸出樣本。在該示例中,輸出樣本集被標記在虛線矩形內,並且包括3個樣本。由於反卷積核的大小,在輸入端需要7個樣本來獲得包括3個輸出樣本的輸出樣本集。因此,被標記的3個輸出樣本的總接受域是輸入端的7個樣本。
在圖10中,有7個輸入樣本、5個中間輸出樣本和3個輸出樣本。樣本數的減少是由於輸入信號是有限的(不是在每個方向上延伸到無窮大),在輸入端的邊界上存在「缺失樣本」。換句話說,由於反卷積操作需要3個輸入樣本對應於每個輸出樣本,如果輸入樣本數為7,則只能生成5個中間輸出樣本。事實上,可以生成的輸出樣本量是(k–1)個樣本,少於輸入樣本量,其中,k是內核大小。由於在圖10中,輸入樣本數為7,在內核大小為3的第一次反卷積之後,中間樣本數為5。在內核大小為3的第二次反卷積之後,輸出樣本數為3。
如圖10所示,3個輸出樣本的總接受域在輸入端為7個樣本。通過連續應用內核大小大於1的處理層來增加總接受域的大小。通常,一組輸出樣本的總接受域是通過跟蹤從輸出層開始到輸入層的每個節點的連接來計算的,然後找到輸入中直接或間接(通過一個以上的處理層)連接到輸出樣本集的所有樣本的聯集。例如,在圖10中,每個輸出樣本連接到前一層中的3個樣本。聯集包括中間輸出層中的5個樣本,這些樣本連接到輸入層中的7個樣本。
有時,希望在每次操作(卷積或反卷積或其它)後保持樣本數相同。在這種情況下,可以在輸入的邊界應用填充,以補償「缺失樣本」。圖11示出了當樣本數保持相等時的這種情況。需要說明的是,本發明適用於這兩種情況,因為填充不是卷積、反卷積或任何其它處理層的強制性操作。
這不能與下採樣混淆。在下採樣過程中,對於每M個樣本,輸出端有N個樣本,N<M。不同的是,M通常遠小於輸入的數量。在圖10中,沒有下採樣,樣本數的減少是由於輸入的大小不是無限的,而且輸入處存在「缺失樣本」。例如,如果輸入樣本數為100,由於內核大小為k=3,則當使用兩個卷積層時,輸出樣本數為100–(k–1)–(k–1)=96。相反,如果兩個反卷積層都在執行下採樣(下採樣比為M和N的比率,M=2,N=1),則輸出樣本數為:
=22。
圖12舉例說明了使用2個卷積層的下採樣,下採樣比為2(N=1和M=2)。在本例中,由於邊界處的下採樣和「缺失樣本」的綜合影響,7個輸入樣本變為3個。輸出樣本數可以在每個處理層之後使用以下公式計算: ,其中,k是內核大小,r是下採樣比。
卷積操作和反卷積(即轉置卷積)操作從數學運算式的角度來看是相同的。差異源於反卷積操作假設發生了先前的卷積操作。換句話說,反卷積是對信號進行濾波以補償先前應用的卷積的過程。反卷積的目標是重新創建和卷積發生之前存在的信號一樣的信號。本發明適同時用於卷積操作和反卷積操作(事實上,適用於內核大小大於1的任何其它操作,如後面解釋的)。
圖13示出了解釋如何計算總接受域的另一個示例。在圖13中,二維輸入樣本陣列由兩個卷積層處理,每個卷積層的內核大小為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採用這種劃分方法,例如,將輸入圖像分割為分塊或波前處理單元。
當在傳統的視頻解碼系統中使用分塊時,輸入圖像通常被劃分為多個矩形形狀部分。圖14舉例說明了一種這樣的分割。在圖14中,部分1和部分2可以彼此獨立處理,並且用於對每個部分進行解碼的碼流被封裝到獨立的可解碼單元中。因此,解碼器可以獨立解析(獲得樣本重建所需的語法元素)每個碼流(對應於第1部分和第2部分),並可以獨立重建每個部分的樣本。
在圖15所示的波前並行處理中,每個部分通常由1行編碼樹塊(coding tree block,CTB)組成。波前並行處理與分塊之間的區別在於,在波前並行處理中,與每個部分對應的碼流幾乎可以彼此獨立解碼。但是,樣本重建不能獨立執行,因為每個部分的樣本重建仍然具有樣本之間的依賴關係。換句話說,波前並行處理使解析過程獨立,同時保持樣本重建的依賴。
波前和分塊都是可以彼此獨立執行整個或部分解碼操作的技術。獨立處理的好處是:
˙可以使用1個以上相同的處理核心來處理整個圖像,從而可以提高處理速度。
˙如果處理核心的能力不足以處理大圖像,則可以將圖像劃分為多個部分,這樣,處理所需的資源就較少。在這種情況下,功能較低的處理單元即使由於資源限制而無法處理整個圖像,也還是可以處理每個部分。
為了滿足處理速度和/或記憶體的要求,HEVC/VVC使用足夠大的處理記憶體來處理整個幀的編碼/解碼。頂級GPU卡用於實現這一目標。在傳統編解碼(如HEVC/VVC)的情況下,處理整個幀的記憶體要求通常不是一個大問題,因為是先將整個幀劃分為塊,然後再對每個塊逐個進行處理。但是,處理速度是一個主要的問題。因此,如果使用單個處理單元來處理整個幀,則處理單元的速度必須非常高,因此處理單元通常成本非常高。
另一方面,基於NN的視頻壓縮演算法在編碼/解碼中考慮了整個幀,該演算法不同於傳統的混合編碼器使用的基於塊的視頻壓縮演算法。記憶體要求太高,無法通過基於NN的編碼/解碼模組進行處理。
在傳統的混合視頻轉碼器和解碼器中,所需的記憶體量與支援的最大塊大小成正比。例如,在VVC中,最大塊大小為128×128個樣本。
但是,基於NN的視頻壓縮所需的記憶體與大小W×H成正比,其中,W和H表示輸入/輸出圖像的寬度和高度。可以看出,與混合視頻轉碼器相比,記憶體要求可能會非常高,因為典型的視頻解析度包括3840×2160圖像大小(4K視頻)。在圖像和視頻壓縮系統中,對大小非常大的輸入圖像的壓縮和解壓縮通常通過將輸入圖像化分為多個部分來執行。為了應對記憶體限制,基於NN的視頻解碼演算法可以在潛在空間中應用分塊。
當應用分塊而不重疊時,邊界偽影可能在重建圖像中可見。這個問題可以通過在潛在空間或信號域中使分塊重疊而部分地解決,其中,重疊足夠大,以避免這些偽影。如果重疊大於NN的接受域的大小,則操作可以按非規範的方式執行,並可能因計算複雜而造成一些開銷。相應地,如果重疊小於接受域的大小,則分塊操作不是無損/透明的,並且需要指定(規範)。
此外,在具有多個流水線(例如,用於處理亮度和/或色度的流水線,或通常是輸入張量的多個通道)或多個子網的結構的情況下,分塊始終具有相同大小的直接方法可能會導致性能損失。速率失真優化量化(rate distortion optimization quantization,RDOQ)(例如圖9:單元908)是另一個計算複雜和記憶體密集型操作。在RDOQ中選擇與所有子網相同的分塊大小也可能不是最佳的。此外,如果不同流水線中的場景表示在分塊期間沒有樣本對齊(例如CCS),則直接分塊可能不會保留關於沿不同分量的相關性的資訊。樣本對齊指亮度的大小與色度的大小不匹配。在這些情況下,視頻處理的性能可能較差,因為空間和/或時間相關性缺失或至少不那麼明顯。結果,重建圖像的品質可能會降低。
另一個問題是,為了使用單個處理單元(例如CPU或GPU)處理大的輸入,處理單元必須非常快,因為該單元每單位時間需要執行大量的操作。這就要求該單元需要具有高時鐘頻率和高記憶體頻寬,這對於晶片製造商來說是成本較高的設計標準。具體地,由於物理限制,增加記憶體頻寬和時鐘頻率並不容易。
儘管最先進的基於深度學習的圖像和視頻壓縮演算法遵循變分自動編碼器(variational auto-encoder,VAE)框架,但是用於編碼和/或解碼的基於NN的視頻解碼演算法仍處於早期開發階段,並且沒有任何消費類設備包括圖9、圖9A和圖9B所示的VAE的實現方式。此外,消費類設備的成本受所實現的記憶體影響很大。
因此,為了使基於NN的視頻編碼演算法變得成本效益高,以便在手機等消費類設備中實現,需要減少處理單元的記憶體佔用空間和所需的操作頻率。這種優化尚未完成。
本發明既適用於端到端AI轉碼器,也適用於混合AI轉碼器。例如,在混合AI轉碼器中,濾波操作(重建圖像的濾波)可以通過神經網路(neural network,NN)執行。本發明應用於這種基於NN的處理模組。通常,如果所述處理的至少一部分包括NN,並且如果該NN包括卷積或轉置卷積操作,則本發明可以應用於整個或部分視頻壓縮和解壓縮過程。例如,本發明適用於編碼器和/或解碼器作為處理部分執行的單獨的處理任務,包括環內濾波、後濾波和/或預濾波,以及僅用於編碼器的速率失真優化量化(rate distortion optimization quantization,RDOQ)。
本發明的一些實施例可以在基於NN的視頻編解碼框架中實現記憶體資源與計算複雜度之間的平衡,從而提供上述問題的方案。具體地,本發明提供了獨立處理輸入的部分的可能性,並且仍有不同的圖像分量被樣本對齊。這降低了記憶體要求,同時保持了壓縮性能,而且幾乎沒有增加計算複雜度。
處理可以是解碼或編碼。在下面討論的示例性實現方式中,所述神經網路(neural network,NN)可以是:
˙包括至少一個處理層的網路,其中,使用1個以上的輸入樣本來獲得輸出樣本(這是出現本發明要解決的問題時的一般條件)。
˙包括至少一個卷積(或轉置卷積)層的網路。在一個示例中,卷積的內核大於1。
˙包括至少一個池化層(最大池化、平均池化等)的網路。
˙解碼網路、超解碼器網路或編碼網路。
˙以上網路的一部分(子網)。
該輸入可以是:
˙特徵圖。
˙隱藏層的輸出。
˙潛在空間特徵圖。潛在空間可以根據碼流獲得。
˙輸入圖像。
第一實施例
下面描述圖像/視頻編碼-解碼(壓縮-解壓縮)的方法和裝置,其中,多個子網用於處理表示圖像資料的輸入張量,如圖16所示。
在這個示例性和非限制性實施例中,提供了一種用於對表示圖像資料的輸入張量進行編碼的方法。輸入張量可以具有空間維度中寬度=w、高度=h,以及大小等於D的第三維度(例如通道的數量)的矩陣形式。例如,輸入張量可以直接是具有D個分量的輸入圖像,D個分量可以包括一個或多個顏色分量,以及可能的其它通道,例如深度通道或運動通道等。但是,本發明並不限於該輸入。通常,輸入張量可以是圖像資料的表示,例如,可以作為先前處理(例如預處理)的結果的潛在表示。
輸入張量由至少包括第一子網和第二子網的神經網路處理。圖16示出了編碼分支的第一子網和/或第二子網的示例,包括編碼器1601和速率失真優化量化器(rate distortion optimizing quantizer,RDOQ)1602。所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊。在應用第一子網之後,將第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊。
在圖16的示例中,提供第一子網1601的輸出,作為第二子網的輸入,第二子網是RDOQ 1602。在這種情況下,第一張量是表示圖像資料的輸入圖像x,其可以是原始圖像資料。相應地,輸入到第二子網的第二張量是潛在空間中的特徵張量。但是,本發明不限於第一子網和第二子網直接串級的情況。通常,第二子網在第一子網之後,即第二子網在應用第一網路之後應用,但第一子網與第二子網之間可能有一些附加的處理。因此,上述術語「之後」並不將上述處理限制在第一子網的輸出直接輸入到第二子網之後。而是,例如,「之後」指第一多個分塊和第二多個分塊在同一處理通路內被處理。
第一張量和第二張量的一個或多個通道被劃分為分塊,其基本上表示通過在一個空間維度或多個空間維度上分割輸入張量而獲得的資料。與當前的視頻解碼標準一樣,分塊用於提供並行(即彼此獨立)解碼的可能性。分塊可以包括一個或多個示例。分塊可以具有矩形形狀,但不限於這些規則形狀。矩形形狀可以是方形形狀。圖14示出了劃分為規則形狀的分塊的示例。但是,本發明不限於矩形或具體地限於方形形狀。例如,形狀可以是象棋狀的或不規則的。第一輸入張量和第二輸入張量可以劃分為使得分塊具有三角形形狀或任何其它形狀,這可以取決於特定應用和/或子網執行的處理的類型。
在圖16中,N個分量的一般處理在子網1601和1602中示出。在本文中,分量可以是可以並行處理的輸入張量通道(例如顏色分量或潛在空間表示)。這樣的處理可以包括在空間域中將通道劃分為分塊(包括第一多個分塊)。
但是,圖16中的N個分量也可以對應於一個或多個通道的相應的N個分塊(或分塊組)。N個分塊(或分塊組)可以並行處理。在對第一多個分塊和/或第二多個分塊進行這種處理之後,相應的子網可以將經理過的分塊融合到輸出張量中。在圖16中,對於子網編碼器1601,這樣的融合輸出張量是y,對於子網RDOQ 1602,這樣的融合輸出張量是 。需要說明的是,在圖16中,第一子網1601和第二子網1602中的分量的數量相同(為N)。但是,情況不一定如此,第一子網內可能存在與第二子網中並行處理通路數量不同的並行處理通路數量。例如,在後濾波的情況下,第一子網是後濾波器,其分別處理每個分量(例如Y、U和V)。相應地,在編碼或解碼處理的情況下,編碼器或解碼器分別是第二子網,其中,Y和UV之間有區別,即UV被聯合處理。
此外,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。在這裡,術語「並置」指兩個分塊(即,一個來自第一多個分塊,一個來自第二多個分塊)在空間維度上位於第一輸入張量和第二輸入張量內的對應(例如至少部分重疊)位置。換句話說,每個子網細分為分塊的方式可能不同,因此每個子網可以使用不同的分塊(劃分為分塊的方式不同)。
在示例性實現方式中,每個子網(即第一張量和第二張量)的輸入(在空間域中)被劃分為具有相同大小的分塊的網格,除了底部和右側圖像邊界處的分塊之外,底部和右側圖像邊界處的分塊可以具有較小的大小,因為輸入張量不一定具有是分塊大小的整數倍的大小。這種具有相同大小的分塊的網格是有利的,因為這種網格可以在碼流中高效地指示,並且處理複雜度低。另一方面,包括不同大小的分塊的網格可以產生更好的性能和內容適應性。
在上述示例性實現方式中,在空間維度中的至少一個維度上相鄰的第一多個分塊中的分塊在至少一個空間維度上部分重疊。此外或或者,在空間維度中的至少一個維度上相鄰的第二多個分塊中的分塊在至少一個空間維度上部分重疊。術語相鄰是指相應的分塊是相鄰的。相鄰的分塊部分1和部分2如圖14所示,它們相鄰但不重疊。圖17A示出了部分重疊,其中,例如,第一張量在x-y平面中被劃分為2D中的四個分塊(即區域L 1、L 2、L 3和L 4)。類似的考慮也適用於第二輸入張量。第一多個分塊中的第一分塊為L 1,第二分塊為L 2。L 1和L 2在x軸方向上彼此相鄰,並沿著y軸具有重疊邊界。如圖所示,L 1和L 2部分重疊。部分重疊意味著分塊L1和L2包括相同的張量元素中的一個或多個。在一些實施例中,張量元素可以對應於第一輸入張量的圖像樣本。
圖17B示出了與圖17A中相同的x軸和y軸方向上的部分重疊的場景。在圖17A和圖17B中,L 1還與其右側的相鄰分塊重疊(在y維度上,沿x維度具有重疊邊界)。L 1也與其對角線相鄰的分塊稍微重疊(在兩個維度上)。類似地,L 2與其右側直接和對角線相鄰的分塊重疊。圖18示出了分塊L 1和L 2的部分重疊的另一個示例,分塊L 1和L 2可以是第一多個分塊中的分塊。L 1和L 2僅在一個相應的維度上與另一個分塊有重疊。L 1與其右側的相鄰分塊部分重疊,邊界沿x軸(即y維度中的部分重疊)。相應地,L 2與頂部的相鄰的分塊L 1部分重疊。在圖17A和圖17B的示例中,L 1與L 2之間的重疊意味著L 1還包括L 2的樣本,L 2也包括來自L 1的樣本。在圖18中,L 2還包括來自L 1的樣本,但L 1不包括來自L 2的樣本。如本領域技術人員所知,可以存在重疊的其它變型。本發明不限於重疊的任何特定方式或擴展。本發明還可以包括沒有重疊的分塊佈置。
圖19是L 1和L 2的另一個示例,彼此不重疊或與任何其它分塊不重疊。圖20類似於圖17A和圖17B,下面進一步解釋關於部分重疊區域的進一步的細節。
在示例性實現方式中,第一子網獨立處理第一多個分塊中的分塊(例如L 1和L 2)。此外或或者,第二子網獨立處理第二多個分塊中的分塊。換句話說,分塊的處理是彼此獨立的,因此是相互獨立的。獨立處理提供了並行化的可能性。例如,在一些實現方式中,第一子網並行處理第一多個分塊中的至少兩個分塊和/或第二子網並行處理第二多個分塊中的至少兩個分塊。並行處理在圖16中示出,涉及子網編碼器1601或量化器RDOQ 1602中的處理1至處理N(處理通路1到N)。使用編碼器子網1601作為第一子網,編碼器1601取輸入張量x,該輸入張量x被劃分為第一輸入張量的N個分塊x 1至x N。然後,相應的塊處理相應的分塊,即處理1至處理N,它們不需要彼此相互作用(例如,在處理期間相互等待)。每個處理的結果是相應分塊的輸出張量y 1至y N,這些張量可以是潛在空間中的特徵圖。輸出張量y 1至y N還可以組合成輸出張量y。組合可以(但不一定)涉及如圖17至圖19中所示的裁剪。需要說明的是,不需要執行組合成張量y。可以想像,第二子網重用第一子網的分塊,並且僅僅修改它(通過進一步劃分分塊來使分塊變小,或者通過將多個分塊合併為一個來使分塊變大)。在圖16的示例中,處理1至處理N可以基於分塊執行處理,即處理i處理分塊i。或者,處理i可以處理輸入張量的多個分量中的分量i。在這種情況下,處理i將分量i劃分為多個分塊,並分別或並行處理這些分塊。
上面,為了簡單起見,已經舉例說明了通過相應的N個處理通路並行處理所有N個輸入張量分塊。但是,本發明不限於這種並行處理。輸入張量中可以有N個以上的分塊,分為N組分塊,這N組分塊在相應的N個處理通路(第一子網的實例和/或第二子網的實例)內並行處理。如本領域技術人員所知,一旦分塊彼此獨立,它們在原則上可以並行處理。技術人員可以根據相應的性能要求和/或硬體可用性設計任何數量的並行處理通路。
如圖17A/17B至圖20所示,相應的分塊具有一定的大小,其可以具有一定的寬度和一定的高度,在矩形分塊的情況下,寬度和高度可以不同,在方形分塊的情況下,寬度和高度可以相同。在一種實現方式中,第一張量的劃分包括基於第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或第二張量的劃分包括基於第二預定義條件確定第二多個分塊中的分塊的大小。例如,所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。作為可用硬體資源的示例,第一預定義條件和/或第二預定義條件可以是處理裝置(解碼器或編碼器)的記憶體資源。當可用記憶體量小於預定義值(記憶體資源量)時,所確定的分塊大小可以小於當可用記憶體等於或大於所述預定義值時的分塊大小。但是,硬體資源並不限於記憶體。第一條件和/或第二條件可以基於處理能力的可用性,例如處理器的數量和/或一個或多個處理器的處理速度。
或者或此外,運動的存在可以用於第一條件和/或第二條件。例如,與所述運動的存在不那麼明顯或根本沒有運動的情況相比,在對應於分塊的輸入張量部分中存在更多運動的情況下,可以確定分塊大小更小。運動是否明顯(即快速運動和/或快速/頻繁運動變化)可以由相應的運動向量根據其幅度和方向的變化確定,並與幅度和/或方向和/或頻率的對應預定義值(閾值)進行比較。
另一種或附加條件可以是感興趣區域(region of interest,ROI),其中,分塊大小可以根據ROI的存在來確定。例如,圖像資料中的ROI可以是檢測到的物件(例如車輛、自行車、摩托車、行人、動物等),其可以具有不同的大小、快速或緩慢移動,和/或快速或緩慢和/或多次改變它們的運動方向(即,相對於預定義的頻率值更頻繁)。在示例性實現方式中,ROI的至少一個維度上的分塊大小可以小於輸入張量的剩餘部分的分塊大小。
因此,可以調整或優化分塊大小(包括場景特定的分塊大小),以適應硬體資源或圖像資料的內容。還可以聯合調整或優化分塊大小,以適應硬體資源和圖像資料的內容。
圖17A/17B至圖20舉例說明了將第一(或第二)張量劃分為多個分塊,這些分塊與它們的相鄰分塊部分重疊。作為重疊和/或分塊處理的結果,對應於區域R i的經處理的分塊可以被裁剪。在圖17A/17B至圖20中,L和R的索引對於輸入和輸出中的對應劃分是相同的。例如,L 4對應R 4。R i的放置遵循與L i相同的模式,這是指如果L 1對應於輸入空間的左上角,則R 1對應於輸出空間的左上角。如果L 2在L 1的右側,則R 2在R 1的右側。在圖17A的示例中,第一張量的劃分使得每個區域L i分別包括R i的完整接受域。此外,R i的聯集構成了整個靶心圖表像R。
總接受域的確定取決於每個處理層的內核大小。總接受域可以通過沿處理的相反方向跟蹤第一張量的輸入樣本來確定。總接受域由輸入樣本的聯集組成,這些樣本都用於計算一組輸出樣本。因此,總接受域取決於每層之間的連接,並且可以通過在輸入方向上跟蹤從輸出開始的所有連接來確定。
在圖13所示的卷積層的示例中,卷積層1和2的核大小分別為K1×K1和K2×K2,下採樣比分別為R 1和R 2。卷積層通常使用常規的輸入輸出連接(例如,每個輸出始終使用K×K輸入樣本)。在本例中,總接受域大小的計算可以如下所示:
其中,H和W表示總接受域的大小,h和w分別表示輸出樣本集的高度和寬度。
在上面的示例中,卷積操作是在二維空間中描述的。當應用卷積的空間的維度較多時,可以應用3D卷積操作。3D卷積操作是2D卷積操作的直接擴展,其中,將附加的維度添加到所有操作中。例如,內核大小可以表示為K1×K1×N和K2×K2×N,總接受域可以表示為W×H×N,其中,N表示第三維度的大小。由於2D卷積操作和3D卷積操作的擴展是簡單的,所以本發明適用於2D卷積操作和3D卷積操作。換句話說,第三維度(甚至第四維度)的大小可以大於一,並且本發明可以以相同的方式應用。
上面的公式是一個示例,該公式示出了如何確定總接受域的大小。總接受域的確定取決於每個層的實際輸入輸出連接。編碼過程的輸出是R i。R i的聯集構成了特徵張量 ,其分量 被融合(圖16)。在該示例中,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的倍數。換句話說,填充樣本是虛擬樣本,用於確保每個L i具有相應NN層的大小要求的整數倍數。
■待裁剪樣本可以通過確定「在其計算中包括填充樣本的輸出樣本」來獲得。該選項可適用於所討論的示例性實現方式。
這在圖17A中示出,其中,在通過第一子網(例如圖16中的編碼器1601)處理第一多個分塊(即區域L i)之後,第一子網輸出的大小R i太大,因此可能不具有適合後續子網(例如圖16中的第二子網RDOQ 1602)的輸入的大小。因此,在本示例中,對圖17A的經處理的分塊R 1和R 2進行裁剪操作,之後,裁剪的R-crop 1至R-crop 4被融合。
圖17B示出了區域L 1至L 4(即第一多個分塊和/或第二多個分塊)的部分重疊的示例,其中,不涉及經處理的分塊(即區域R 1至R 4)的裁剪。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的總接受域可能太大。在這種情況下,獲得整個重建圖像的計算總數量可能會增加太多。
圖18示出了部分重疊的分塊(即區域L 1至L 4)的另一個示例,其還涉及類似於圖17A的經處理的分塊R 1至R 4的裁剪。與圖17A和圖17B相比,輸入區域L i(即,分塊)現在如圖18所示更小,因為它們僅表示相應R i的總接受域的子集。相應的子網(例如圖16的編碼器1601和/或RDOQ 1602)獨立處理每個區域L i,從而獲得兩個區域R 1和R 2(即輸出子集)。由於總接受域的子集用於獲得一組輸出樣本,因此可能需要填充操作來生成缺失樣本。在示例性實現方式中,第一子網對第一多個分塊的處理和/或第二子網對第二多個分塊的處理可以包括在用一個或多個層處理之前的填充。因此,所述輸入子集中缺失的樣本可以通過填充過程添加,這提高了重建輸出子集R i的品質。因此,在組合輸出子集R i之後,重建圖像的品質也得到了提高。
回顧一下,填充是指通過使用預定義的樣本值或在輸入圖像中的位置使用樣本值生成新樣本(在圖像邊界處)來增加輸入(即輸入圖像)的大小。這在圖11中示出。生成的樣本是不存在的實際樣本值的近似值。因此,例如,可以基於待填充樣本的一個或多個最近鄰樣本獲得填充樣本。例如,通過複製最近鄰樣本來填充樣本。如果在相同距離上有更多的相鄰樣本,則這些相鄰樣本中要使用的相鄰樣本可以由約定(例如標準)指定。另一種可能性是從多個相鄰樣本中插值填充樣本。或者,填充可以包括使用零值樣本。也可能需要填充通過處理生成的中間樣本。中間樣本可以根據包括一個或多個填充樣本的輸入子集的樣本生成。所述填充可以在神經網路的輸入之前或在神經網路內執行。但是,填充應在處理一個或多個層之前進行。
為了完整性,圖19示出了另一個示例,其中,在輸出子集R i被裁剪之後,相應的裁剪區域R i-crop被無縫融合,而沒有裁剪區域的任何重疊。與圖17A、圖17B和圖18的示例相反,區域L i是不重疊的。相應的實現方式可以如下所示:
1. 分別確定第一張量和第二張量中的N個非重疊區域L i(即第一多個分塊和第二多個分塊),其中,區域中的至少一個包括R i中一個的總接受域的子集,其中,R i的聯集構成第一子網或第二子網的完整輸出(例如特徵張量 )。
2. 使用NN獨立處理每個L i,以獲得區域R i
3. 融合R i以獲得融合後的輸出張量。
圖19示出了這種情況,其中,L i被選擇為非重疊區域。這是一個特殊情況,在這種情況下,最大限度地減少了獲得整個重建輸出(即輸出圖像)所需的計算總量。但是,重建品質可能會受到影響。
如上所述,第一子網和第二子網是神經網路的一部分。子網本身就是一個神經網路,包括至少一個處理層。在一種實現方式中,所述第一子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理;和/或所述第二子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理。
在一個實現示例中,所述第一子網和所述第二子網執行作為圖像或移動圖像壓縮的一部分的相應的處理。
此外,第一子網和/或第二子網執行以下步驟之一:卷積子網的圖像編碼;速率失真優化量化(rate distortion optimization quantization,RDOQ);圖像濾波。如上所述,第一子網和/或第二子網可以是圖9的編碼裝置(或編碼器)901或Q/RDOQ 902,其中,輸入圖像x首先由編碼器901處理,以執行圖像編碼。所述編碼器901可以是VAE編碼器-解碼器框架的一部分,如圖6A和圖6B所示,其中,相應的編碼器「g a」通過一系列卷積層601至604處理輸入圖像(包括通過GDN層處理)來執行相應的圖像編碼。類似地,圖6A和圖6B中的量化器「Q」可以執行作為第一子網和/或第二子網的量化或RDOQ的功能。同樣的情況也適用於圖9中的單元Q或RDOQ 902和908。圖像後濾波在圖6A/圖6B和圖9中沒有進一步示出。通常,解碼裝置處的神經網路的一些處理層可以具有後濾波或一般濾波功能。
例如,圖16示出了編碼裝置的示例,該編碼裝置可以對應於神經網路,並且包括作為第一子網的編碼器子網1601和作為第二子網的RDOQ子網1602。但是,本發明不限於這種實施例。神經網路可以是用於解碼圖像或潛在表示的網路,並且包括解碼子網和後濾波子網。子網的其它示例是可能的,包括預處理子網或其它子網。
如圖16中所示,編碼裝置(或一般地,編碼處理)還可以包括用於超編碼器1603的輸出z的超編碼器1603和量化器1608,以及用於對待包括在碼流2中的超先驗上的量化資訊( )進行編碼的算術編碼器1609。
解碼裝置(或解碼處理)對應地還可以包括超先驗資訊的算術解碼器1610,之後是超解碼器1607。編碼和解碼的超先驗部分可以對應於圖6A和圖6B中的VAE框架或其變型。
圖6A和圖6B示出了基於NN的VAE框架內的編碼器,具有相應的卷積層601至606,其中,輸入圖像(圖像資料)的相應大小隨後減小一半。例如,神經網路(neural network,NN)使用的多個樣本(即圖像資料的樣本)可以取決於NN的第一輸入層的內核大小。神經網路(neural network,NN)的一個或多個層可以包括一個或多個池化層和/或一個或多個子採樣層。NN可以通過一個或多個池化層池化多個樣本來生成輸出子集的一個樣本。或者或此外,一個輸出樣本可以由NN通過一個或多個下採樣卷積層(例如圖6B中的卷積層601至606)的子採樣(即下採樣)生成。池化和下採樣可以組合以生成一個輸出樣本。圖12示出了兩個卷積層的下採樣,從總接受域的7個樣本開始,提供一個樣本作為輸出。
在圖6A和圖6B中,輸入圖像614對應於圖像資料。根據一種實現方式,所述輸入張量614為包括一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。或者,輸入張量可以是圖像的潛在空間表示,其可以是預處理的輸出(例如輸出張量)。一個或多個分量是與圖像樣本相關聯的顏色分量和/或深度和/或運動圖和/或其它特徵圖。
需要說明的是,輸入張量可以表示具有一個或多個空間分量的其它類型的資料(例如,任何類型的多維資料),所述空間分量可以適合於如第一實施例中所描述的通過子網進行分塊和/或處理。
在一種實現方式中,所述輸入張量具有至少兩個分量,即第一分量和第二分量;所述第一子網將所述第一分量劃分為第三多個分塊,並將所述第二分量劃分為第四多個分塊,其中,所述第三多個分塊和所述第四多個分塊中的至少兩個相應的並置分塊大小不同。原則上,本發明不限於任何特定數量的空間分量。可以有一個空間分量(例如灰度圖像)。但是,在本實現方式中,輸入張量中存在多個空間分量。第一分量和第二分量可以是顏色分量。然後,分塊不僅可能因數網而異,而且可能因同一子網處理的分量而異。
因此,此外或或者,所述第二子網將所述第一分量劃分為第五多個分塊,並將所述第二分量劃分為第六多個分塊,其中,所述第五多個分塊和所述第六多個分塊中的至少兩個相應的並置分塊大小不同。換句話說,第二輸入張量的空間分量的分塊可能不同。下面提供了第二實施例的進一步的細節,其中,分塊對於不同的空間輸入分量不同。第二實施例可以與目前描述的第一實施例組合,其中,分塊對於神經網路的不同子網不同。
圖16的編碼(類似於圖6A和圖6B)還包括通過將所述神經網路的所述處理的輸出包括到碼流中,生成所述碼流。神經網路還可以包括熵解碼。這在圖6A中示出,其中,在通過編碼器神經網路(卷積層601至604)對輸入圖像614進行編碼之後,對編碼器NN ga的輸出y進行量化(例如RDOQ)和算術編碼(613),從而提供碼流1。類似地,超先驗神經網路取(瓶頸)特徵圖y(編碼器NN ga的輸出),並通過卷積層605和606以及兩個ReLU層處理,並提供包含輸入圖像統計的輸出z。進行量化和算術編碼(615),以生成碼流2。相應的碼流1和碼流2同樣通過圖6B、圖9和圖9A中所示的處理生成。
對於如以上所討論確定的分塊的大小,碼流的生成還包括將所述第一多個分塊中的所述分塊的大小的指示和/或所述第二多個分塊中的所述分塊的大小的指示包括在所述碼流中。該碼流可以是包括碼流1和碼流2的碼流的一部分,即由整個編碼裝置(編碼處理)生成的碼流的一部分。
在第二實施例中討論了關於分量(包括顏色分量)的處理和分塊大小的指示的進一步細節和實現示例。在這裡,簡單地參考圖20,示出了各種參數(例如第一多個分塊中的分塊的大小和/或第二多個分塊中的分塊的大小)的示例,相應的指示被包括在碼流中。
輸入張量的編碼處理具有其解碼對應關係,從而在處理中共用功能對應關係。在這個示例性和非限制性實施例中,提供了一種用於對表示圖像資料的張量進行解碼的方法。張量可以具有兩個空間維度中寬度=w、高度=h和大小等於D的第三維度(例如深度或通道的數量)的矩陣形式。該方法包括:至少包括第一子網和第二子網的神經網路處理表示所述圖像資料的輸入張量。需要說明的是,解碼器的輸入張量的寬度和高度可能與編碼器處理的輸入張量的寬度和高度不同。此外,如本領域技術人員所知,解碼器的第一子網和第二子網可以完全或部分(例如在功能上)執行編碼器的第一子網和第二子網的反函數。但是,反函數不能以嚴格的數學方式解釋。相反,術語「反」是指用於對張量進行解碼的處理,以便重建原始圖像資料。本領域技術人員可以理解,編碼壓縮和解碼解壓縮可以包括解碼和/或編碼可能不需要的進一步處理。例如,圖16中所示的RDOQ是僅用於編碼器的處理。還需要說明的是,術語「第一」和「第二」子網僅僅是區分解碼器的子網的標籤(為此目的,上面討論的編碼器也是如此)。
圖16示出了編碼分支的第一子網和/或第二子網的示例,包括解碼器1604和後濾波器1611。在該方法中,所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊;在應用所述第一子網之後,將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊。在圖16的示例中,第一子網是解碼器1604,其輸出作為第二子網的輸入,第二子網是後濾波器1611。在這裡,第一張量是潛在空間中的量化特徵張量 ,其預先由算術解碼器1606從碼流1解碼。相應地,輸入到用於後濾波的第二子網1611的第二張量 是特徵張量,例如特徵圖中的特徵或潛在空間中的特徵圖。因此,與編碼器的處理類似,輸入張量的類型(例如第一和第二張量)可以取決於先前子網執行的處理。在圖16的示例中,上述子網是編碼器1604。因此,上述術語「之後」並不將上述解碼處理限制在第一子網的輸出直接輸入到第二子網之後。而是,「之後」意味著第一多個分塊和第二多個分塊例如在同一通路內以一定的時間連續處理,這在時間上可能不是立即的。
此外,輸入的類型還可以取決於處理後的輸入資料可以被分支以用作另一個(例如後續)子網的輸入的層(例如神經網路NN的層或未訓練網路的層)。例如,這樣的層可以是隱藏層的輸出。與編碼處理類似,第一張量和第二張量在解碼處理中被劃分為分塊,這些分塊已經在上面定義。
在圖16中,解碼器1604可以是具有處理1至處理N(處理流水線1至N)的第一子網,如圖16所示,解碼器1604取輸入張量 ,該輸入張量被劃分為N個分塊 (第一多個分塊)。然後,相應的塊處理相應的張量分塊,即處理1至處理N,它們不需要彼此相互作用(例如,在處理期間相互等待)。每個處理的結果提供N個分塊 (張量)。在處理第一多個分塊之後,解碼器子網1604可以將經處理的分塊融合為第一輸出張量 。在圖16中,所述第一輸出張量可以是後濾波器1611用作輸入的第二張量。後濾波器1611可以是具有處理1至處理N的第二子網(處理流水線1至N),類似於解碼器1604,後濾波器1611將輸入張量 劃分為第二多個分塊 ,這些分塊由後濾波器1611的相應處理1至處理N處理。處理1至處理N提供相應的分塊 作為輸出,這些分塊可以融合到分塊 中。在圖16的示例中,融合的 是指表示重建圖像資料的解碼張量。融合可以(但不一定)涉及如圖17至圖19中所示的裁剪。需要說明的是,不需要執行融合/組合到張量 。可以想像,第二子網重用第一子網的分塊,並且僅僅修改它(通過進一步劃分分塊來使分塊變小,或者通過將多個分塊合併為一個來使分塊變大)。在圖16的示例中,處理1至處理N可以基於分塊執行處理,即處理i處理分塊i。或者,處理i可以處理輸入張量的多個分量中的分量i。在這種情況下,處理i將分量i劃分為多個分塊,並分別或並行處理這些分塊。
此外,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。換句話說,每個子網細分為分塊的方式可能不同,因此每個子網可以使用不同的分塊大小。但是,每個子網(即第一張量和第二張量)的輸入被劃分為相同大小的分塊網格,但底部和右側圖像邊界的分塊除外,這些分塊可以具有較小的大小。
否則,在解碼處理中使用的第一多個分塊和第二多個分塊的屬性和/或特性類似於前面討論的編碼處理之一。具體地,在上述示例性實現方式中,在空間維度中的至少一個維度上相鄰的第一多個分塊中的分塊部分重疊;和/或在空間維度中的至少一個維度上相鄰的第二多個分塊中的分塊部分重疊。相鄰分塊以及部分重疊的示例在圖17A、17B、18、19和20中示出。
此外,在一些示例性實現方式中,第一子網獨立處理第一多個分塊中的分塊;和/或第二子網獨立處理第二多個分塊中的分塊。換句話說,分塊的處理彼此獨立,因此是可並行的。在一個示例中,在一些實現方式中,第一子網並行處理第一多個分塊中的至少兩個分塊和/或第二子網並行處理第二多個分塊中的至少兩個分塊。圖16示出了解碼器側的並行處理,其中,解碼器1604處理第一輸入張量的分量(例如,分塊和/或空間分量) ,分量1至N的處理之間沒有相互影響。每個處理的結果是輸出張量分量 。它們可以進一步組合為輸出張量 ’。第二子網可以是圖16中的後濾波器1611,其將來自解碼器1604(第一子網)的張量 作為輸入。在這個示例中,後濾波器1611的輸入直接連接到解碼器1604的輸出。或者,圖16中的後濾波器與解碼器之間可以有進一步的處理。輸入張量 被後濾波器劃分為N個分塊 ,然後後濾波器獨立或並行處理相應的分塊。圖16中示出了並行處理,因為分量1至N的處理不會相互影響。後濾波器的並行處理的結果是重建分塊 ,其可以融合到一個表示重建圖像資料的張量 中。
此外,第一張量的劃分包括基於第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或第二張量的劃分包括基於第二預定義條件確定第二多個分塊中的分塊的大小。例如,第一預定義條件和/或第二預定義條件基於圖像資料或如以上參考編碼所描述的其它特徵中存在的可用解碼器硬體資源和/或運動。
用於解碼處理的第一子網和第二子網可以具有與用於編碼處理的子網類似的配置。具體地,所述第一子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理;和/或所述第二子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理。圖6A和圖6B示出了基於NN的VAE框架內的解碼器,具有相應的卷積層607至6012,其中,輸入張量(特徵圖) 的相應大小隨後放大2(上採樣)。此外,第一子網和第二子網執行作為圖像或移動圖像解壓縮的一部分的相應處理。這樣的處理可以由圖6A和圖6B中所示的VAE編碼器提供,將特徵張量 作為輸入,以便解壓縮和重建輸出圖像作為卷積層607的輸出,表示重建圖像資料(即經解碼的張量)。例如,第一子網和/或第二子網執行以下步驟之一:卷積子網的圖像解碼;圖像濾波。如上所述,用於解碼處理的第一子網和/或第二子網可以是圖9的解碼器904,其處理特徵圖張量 ,以便生成近似原始圖像資料 的重建圖像資料 。如圖9所示,所述解碼器904可以是VAE編碼器-解碼器框架的一部分,如圖6A和圖6B所示,其中,相應的解碼器「gs」通過卷積層610至607的序列處理特徵張量 (包括通過反向IGDN層處理)來執行相應的圖像解碼。圖像濾波(例如後濾波器)在圖6A/圖6B和圖9中沒有進一步示出。
在一種實現方式中,所述輸入張量為包括一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。或者,輸入張量可以是圖像的潛在空間表示,其可以是預處理的輸出(例如輸出張量)。一個或多個分量是與圖像樣本相關聯的顏色分量和/或深度和/或運動圖和/或其它特徵圖。所述輸入張量具有至少兩個分量,即第一分量和第二分量;所述第一子網將所述第一分量劃分為第三多個分塊,並將所述第二分量劃分為第四多個分塊,其中,所述第三多個分塊和所述第四多個分塊中的至少兩個相應的並置分塊大小不同;和/或所述第二子網將所述第一分量劃分為第五多個分塊,並將所述第二分量劃分為第六多個分塊,其中,所述第五多個分塊和所述第六多個分塊中的至少兩個相應的並置分塊大小不同。
以上所描述的解碼方法還包括從碼流中提取輸入張量,以由神經網路進行處理。神經網路還可以包括熵解碼。圖6A和圖6B示出了通過算術解碼從碼流1解碼解碼器子網gs的輸入張量 。熵編碼由子網hs執行,其中,熵張量 可以通過算術解碼從碼流2解碼,其中, 被處理,以獲得關於用於 的解碼處理的經編碼的圖像資料的統計資訊。圖6B示出了關於熵解碼的進一步細節,其中,關於以平均值μ和方差 給出的分佈的資訊進一步輸入到高斯熵模型670,並用於 的算術解碼。如以上所討論,具有各種上採樣卷積層611和612的子網hs(圖6A)(可能包括洩漏的ReLU層660)可以是圖9和圖9B中所示的超解碼器907的一部分。在示例性實現方式中,第二子網執行圖像後濾波;對於所述第二多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的。此外,解碼處理還包括從所述碼流解析所述第一多個分塊中的所述分塊的大小的指示和/或所述第二多個分塊中的所述分塊的大小的指示。
在這個示例性和非限制性的實施例中,提供了一種儲存在非暫態性媒體中的電腦程式,該電腦程式包括代碼,當所述代碼在一個或多個處理器上執行時,所述代碼執行以上所討論的任何編碼和解碼方法的步驟。編碼和編碼處理的相應流程圖如圖21和圖22所示。至於圖21的編碼處理,在步驟2110中,第一子網處理第一張量,包括將所述第一張量劃分為多個分塊,然後第一子網處理這些分塊。需要說明的是,在圖21中,圖像資料(即表示圖像資料的輸入張量)被輸入到虛線所示的第一子網。這說明原始圖像資料不一定直接輸入到第一子網,這可以取決於第一子網相對於處理循序執行的處理。換句話說,作為第一子網的輸入的第一張量來自圖像資料。在第一子網是圖9所示的編碼器901的情況下,第一張量可以是輸入張量 。在步驟S2120中,第一子網進一步處理第一多個分塊。第一子網進行處理之後,在步驟S2130中,第二子網處理第二張量,包括將第二張量劃分為第二多個分塊。同樣,輸入虛線指示的第二子網的第二張量不一定是第一子網的直接輸出。在圖9的實現示例中,編碼器901(第一子網)的特徵張量 直接輸入到RODQ 902(第二子網)。但是,在編碼器901與RDOQ 902之間可以有附加的處理。在步驟S2140中,進一步處理第二多個分塊。第二子網的處理的輸出(可以包括進一步的處理(圖21中未示出))可以包括生成碼流(例如,圖9中的碼流1和/或碼流2)。此外,用於確定第一多個分塊和第二多個分塊中的分塊的大小和/或將所述大小的指示包括到碼流中的處理可以是在提供碼流作為神經網路處理的輸出之前的處理步驟。至於圖22的解碼處理,流程圖描述了反向處理步驟,從輸入張量開始,輸入張量可以是第一子網的直接或間接輸入,如虛線所示。同樣,在圖9的示例性實現方式中,特徵張量 被用作解碼器904的直接輸入,解碼器904在這種情況下是第一子網。在步驟S2220中,第一子網(例如解碼器1604)處理第一多個分塊,如圖16所示。在第一子網處理之後,在步驟S2230中,第二子網通過將第二張量劃分為多個分塊來處理第二張量,然後在步驟S2240中,第二子網進一步處理第二張量。在圖16的示例性實現方式中,解碼器1604的第一子網的輸出 ’是第二張量,對應於第二子網的後濾波器1611處理第二張量。在圖16的示例中,第二多個分塊的處理提供對應於重建圖像資料的 作為輸出。需要說明的是,在圖16中的解碼器1604與後濾波器1611的處理之間,可以進行進一步的處理,在這種情況下,解碼器1604的輸出 ’可以不直接輸入到後濾波器1611。
此外,如上所述,本發明還提供了用於執行上述方法的步驟的設備(裝置)。
在這個示例性和非限制性實施例中,提供了一種處理裝置,用於對表示圖像資料的輸入張量進行編碼。圖23示出了具有執行編碼處理步驟的相應模組的處理裝置2300,包括處理電路2310。該處理電路用於:通過神經網路處理輸入張量,所述神經網路至少包括第一子網和第二子網,第一子網和第二子網由NN處理模組(子網1 2311)和NN處理模組(子網2 2312)實現。NN處理模組(子網1 2311)可以具有單獨的劃分模組1 2313,劃分模組1 2313將第一張量在空間維度上劃分為第一多個分塊,並通過第一子網處理第一多個分塊。或者,處理第一輸入張量和/或第一多個分塊的相應模組可以在一個單個模組中實現,該單個模組可以包括在單個電路或單獨的電路中。類似地,NN處理模組(子網2 2312)和劃分模組2314將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊。需要說明的是,在處理第一張量之後,第二張量的處理可以通過佈線相應的模組來實現,使得信號(就其輸入信號和輸出信號而言)以相應的時間(不一定在時間上立即)順序輸入。或者或此外,相應的指示順序可以通過軟體配置模組來實現。模組2313和2314還可以提供確定第一多個分塊和/或第二多個分塊中的分塊的大小的功能。處理裝置還可以具有碼流模組2315,其提供生成碼流的功能,其中,神經網路處理的輸出被包括在碼流中。此外,模組2315提供了在碼流中包括第一多個分塊和/或第二多個分塊中的分塊的大小的指示的功能。
在這個示例性和非限制性實施例中,提供了一種處理裝置,用於對表示圖像資料的輸入張量進行編碼,所述處理裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述編碼器執行根據以上所描述的編碼方法的方法。
在這個示例性和非限制性實施例中,提供了一種處理裝置,用於對表示圖像資料的張量進行解碼。圖24示出了具有執行解碼處理步驟的相應模組的處理裝置2400,包括處理電路2410。該處理電路用於:通過神經網路處理輸入張量,所述神經網路至少包括第一子網和第二子網,第一子網和第二子網由NN處理模組(子網1 2411)和NN處理模組(子網2 2412)實現。NN處理模組(子網1 2411)可以具有單獨的劃分模組1 2413,劃分模組1 2413將第一張量在空間維度上劃分為第一多個分塊,並通過第一子網處理第一多個分塊。或者,處理第一輸入張量和/或第一多個分塊的相應模組可以在一個單個模組中實現,該單個模組可以包括在單個電路或單獨的電路中。類似地,NN處理模組(子網2 2412)和劃分模組2414將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊。模組2413和2414還可以提供確定第一多個分塊和/或第二多個分塊中的分塊的大小的功能。還需要說明的是,在處理第一張量之後,第二張量的處理可以通過佈線相應的模組等來實現,使得信號(就其輸入信號和輸出信號而言)以相應的時間(不一定在時間上立即)順序輸入。或者或此外,相應的指示順序可以通過軟體配置模組來實現。處理裝置還可以具有解析模組2415,提供從碼流解析第一多個分塊和/或第二多個分塊中的分塊的大小的指示的功能。模組2415還可以提供從碼流中提取輸入張量的功能。
在這個示例性和非限制性實施例中,提供了一種用於對表示圖像資料的張量進行解碼的處理裝置,所述處理裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述編碼器執行根據以上所描述的解碼方法的方法。
以上所描述的並由圖16中所示的VAE-編碼器-解碼器執行的編碼和解碼處理可以在圖1A的解碼系統10內實現。因此,源設備12表示編碼側,提供包括圖16的輸入張量x的輸入圖像資料21的壓縮。具體地,圖1A的編碼器20可以包括用於根據本發明進行編碼處理的模組,例如編碼器1601、量化器或RDOQ 1602和算術編碼器1605。編碼器20還可以包括超先驗模組,例如超解碼器1603、量化器或RDOQ 1608和算術編碼器1609。類似地,圖1A的目的地設備14表示解碼側,提供表示圖像資料的輸入張量的解壓縮。具體地,圖1A的解碼器30可以包括用於根據本發明進行解碼處理的模組,例如圖16的解碼器1604和後濾波器1611,以及算術解碼器1606。此外,解碼器30還可以包括用於解碼 的超先驗(算術解碼器1610、超解碼器1607和算術解碼器1606)。換句話說,圖1A的編碼器20和解碼器30可以被實現和配置為包括圖16的任何模組,以實現根據本發明的編碼或解碼處理,其中,多個子網處理被劃分為第一多個分塊和第二多個分塊的輸入張量,然後,第一多個分塊和第二多個分塊如第一實施例中所描述進行處理。雖然圖1A分別示出了編碼器20和解碼器30,但它們可以通過圖1B的處理電路46實現。換句話說,處理電路46可以通過實現圖16的相應模組的相應電路來提供本發明的編碼-解碼處理的功能。
類似地,圖2的視頻解碼設備200及其處理器230的解碼模組270可以執行本發明的編碼處理或解碼處理的功能。例如,視頻解碼設備200可以是具有圖16的相應模組的編碼器或解碼器,以便執行如以上所描述的編碼或解碼處理。
圖3的裝置300可以實現為編碼器和/或解碼器,其具有編碼器1601、量化器或RDOQ 1602、解碼器1604、後濾波器1611、超編碼器1603和超解碼器1607,以及算術編碼器1605、1609和算術解碼器1606、1610,以便執行如根據第一實施例討論的分塊的處理。例如,圖3的處理器302可以具有相應的電路來根據以上所描述的方法執行編碼和/或解碼處理。
圖4中所示的編碼器20和圖5中所示的解碼器30的示例性實現方式也可以實現本發明的編碼和解碼功能。例如,圖4中的分割單元452可以將第一張量和/或第二張量劃分為第一多個分塊和/或第二多個分塊,如圖16的編碼器1601執行的那樣。因此,語法元素466可以包括分塊的大小和位置的指示,以及濾波器索引等的指示。類似地,量化單元408可以執行RDOQ模組1602的量化或RDOQ,而熵編碼單元470可以實現超先驗(即模組1603、1605、1607、1608、1609)的功能。相應地,圖5的熵解碼單元504可以通過將經編碼的圖像資料21(輸入張量)劃分為分塊,同時從碼流解析分塊大小或位置等的指示作為語法元素566來執行圖16的解碼器1604的功能。熵解碼單元504還可以實現超先驗的模組(即模組1606、1607、1610)。圖16的後濾波1611也可以由熵解碼單元504等執行。或者,後濾波器1611可以作為附加單元(圖5中未示出)在模式應用單元560內實現。
第二實施例
在第一實施例的先前示例性實現方式中,第一多個分塊和/或第二多個分塊中的分塊分別由第一子網和第二子網處理,如以上所討論。在這裡,討論了多個流水線中分量的編碼和解碼處理,其中,每個流水線處理一個或多個圖像/圖像分量,這些圖像/圖像分量可以是顏色平面。從下面的討論可以看出,第一實施例和第二實施例部分共用類似或相同的處理。
在這個示例性和非限制性實施例中,提供了一種用於處理表示圖像資料的輸入張量的方法。輸入張量可以具有寬度=w、高度=h和大小等於D的第三維度(如深度或通道的數量)的矩陣形式。此外,輸入張量可以由神經網路處理。在該方法中,處理輸入張量的多個分量,所述分量包括空間維度上的第一分量和第二分量。所述輸入張量為包括所述多個分量中的一個或圖像序列,多個分量的圖像或其中至少一個分量為顏色分量。在一種實現方式中,所述第一分量表示所述圖像資料的亮度分量;所述第二分量表示所述圖像資料的色度分量。例如,輸入張量的多個分量可以是YUV格式,Y是亮度分量,UV是色度分量。亮度分量可以被稱為主要分量,而色度分量可以被稱為次要分量。需要說明的是,術語「主要」和「次要」是用於在主要分量上比在次要分量上施加更多的權重和/或重要性的標籤。如本領域技術人員所知,即使亮度分量通常是具有較高重要性的分量,也可能存在與亮度不同的另一個分量被優先排序的應用實例。所述優先排序通常伴隨著使用關於主要分量(例如亮度)的資訊作為輔助資訊來處理次要分量(即,不如亮度重要)。所述多個分量還可以是RGB格式或適合於在相應處理流水線中處理分量的任何其它格式。該方法包括:處理所述第一分量,包括:將所述第一分量在所述空間維度上劃分為第一多個分塊並分別處理所述第一多個分塊中的所述分塊。處理所述第二分量,包括:將所述第二分量在所述空間維度上劃分為第二多個分塊並分別處理所述第二多個分塊中的所述分塊。需要說明的是,單獨並不意味著獨立,即仍然可以共用輔助資訊來處理第一分量和/或第二分量。矩形形狀的分塊的示例如圖14、圖17A、圖17B和圖18至圖20所示。在該方法中,第一多個分塊和第二多個分塊中的至少兩個相應的並置分塊的大小不同。換句話說,第一多個分塊和第二多個分塊中的分塊具有不同的大小。至於相應的多個分塊中的分塊的大小,第一多個分塊中的所有分塊的大小相同和/或第二多個分塊中的所有分塊的大小相同。因此,相應的流水線處理具有相同大小的分塊,流水線之間的分塊是不同的。具體地,Y和UV可以具有不同的塊分割,這與VVC不同。分塊是為了解決記憶體問題而引入的,可能包括多個塊。分塊相互獨立解碼,可以並行解碼。塊是分塊/圖像/條帶的一部分,其中,每個塊使用自己的解碼方式,解碼是順序的,因此需要編碼樹(塊結構)來更好地進行本地適配。換句話說,在這個示例性和非限制性實施例中,可以使用單獨的色度編碼樹。
在一種實現方式中,所述第一多個分塊中的至少兩個分塊獨立或並行處理;和/或所述第二多個分塊中的至少兩個分塊獨立或並行處理。圖25示出了在單獨的流水線中處理的第一分量是亮度和第二分量是色度U或V中的一個的情況下的編碼器-解碼器處理的示例。需要說明的是,色度分量U和V可以作為一個色度分量聯合處理,如圖25所示。在示例性實現方式中,所述輸入張量的所述處理包括作為圖像或移動圖像壓縮的一部分的處理。例如,第一分量和/或第二分量的處理包括以下步驟之一:神經網路的圖像編碼;速率失真優化量化(rate distortion optimization quantization,RDOQ);圖像濾波。壓縮處理在圖25中通過相應的模組編碼器2501、2508和RDOQ 2502、2509描述。編碼器2501和2508通過神經網路(neural network,NN)對亮度Y和色度分量UV執行輸入圖像x的圖像編碼。模組RDOQ 2502和2509通過優化速率失真來量化特徵張量 ,並為其相應的分量提供量化特徵張量 作為輸出。模組超編碼器2503、2510和RDOQ 2504、2511在編碼側形成超先驗網路的部分,該超先驗網路生成圖像資料的統計資訊 。此外,碼流通過將第一分量和第二分量的處理的輸出包括到碼流中來生成。在圖25的示例中,第一(亮度)分量和第二(色度)分量的量化特徵張量 被算術編碼(1605),並分別包括到碼流Y1和碼流UV1中。類似地,亮度和色度的量化統計資訊 被算術編碼(1609),並分別包括到碼流Y2和碼流UV2中。在圖25的示例中,生成兩個碼流,支援將經編碼的圖像資料與所述圖像資料的編碼統計量解耦。
另一個示例性實現方式,輸入張量的處理包括作為圖像或移動圖像解壓縮的一部分的處理。例如,第一分量和/或第二分量的處理包括以下步驟之一:神經網路的圖像解碼;圖像濾波。解壓縮處理在圖25中通過相應的模組解碼器2506、2513和後濾波器2507、2514描述。解碼器2506和2513通過從相應的碼流Y1和碼流UV1解碼亮度和色度分量的量化特徵張量 ,通過神經網路(neural network,NN)對亮度分量Y和色度分量UV執行輸入圖像x的圖像解碼。如上所述,超先驗還需要用於解碼的模組,包括超解碼器2505、2512,其解碼來自碼流Y2和碼流UV2的圖像資料的量化統計資訊 ,以用於亮度分量和色度分量。該資訊被輸入到算術解碼器1606中,其輸出被提供給解碼器2505和2513。在一個實現示例中,第一分量和/或第二分量的處理包括圖像後濾波。如圖25所示,解碼器輸出被輸入到後濾波器2507和2514,後濾波器2507和2514執行分量的圖像的後濾波,並分別提供重建亮度 和色度 的重建圖像資料 作為輸出。圖25中所示的功能塊(模組)類似於第一實施例的圖16中所示的VAE編碼器-解碼器的相應模組的相同結構佈置。
在圖25的示例中,輸入張量是YUV,其具有Y、U和V作為多個分量。具體地,這裡的第一分量是亮度Y,其被輸入到亮度流水線的編碼器2501。類似地,如上所述,U和V可以被共同視為第二分量,其被輸入到色度流水線的編碼器2508中。需要說明的是,已經將不同的附圖標記分配給亮度和色度流水線的VAE編碼器-解碼器的相應功能模組(單元),因為模組可以被不同地配置,使得可以支援對亮度和色度流水線具有不同大小的相應分塊進行處理。但是,模組(例如編碼器2501和編碼器2508)可以在編碼、RDOQ、解碼、後濾波等方面執行相同/相似的功能。所述功能與圖16的VAE編碼器-解碼器的相應模組執行的功能相同,並且已經在上面描述過。在一種實現方式中,所述第二分量的所述處理包括根據所述圖像的亮度分量的表示對所述圖像的色度分量進行解碼。這在圖25中示出,其中,亮度分量是主要分量,因此被認為比色度分量UV重要。如圖所示,在亮度和色度的解碼處理中,亮度特徵張量 通過算術解碼(1606)從亮度碼流Y1獲得,該碼流Y1用作解碼器2513的輸入,用於對UV分量進行解碼。
與第一實施例類似,在空間維度中的至少一個維度上相鄰的第一多個分塊中的分塊部分重疊;和/或在空間維度中的至少一個維度上相鄰的第二多個分塊中的分塊部分重疊。上面參考圖17A、圖17B和圖18至圖20討論了可能部分重疊的相鄰分塊的示例。在示例性實現方式中,第一分量的劃分包括基於第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或第二分量的劃分包括基於第二預定義條件確定第二多個分塊中的分塊的大小。例如,所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。第一和/或預定義條件可以是解碼器和/或編碼器的記憶體資源。當可用記憶體小於記憶體資源的預定義值時,所確定的分塊大小可以小於當可用記憶體等於或大於所述預定義值時的分塊大小。或者或此外,與所述運動的存在不那麼明顯時相比,當運動的存在明顯時,可以確定分塊大小更小。運動是否明顯(即快速運動和/或快速/頻繁運動變化)可以由相應的運動向量根據其幅度和方向的變化確定,並與幅度和/或方向和/或頻率的對應預定義值(閾值)進行比較。此外,另一個預定義條件可以是感興趣區域(region of interest,ROI),其中,在ROI大小小於ROI參考大小的情況下,分塊大小可以被確定為較小。例如,圖像資料中的ROI可以基於檢測到的物件(例如車輛、自行車、摩托車、行人、動物等),其可以具有不同的大小、快速或緩慢移動,和/或快速或緩慢和/或多次改變它們的運動方向(即,相對於預定義的頻率值更頻繁)。ROI還可以基於圖像資料內區域的平滑度。例如,對於具有較大平滑度的區域(例如,相對於預定義的平滑度值測量),分塊大小可以較大,而較小分塊大小可以用於較不光滑的區域,即具有非常明顯的空間變化等的區域。換句話說,分塊大小可以根據圖像資料內區域的紋理程度來確定。此外,可以為主要分量(例如為亮度)確定較大的分塊大小。相應地,可以為次要分量(例如色度)確定較小的分塊大小。因此,可以優化分塊大小(包括場景特定的分塊大小),以適應與圖像資料的內容聯合的硬體資源。在另一種實現方式中,確定所述第二多個分塊中的所述分塊的大小包括縮放所述第一多個分塊中的所述分塊。換句話說,以第一分量的分塊大小為參考,以便通過縮放第一分量的分塊大小來匯出第二分量的分塊大小。縮放可以包括放大(擴展),使得第二多個分塊的經縮放的分塊大於第一多個分塊的大小。或者,縮放可以包括縮小(收縮),使得第二多個分塊的經縮放的分塊小於第一多個分塊的大小。是使用擴展還是收縮可以取決於第一分量和/或第二分量的重要性。如果正在處理的多個分量中的至少一個具有至少一個顏色分量,則使用擴展或收縮也可以取決於特定顏色(例如,指示「危險/警告」等的顏色分量)。
在下文中,分塊大小的資訊可以被指示並從碼流解碼,討論了分塊大小和/或其它合適參數的指示和解碼的各個方面。在示例性實現方式中,所確定的所述第一多個分塊和/或所述第二多個分塊中的分塊的大小的指示被編碼到碼流中。此外,所述指示還包括所述第一多個分塊和/或所述第二多個分塊中的所述分塊的位置。例如,所述第一分量為亮度分量,所述碼流中包括所述第一多個分塊中的所述分塊的所述大小的所述指示;所述第二分量是色度分量,所述碼流中包括縮放因數的指示,其中,所述縮放因數與所述第一多個分塊中的所述分塊的所述大小和所述第二多個分塊中的所述分塊的所述大小相關。
下面的表中示出了指示分量的分塊的分塊大小和/或位置的示例,並摘錄了實現指示的代碼語法。語法表是示例,不限於該特定語法。具體地,這些語法示例是為了說明,因為它們可以用於指示包括在碼流中的亮度分量和/或色度分量的分塊大小和/或分塊位置等的相應指示。第一語法表參考自動解碼器,而第二表參考後濾波器。如表1和表2所示,相同/相似的指示可以被使用並包括在碼流中,但可以單獨包括,以用於自動解碼器(表1)和後濾波器(表2)。在一種實現方式中,對於所述第一多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的;對於所述第二多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的。換句話說,不同的基於分塊的後濾波參數可以在碼流中指示,因此每個第一多個分塊和/或第二多個分塊的後濾波可以高精度地執行。
在下文中,針對圖25的編碼器-解碼器VAE的模組的部分,以及這些模組使用參考表1和表2的相應指示的方式,討論了一些示例。
表1-代碼行 描述符
tile_description_autodecoder ( ) {
                 tiles_enabled_for_luma u(1)
                 tiles_enabled_for_chroma u(1)
                 if(tiles_enabled_for_luma || tiles_enabled_for_chroma) {
                   tile_description_type u(2)
                 }
                 if(tiles_enabled_for_luma && tiles_enabled_for_chroma) {
                   use_dependend_chroma_tiles u(1)
                 }
                 if(tiles_enabled_for_luma) {
                   if(tile_description_type == 0) { //每級別定義
                          if( level == 0 ) { //級別是在tile_description之前解析的HLS中定義的
                                //未解碼,例如,按級別推斷
                                // tile_width_luma = 128
                                // tile_height_luma = 128
                                // tile_overlap_horizontal_luma = 32
                                // tile_overlap_vertical_luma = 32
                          }
                          if( level == 1 ) { //級別是在tile_description之前解析的HLS中定義的
                                //未解碼,例如,按級別推斷
                                // tile_width_luma = 256
                                // tile_height_luma = 256
                                // tile_overlap_horizontal_luma = 48
                                // tile_overlap_vertical_luma = 48
                          }
                          … //其它級別
                   }
                   if(tile_description_type == 1) { //手動定義分塊網格大小
                                tile_width_luma ue(v)
                                tile_height_luma ue(v)
                                tile_overlap_horizontal_luma ue(v)
                                tile_overlap_vertical_luma ue(v)
                   }
                   if(tile_description_type == 2) { //每分塊手動定義
                          num_luma_tiles ue(v)
                          for( i = 0; i< num_luma_tiles; i++) {
                                tile_start_x[i] ue(v)
                                tile_start_y[i] ue(v)
                                tile_width[i] ue(v)
                                tile_height[i] ue(v)
                                //這裡,重疊可以根據分塊位置和大小推斷
                 } }     }
                 if(     tiles_enabled_for_chroma) {
                   if(   !use_dependend_chroma_tiles) {
                          //與上面的亮度類似
                   }
                   else {
                          //色度分塊是根據色度分塊推斷的
                          //例如,對於YUV444,它們可以相同,而對於YUV420,所有大小都是                                                                               //除以2
                          chroma_tile_scaling_factor ue(v)
}               } }
表2-代碼行 描述符
tile_description_postfilter( ) {
                 tiles_enabled_for_luma u(1)
                 tiles_enabled_for_chroma_U u(1)
                 tiles_enabled_for_chroma_V u(1)
                 if(tiles_enabled_for_luma || tiles_enabled_for_chroma_U || tiles_enabled_for_chroma_V) {
                   tile_description_type u(2)
                 }
                 if(tiles_enabled_for_luma && (tiles_enabled_for_chroma_U || tiles_enabled_for_chroma_V)) {
                   use_dependend_chroma_tiles u(1)
                 }
                 if(tiles_enabled_for_luma) {
                   if(tile_description_type == 0) { //每級別定義
                          if( level == 0 ) { //級別是在tile_description之前解析的HLS中定義的
                                //未解碼,例如,按級別推斷
                                // tile_width_luma = 128
                                // tile_height_luma = 128
                                // tile_overlap_horizontal_luma = 32
                                // tile_overlap_vertical_luma = 32
                          }
                          if( level == 1 ) { //級別是在tile_description之前解析的HLS中定義的
                                //未解碼,例如,按級別推斷
                                // tile_width_luma = 256
                                // tile_height_luma = 256
                                // tile_overlap_horizontal_luma = 48
                                // tile_overlap_vertical_luma = 48
                          }
                          … //其它級別
                   }
                   if(tile_description_type == 1) { //手動定義分塊網格大小
                                tile_width_luma ue(v)
                                tile_height_luma ue(v)
                                tile_overlap_horizontal_luma ue(v)
                                tile_overlap_vertical_luma ue(v)
                   }
                   if(tile_description_type == 2) { //每分塊手動定義
                          num_luma_tiles ue(v)
                          for( i = 0; i< num_luma_tiles; i++) {
                                tile_start_x[i] ue(v)
                                tile_start_y[i] ue(v)
                                tile_width[i] ue(v)
                                tile_height[i] ue(v)
                                //這裡,重疊可以根據分塊位置和大小推斷
                   }     }
                   if(tile_description_type == 3) {
                 //與為解碼器指示的分塊圖相同,複製/使用它
                 } }
                 …
                 …
                 if(     tiles_enabled_for_chroma_U) {
                   if(   !use_dependend_chroma_tiles) {
                          //與上面的亮度類似
                   }
                   else {
                          //色度分塊是根據色度分塊推斷的
                          //例如,對於YUV444,它們可以相同,而對於YUV420,所有大小都是                                                                         //除以2
                 } }
                 if(     tiles_enabled_for_chroma_V) {
                   //與tiles_enabled_for_chroma_U類似
                 }
                 //每分塊的模型模式
                 if(     tiles_enabled_for_luma) {
                   same_model_for_all_luma u(1)
                   if( same_model_for_all_luma ) {
                          model_idx_luma ue(v)
                   }
                   else {
                          use_default_model_for_luma u(1)
                          if(use_default_model_for_luma) {
                                default_model_idx_luma ue(v)
                                for( i = 0; i<num_luma_tiles; i++) {                                                            //num_luma_tiles可以根據上面的指示推斷
                                      use_default_idx[i] u(1)
                                      if(!use_default_idx[i]) {
                                             model_idx_luma[i] ue(v)
                          }     }}        
                          else {
                                for( i = 0; i<num_luma_tiles; i++) {                                                            //num_luma_tiles可以根據上面的指示推斷
                                      model_idx_luma[i] ue(v)
                 } }     }     }
                 if(     tiles_enabled_for_chroma_U) {
                   //與tiles_enabled_for_luma類似
                 }
                 if(     tiles_enabled_for_chroma_V) {
                   //與tiles_enabled_for_luma類似
}               }
A. 解碼器
在這個實現示例中,亮度和色度被單獨解碼,如上面參考圖25所解釋的,圖25示出了用於對處理亮度和色度分量進行解碼的單獨的流水線。但是,如從亮度流水線的算術解碼器1606指向色度流水線的解碼器2513的虛線所示出的,色度分量的解碼需要色度和亮度潛在空間(即CCS)。
分塊圖的匯出:
可以獲得分塊圖的幾種方法如表1所示。
1. 僅為主要分量顯式地指示分塊圖。其它分量使用相同的分塊圖(對於YUV420和CCS,主要分量是亮度/Y,另一個分量是色度/UV)。使用相同的分塊圖包括以文字方式使用相同的分塊圖。在一種實現方式中,相同的分塊圖(例如亮度分量的)用於通過縮放亮度分量的分塊大小來匯出次要分量(例如色度UV)的分塊圖。為此目的,縮放因數的指示被包括在碼流中。在表1中,這樣的縮放因數是「chroma_tile_scaling_factor」。
2. 為圖像的每個分量顯式地指示分塊圖。
在表1的指示示例中,是否指示每個分量的分塊,取決於指示「tiles_enabled_for_chroma」和「tiles_enabled_for_luma」。所述指示可以是簡單的標誌「0」或「1」,指示關閉或打開。
當顯式地指示分塊圖時,可以通過以下方式之一完成:
1. 使用具有相同大小(底部和右側邊界處的分塊除外)的常規分塊網格。指示偏移和大小值,從中可以匯出分塊圖(見下文)。在這種情況下,第一個分量(亮度)的分塊具有相同的大小,其中,當分塊是矩形時,分塊大小是根據寬度和高度定義的。分塊大小的相應指示是表1中的「tile_width_luma」和「tile_height_luma」。對於相同的色度分塊大小,可以使用類似的指示,只是色度分塊大小與亮度分塊大小不同。
2. 使用具有相同大小(底部和右側邊界處的分塊除外)的常規分塊網格。使用偏移和大小值,但不直接指示。而是,大小和偏移值是從已經解碼的級別定義匯出的。分塊圖可以從大小和偏移值匯出(見下文)。
3. 使用任意的分塊網格。首先,指示分塊的數量,然後對於每個分塊,指示其位置和大小(重疊隱式地包括在該指示中)。在表1中,任意網格反映在,對於預定義數量的亮度分塊「num_luma_tiles」,每個分塊可以在「tile_width[i]」和「tile_height[i]」方面具有單獨的大小。此外,分塊位置的指示(這裡是開始位置)也包括在碼流中,分塊位置的指示是「tile_start_x[i]」和「tile_start_y[i]」。在該示例中,分塊位於2D x-y空間中。
如果啟用色度指示,並且色度分量與亮度分量獨立處理(表1:「!use_dependent_chroma_tiles」,即色度分塊不依賴於亮度分塊),則使用類似的指示,其中,相應的指示包括在碼流中。
亮度分量和/或色度分量的分塊的重疊的進一步指示可以包括在碼流中,並因此向解碼器指示。
如果分塊圖是通過分塊大小(分塊寬度等於高度)和重疊的值(信號空間大小/座標)指示的,則N個重疊區域匯出如下: for tile_start_y in range(0, image_height – overlap, tile_height – overlap): for tile_start_x in range(0, image_width – overlap, tile_width – overlap): height = min(tile_height, image_height – tile_start_y) width = min(tile_width, image_width – tile_start_x) im_tile i=  (tile_start_x, tile_start_y, width, height)
亮度分量的解碼:
圖像中有N個重疊區域(分塊)。每個分塊(im_tile i)在潛在空間(lat_tile i)中都有一個對應的分塊。此外,im_tile i僅覆蓋lat_tile i的總接受域的子集。對於信號空間中的每個im_tile,潛在空間中的匹配lat_tile匯出如下。在這裡,alignment_size是2的冪,這取決於子網中的下採樣層數: image_tile = im_tile ilat_tile_start_y = image_tile.position.y // alignment_size lat_tile_start_x = image_tile.position.x // alignment_size if image_tile.size.height % alignment_size: height = math.ceil(image_tile.size.height  / alignment_size) else: height = image_tile.size.height  // alignment_size if image_tile.size.width % alignment_size: width = math.ceil(image_tile.size.width  / alignment_size) else: width = image_tile.size.width  // alignment_size lat_tile i= (lat_tile_start_x, lat_tile_start_y, width, height)
使用lat_tile,由解碼器子網提取和處理潛在空間的對應區域。解碼器子網還具有im_tile作為輔助輸入,這是正確進行填充(具體是在圖像邊界處)所必需的,其中,分塊的大小可能不是alignment_size的倍數。解碼器的輸出被分配給im_tile指定的圖像的區域。該步驟可以包括裁剪操作,以刪除重建中與另一個分塊重建重疊的部分。
參考圖17A和圖18討論了對經處理的分塊L 1至L 4的區域R1至R4的裁剪的必要性,以確保無縫融合。
色度分量的解碼:
圖像中有N個重疊區域(分塊)。在圖17A和圖18所示的示例中,有四個部分重疊的分塊。每個分塊(im_tile i)在潛在空間(lat_tile i)中都有一個對應的分塊。此外,im_tile i僅覆蓋lat_tile i的總接受域的子集。N個重疊區域是根據分塊大小和分塊重疊(分塊寬度等於高度)的指示參數匯出的。大小以信號空間單位(即,不是潛在空間)進行指示。然後,信號空間中的分塊位置和大小匯出如下: for tile_start_y in range(0, image_height – overlap, tile_height – overlap): for tile_start_x in range(0, image_width – overlap, tile_width – overlap): height = min(tile_height, image_height – tile_start_y) width = min(tile_width, image_width – tile_start_x) im_tile i=  (tile_start_x, tile_start_y, width, height)
對於信號空間中的每個im_tile,潛在空間中的匹配lat_tile匯出如下。在這裡,alignment_size是2的冪,這取決於子網中的下採樣層數: image_tile = im_tile ilat_tile_start_y = image_tile.position.y // alignment_size lat_tile_start_x = image_tile.position.x // alignment_size if image_tile.size.height % alignment_size: height = math.ceil(image_tile.size.height  / alignment_size) else: height = image_tile.size.height  // alignment_size if image_tile.size.width % alignment_size: width = math.ceil(image_tile.size.width  / alignment_size) else: width = image_tile.size.width  // alignment_size lat_tile i= (lat_tile_start_x, lat_tile_start_y, width, height)
使用lat_tile,提取色度潛在空間lat_UV的對應區域。此外,確定亮度潛在空間lat_Y的對應區域。對於YUV420的示例,一種可能的方法是對亮度潛在空間進行因數為2的降採樣,然後使用與色度相同的lat_tile來提取lat_Y。然後,lat_Y和lat_UV都由解碼器子網處理。解碼器子網還具有im_tile作為輔助輸入,這是正確進行填充(具體是在圖像邊界處)所必需的,其中,分塊的大小可能不是alignment_size的倍數。解碼器的輸出被分配給im_tile指定的圖像的區域。該步驟可以包括裁剪操作,以刪除重建中與另一個分塊重建重疊的部分。
B. 後處理濾波器:
分塊圖的匯出:
可以獲得分塊圖的幾種方法如表2所示:
1. 使用與解碼器的分塊圖相同的分塊圖。對於YUV420的示例,這可以實現為使得:對於對Y分量進行濾波的情況,在解碼器中使用與亮度/Y的分塊相同的分塊,而對於U和V,使用與解碼器用於色度(UV)的分塊相同的分塊。這種行為可以用單個標誌指示。
2. 僅為主分量(例如亮度分量)顯式地指示分塊圖。其它分量(例如色度分量)使用相同的分塊圖。如表2所示,分塊圖的指示(即,分塊大小、位置和重疊)可以以與表1中用於自動解碼器的類似方式完成。
3. 為圖像的每個分量顯式地指示分塊圖。同樣,每個分量的分塊圖的指示可以通過使用表1中包括在碼流中的相同指示來完成。
需要說明的是,當濾波器選擇使用多尺度結構相似性(multi-scale structural similarity,MS-SSIM)作為失真標準(編碼器)時,分塊應足夠大,以用於MS-SSIM(包括一些下採樣步驟)。如果底部和右側圖像邊界處的分塊太小,則通過從其相應的相鄰區域(即相鄰的區域)中取出區域來放大它們。由於解碼器必須執行相同的處理,所以這將是規範的。當使用MSE和/或峰值信噪比(peak signal noise ratio,PSNR)作為失真標準時,不存在分塊大小可能太小的問題。
當顯式地指示分塊圖時可以通過以下方式之一完成:
1. 使用具有相同大小(底部和右側邊界處的分塊除外)的常規分塊網格。指示偏移和大小值,從中可以匯出分塊圖(參見下面的討論)。
2. 使用具有相同大小(底部和右側邊界處的分塊除外)的常規分塊網格。使用偏移和大小值,但不直接指示。而是,大小和偏移值是從已經解碼的級別定義匯出的。分塊圖可以從大小和偏移值匯出(參見下面的討論)。
3. 使用任意的分塊網格。首先,指示分塊的數量,然後對於每個分塊,指示其位置和大小(重疊隱式地包括在該指示中)。
每個分塊使用的濾波器的匯出:
在tile I的特定圖像分量中,使用由濾波器索引filter I指定的濾波器。換句話說,基於分塊的濾波器可以根據一個參數(即濾波器索引)來指定。每個分塊的filter I的選擇可以通過以下方式之一指示,如表2所示:
1. 圖像分量的所有分塊都使用相同的模型/濾波器。這可以用單個標誌和濾波器索引filter I一起指示。在表2中,這樣的標誌是「same_model_for_all_luma」,濾波器索引是「model_idx_luma」。
2. 濾波器的模型針對圖像分量的每個分塊進行指示。
a. 指示預設濾波器索引。在表2中,該預設索引為「default_model_idx_luma」。對於每個tile I(分塊的數量已經從分塊圖中知道),會指示一個標誌,以指示濾波器索引是否與預設值不同。在表2中,每個分塊的這種標誌是「use_default_idx[i]」,索引「i」標記第一或第二多個分塊中的相應分塊。如果不同,則會指示分塊的濾波器索引filter I。在表2中,相應的濾波器索引為「model_idx_luma[i]」。換句話說,對於第一多個分塊中的至少兩個分塊,濾波器的一個或多個參數不同。類似的情況適用於關於第二多個分塊的一個或多個參數。
b. 對於每個tile I(分塊的數量已經從分塊圖中知道),指示分塊的濾波器索引filter I。在表2中,相應的濾波器索引為「model_idx_luma[i]」。
每個分量的濾波器索引也可以顯式地指示。或者,分量的濾波器索引可以從為另一個分量(例如亮度分量)指示的那些濾波器索引匯出。
當濾波器的所選擇的模型被指示時,後濾波器可以使用與解碼器使用的分塊圖相同的分塊圖。這可以減少指示分塊大小的開銷。
分量的濾波:
圖像中有N個重疊區域(分塊)。每個分塊都是獨立處理的(可能是並行處理的)。對於tile I,它的位置、大小、重疊和使用的濾波器索引從上面描述的指示中可以知道。重建區域I是根據位置和大小的值從重建圖像中提取的。然後,對該區域進行基於濾波器索引的濾波。輸出是使用位置、大小和重疊的值裁剪的,並在位置和大小的值描述的位置分配給濾波輸出圖像。
C.    RDOQ
在該實現方式中,RDOQ分別應用於亮度分量和色度分量,即每個分量亮度和色度分量的潛在空間分別優化。圖25示出了分別由RDOQ模組2502和2509在其單獨的流水線中對亮度Y和色度UV的相應RDOQ處理。但是,色度分量的解碼需要色度和亮度潛在空間(即CCS)。因此,首先對亮度執行RDOQ 2502的處理,從而獲得新的、優化的亮度潛在空間 。然後,該亮度潛在空間保持固定,並用作色度潛在空間優化的附加輸入(即作為輔助資訊)。在圖25中,這由虛線示出。
如果在RDOQ過程中,亮度和色度使用相同的分塊圖,則色度分量的優化不必等到對所有亮度分塊完成亮度RDOQ優化。而是,一旦完成了對特定亮度分塊的優化,可以直接用作優化對應色度潛在分塊的輸入。
分塊圖的匯出:
由於RDOQ是一個僅用於編碼器的過程,所以使用的分塊不必被指示。在該實現方式中,亮度和色度分量使用了常規分塊網格。每個網格都由偏移和大小值(編碼器參數)描述。使用這些資訊,可以匯出分量的分塊圖(參見下文)。
亮度分量的優化:
RDOQ反覆運算地優化分塊的成本,如下所示:
在這裡,R為對分塊進行編碼所需的位元數的估計,而D為(分塊的)重建與原始分塊相比的失真的度量(例如峰值信噪比(peak-signal noise ratio,PSNR)、多尺度結構相似性(multi-scale structural similarity,MS-SSIM)……)。 為根據編碼器的操作點設置的參數。im_tile i的R和D如下獲得:
圖像中有N個重疊區域(分塊)。每個分塊(im_tile i )在潛在空間(lat_tile i)中都有一個對應的分塊。此外,im_tile i僅覆蓋lat_tile i的總接受域的子集。對於信號空間中的每個im_tile,潛在空間中的相應匹配lat_tile匯出如下。在這裡,alignment_size是2的冪,這取決於子網中的下採樣層數: image_tile = im_tile ilat_tile_start_y = image_tile.position.y // alignment_size lat_tile_start_x = image_tile.position.x // alignment_size if image_tile.size.height % alignment_size: height = math.ceil(image_tile.size.height  / alignment_size) else: height = image_tile.size.height  // alignment_size if image_tile.size.width % alignment_size: width = math.ceil(image_tile.size.width  / alignment_size) else: width = image_tile.size.width  // alignment_size lat_tile i= (lat_tile_start_x, lat_tile_start_y, width, height)
使用lat_tile,由解碼器子網提取和處理潛在空間的對應區域,以獲得重建分塊。解碼器子網還具有im_tile作為輔助輸入,這是正確進行填充(具體是在圖像邊界處)所必需的,其中,分塊的大小可能不是alignment_size的倍數。使用im_tile,從原始圖像中提取對應的區域。然後,D可以計算為原始分塊和重建分塊的一個函數(例如峰值信噪比(peak-signal noise ratio,PSNR)、多尺度結構相似性(multi-scale structural similarity,MS-SSIM)……)。R是通過調用提取的潛在分塊的編碼函數並測量/估計對其進行編碼所需的位元數來獲得的。RDOQ過程是反覆運算的,即該過程是重複執行一定數量的反覆運算(通常是10至30次反覆運算)完成的。
色度分量的優化:
RDOQ反覆運算地優化分塊的成本,如下所示:
在這裡,R為對分塊進行編碼所需的位元數的估計,而D為(分塊的)重建與原始分塊相比的失真的度量(例如峰值信噪比(peak-signal noise ratio,PSNR)、多尺度結構相似性(multi-scale structural similarity,MS-SSIM)……)。 為根據編碼器的操作點設置的參數。在所提供的實現方式中,色度根據亮度有條件地解碼。因此,在這裡,R還包括對對應的亮度分塊進行編碼所需的位元數:
在色度RDOQ優化過程中保持恒定。
im_tile i和D如下獲得:
圖像中有N個重疊區域(分塊)。每個分塊(im_tile i)在潛在空間(lat_tile i)中都有一個對應的分塊。此外,im_tile i僅覆蓋lat_tile i的總接受域的子集。對於信號空間中的每個im_tile,潛在空間中的匹配lat_tile匯出如下。在這裡,alignment_size是2的冪,這取決於子網中的下採樣層數: image_tile = im_tile ilat_tile_start_y = image_tile.position.y // alignment_size lat_tile_start_x = image_tile.position.x // alignment_size if image_tile.size.height % alignment_size: height = math.ceil(image_tile.size.height  / alignment_size) else: height = image_tile.size.height  // alignment_size if image_tile.size.width % alignment_size: width = math.ceil(image_tile.size.width  / alignment_size) else: width = image_tile.size.width  // alignment_size lat_tile i= (lat_tile_start_x, lat_tile_start_y, width, height)
使用lat_tile,提取色度潛在空間lat_UV的對應區域。此外,確定亮度潛在空間lat_Y的對應區域。對於YUV420的示例,一種可能的方法是對亮度潛在空間進行因數為2的降採樣,然後使用與色度相同的lat_tile來提取lat_Y。然後,解碼器子網處理lat_Y和lat_UV,以獲得重建色度分塊。解碼器子網還具有im_tile作為輔助輸入,這是正確進行填充(具體是在圖像邊界處)所必需的,其中,分塊的大小可能不是alignment_size的倍數。使用im_tile,從原始圖像中提取對應的區域。然後,D可以計算為原始色度分塊和重建色度分塊的一個函數(例如峰值信噪比(peak-signal noise ratio,PSNR)、多尺度結構相似性(multi-scale structural similarity,MS-SSIM)……)。 是通過調用提取的色度潛在分塊的編碼函數並測量/估計對其進行編碼所需的位元數來獲得的。
RDOQ過程是反覆運算的,即該過程是重複執行一定數量的反覆運算(通常是10至30次)完成的。
在這個示例性和非限制性實施例中,提供了一種儲存在非暫態性媒體中的電腦程式,該電腦程式包括代碼,當所述代碼在一個或多個處理器上執行時,所述代碼執行用於處理表示第二實施例中討論的圖像資料的輸入張量的方法的步驟。相應的流程圖如圖26所示。在步驟S2610中,處理輸入張量的第一分量,包括將第一分量劃分為第一多個分塊。類似地,在步驟S2630中,處理輸入張量的第二分量,包括將第二分量劃分為第二多個分塊。然後,在步驟S2620和S2640中,分別處理相應的第一多個分塊和第二多個分塊中的每一個。如圖26的流程圖所示,步驟S2610和S2620與步驟S2630和S2640分開執行,反映了在兩個單獨的流水線中第一分量和第二分量的處理,如圖25中對於亮度Y分量(第一分量)和色度分量UV(第二分量)的情況所示。將第一張量和第二張量劃分為第一多個分塊和第二多個分塊的處理步驟S2610和/或S2630可以是編碼器2501和/或編碼器2508的編碼處理的一部分。以單獨的方式對第一多個分塊和第二多個分塊的進一步處理可以包括編碼、量化RDOQ、解碼和後濾波中的任何一個,如由圖25中所示的相應模組執行的。在第一多個分塊和第二多個分塊的單獨處理結束時,提供了重建第一分量和重建第二分量。所述重建分量可以是亮度分量 和色度分量 的重建圖像資料,如圖25所示。在圖26的處理中,虛線水準箭頭指示第一多個分塊和第二多個分塊的處理會相互影響,因為例如,來自第一多個分塊/第二多個分塊的處理的輔助資訊可以用於第二多個分塊/第一多個分塊的處理。如上文關於圖25所解釋的,色度流水線中UV色度分量的處理可以使用亮度流水線處理的亮度分量的資訊作為輔助資訊。
此外,如上所述,本發明還提供了用於執行針對第二實施例描述的方法的步驟的設備(裝置)。
在這個示例性和非限制性實施例中,提供了一種用於處理表示圖像資料的輸入張量的裝置。圖27示出了包括處理電路2710的裝置2700,處理電路2710具有相應的模組來執行圖26的方法步驟。模組2711和2712用於執行第一分量和第二分量的處理,包括相應的第一多個分塊和第二多個分塊的處理。此外,兩個模組2713和2714用於將輸入張量的第一分量和第二分量在空間維度上分別劃分為第一多個分塊和第二多個分塊。需要說明的是,雖然圖27示出了單獨的模組2711和2712,以及分別示出了模組2713和2714,但所述模組可以組合成一個模組,但是用於分別處理第一分量和第二分量,包括對第一多個分塊和第二多個分塊進行單獨處理,以實現對相應分量的基於流水線的處理。具體地,模組2711和2712可以為相應的流水線提供圖25中所示的各個模組的功能,包括編碼器2501和2508、量化器RDOQ 2502和2509、解碼器2506和2513以及後濾波器2507和2514。此外,編碼器-解碼器超先驗的功能可以由相應流水線的相應模組2711和2712執行。在圖27中,模組2715執行包括生成碼流Y/UV 1和碼流Y/UV 2的處理,其中,第一多個分塊和/或第二多個分塊的分塊大小的指示也可以包括在相應的碼流中。解析模組2716解析碼流Y/UV 1和碼流Y/UV 2,包括從碼流Y/UV 1提取分塊大小和/或位置的指示。
在這個示例性和非限制性實施例中,提供了一種用於處理表示圖像資料的輸入張量的裝置,該裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述裝置執行第二實施例中討論的方法。
關於指示的更多詳細資訊
如以上所討論,第一多個分塊和/或第二多個分塊中的分塊大小的指示包括在碼流Y/UV 1中。這也適用於分塊位置和/或分塊重疊、和/或縮放和/或濾波器索引等的指示。或者,所述指示中的全部或部分可以包括在邊資訊中。然後,所述邊資訊可以被包括在碼流1中,解碼器從碼流1解析邊資訊,以確定解碼處理(解壓縮)所需的分塊大小、位置等。例如,與分塊相關的指示(例如,分塊大小、位置和/或重疊)可以被包括在第一邊資訊中。相應地,與縮放相關的指示可以被包括在第二邊資訊中,而關於濾波器模型的指示(例如濾波器索引等)可以被包括在第三邊資訊中。換句話說,指示可以被分組並包括在組特定邊資訊(例如,第一邊資訊至第三邊資訊)中。因此,組在這裡指的是「分塊」組、「濾波器」組等。
在下文中,參考示出解碼器側的一些指示示例的圖20,為分塊的示例提供了關於對指示進行指示的進一步細節。需要說明的是,這同樣適用於編碼器側。圖20示出了可以包括在碼流中並從碼流解析的各種參數,例如區域Li、Ri和重疊區域等的大小。區域Li是指被處理的第一張量和/或第二張量的分塊(例如,圖25中分量的輸入張量x的分塊),區域Ri是指在處理分塊Li之後作為輸出生成的對應分塊。例如,分塊Ri可以是圖25中在處理輸入張量x之後的輸出y的分塊。
例如,邊資訊包括以下一項或多項的指示:
所述輸入子集的數量,
輸入集的大小,即(例如亮度分量和/或色度分量的)分塊的數量,
所述兩個或更多個輸入子集中的每個輸入子集的大小(h1,w1),即待處理的分塊的大小,
所述重建圖像(R)的大小(H,W),
所述兩個或更多個輸出子集中的每個輸出子集的大小(H1,W1),即處理之後的分塊的大小,
所述兩個或更多個輸入子集(L 1,L 2)之間的重疊量,即待處理的分塊之間的重疊,
兩個或更多個輸出子集(R1、R2)之間的重疊量,即處理之後的分塊之間的重疊。
因此,可以以靈活的方式在邊資訊中對各種參數進行指示。因此,指示開銷可以根據在邊資訊中指示上述參數中的哪些參數來進行調整,而其它參數根據被指示的那些參數推導。兩個或更多個輸入子集中的每一個的大小可以不同。或者,輸入子集可以具有共同的大小。
在一個示例中,待裁剪樣本的位置和/或量是根據邊資訊中指示的輸入子集的大小以及神經網路的神經網路調整參數確定的,其中,神經網路調整參數表示網路的輸入的大小與網路的輸出的大小之間的關係。因此,位置和/或裁剪量可以通過考慮輸入子集的大小和神經網路的特徵(即其調整參數)來更精確地確定。因此,裁剪量和/或位置可以適配神經網路的性質,這進一步提高了重建圖像資料的品質。
調整參數可以是加性項,從輸入大小中減去該加性項,以獲得輸出大小。換句話說,輸出子集的輸出大小與其對應的輸入子集僅有一個整數相關。或者,調整參數可以是比率。在這種情況下,輸出子集的大小與輸入子集的大小相關,通過將輸入子集的大小乘以該比率,得到輸出子集的大小。
如上所述,Li、Ri和裁剪量的確定可以根據預定義的規則或兩者的組合從碼流中獲得。
˙指示裁剪量的指示可以包括在碼流中(並從碼流中解析)。在這種情況下,裁剪量(即重疊量)包括在邊資訊中。
˙裁剪量可以是固定的數量。例如,該數量可以由標準預定義,或者一旦知道輸入與輸出的大小(維度)之間的關係,該數量就被固定下來。
˙裁剪量可以與水準方向、垂直方向或同時與這兩個方向的裁剪相關。
˙可以根據預配置的規則進行裁剪。獲得裁剪量之後,裁剪規則可以如下:
˙根據Ri在輸出空間中的位置(左上角、中心等)。如果Ri的一側與輸出邊界不重合,則可以在該側(頂部、左側、底部或右側)上應用裁剪。
Li(即,分塊)的大小和/或座標可以包括在碼流中。或者,分割部分的數量可以在碼流中指示,每個Li的大小可以根據輸入的大小和分割部分的數量計算。
每個輸入子集Li的重疊量可以是:
˙指示重疊量的指示可以包括在碼流中(並從碼流解析或從碼流推導)。
˙重疊量可以是固定的數量。如上所述,在該上下文中,「固定」是指該數量是已知的,例如通過標準或專有配置等約定,或預先配置為編碼參數或神經網路參數的一部分。
˙重疊量可以與水準方向、垂直方向或同時與這兩個方向的裁剪相關。
˙重疊量可以根據裁剪量計算。
下面提供了一些數值示例來說明哪些參數可以通過碼流中包括的邊資訊進行指示(並從中解析),以及然後如何使用這些指示的參數來推導剩餘參數。這些實施例僅僅是示例性的,而不限制本發明。
例如,在碼流中,可以包括與Li的指示相關的以下資訊:
˙沿縱軸的分割部分的數量=2。這對應於圖20中空間L被垂直劃分為2個部分的示例。
˙沿橫軸的分割部分的數量=2。這對應於圖20中空間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。
需要說明的是,本發明不限於具體框架。此外,本發明不限於圖像或視頻壓縮,並且也可以應用於物件檢測、圖像生成和識別系統。
本發明可以通過硬體(hardware,HW)和/或軟體(software,SW)實現。此外,基於HW的實現方式可以與基於SW的實現方式相結合。
為了清楚起見,上述任一實施例可以與上述其它實施例中任何一個或多個組合以創建本發明範圍內的新實施例。
以上所描述的並由圖25中所示的VAE-編碼器-解碼器執行的編碼和解碼處理可以在圖1A的解碼系統10內實現。因此,源設備12表示編碼側,提供包括圖25的輸入張量x的輸入圖像資料21的壓縮,該輸入圖像資料21可以分別是相應的分量Y和UV。具體地,圖1A的編碼器20可以包括用於根據本發明進行處理(例如壓縮和/或解壓縮)的模組,以用於獨立處理多個分量。例如,圖1A的編碼器20可以包括用於處理亮度分量Y的編碼器2501、量化器或RDOQ 2502和算術編碼器1605。編碼器20還可以包括超先驗模組,例如超解碼器2503、量化器或RDOQ 2504和算術編碼器1609。此外,圖1A的編碼器20可以包括用於處理色度分量UV的編碼器2508、量化器或RDOQ 2509和算術編碼器1605。編碼器20還可以包括超先驗模組,例如超解碼器2510、量化器或RDOQ 2511和算術編碼器1609。
類似地,圖1A的目的地設備14表示解碼側,提供表示圖像資料的輸入張量的解壓縮。具體地,圖1A的解碼器30可以包括用於亮度分量Y的解壓縮處理的模組,例如圖25的解碼器2506和後濾波器2507,以及算術解碼器1606。此外,解碼器30還可以包括用於解碼 的超先驗,例如算術解碼器1610、超解碼器2505和算術解碼器1606。解碼器30還可以包括用於解碼 的超先驗,例如算術解碼器1610、超解碼器2505和算術解碼器1606。為了處理色度分量UV,解碼器30可以包括圖25的解碼器2513和後濾波器2514,以及算術解碼器1606。此外,解碼器30還可以包括用於解碼色度的 的超先驗,例如算術解碼器1606、超解碼器2512和算術解碼器1610。換句話說,圖1A的編碼器20和解碼器30可以被實現和配置為包括圖25的任何模組,以實現根據本發明的相應流水線(例如亮度和色度流水線)中的多個分量的編碼或解碼處理,其中,輸入張量具有多個分量,這些分量被劃分為多個分塊,並如第二實施例所描述進行處理。雖然圖1A分別示出了編碼器20和解碼器30,但它們可以通過圖1B的處理電路46實現。換句話說,處理電路46可以通過實現圖25的相應的流水線或兩個流水線(亮度和/或色度)的模組的電路來提供本發明的編碼-解碼處理的功能。
類似地,圖2的視頻解碼設備200及其處理器230的解碼模組270可以執行本發明的處理(壓縮和解壓縮)功能。例如,視頻解碼設備200可以是具有圖25的相應模組的編碼器或解碼器,以便執行如以上所描述的編碼或解碼處理。
圖3的裝置300可以實現為編碼器和/或解碼器,其具有編碼器2501、2508,量化器或RDOQ 2502、2509,解碼器2506、2513,後濾波器2507、2514,超編碼器2503、2510和超解碼器2505、2512,以及算術編碼器2505、2509和算術解碼器2506、2510,以便執行如根據第二實施例討論的每個分量的分塊的處理。例如,圖3的處理器302可以具有相應的電路來根據以上所描述的方法執行壓縮和/或解壓縮處理。
圖4中所示的編碼器20和圖5中所示的解碼器30的示例性實現方式也可以實現本發明的編碼和解碼功能。例如,圖4中的分割單元452可以分別將第一張量和/或第二張量劃分為第一分量和第二分量的第一多個分塊和/或第二多個分塊,如圖25的編碼器2501和2508執行的那樣。因此,語法元素466可以包括分塊的大小和位置的指示,以及濾波器索引等的指示。類似地,量化單元408可以執行圖25中RDOQ模組2502和2509的量化或RDOQ,而熵編碼單元470可以實現超先驗(即模組2503、2505、2510、2511、1605、1608、1609)的功能。相應地,圖5的熵解碼單元504可以通過將經編碼的圖像資料21(輸入張量)劃分為分塊,同時從碼流解析分塊大小或位置等的指示作為語法元素566來執行圖25的解碼器2506和2513的功能。熵解碼單元504還可以實現超先驗的模組(即模組2505、2512、1610)。圖25的後濾波2507和2514還可以通過熵解碼單元504等執行。或者,後濾波器2507和2514可以作為附加單元(圖5中未示出)在模式應用單元560內實現。
進一步的實施例
根據本發明的一方面,提供了一種用於對表示圖像資料的輸入張量進行編碼的方法,所述方法包括以下步驟:至少包括第一子網和第二子網的神經網路處理所述輸入張量,所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊;在應用所述第一子網之後,將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。因此,通過改變不同子網的分塊大小,表示圖像資料的輸入張量可以被更高效地編碼。此外,還可以考慮硬體限制和要求。
在一些示例性實現方式中,在所述空間維度中的至少一個維度上相鄰的所述第一多個分塊中的分塊部分重疊;和/或在所述空間維度中的至少一個維度上相鄰的所述第二多個分塊中的分塊部分重疊。因此,可以提高重建圖像的品質,尤其是沿著分塊的邊界。因此,可以減少圖像偽影。
在另一種實現方式中,所述第一子網獨立處理所述第一多個分塊中的分塊;和/或所述第二子網獨立處理所述第二多個分塊中的分塊。例如,所述第一子網並行處理所述第一多個分塊中的至少兩個分塊;和/或所述第二子網並行處理所述第二多個分塊中的至少兩個分塊。因此,可以更快地執行圖像資料的編碼。
根據一個實現示例,所述第一張量的所述劃分包括根據第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或所述第二張量的所述劃分包括根據第二預定義條件確定所述第二多個分塊中的分塊的大小。例如,所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。因此,可以根據可用的編碼器和/或解碼器資源和/或根據圖像內容調整和優化分塊大小。
在一個示例中,所述第一子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理;和/或所述第二子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理。因此,輸入張量資料可以被高效地處理,因為卷積網路特別適合在空間維度上處理資料。
在另一個示例中,所述第一子網和所述第二子網執行作為圖像或移動圖像壓縮的一部分的相應的處理。例如,第一子網和/或第二子網執行以下步驟之一:卷積子網的圖像編碼;速率失真優化量化(rate distortion optimization quantization,RDOQ);圖像濾波。因此,圖像資料的編碼可以涉及多個相關階段的子網處理,並提高解碼效率。
根據一個實現示例,所述輸入張量為包括一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。這可以支援對顏色分量進行編碼。在一個示例中,所述輸入張量具有至少兩個分量,即第一分量和第二分量;所述第一子網將所述第一分量劃分為第三多個分塊,並將所述第二分量劃分為第四多個分塊,其中,所述第三多個分塊和所述第四多個分塊中的至少兩個相應的並置分塊大小不同;和/或所述第二子網將所述第一分量劃分為第五多個分塊,並將所述第二分量劃分為第六多個分塊,其中,所述第五多個分塊和所述第六多個分塊中的至少兩個相應的並置分塊大小不同。因此,多個分量可能會以分塊為單位進行編碼處理,其中,分量的分塊大小不同,這可以進一步提高解碼效率和/或改進硬體實現方式。
另一個實現示例包括通過將所述神經網路的所述處理的輸出包括到碼流中,生成所述碼流。所述實現方式還將所述第一多個分塊中的所述分塊的大小的指示和/或所述第二多個分塊中的所述分塊的大小的指示包括在所述碼流中。因此,通過提供所述指示,所述編碼器和所述解碼器可以按對應的和自我調整的方式設置分塊大小。
根據本發明的一方面,提供了一種方法,用於對表示圖像資料的張量進行解碼,所述方法包括以下步驟:至少包括第一子網和第二子網的神經網路處理表示所述圖像資料的輸入張量,所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊;在應用所述第一子網之後,將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。因此,通過改變不同子網的分塊大小,表示圖像資料的輸入張量可以被更高效地解碼。此外,還可以考慮硬體限制和要求。
在一些示例性實現方式中,在所述空間維度中的至少一個維度上相鄰的所述第一多個分塊中的分塊部分重疊;和/或在所述空間維度中的至少一個維度上相鄰的所述第二多個分塊中的分塊部分重疊。因此,可以提高重建圖像的品質,尤其是沿著分塊的邊界。因此,可以減少圖像偽影。
在另一種實現方式中,所述第一子網獨立處理所述第一多個分塊中的分塊;和/或所述第二子網獨立處理所述第二多個分塊中的分塊。例如,所述第一子網並行處理所述第一多個分塊中的至少兩個分塊;和/或所述第二子網並行處理所述第二多個分塊中的至少兩個分塊。因此,可以更快地執行圖像資料的編碼。
根據一個實現示例,所述第一張量的所述劃分包括根據第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或所述第二張量的所述劃分包括根據第二預定義條件確定所述第二多個分塊中的分塊的大小。例如,所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。因此,可以根據可用的編碼器和/或解碼器資源和/或根據圖像內容調整和優化分塊大小。
在一個示例中,所述第一子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理;和/或所述第二子網通過包括至少一個卷積層和至少一個池化層的一個或多個層執行處理。因此,輸入張量資料可以被高效地處理,因為卷積網路特別適合在空間維度上處理資料。
在另一個示例中,所述第一子網和所述第二子網執行作為圖像或移動圖像解壓縮的一部分的相應的處理。例如,第一子網和/或第二子網執行以下步驟之一:卷積子網的圖像解碼;圖像濾波。因此,圖像資料的解碼可以涉及多個相關階段的子網處理,並提高解碼效率。
根據一個實現示例,所述輸入張量為包括一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。這可以支持對顏色分量進行解碼。在一個示例中,所述輸入張量具有至少兩個分量,即第一分量和第二分量;所述第一子網將所述第一分量劃分為第三多個分塊,並將所述第二分量劃分為第四多個分塊,其中,所述第三多個分塊和所述第四多個分塊中的至少兩個相應的並置分塊大小不同;和/或所述第二子網將所述第一分量劃分為第五多個分塊,並將所述第二分量劃分為第六多個分塊,其中,所述第五多個分塊和所述第六多個分塊中的至少兩個相應的並置分塊大小不同。因此,多個分量可能會以分塊為單位進行解碼處理,其中,分量的分塊大小不同,這可以進一步提高解碼效率和/或改進硬體實現方式。
另一個實現示例包括從碼流中提取所述輸入張量,以由所述神經網路進行處理。因此,可以快速提取輸入張量。
根據一種實現方式,第二子網執行圖像後濾波;對於所述第二多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的。因此,圖像資料的解碼可以涉及多個相關階段的子網處理,並提高解碼效率。此外,後濾波可以使用適合於分塊大小的濾波器參數來執行,從而提高重建圖像資料的品質。
在一個示例中,還包括從所述碼流解析所述第一多個分塊中的所述分塊的大小的指示和/或所述第二多個分塊中的所述分塊的大小的指示。因此,通過提供所述指示,所述編碼器和所述解碼器可以按對應的和自我調整的方式設置分塊大小。
根據本發明的一方面,提供了一種儲存在非暫態性媒體中的電腦程式,該電腦程式包括代碼,當所述代碼在一個或多個處理器上執行時,所述代碼執行本發明的任一上述方面的步驟。
根據本發明的一方面,提供了一種用於對表示圖像資料的輸入張量進行編碼的處理裝置,所述處理裝置包括處理電路,所述處理電路用於:至少包括第一子網和第二子網的神經網路處理所述輸入張量,所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊;在應用所述第一子網之後,將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。
根據本發明的一方面,提供了一種用於對表示圖像資料的輸入張量進行編碼的處理裝置,所述處理裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述編碼器執行與對表示圖像資料的輸入張量進行編碼相關的方法。
根據本發明的一方面,提供了一種處理裝置,用於對表示圖像資料的張量進行解碼,所述處理裝置包括處理電路,所述處理電路用於:至少包括第一子網和第二子網的神經網路處理表示所述圖像資料的輸入張量,所述處理包括:將所述第一子網應用於第一張量,包括:將所述第一張量在空間維度上劃分為第一多個分塊並通過所述第一子網處理所述第一多個分塊;在應用所述第一子網之後,將所述第二子網應用於第二張量,包括:將所述第二張量在所述空間維度上劃分為第二多個分塊並通過所述第二子網處理所述第二多個分塊;其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。
根據本發明的一方面,提供了一種處理裝置,用於對表示圖像資料的張量進行解碼,所述處理裝置包括:一個或多個處理器;非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述解碼器執行與對表示圖像資料的張量進行解碼相關的方法。
總之,本發明涉及基於神經網路以分塊為單位對圖像區域進行圖像編碼和解碼。所述神經網路處理表示圖像資料的輸入張量,所述神經網路至少包括第一子網和第二子網。所述第一子網應用於第一張量,其中,所述第一張量在空間維度上劃分為第一多個分塊。然後,所述第一子網進一步處理所述第一多個分塊。在應用所述第一子網之後,將所述第二子網應用於第二張量,其中,所述第二張量在所述空間維度上劃分為第二多個分塊。然後,所述第二子網進一步處理所述第二多個分塊。在所述第一多個分塊和所述第二多個分塊中,至少有兩個大小不同的相應的並置分塊。在編碼的情況下,所述第一子網和所述第二子網執行部分壓縮,包括圖像編碼、速率失真優化量化和圖像濾波。在解碼的情況下,所述第一子網和所述第二子網執行部分解壓縮,包括圖像解碼和圖像濾波。
此外,本發明涉及以分塊為單位對圖像區域進行圖像編碼和解碼。具體地,在多個流水線中在空間維度上處理輸入張量的多個分量,包括第一分量和第二分量。所述第一分量的所述處理包括將所述第一分量在所述空間維度上劃分為第一多個分塊。類似地,所述第二分量的所述處理包括將所述第二分量在所述空間維度上劃分為第二多個分塊。然後分別處理相應的所述第一多個分塊和所述第二多個分塊。在所述第一多個分塊和所述第二多個分塊中,至少有兩個大小不同的相應的並置分塊。在壓縮的情況下,所述第一分量和/或所述第二分量的所述處理包括圖像編碼、速率失真優化量化和圖像濾波。在解壓縮的情況下,所述處理包括圖像解碼和圖像濾波。
10:解碼系統 12:源設備 13:通信通道 14:目的地設備 16:圖像源 17:圖像資料 18:預處理器 19:預處理圖像資料 20、2501、2508:編碼器 21:經編碼的圖像資料 22、28:通信介面 30、2513:解碼器 31:經解碼的圖像資料 32:後處理器 33:後處理圖像資料 34、45:顯示裝置 40:視頻解碼系統 41:成像裝置 42:天線 43:一個或多個處理器 44:一個或多個記憶體 46、2310、2410、2710:處理電路 200:視頻解碼設備 210:入埠/輸入埠 220:接收單元(Rx) 230、302:處理器 240:發送單元(Tx) 250:出埠/輸出埠 260、304:記憶體 270:解碼模組 300、2300、2400、2700:裝置 306:資料 308:作業系統 310:應用程式 312:匯流排 318:顯示器 401、502:輸入端 403:圖像塊 404:殘差計算單元 405:殘差塊 406:變換處理單元 407:變換係數 408:量化單元 409、509:量化係數 410、510:反量化單元 411、511:解量化係數 412、512:逆變換處理單元 413、513:重建殘差塊 414、514:重建單元 415、515:重建塊 420、520:環路濾波器 421、521:濾波塊 430、530:解碼圖像緩衝區 431、531:經解碼的圖像 460:模式選擇單元 462:分割單元 444、544:幀間預測單元 454、554:幀內預測單元 466、566:語法元素 470:熵編碼單元 472:輸出端 504:熵解碼單元 532:輸出端 560:模式應用單元 565:預測塊 601、602、603、604、605、606:卷積層/下採樣層 607、608、609、610、611、612:卷積層/上採樣層 613、615:算術編碼 614:輸入圖像/輸入張量 650:廣義分散歸一化(generalized divisive normalization,GDN) 655:解碼器側的逆GDN(inverse GDN,IGDN) 660、665:洩漏ReLU(LeakyRelu) 670:高斯熵模型 680:卷積遮罩 901、1601:編碼裝置/編碼器 902、908、1602、1608、2502、2504、2509、2511:量化器/Q或RDOQ 903、1603、2503、2510:超編碼器 904、1604、2506、2513:解碼器 905、1605:算術編碼模組 906、1606:算術解碼模組 907、1607、2505、2512:超解碼器 909:模組 1609:算術編碼器 1610:算術解碼器 1611、2507、2514:後濾波器 L 1、L 2、L 3、L 4、R 1、R 2、R 3、R 4:分塊 R-crop 1、R-crop 2、R-crop 3、R-crop 4:非重疊區域 S2110、S2120、S2130、S2140、S2210、S2220、S2230、S2240、S2610、S2620、S2630、S2640:步驟 2311、2411:NN處理模組-子網1 2312、2412:NN處理模組-子網2 2313、2413、2713:劃分模組1 2314、2414、2714:劃分模組2 2315、2715:碼流模組 2415、2716:解析模組 2711:處理模組-第一分量 2712:處理模組-第二分量 :張量 x 1、x N:分塊 YUV:輸入張量 Y、UV:分量 y 1、y N:張量 :亮度 :色度
下面結合附圖對本發明實施例進行詳細描述。 圖1A為用於實現本發明實施例的視頻解碼系統的示例的方塊圖。 圖1B為用於實現本發明實施例的視頻解碼系統的另一個示例的方塊圖。 圖2為編碼裝置或解碼裝置的一個示例的方塊圖。 圖3為編碼裝置或解碼裝置的另一個示例的方塊圖。 圖4為用於實現本發明實施例的示例性混合編碼器的方塊圖。 圖5為用於實現本發明實施例的示例性混合解碼器的方塊圖。 圖6A為包括超先驗模型的變分自動編碼器架構的示意圖。 圖6B為包括類似於圖6A的超先驗模型的變分自動編碼器架構的另一個示例的示意圖。 圖7為示例性自動編碼器的各部分的方塊圖。 圖8示出了編碼器對輸入資料的壓縮和解碼器對資料的解壓縮,其中,壓縮資料由潛在空間表示。 圖9為符合VAE框架的編碼器和解碼器的方塊圖。 圖9A為根據圖9的具有相應元件的編碼器的方塊圖。 圖9B為根據圖9的具有相應元件的解碼器的方塊圖。 圖10示出了包括生成輸出樣本所需的所有輸入樣本的總接受域。 圖11示出了總接受域的子集,在這種情況下,輸出樣本是由較少量的樣本(子集)生成的,並作為總接受域的樣本數。可能需要填充樣本。 圖12示出了使用兩個卷積層將輸入樣本下採樣為一個輸出樣本。 圖13舉例說明使用兩個具有3×3內核大小的卷積層計算一組2×2輸出樣本的總接受域。 圖14示出了並行處理的一個示例,其中,圖像被劃分為兩個分塊,相應碼流的解碼和樣本重建均獨立執行。 圖15示出了並行處理的示例,其中,編碼樹塊(coding tree block,CTB)被劃分為條帶(行),其中,每個條帶的碼流(幾乎)獨立解碼,但條帶的樣本重建不是獨立執行的。 圖16為具有相應模組的編碼器和解碼器的方塊圖,包括用於處理根據第一實施例的第一多個分塊和第二多個分塊的基於NN的子網。 圖17A示出了將第一張量和/或第二張量劃分為重疊區域Li(即第一分塊和第二分塊)、在重疊區域中的樣本的後續裁剪以及裁剪區域的串級的示例。每個Li包括總接受域。 圖17B示出了類似於圖17A的將第一張量和/或第二張量劃分為重疊區域Li(即第一分塊和第二分塊)的另一個示例,不同之處是取消了裁剪。 圖18示出了將第一張量和/或第二張量劃分為重疊區域Li(即第一分塊和第二分塊)、在重疊區域中的樣本的後續裁剪和裁剪區域的串級的示例。每個Li包括總接受域的子集。 圖19示出了將第一張量和/或第二張量劃分為非重疊區域Li(即第一分塊和第二分塊)、樣本的後續裁剪和裁剪區域的串級的示例。每個Li包括總接受域的子集。 圖20示出了可以包括在碼流中(並從碼流中解析)的各種參數,例如第一分塊和/或第二分塊的區域Li、Ri和重疊區域等的大小。各種參數中的任何一個都可以作為指示包括到碼流中(並從碼流中解析)。 圖21示出了根據第一實施例的用於對表示圖像資料的輸入張量進行編碼的方法的流程圖。 圖22示出了根據第一實施例的用於對表示圖像資料的張量進行解碼的方法的流程圖。 圖23示出了用於對表示圖像資料的輸入張量進行編碼的處理裝置的方塊圖,該處理裝置包括處理電路。處理電路可以包括執行根據第一實施例的編碼方法的處理的模組。 圖24示出了用於對表示圖像資料的張量進行解碼的處理裝置的方塊圖,該處理裝置包括處理電路。處理電路可以包括執行根據第一實施例的解碼方法的處理的模組。 圖25是根據第二實施例的具有相應模組的編碼器-解碼器的方塊圖,其中,張量的亮度分量和色度分量在多個流水線中單獨處理,並且每個流水線分別處理相應分量的多個分塊。 圖26示出了根據第二實施例的用於處理表示圖像資料的輸入張量的方法的流程圖。 圖27示出了根據第二實施例的用於處理表示圖像資料的輸入張量的裝置的方塊圖,該裝置包括相應的處理電路和模組。
2501、2508:編碼器
2502、2504、2509、2511:量化器/Q或RDOQ
2503、2510:超編碼器
1605:算術編碼模組
1606:算術解碼模組
2505、2512:超解碼器
1609:算術編碼器
1610:算術解碼器
2506、2513:解碼器
2507、2514:後濾波器
YUV:輸入張量
Y、UV:分量
x
Figure 112124318-A0101-11-0003-1
y
Figure 112124318-A0101-11-0003-2
z
Figure 112124318-A0101-11-0003-3
:張量
Figure 112124318-A0101-11-0003-4
:亮度
Figure 112124318-A0101-11-0003-5
:色度

Claims (22)

  1. 一種用於處理表示圖像資料的輸入張量的方法,包括: 在空間維度上處理所述輸入張量的多個分量,所述多個分量包括第一分量和第二分量,所述處理包括: 處理所述第一分量,包括:將所述第一分量在所述空間維度上劃分為第一多個分塊並分別處理所述第一多個分塊中的所述分塊;以及 處理所述第二分量,包括:將所述第二分量在所述空間維度上劃分為第二多個分塊並分別處理所述第二多個分塊中的所述分塊; 其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。
  2. 如請求項1所述的方法,其中 所述第一多個分塊中的至少兩個分塊獨立或並行處理;和/或 所述第二多個分塊中的至少兩個分塊獨立處理或並行處理。
  3. 如請求項1或2所述的方法,其中 所述第一分量表示所述圖像資料的亮度分量; 所述第二分量表示所述圖像資料的色度分量。
  4. 如請求項1至3中任一項所述的方法,其中 在所述空間維度中的至少一個維度上相鄰的所述第一多個分塊中的分塊部分重疊;和/或 在所述空間維度中的至少一個維度上相鄰的所述第二多個分塊中的分塊部分重疊。
  5. 如請求項1至4中任一項所述的方法,其中 所述第一分量的所述劃分包括根據第一預定義條件確定所述第一多個分塊中的分塊的大小;和/或 所述第二分量的所述劃分包括根據第二預定義條件確定所述第二多個分塊中的分塊的大小。
  6. 如請求項5所述的方法,其中所述第一預定義條件和/或所述第二預定義條件基於所述圖像資料中存在的可用解碼器硬體資源和/或運動。
  7. 如請求項5或6所述的方法,其中確定所述第二多個分塊中的所述分塊的大小包括縮放所述第一多個分塊中的所述分塊。
  8. 如請求項5至7中任一項所述的方法,其中所確定的所述第一多個分塊和/或所述第二多個分塊中的分塊的大小的指示被編碼到碼流中。
  9. 如請求項1至8中任一項所述的方法,其中所述第一多個分塊中的所有分塊的大小相同和/或所述第二多個分塊中的所有分塊的大小相同。
  10. 如請求項8或9所述的方法,其中所述指示還包括所述第一多個分塊和/或所述第二多個分塊中的所述分塊的位置。
  11. 如請求項8至10中任一項所述的方法,其中 所述第一分量為亮度分量,所述碼流中包括所述第一多個分塊中的所述分塊的所述大小的所述指示; 所述第二分量是色度分量,所述碼流中包括縮放因數的指示,其中,所述縮放因數與所述第一多個分塊中的所述分塊的所述大小和所述第二多個分塊中的所述分塊的所述大小相關。
  12. 如請求項8至11中任一項所述的方法,其中所述輸入張量的所述處理包括作為圖像或移動圖像壓縮的一部分的處理。
  13. 如請求項12所述的方法,其特徵在於,所述第一分量和/或所述第二分量的所述處理包括以下步驟之一: 神經網路的圖像編碼; 速率失真優化量化(rate distortion optimization quantization,RDOQ); 圖像濾波。
  14. 如請求項12或13所述的方法,還包括: 通過將所述第一分量和所述第二分量的所述處理的輸出包括到所述碼流中,生成所述碼流。
  15. 如請求項8至11中任一項所述的方法,其中所述輸入張量的所述處理包括作為圖像或移動圖像解壓縮的一部分的處理。
  16. 根據請求項15所述的方法,其中所述第一分量和/或所述第二分量的所述處理包括以下步驟之一: 神經網路的圖像解碼; 圖像濾波。
  17. 根據請求項16所述的方法,其中所述第二分量的所述處理包括根據所述圖像的亮度分量的表示對所述圖像的色度分量進行解碼。
  18. 如請求項12至17中任一項所述的方法,其中 所述第一分量和/或所述第二分量的所述處理包括圖像後濾波; 對於所述第一多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的; 對於所述第二多個分塊中的至少兩個分塊,後濾波的一個或多個參數不同,並且是從所述碼流中提取的。
  19. 如請求項1至18中任一項所述的方法,其中所述輸入張量為包括所述多個分量中的一個或多個分量的圖像或圖像序列,其中至少一個分量為顏色分量。
  20. 一種儲存在非暫態性媒體中的電腦程式,其中所述電腦程式包括代碼,當所述代碼在一個或多個處理器上執行時,所述代碼執行根據請求項1至19中任一項所述的方法的步驟。
  21. 一種用於處理表示圖像資料的輸入張量的裝置,其中所述裝置包括處理電路,所述處理電路用於: 在空間維度上處理所述輸入張量的多個分量,所述多個分量包括第一分量和第二分量,所述處理包括: 處理所述第一分量,包括:將所述第一分量在所述空間維度上劃分為第一多個分塊並分別處理所述第一多個分塊中的所述分塊;以及 處理所述第二分量,包括:將所述第二分量在所述空間維度上劃分為第二多個分塊並分別處理所述第二多個分塊中的所述分塊; 其中,所述第一多個分塊和所述第二多個分塊中的至少兩個相應的並置分塊大小不同。
  22. 一種用於處理表示圖像資料的輸入張量的裝置,包括: 一個或多個處理器; 非暫態性電腦可讀儲存媒體,所述非暫態性電腦可讀儲存媒體耦合到所述一個或多個處理器並儲存由所述一個或多個處理器執行的程式,其中,當所述程式由所述一個或多個處理器執行時,所述程式使所述處理裝置執行根據請求項1至19中任一項所述的方法。
TW112124318A 2022-07-01 2023-06-29 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq TW202416712A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/EP2022/068295 WO2024002497A1 (en) 2022-07-01 2022-07-01 Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WOPCT/EP2022/068295 2022-07-01

Publications (1)

Publication Number Publication Date
TW202416712A true TW202416712A (zh) 2024-04-16

Family

ID=82701794

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112124318A TW202416712A (zh) 2022-07-01 2023-06-29 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq

Country Status (2)

Country Link
TW (1) TW202416712A (zh)
WO (1) WO2024002497A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4293740B2 (ja) * 2001-05-29 2009-07-08 株式会社リコー 画像圧縮装置
US20150215631A1 (en) * 2014-01-23 2015-07-30 Broadcom Corporation Parallel Coding with Overlapped Tiles
WO2019103126A1 (en) * 2017-11-22 2019-05-31 Sharp Kabushiki Kaisha Systems and methods for signaling tile structures for pictures of coded video
WO2022128105A1 (en) * 2020-12-17 2022-06-23 Huawei Technologies Co., Ltd. Decoding and encoding of neural-network-based bitstreams

Also Published As

Publication number Publication date
WO2024002497A1 (en) 2024-01-04

Similar Documents

Publication Publication Date Title
TWI834087B (zh) 用於從位元流重建圖像及用於將圖像編碼到位元流中的方法及裝置、電腦程式產品
TWI830107B (zh) 通過指示特徵圖資料進行編碼
US20230336759A1 (en) Decoding with signaling of segmentation information
US20230353764A1 (en) Method and apparatus for decoding with signaling of feature map data
US20230336776A1 (en) Method for chroma subsampled formats handling in machine-learning-based picture coding
CN116965029A (zh) 使用卷积神经网络对图像进行译码的装置和方法
US20230336736A1 (en) Method for chroma subsampled formats handling in machine-learning-based picture coding
KR20240050435A (ko) 조건부 이미지 압축
CN117501696A (zh) 使用在分块之间共享的信息进行并行上下文建模
TW202318265A (zh) 基於注意力的圖像和視訊壓縮上下文建模
WO2023172153A1 (en) Method of video coding by multi-modal processing
TW202416712A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
TW202420815A (zh) 使用神經網路進行圖像區域的並行處理-解碼、後濾波和rdoq
WO2024002496A1 (en) Parallel processing of image regions with neural networks – decoding, post filtering, and rdoq
WO2024083405A1 (en) Neural network with a variable number of channels and method of operating the same
WO2024005659A1 (en) Adaptive selection of entropy coding parameters
WO2024005660A1 (en) Method and apparatus for image encoding and decoding
WO2022128138A1 (en) A method and apparatus for encoding or decoding a picture using a neural network
CN118318446A (zh) 视频压缩中残差编码的广义差译码器