TW202135529A - 使用基於循環的機器學習系統的視頻壓縮 - Google Patents

使用基於循環的機器學習系統的視頻壓縮 Download PDF

Info

Publication number
TW202135529A
TW202135529A TW110101726A TW110101726A TW202135529A TW 202135529 A TW202135529 A TW 202135529A TW 110101726 A TW110101726 A TW 110101726A TW 110101726 A TW110101726 A TW 110101726A TW 202135529 A TW202135529 A TW 202135529A
Authority
TW
Taiwan
Prior art keywords
time step
data
current time
video frame
reconstructed
Prior art date
Application number
TW110101726A
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 TW202135529A publication Critical patent/TW202135529A/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Processing Or Creating Images (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Studio Devices (AREA)

Abstract

本文中描述使用基於循環的機器學習工具來對視頻內容進行譯碼的技術。設備可包括神經網路系統,其包括編碼器部分和解碼器部分。編碼器部分可基於用於神經網路系統的操作的當前時步的輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料,來產生用於神經網路系統的操作的當前時步的輸出資料。神經網路系統的解碼器部分可基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀。

Description

使用基於循環的機器學習系統的視頻壓縮
本申請主張享有於2020年3月3日遞交、編號為62/984,673的美國臨時申請的權益,所述申請的全部內容在此透過引用的方式併入並且用於所有目的。
概括而言,本公開內容涉及視頻譯碼(coding),包括對視頻的編碼(或壓縮)和解碼(解壓縮)。例如,本公開內容的各方面涉及使用一個或多個基於循環的機器學習系統來對視頻內容進行譯碼(例如,編碼和/或解碼)。
許多設備和系統允許視頻資料被處理和輸出以供消費。數位視頻資料包括大量資料,以滿足消費者和視頻提供者的需求。例如,視頻資料的消費者期望高品質視頻,包括高保真度、高解析度、高幀速率等。結果,滿足這些需求所需要的大量視頻資料給處理和儲存視頻資料的通信網路和設備帶來負擔。
視頻譯碼技術可以用於對視頻資料進行壓縮。視頻譯碼的目標是將視頻資料壓縮為使用較低位元率的形式,同時避免或最小化對視頻品質的降級。隨著不斷發展的視頻服務變得可用,需要具有更好的譯碼效率的編碼技術。
描述用於使用一種或多種基於循環的機器學習系統來對視頻內容進行譯碼(例如,編碼和/或解碼)的系統和技術。在一個說明性示例中,提供處理視頻資料的方法。該方法包括:藉由神經網路系統的編碼器部分獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;藉由神經網路系統的編碼器部分產生用於神經網路系統的操作的當前時步的輸出資料,輸出資料是至少部分地基於以下各項來產生的:輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料;藉由神經網路系統的解碼器部分獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;以及至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀,經重構視頻幀表示輸入視頻幀。
在另一示例中,提供用於處理視頻資料的裝置,裝置包括:記憶體;以及耦接到記憶體的處理器(例如,在電路中實現的)。在一些示例中,一個以上的處理器可以耦接到記憶體,並且可以用於執行操作中的一個或多個操作。處理器被配置為:藉由神經網路系統的編碼器部分獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;使用編碼器部分來產生用於神經網路系統的操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的;使用神經網路系統的解碼器部分來獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;以及至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀,經重構視頻幀表示輸入視頻幀。
在另一示例中,提供具有儲存在其上的指令的非暫時性計算機可讀媒體,所述指令在藉由一個或多個處理器執行時使得一個或多個處理器:使用神經網路系統的編碼器部分來獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;使用神經網路系統的編碼器部分來產生用於神經網路系統的操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的;使用神經網路系統的解碼器部分來獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;以及使用解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀,經重構視頻幀表示輸入視頻幀。
在另一示例中,提供用於處理視頻資料的裝置。裝置包括:用於獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自至少一個循環層的循環狀態資料的構件;用於產生用於神經網路系統的操作的當前時步的輸出資料的構件,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的;用於獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料的構件;以及用於至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀的構件,經重構視頻幀表示輸入視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;以及透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及藉由解碼器部分的扭曲後網路處理經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料。在這樣的方面中,用於操作的當前時步的經重構視頻幀是基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理來產生的。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的運動估計網路至少部分地基於輸入視頻幀和以下兩者中的至少一項來判定用於操作的當前時步的運動估計資料:來自操作的先前時步的經先前重構視頻幀或來自操作的先前時步的先前輸入視頻幀;透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀或先前輸入視頻幀中的至少一者的一個或多個像素,來產生用於當前時步的經扭曲經重構視頻幀;以及向神經網路系統的編碼器部分發送經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料。在這樣的方面中,被產生用於操作的當前時步的輸出資料是藉由神經網路系統的編碼器部分至少部分地基於經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料來產生的。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:針對一次或多次訓練迭代,使用第一損失函數來訓練神經網路系統,第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失;停用第一損失函數;以及針對在一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練神經網路系統,第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。
在一些方面中,循環狀態資料包括至少一個循環層的節點的一個或多個值。
在一些方面中,神經網路系統的解碼器部分包括多個循環層,多個循環層中的每個循環層提供各自的循環狀態資料。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:透過使用被判定用於操作的當前時步或操作的先前時步的運動估計資料來修改來自操作的先前時步的循環狀態資料,以產生用於操作的當前時步的經扭曲的循環狀態資料。在這樣的方面中,被產生用於操作的當前時步的經重構視頻幀是至少部分地基於經扭曲的循環狀態資料來產生的。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由解碼器部分產生經重構遮罩,經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及至少部分地基於經重構遮罩、被產生用於操作的當前時步的經扭曲經重構視頻幀和被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀,經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:獲得在操作的先前時步期間產生的經先前重構視頻幀;在操作的當前時步期間透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀;藉由解碼器部分在操作的當前時步期間判定用於操作的當前時步的第一經重構殘差資料;透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀;藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的第二經重構殘差資料;在操作的當前時步期間,使用第二經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的編碼器部分獲得一個或多個失真圖;以及藉由神經網路系統的編碼器部分至少部分地基於一個或多個失真圖來產生輸出資料。在一些方面中,一個或多個失真圖包括第一失真圖,第一失真圖指示在用於操作的當前時步的輸入視頻幀與來自操作的先前時步的經先前重構視頻幀之間的失真。在一些方面中,一個或多個失真圖包括第二失真圖,第二失真圖指示在用於操作的當前時步的輸入視頻幀與經扭曲經重構視頻幀之間的失真。在這樣的方面中,經扭曲經重構視頻幀可以是透過修改來自操作的先前時步的經先前重構視頻幀的一個或多個像素來產生的。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的編碼器部分的第一層處理輸入資料;藉由編碼器部分的第一層判定用於編碼器部分的第一層的多個權重值;將神經網路系統的編碼器部分的第二層的權重設定為所述多個權重值;以及藉由編碼器部分的第二層使用被設定為所述多個權重值的權重來處理輸入資料。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:將輸出資料儲存在儲存媒體中。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:將經重構視頻幀儲存在儲存媒體中。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:透過傳輸媒體向至少一個設備發送經重構視頻幀。
在另一說明性示例中,提供處理視頻資料的方法。所述方法包括:藉由神經網路系統的解碼器部分獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,以產生用於操作的當前時步的經扭曲經重構視頻幀;以及至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀。
在另一示例中,提供用於處理視頻資料的裝置,裝置包括:記憶體;以及耦接到記憶體的處理器(例如,在電路中實現的)。在一些示例中,一個以上的處理器可以耦接到記憶體,並且可以用於執行操作中的一個或多個操作。處理器被配置為:使用神經網路系統的解碼器部分來獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;使用神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,以產生用於操作的當前時步的經扭曲經重構視頻幀;以及至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀。
在另一示例中,提供具有儲存在其上的指令的非暫時性計算機可讀媒體,所述指令在藉由一個或多個處理器執行時使得一個或多個處理器進行以下操作:使用神經網路系統的解碼器部分來獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;使用神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,以產生用於操作的當前時步的經扭曲經重構視頻幀;以及至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀。
在另一示例中,提供用於處理視頻資料的裝置。裝置包括:用於獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料的構件;用於至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料來判定用於操作的當前時步的運動估計資料的構件;用於獲得在操作的先前時步期間產生的經先前重構視頻幀的構件;用於至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,以產生用於操作的當前時步的經扭曲經重構視頻幀的構件;以及用於至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀的構件。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由神經網路系統的編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的經重構殘差資料;在操作的當前時步期間,使用來自操作的先前時步的經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;藉由解碼器部分的扭曲後網路處理經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料;以及至少部分地基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理,來產生用於操作的當前時步的經重構視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:至少部分地透過使用被判定用於操作的當前時步的運動估計資料或被判定用於操作的先前時步的運動估計來修改來自操作的先前時步的循環狀態資料,以產生用於操作的當前時步的經扭曲的循環狀態資料;以及至少部分地基於經扭曲的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由解碼器部分產生經重構遮罩,經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及至少部分地基於經重構遮罩、用於操作的當前時步的經扭曲經重構視頻幀和被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀,經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。
在一些方面中,上文描述的方法、裝置和計算機可讀媒體還包括:藉由神經網路系統的編碼器部分獲得用於操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;以及藉由神經網路系統的編碼器部分產生用於操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的。
在一些方面中,裝置包括行動設備、可穿戴設備、擴展實境設備(例如,虛擬實境(VR)設備、擴增實境(AR)設備或混合實境(MR)設備)、個人計算機、膝上型計算機、視頻伺服器、電視機或其它設備。在一些方面中,裝置包括行動設備(例如,行動電話或所謂的“智慧型電話”)。在一些方面中,裝置還包括用於擷取一個或多個圖像或視頻幀的至少一個相機。例如,裝置可以包括用於擷取一個或多個圖像和/或包括視頻幀的一個或多個視頻的一相機(例如,RGB相機)或多個相機。在一些方面中,裝置包括用於顯示一個或多個圖像、視頻、通知或其它可顯示資料的顯示器。在一些方面中,裝置包括被配置為透過傳輸媒體向至少一個設備發送經重構視頻幀的發射機。在一些方面中,處理器包括神經處理單元(NPU)、中央處理單元(CPU)、圖形處理單元(GPU)或其它處理設備或組件。
本發明內容並非旨在識別所請求標的之關鍵或必要特徵,也並非旨在單獨用於判定所請求標的之範圍。所請求標的應透過參照整份說明書的適當部分、任何或所有圖式以及每個請求項來理解。
參考以下說明書、申請專利範圍和圖式,前述內容以及其它特徵和實施例將變得更加清楚明確。
下文提供本公開內容的某些方面和實施例。如對於本領域技術人員將顯而易見的,這些方面和實施例中的一些可以獨立地應用,並且它們中的一些可以相結合地應用。在以下描述中,出於解釋的目的,闡述具體細節以便提供對本申請的實施例的透徹理解。然而,將顯而易見的是,各個實施例可以在沒有這些具體細節的情況下實施。圖式和描述不旨在是限制性的。
隨後的描述僅提供示例實施例,以及不旨在限制本公開內容的範圍、適用性或配置。確切地說,對示例實施例的隨後描述將向本領域技術人員提供用於實現示例實施例的使能的描述。應當理解的是,在不脫離申請專利範圍中闡述的本申請的精神和範圍的情況下,可以對元素的功能和排列進行各種改變。
數位視頻資料可以包括大量資料,尤其是隨著對高品質視頻資料的需求持續增長。例如,視頻資料的消費者通常期望越來越高品質的視頻,具有高保真度、高解析度、高幀速率等。然而,滿足這樣的需求所需要的大量視頻資料可能給通信網路以及處理和儲存視頻資料的設備帶來顯著負擔。
各種技術可以用於對視頻資料進行譯碼。視頻譯碼可以根據特定的視頻譯碼標準來執行。示例視頻譯碼標準包括高效率視頻譯碼(HEVC)、進階視頻譯碼(AVC)、動態圖像壓縮標準(MPEG)譯碼及通用視頻譯碼(VVC)等。視頻譯碼通常使用預測方法(比如幀間預測、幀內預測等),所述預測方法利用在視頻圖像或序列中存在的冗餘。視頻譯碼技術的共同目標是將視頻資料壓縮為使用較低位元率的形式,同時避免或最小化視頻品質的降級。隨著對視頻服務的需求增長以及新的視頻服務變得可用,需要具有更好的譯碼效率、性能和速率控制的譯碼技術。
本文中描述使用一個或多個機器學習(ML)系統來執行視頻譯碼的技術。ML是人工智慧(AI)的子集。ML系統包括演算法和統計模型,計算機系統可以使用這些演算法和統計模型,以透過依靠於模式和推論來執行各種任務,而無需使用顯式指令。ML系統的一個示例是神經網路(也稱為人工神經網路),神經網路可以包括一組相互連接的人工神經元(例如,神經元模型)。神經網路可以用於各種應用和/或設備,比如圖像分析和/或計算機視覺應用、網際網路協定(IP)相機、物聯網(IoT)設備、自駕車、服務機器人等。
在神經網路中的各個節點可以透過採用輸入資料並且對資料執行簡單運算來模擬生物神經元。對輸入資料執行的簡單運算的結果被選擇性地傳遞給其它神經元。權重值與在網路中的每個向量和節點相關聯,並且這些值限制輸入資料是如何與輸出資料相關的。例如,可以將每個節點的輸入資料乘以相應的權重值,並且可以將乘積加總。可以透過選擇性的偏差來調整乘積的和,並且可以將激活函數應用於結果,從而產生節點的輸出信號或“輸出激活”(有時稱為激活圖或特徵圖)。權重值最初可以是藉由透過網路的訓練資料的迭代串流來判定的(例如,權重值是在訓練階段期間建立的,在所述訓練階段中,網路學習如何透過其典型的輸入資料特性來識別特定類別)。
存在不同類型的神經網路,比如循環神經網路(RNN)、多層感知器(MLP)神經網路、卷積神經網路(CNN)等。RNN以如下原理來工作:保存層的輸出並且將該輸出反饋給輸入,以幫助預測該層的結果。在MLP神經網路中,可以將資料饋送給輸入層,並且一個或多個隱藏層為資料提供抽象層次。然後可以基於抽象資料在輸出層上進行預測。MLP可以特別適於輸入被分配類別或標簽的分類預測問題。卷積神經網路(CNN)是一種前饋人工神經網路。卷積神經網路可以包括人工神經元的集合,每個人工神經元具有接受域(例如,輸入空間的空間局部區域)並且共同地平鋪(tile)輸入空間。卷積神經網路具有大量應用。特別是,CNN已經廣泛地用於模式識別和分類的領域中。
在分層神經網路架構(當存在多個隱藏層時稱為深度神經網路)中,第一層人工神經元的輸出成為第二層人工神經元的輸入,第二層人工神經元的輸出成為第三層人工神經元的輸入,依此類推。可以對卷積神經網路進行訓練以識別特徵的層次結構。在卷積神經網路架構中的計算可以分佈在可以被配置在一個或多個計算鏈中的一群處理節點上。這些多層架構可以每次訓練一個層,並且可以使用反向傳播進行微調。
圖1示出單晶片系統(SOC)100的示例實現方式,SOC 100可以包括被配置為執行本文中所描述的功能中的一個或多個功能的中央處理單元(CPU)102或多核心CPU。參數或變數(例如,神經信號和突觸權重)、與計算設備(例如,具有權重的神經網路)相關聯的系統參數、延遲、頻段資訊、任務資訊以及其它資訊可以被儲存在與神經處理單元(NPU)108相關聯的記憶體區塊中、在與CPU 102相關聯的記憶體區塊中、在與圖形處理單元(GPU)104相關聯的記憶體區塊中、在與數位信號處理器(DSP)106相關聯的記憶體區塊中、在記憶體區塊118中和/或可以分佈在多個區塊中。在CPU 102處執行的指令可以是從與CPU 102相關聯的程式記憶體加載的,或者可以是從記憶體區塊118加載的。
SOC 100還可以包括為特定功能訂製的額外處理區塊,比如GPU 104、DSP 106、連接區塊110(其可以包括第五代(5G)連接、第四代長期演進(4G LTE)連接、Wi-Fi連接、USB連接、藍牙連接等)以及多媒體處理器112(例如,其可以偵測和識別手勢)。在一種實現方式中,NPU是在CPU 102、DSP 106和/或GPU 104中實現的。SOC 100還可以包括感測器處理器114、圖像信號處理器(ISP)116和/或導航模組120(其可以包括全球定位系統)。
SOC 100可以是基於ARM指令集的。在本公開內容的一方面中,加載到CPU 102中的指令可以包括用於在與輸入值和濾波器權重的乘積相對應的查找表(LUT)中搜尋所儲存的乘法結果的碼。加載到CPU 102中的指令還可以包括用於當檢測到乘積的查找表命中時在乘積的乘法運算期間禁用乘法器的碼。另外,加載到CPU 102中的指令可以包括用於當檢測到乘積的查找表未命中時儲存輸入值和濾波器權重的經計算出乘積的碼。
SOC 100和/或其組件可以被配置為使用根據本文中所討論的本公開內容的各方面的機器學習技術來執行視頻壓縮和/或解壓縮(也稱為視頻編碼和/或解碼,統稱為視頻譯碼)。透過使用深度學習架構來執行視頻壓縮和/或解壓縮,本公開內容的各方面可以提高在設備上的視頻壓縮和/或解壓縮的效率。例如,使用所描述的視頻譯碼技術的設備可以使用基於機器學習的技術來更高效地壓縮視頻,可以將經壓縮的視頻發送給另一設備,並且另一設備可以使用本文中所描述的基於機器學習的技術來更高效地解壓縮經壓縮的視頻。
如上文所指出的,神經網路是機器學習系統的示例,並且可以包括輸入層、一個或多個隱藏層以及輸出層。資料是從輸入層的輸入節點提供的,處理是藉由一個或多個隱藏層的隱藏節點執行的,以及輸出是透過輸出層的輸出節點產生的。深度學習網路通常包括多個隱藏層。神經網路的每個層可以包括特徵圖或激活圖,所述特徵圖或激活圖可以包括人工神經元(或節點)。特徵圖可以包括濾波器、核心等。節點可以包括用於指示所述層中的一個或多個層的節點的重要性的一個或多個權重。在一些情況下,深度學習網路可以具有一系列的多個隱藏層,其中初期的層是用於判定輸入的簡單且低層級的特性,以及後期的層建立更複雜且抽象的特性的層次結構。
深度學習架構可以學習特徵的層次結構。例如,如果利用視覺資料來介紹,則第一層可以學習識別在輸入串流中的相對簡單的特徵,比如邊緣。在另一示例中,如果利用聽覺資料來介紹,則第一層可以學習識別在特定頻率中的頻譜功率。採用第一層的輸出作為輸入的第二層可以學習識別特徵的組合,比如用於視覺資料的簡單形狀或用於聽覺資料的聲音的組合。例如,較高層可以學習表示在視覺資料中的複雜形狀或者在聽覺資料中的詞語。再高層可以學習識別常見的視覺物件或口語片語。
當應用於具有自然性的層次結構的問題時,深度學習架構可能表現得尤其好。例如,對機動車輛的分類可以得益於首先學習識別輪子、擋風玻璃和其它特徵。這些特徵可以在較高層處以不同的方式進行組合,以識別汽車、卡車和飛機。
神經網路可以被設計為具有多種連接模式。在前饋網路中,資訊是從較低層傳遞到較高層的,其中在給定的層中的每個神經元與在較高層中的神經元進行通信。如上文所描述的,可以在前饋網路的連續層中建立階層式表達。神經網路也可以具有循環或反饋(也稱為由上而下)連接。在循環連接中,來自在給定的層中的神經元的輸出可以被傳送給在同一層中的另一神經元。循環架構可以有助於識別橫跨一個以上的按順序被遞送給神經網絡的輸入資料組集的模式。從在給定的層中的神經元到在較低層中的神經元的連接稱為反饋(或由上而下)連接。當對高層級概念的識別可以輔助辨別輸入的特定低層級特徵時,具有許多反饋連接的網路可以是有幫助的。
在神經網路的層之間的連接可以是全連接的或者局域連接的。圖2A示出全連接神經網路202的示例。在全連接神經網路202中,在第一層中的神經元可以將其輸出傳送給在第二層中的每個神經元,使得在第二層中的每個神經元將接收來自在第一層中的每個神經元的輸入。圖2B示出局域連接神經網路204的示例。在局域連接神經網路204中,在第一層中的神經元可以連接到在第二層中的有限數量的神經元。更普遍地,局域連接神經網路204的局域連接層可以被配置為使得在一層中的每個神經元將具有相同或相似的連接模式,但是連接之強度具有不同的值(例如,210、212、214和216)。局域連接的連接模式可以在較高層中造成空間上不同的接受域,因為在給定區域中的較高層神經元可以接收透過訓練而被調諧到網路的總輸入的限制部分的屬性的輸入。
局域連接神經網路的一個示例是卷積神經網路。圖2C示出卷積神經網路206的示例。卷積神經網路206可以被配置為使得與第二層中的每個神經元的輸入相關聯的連接強度被共享(例如,208)。卷積神經網路可以非常適於在其中輸入的空間位置有意義的問題。根據本公開內容的各方面,卷積神經網路206可以用於執行視頻壓縮和/或解壓縮的一個或多個方面。
卷積神經網路的一種類型是深度卷積網路(DCN)。圖2D示出DCN 200的詳細示例,DCN 200被設計為根據從圖像擷取設備230(比如車載相機)的輸入的圖像226來識別視覺特徵。當前示例的DCN 200可以被訓練為識別交通標誌和在交通標誌上提供的數字。當然,DCN 200可以被訓練用於其它任務,比如識別車道標線或識別交通燈。
DCN 200可以利用監督式學習來訓練。在訓練期間,可以向DCN 200呈現圖像(比如限速標誌的圖像226),並且然後可以計算前向傳遞以產生輸出222。DCN 200可以包括特徵提取部分和分類部分。一經接收到圖像226,卷積層232就可以將卷積核(未示出)應用於圖像226以產生第一特徵圖集合218。作為示例,用於卷積層232的卷積核可以是產生28x28特徵圖的5x5核心。在本示例中,因為在第一特徵圖集合218中產生四個不同的特徵圖,所以在卷積層232處對圖像226應用四個不同的卷積核。卷積核也可以稱為濾波器或卷積濾波器。
第一特徵圖集合218可以藉由最大池化層(未示出)二次採樣以產生第二特徵圖集合220。最大池化層減少第一特徵圖集合218的大小。也就是說,第二特徵圖集合220的大小(比如14x14)小於第一特徵圖集合218的大小(比如28x28)。減少的大小向後續層提供類似的資訊,同時減少記憶體消耗。第二特徵圖集合220可以經由一個或多個後續卷積層(未示出)進一步進行卷積以產生一個或多個後續特徵圖集合(未示出)。
在圖2D的示例中,對第二特徵圖集合220進行卷積以產生第一特徵向量224。此外,對第一特徵向量224進一步卷積以產生第二特徵向量228。第二特徵向量228的每個特徵可以包括與圖像226的可能特徵(例如,“記號”、“60”和“100”)相對應的數字。softmax函數(未示出)可以將在第二特徵向量228中的數字轉換為概率。照此,DCN 200的輸出222是圖像226包括一個或多個特徵的概率。
在本示例中,在輸出222中的用於“標誌”和“60”的概率高於輸出222的其它項(例如,“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。在訓練之前,藉由DCN 200產生的輸出222可能是不正確的。因此,可以計算輸出222和目標輸出之間的誤差。目標輸出是圖像226的地面實況(例如,“標誌”和“60”)。然後,可以調整DCN 200的權重,以使DCN 200的輸出222更緊密地對齊目標輸出。
為了調整權重,學習演算法可以計算用於權重的梯度向量。梯度可以指示如果調整權重則誤差將增加或減少的量。在頂層,梯度可以直接地與連接在倒數第二層中的激活的神經元和在輸出層中的神經元的權重的值相對應。在較低層中,梯度可以取決於權重的值和所計算出的較高層的誤差梯度。然後可以調整權重以減少誤差。這種調整權重的方式可以稱為“反向傳播”,因為其涉及透過神經網路的“後向傳遞”。
在實踐中,權重的誤差梯度可以透過少量示例來計算,使得所計算出的梯度接近真實誤差梯度。這種近似方法可以稱為隨機梯度下降。可以重複隨機梯度下降,直到整個系統的可實現誤差率已經停止下降或直到誤差率已經達到目標水平。在學習之後,可以向DCN呈現新圖像,並且透過網路的前向傳遞可以產生可以被認為是DCN的推斷或預測的輸出222。
深度信念網路(DBNs)是包括多層隱藏節點的概率模型。DBNs可以用於提取訓練資料集合的階層式表達。DBN可以透過將受限玻爾茲曼機(RBMs)的各層進行疊加來獲得。RBM是一種可以透過輸入集合來學習概率分佈的人工神經網路類型。由於RBMs可以在沒有關於每個輸入應當被分類到的類別的資訊的情況下學習概率分佈,因此RBM通常在無監督學習中使用。使用混合的無監督和監督式的範例,DBN的底部RBMs可以以無監督的方式來訓練並且可以充當特徵提取器,而頂部RBM可以以監督式的方式來訓練(基於來自前一層的輸入和目標類別的聯合分佈)並且可以充當分類器。
深度卷積網路(DCNs)是卷積網路的網路,被配置有額外的池化和標準化層。DCN在許多任務上都已經實現最先進的性能。DCN可以使用監督式學習來訓練,在所述監督式學習中,輸入和輸出目標對於許多範例都是已知的並且用於透過使用梯度下降方法來修改網路的權重。
DCN可以是前饋網路。此外,如上文所描述的,從在DCN的第一層中的神經元到在下一較高層中的一組神經元的連接是跨越在第一層中的神經元而共享的。DCN的前饋和共享連接可以用於快速處理。例如,DCN的計算負擔可以比包括循環或反饋連接的類似大小的神經網路的計算負擔小得多。
卷積網路的每個層的處理可以被認為空間不變的模板或基礎投影。如果首先將輸入分解為多個通道(比如彩色圖像的紅色、綠色和藍色通道),則在該輸入上訓練的卷積網路可以被認為是三維的,其中兩個空間維度沿著圖像的軸線,而第三維度擷取色彩資訊。卷積連接的輸出可以被認為形成在後續層中的特徵圖,其中,特徵圖(例如,220)的每個元素接收來自在前一層中的一系列神經元(例如,特徵圖218)和來自多個通道中的每個通道的輸入。在特徵圖中的值可以利用非線性(例如,整流函數max(0,x))來進一步處理。來自相鄰神經元的值可以進一步進行池化,這對應於降低取樣並且可以提供額外的局域不變性和降維。
圖3是示出深度卷積網路350的示例的方塊圖。深度卷積網路350可以包括基於連接性和權重共享的多個不同類型的層。如在圖3中所示出的,深度卷積網路350包括卷積區塊354A、354B。卷積區塊354A、354B中的每者可以被配置為具有卷積層(CONV)356、標準化層(LNorm)358和最大池化層(MAX POOL)360。
卷積層356可以包括一個或多個卷積濾波器,所述一個或多個卷積濾波器可以被應用於輸入資料352以產生特徵圖。雖然僅示出兩個卷積區塊354A、354B,但是本公開內容並不限制於此,而相反,根據設計偏好,任何數量的卷積區塊(例如,區塊354A、354B)可以被包括在深度卷積網路350中。標準化層358可以將卷積濾波器的輸出進行標準化。例如,標準化層358可以提供白化或橫向抑制。最大池化層360可以提供在空間上的降低取樣聚合以得到局域不變性和降維。
例如,深度卷積網路的平行濾波器組可以被加載在SOC 100的CPU 102或GPU 104上,以實現高性能和低功耗。在替代實施例中,平行濾波器組可以被加載在SOC 100的DSP 106或ISP 116上。此外,深度卷積網路350可以存取可以在SOC 100上存在的其它處理區塊,比如分別專用於感測器和導航的感測器處理器114和導航模組120。
深度卷積網路350還可以包括一個或多個全連接層,比如層362A(被標記為“FC1”)和層362B(被標記為“FC2”)。深度卷積網路350還可以包括邏輯迴歸(LR)層364。在深度卷積網路350的每個層356、358、360、362、364之間是要被更新的權重(未示出)。這些層(例如,356、358、360、362、364)中的每個層的輸出可以作為在深度卷積網路350的這些層(例如,356、358、360、362、364)中的隨後一個層的輸入,以從在最初的卷積區塊354A處提供的輸入資料352(例如,圖像、音頻、視頻、感測器資料、和/或其它輸入資料)學習階層式特徵表達。深度卷積網路350的輸出是針對輸入資料352的分類得分366。分類得分366可以是概率集合,其中,每個概率是輸入資料包括來自特徵集合的一特徵的概率。
如上文所指出的,數位視頻資料可以包括大量資料,這可能給通信網路以及處理和儲存視頻資料的設備帶來顯著負擔。例如,記錄未經壓縮的視頻內容通常導致大的檔案大小,檔案大小隨著所記錄的視頻內容的解析度增加而大幅增加。在一個說明性示例中,以1080p/24(例如,在寬度上具有1920個像素以及在高度上具有1080個像素的解析度,其中每秒擷取24個幀)記錄的未經壓縮的每通道16位元的視頻可能佔用每幀12.4百萬位元組或每秒297.6百萬位元組。以每秒24個幀的4K解析度記錄的未經壓縮的每通道16位元的視頻可能佔用每幀49.8百萬位元組或每秒1195.2百萬位元組。
網路頻寬是大視頻檔案可能由於其而變得有問題的另一限制。例如,視頻內容通常是透過無線網路(例如,經由LTE、改進的LTE、新無線電(NR)、WiFiTM 、藍牙TM 或其它無線網路)傳送的,並且可能構成消費者網際網路流量的很大一部分。雖然在無線網路中的可用頻寬量方面取得進步,但是可能仍然期望減少用於在這些網路中傳送視頻內容的頻寬量。
由於未經壓縮的視頻內容可能導致大檔案,大檔案可能涉及用於實體儲存的相當大的記憶體和用於傳輸的大量頻寬,因此可以利用視頻譯碼技術來壓縮以及解壓縮這樣的視頻內容。
為了減少視頻內容的大小,以及因此的儲存視頻內容所涉及的儲存量,以及傳送視頻內容所涉及的頻寬量,可以根據特定的視頻譯碼標準(比如HEVC、AVC、MPEG、VVC等)來執行各種視頻譯碼技術。視頻譯碼通常使用預測方法(例如,幀間預測、幀內預測等),所述預測方法利用在視頻圖像或序列中存在的冗餘。視頻譯碼技術的共同目標是將視頻資料壓縮為使用較低位元率的形式,同時避免或最小化視頻品質的降級。隨著對視頻服務的需求增長以及新的視頻服務變得可用,需要具有更好的譯碼效率、性能和速率控制的譯碼技術。
通常,編碼設備根據視頻譯碼標準來對視頻資料進行編碼,以產生經編碼的視頻位元流。在一些示例中,經編碼的視頻位元流(或“視頻位元流”或“位元流”)是一系列的一個或多個經譯碼的視頻序列。編碼設備可以透過將每個圖像劃分為多個切片來產生圖像的譯碼表示。一切片是獨立於其它切片的,使得在該切片中的資訊是在不依靠於來自在同一圖像內的其它切片的資料的情況下進行譯碼的。切片包括一個或多個切片段,所述一個或多個切片段包括獨立的切片段以及(如果存在的話)依靠於先前切片段的一個或多個附屬切片段。在HEVC中,切片被劃分成亮度樣本和色度樣本的譯碼樹區塊(CTB)。亮度樣本的CTB和色度樣本的一個或多個CTB連同用於樣本的語法,被稱為譯碼樹單元(CTU)。CTU還可以稱為“樹區塊”或“最大譯碼單元”(LCU)。CTU是用於HEVC編碼的基本處理單元。CTU可以被拆分為大小不同的多個譯碼單元(CU)。CU包含稱為譯碼區塊(CB)的亮度和色度樣本陣列。
亮度和色度CB可以被進一步拆分為預測區塊(PB)。PB是亮度分量或色度分量的樣本區塊,所述PB使用相同的運動參數來進行幀間預測或幀內區塊複製(IBC)預測(當可用或被啟用以供使用時)。亮度PB和一個或多個色度PB連同關聯的語法形成預測單元(PU)。對於幀間預測,運動參數集合(例如,一個或多個運動向量、參考索引等)是在針對每個PU的位元流中以信號發送的,並且用於亮度PB和一個或多個色度PB的幀間預測。運動參數也可以稱為運動資訊。CB也可以被劃分為一個或多個轉換區塊(TB)。TB表示色彩分量的樣本的方形區塊,對所述TB應用殘差轉換(例如,在一些情況下,相同的二維轉換)以對預測殘差信號進行譯碼。轉換單元(TU)表示亮度和色度樣本的TB以及對應的語法元素。下文更加詳細地描述轉換譯碼。
根據HEVC標準,可以使用TU來執行轉換。對於不同的CU,TU可以不同。可以基於在給定CU內的PU的大小來設定TU的大小。TU可以具有與PU相同的大小或者小於PU。在一些示例中,可以使用稱為殘差四叉樹(RQT)的四叉樹結構來將與CU相對應的殘差樣本細分為更小的單元。RQT的葉子節點可以對應於TU。與TU相關聯的像素差值可以被轉換以產生轉換係數。轉換係數可以接著藉由編碼設備進行量化。
一旦視頻資料的圖像被劃分為CU,編碼設備就使用預測模式來預測每個PU。然後從原始視頻資料中減去預測單元或預測區塊以獲得殘差(下文描述)。對於每個CU,預測模式是可以使用語法資料來在位元流內以信號發送的。預測模式可以包括幀內預測(或圖像內預測)或幀間預測(或圖像間預測)。幀內預測利用在圖像內的空間上相鄰的樣本之間的相關性。例如,使用幀內預測,每個PU是根據在同一圖像中的相鄰的圖像資料來進行預測的,例如,使用DC預測以找到針對該PU的平均值,使用平面預測以使平面表面適於該PU,使用方向預測以根據鄰近資料進行推斷,或者使用任何其它適當的預測類型。幀間預測使用在圖像之間的時間相關性,以便推導出用於圖像樣本區塊的運動補償預測。例如,使用幀間預測,每個PU是使用運動補償預測根據在一個或多個參考圖像(按照輸出次序在當前圖像之前或之後)中的圖像資料來進行預測的。例如,關於是使用圖像間預測還是使用圖像內預測來對圖像區域進行譯碼的決策是在例如CU層級上做出的。
在一些示例中,圖像的一個或多個切片被分配切片類型。切片類型包括I切片、P切片和B切片。I切片(幀內,可獨立地解碼)是圖像的僅透過幀內預測來譯碼的切片,因此是可獨立解碼的,因為I切片僅需要在幀內的資料來預測切片的任何預測單元或預測區塊。P切片(單向預測的幀)是圖像的可以利用幀內預測和單向幀間預測來譯碼的切片。在P切片內的每個預測單元或預測區塊是利用幀內預測或幀間預測來譯碼的。當應用幀間預測時,預測單元或預測區塊是僅透過一個參考圖像來預測的,並且因此參考樣本僅來自一個幀的一個參考區域。B切片(雙向預測幀)是圖像的可以利用幀內預測和幀間預測(例如,雙向預測或單向預測)來譯碼的切片。B切片的預測單元或預測區塊可以根據兩個參考圖像來進行雙向預測,其中每個圖像貢獻一個參考區域,並且兩個參考區域的樣本集合被進行加權(例如,具有相等的權重或具有不同的權重)以產生雙向預測區塊的預測信號。如上文所解釋的,一個圖像的切片是獨立地進行譯碼的。在一些情況下,圖像可以僅作為一個切片進行譯碼。
在使用幀內預測和/或幀間預測來執行預測之後,編碼設備可以執行轉換和量化。例如,在預測之後,編碼設備可以計算與PU相對應的殘差值。殘差值可以包括在正被譯碼的當前像素區塊(PU)與用於預測當前區塊的預測區塊(例如,當前區塊的預測版本)之間的像素差值。例如,在產生預測區塊(例如,發佈(issue)幀間預測或幀內預測)之後,編碼設備可以透過從當前區塊中減去藉由預測單元產生的預測區塊來產生殘差區塊。殘差區塊包括像素差值集合,所述像素差值集合對在當前區塊的像素值與預測區塊的像素值之間的差進行量化。在一些示例中,殘差區塊可以用二維區塊格式(例如,像素值的二維矩陣或陣列)來表示。在這樣的示例中,殘差區塊是像素值的二維表示。
在執行預測之後可能剩餘的任何殘差資料是使用區塊轉換進行轉換的,所述區塊轉換可以是基於離散餘弦轉換、離散正弦轉換、整數轉換、小波轉換、其它適當的轉換函數、或其任何組合的。在一些情況下,一個或多個區塊轉換(例如,大小為32 x 32、16 x 16、8 x 8、4 x 4或其它適當的大小)可以應用於在每個CU中的殘差資料。在一些實施例中,TU可以用於藉由編碼設備實現的轉換和量化程序。具有一個或多個PU的給定CU還可以包括一個或多個TU。如下文更詳細地描述的,殘差值可以使用區塊轉換來轉換為轉換係數,以及然後可以使用TU進行量化和掃描,以產生用於熵譯碼的序列化的轉換係數。
編碼設備可以執行對轉換係數的量化。量化透過對轉換係數進行量化以減少用於表示係數的資料量來提供進一步的壓縮。例如,量化可以減少與係數中的一些或所有係數相關聯的位元深度。在一個示例中,具有n位元值的係數可以在量化期間向下捨入為m位元值,其中n大於m。
一旦執行量化,則經譯碼的視頻位元流包括經量化的轉換係數、預測資訊(例如,預測模式、運動向量、區塊向量等)、劃分資訊以及任何其它適當的資料(比如其它語法資料)。經譯碼的視頻位元流的不同元素接著可以藉由編碼設備進行熵編碼。在一些示例中,編碼設備可以利用預定義的掃描次序來掃描經量化的轉換係數,以產生可以進行熵編碼的序列化的向量。在一些示例中,編碼設備可以執行自適應掃描。在掃描經量化的轉換係數以形成向量(例如,一維向量)之後,編碼設備可以對該向量進行熵編碼。例如,編碼設備可以使用上下文自適應可變長度譯碼、上下文自適應二進制算術譯碼、基於語法的上下文自適應二進制算術譯碼、概率區間劃分熵譯碼或另一適當的熵編碼技術。
編碼設備可以儲存經編碼的視頻位元流和/或可以透過通信鏈路向接收設備(其可以包括解碼設備)發送經編碼的視頻位元流資料。解碼設備可以透過熵解碼(例如,使用熵解碼器)並且提取構成經編碼的視頻資料的一個或多個經譯碼的視頻序列的元素,來對經編碼的視頻位元流資料進行解碼。解碼設備然後可以重新縮放經編碼的視頻位元流資料並且對其執行逆轉換。殘差資料然後被傳送到解碼設備的預測階段。解碼設備接著使用幀內預測、幀間預測、IBC和/或其它類型的預測來預測像素區塊(例如,PU)。在一些示例中,預測被加到逆轉換的輸出(殘差資料)。解碼設備可以將經解碼的視頻輸出到視頻目標設備,所述視頻目標設備可以包括用於向內容的消費者顯示經解碼的視頻資料的顯示器或其它輸出設備。
透過各種視頻譯碼標準定義的視頻譯碼系統和技術(例如,上文描述的HEVC視頻譯碼技術)可以保留在原始視頻內容中的大部分資訊,並且是可以基於信號處理和資訊理論的概念來先驗地(a priori)定義的。然而,雖然預定義的壓縮演算法可以一般地適用(例如,適用於任何類型的視頻內容),但是這些預定義的視頻譯碼技術可能缺乏在基於網路的環境或其它類型的環境中有益的某些特性。例如,視頻譯碼系統應當能夠實現低延遲操作。然而,根據現有視頻譯碼標準來工作的視頻譯碼系統和相關技術以若干幀分批(有時稱為圖像組或GoP)來編碼和發送視頻,以及因此需要等待要發送的一批幀(例如,GoP)的累積。與可以使用逐幀譯碼和傳輸來實現的延遲相比,這種分批的視頻譯碼導致更高的延遲。此外,這樣的視頻譯碼系統和技術缺乏在運行時根據視頻的特性來調整GoP大小(即,發送全幀的頻率,而不僅僅是殘差資訊)的能力,從而導致在率失真空間中的不太理想的操作點。
本文中描述了使用向編碼器階段和/或解碼器階段提供反饋的循環神經網路架構來執行視頻譯碼(視頻壓縮/編碼和/或視頻解壓縮/解碼)的方法(也稱為程序程序)、系統、裝置和計算機可讀媒體(被統稱為“系統和技術”)。在一些示例中,所述系統和技術可以利用多個神經網路系統來壓縮和解壓縮視頻幀或圖像。例如,第一神經網路系統可以作為圖像編碼器(例如,圖像自編碼器)來壓縮全幀而不使用基於一個或多個先前幀的運動補償,類似於幀內預測幀(也稱為I幀)。第二神經網路系統(例如,循環自編碼器)可以用於使用基於一個或多個先前幀的運動補償並且使用殘差資訊來對幀進行編碼和/或解碼(類似於幀間預測幀,比如使用單個參考幀的單向預測幀(也稱為P幀)或使用兩個參考幀的雙向預測幀(稱為B幀))。
藉由第二神經網路系統執行的運動補償可以用於透過描述來自經先前重構幀的像素如何移動到在當前幀中的新位置上以及殘差資訊來判定當前幀的資料。第二神經網路系統可以包括儲存狀態資訊的一個或多個循環層(例如,在第二神經網路的解碼器部分中),所述狀態資訊可以在將來時步,被反饋給神經網路的某些層。例如,第二神經網路系統可以在當前時步t對幀xt進行處理,並且可以將來自一個或多個循環層的與處理幀xt相關聯的狀態資訊反饋給第二神經網路系統,以用於在下一時步t+1處理後續幀xt+1。一個或多個循環層可以是以下各項的一部分:一個或多個循環神經網路(RNN)、一個或多個閘控循環單元(GRU)、一個或多個長短期記憶(LSTM)網路、一個或多個ConvRNN、一個或多個ConvGRU、一個或多個ConvLSTM、其任何組合、和/或其它類型的神經網路架構。
本文中描述了與這樣的神經網路系統相關的各個方面。例如,在一些實現方式中,第二神經網路可以具有完全自我迴歸條件結構,所述完全自我迴歸條件結構可以逐幀(僅是指先前幀)地操作,而不具有向後之時間幀的依靠性(例如,比如在基於傳統標準的視頻編解碼器中使用的GoP結構)。在一些情況下,第二神經網路的輸出可以包括透過運動補償來扭曲的先前的經重構幀、殘差、經重構的幀、運動估計(例如,光流、區塊運動向量或自適應卷積核)、其任何組合和/或其它輸出。來自第一時步(例如,時步t)的反饋資訊可以在稍後的時步處(例如,在時步t+1)從解碼器提供給編碼器和/或解碼器。反饋可以用於表示在解碼階段引入的誤差,其可以藉由編碼器用於補償這些誤差。從先前時步的解碼器提供給在下一時步的編碼器的資訊可以包括一個或多個經先前重構幀、一個或多個經先前重構運動估計、一個或多個經先前重構殘差、解碼器的一個或多個先前循環狀態(例如,來自解碼器的一個或多個循環層)、其任何組合和/或其它輸出。循環層的循環狀態在本文中也可以稱為隱藏狀態。
透過使用本文中所描述的一個或多個基於循環的神經網路系統和技術對視頻內容進行譯碼(例如,編碼/壓縮和解碼/解壓縮),本公開內容的各方面可以提供產生經壓縮的視頻內容的視頻編碼和解碼機制,所述經壓縮的視頻內容具有接近或超過傳統的先驗地定義的視頻壓縮演算法(例如,HEVC、VVC、MPEG-4等)的視頻位元率和/或品質。在一些情況下,使用本文中所描述的基於循環的神經網路系統和技術的視頻編碼和解碼機制可以透過重新訓練神經網路來適配各種用例。此外,本公開內容的各個方面可以提供視頻編碼器和解碼器的自主產生,而不需要利用位元流來發送大量語法。
圖4描繪包括被配置為執行視頻編碼和解碼的設備402的系統400。設備402耦接到相機407和儲存媒體414(例如,資料儲存設備)。在一些實現方式中,相機407被配置為向處理器404提供圖像資料408(例如,視頻資料流),以藉由第一神經網路系統410和/或第二神經網路系統411進行編碼。在一些實現方式中,設備402可以耦接到和/或可以包括多個相機(例如,雙相機系統、三個相機或其它數量的相機)。在一些情況下,設備402可以耦接到麥克風和/或其它輸入設備(例如,鍵盤、滑鼠、比如觸控螢幕和/或觸控板的觸控輸入設備、和/或其它輸入設備)。在一些示例中,相機407、儲存媒體414、麥克風和/或其它輸入設備可以是設備402的一部分。
設備402還經由傳輸媒體418(例如,一個或多個無線網路、一個或多個有線網路、或其組合)耦接到第二設備490。例如,傳輸媒體418可以包括藉由無線網路、有線網路、或者有線和無線網路的組合提供的通道。傳輸媒體418可以形成基於封包的網路(比如局域網路、廣域網路或比如網際網路之類的全球網路)的一部分。傳輸媒體418可以包括路由器、交換機、基地台或可以用於促進從來源設備到接收設備的通信的任何其它設備。無線網路可以包括任何無線介面或無線介面的組合,以及可以包括任何合適的無線網路(例如,網際網路或其它廣域網、基於封包的網路、WiFiTM 、射頻(RF)、UWB、WiFi直連、蜂窩、長期演進(LTE)、WiMaxTM 等)。有線網路可以包括任何有線介面(例如,光纖、乙太網、電力線乙太網、基於同軸電纜的乙太網、數位信號線(DSL)等)。有線和/或無線網路可以使用各種設備(比如基地台、路由器、存取點、橋接器、閘道器、交換機等)來實現。經編碼的視頻位元流資料可以根據通信標準(比如無線通信協定之類的)進行調變,並且被發送給接收設備。
設備402包括耦接到記憶體406、第一介面(“I/F 1”)412和第二介面(“I/F 2”)416的一個或多個處理器(本文稱為“處理器”)404。處理器404被配置為從相機407、從記憶體406和/或從儲存媒體414接收圖像資料408。處理器404經由第一介面412(例如,經由記憶體匯流排)耦接到儲存媒體414,並且經由第二介面416(例如,網路介面設備、無線收發機和天線、一個或多個其它網路介面設備、或其組合)耦接到傳輸媒體418。
處理器404包括:包括編碼器部分462和解碼器部分466的第一神經網路系統410;以及包括編碼器部分432和解碼器部分436的第二神經網路系統411。在一些實現方式中,神經網路系統410和/或神經網路系統411可以包括一個或多個自編碼器。編碼器部分462被配置為接收輸入資料470並且處理輸入資料470,以至少部分地基於輸入資料470來產生輸出資料474。類似地,編碼器部分432被配置為接收輸入資料440並且處理輸入資料440,以至少部分地基於輸入資料440來產生輸出資料444。在一些情況下,神經網路系統411的編碼器部分432被配置為基於輸入資料440並且還基於第一狀態資料450來產生輸出資料444,如下文進一步描述的。在一些情況下,編碼器部分432被配置為基於輸入資料440和第一狀態資料450,並且還基於藉由神經網路系統410的解碼器部分466在先前時步t-1產生的表達476(例如,當在先前時步t-1處理輸入資料470時),來在當前時步t產生輸出資料444,如下文進一步描述的。在一些情況下,編碼器部分432被配置為基於輸入資料440和第一狀態資料450,並且還基於藉由神經網路系統411的解碼器部分436在先前時步t-1產生的表達446(例如,當在先前時步t-1處理輸入資料440時),來在當前時步t產生輸出資料444,如下文進一步描述的。
在一些實現方式中,神經網路系統410的編碼器部分462被配置為對輸入資料470執行有損壓縮以產生輸出資料474,使得輸出資料474具有與輸入資料470相比要少的位元。可以對編碼器部分462進行訓練以對輸入資料470(例如,視頻幀)進行壓縮,而不使用基於任何先前表達(例如,一個或多個經先前重構幀)的運動補償。例如,編碼器部分462可以僅使用來自視頻幀的視頻資料來壓縮該視頻幀,而不使用經先前重構幀的任何資料。藉由編碼器部分462處理的視頻幀在本文中可以稱為經幀內預測的幀(I幀)。在一些示例中,可以使用傳統視頻譯碼技術(例如,根據HEVC、VVC、MPEG-4或其它視頻譯碼標準)來產生I幀。在這樣的示例中,處理器404可以包括被配置為執行基於區塊的幀內預測(比如上文關於HEVC標準所述的幀內預測)的視頻譯碼設備(例如,編碼設備),或者與所述視頻譯碼設備耦接。在這樣的示例中,處理器404可以不包括神經網路系統410。
在一些實現方式中,神經網路系統411的編碼器部分432被配置為對輸入資料440執行有損壓縮以產生輸出資料444,從而導致輸出資料444具有與輸入資料440相比要少的位元。可以對編碼器部分432進行訓練以使用基於先前表達(例如,一個或多個經先前重構幀)的運動補償來壓縮輸入資料440(例如,視頻幀)。例如,編碼器部分432可以使用來自視頻幀的視頻資料並且使用經先前重構幀的資料來壓縮該視頻幀。藉由編碼器部分462處理的視頻幀在本文中可以稱為經幀內預測的幀(P幀)。運動補償可以用於透過描述來自經先前重構幀的像素如何移動到在當前幀中的新位置上以及殘差資訊來判定當前幀的資料。下文參照圖6描述運動補償技術的示例。
在一種特定實現方式中,神經網路系統410的編碼器部分462包括神經網路463和量化器464。神經網路463可以包括產生中間資料472的一個或多個卷積神經網路(CNN)、一個或多個全連接神經網路、一個或多個閘控循環單元(GRU)、其任何組合、和/或其它類型的神經網路架構。中間資料472被輸入到量化器464。神經網路系統411的編碼器部分432包括神經網路433和量化器434。神經網路433包括產生中間資料442的一個或多個CNN、一個或多個全連接神經網路、一個或多個GRU、其任何組合、和/或其它類型的神經網路架構,所述中間資料442隨後被輸入到量化器434。可以被包括在編碼器部分462和編碼器部分432中的組件的示例是在圖5A-圖15中示出。
量化器464被配置為對中間資料472執行量化以及在一些情況下執行熵譯碼,以產生輸出資料474。輸出資料474可以包括經量化的(並且在一些情況下,經熵譯碼的)資料。類似地,量化器434被配置為對中間資料442執行量化以及在一些情況下執行熵譯碼,以產生輸出資料444。輸出資料444包括經量化的(並且在一些情況下,經熵譯碼的)資料。藉由量化器464和量化器434執行的量化操作可以是相同的操作,其可以導致根據中間資料472以及根據中間資料442產生經量化碼(或表示藉由神經網路系統410和/或神經網路系統411產生的經量化碼的資料)。量化碼(或表示經量化碼的資料)也可以稱為潛碼(latent code)或潛資料(latent)。應用於潛資料的熵模型在本文中可以稱為“先驗(prior)”。在一些示例中,量化和熵譯碼操作可以是使用當根據現有的視頻譯碼標準來對視頻資料進行編碼和/或解碼時執行的現有的量化和熵譯碼操作來執行的。在一些示例中,可以藉由神經網路系統410和/或神經網路系統411來完成。例如,神經網路系統410和/或神經網路系統411可以使用監督式訓練來進行訓練,其中在訓練期間,殘差資料被用作輸入,並且經量化碼和熵碼被用作已知輸出(標籤)。
神經網路系統410的解碼器部分466被配置為(例如,直接從量化器464和/或從儲存媒體414)接收輸出資料474,並且處理輸出資料474,以至少部分地基於輸出資料474來產生輸入資料470的表達476。類似地,神經網路系統411的解碼器部分436被配置為(例如,直接從量化器434和/或從儲存媒體414)接收輸出資料444,並且處理輸出資料444,以至少部分地基於輸出資料444來產生輸入資料440的表達446。在一些情況下,解碼器部分436被配置為基於輸出資料444和第二狀態資料452來產生表達446,如下文進一步描述的。在一些情況下,解碼器部分436被配置為基於輸出資料444和第二狀態資料452,並且還基於藉由神經網路系統410的解碼器部分466在先前時步t-1產生的表達476(例如,當在先前時步t-1對處理輸入資料470時),來在當前時步t產生表達446,如下文進一步描述的。在一些情況下,解碼器部分436被配置為基於輸出資料444和第二狀態資料452,並且還基於藉由解碼器部分436在先前時步t-1產生的表達446(例如,當在先前時步t-1處理輸入資料440時),來在當前時步t產生表達446,如下文進一步描述的。
在一種特定實現方式中,神經網路系統410的解碼器部分466包括神經網路468,所述神經網路468可以包括一個或多個CNN、一個或多個全連接神經網路、一個或多個GRU、其任何組合、和/或其它類型的神經網路架構。神經網路系統411的解碼器部分436包括神經網路438,所述神經網路438可以包括一個或多個CNN、一個或多個全連接神經網路、一個或多個GRU、一個或多個長短期記憶(LSTM)網路、一個或多個ConvRNN、一個或多個ConvGRU、一個或多個ConvLSTM、其任何組合、和/或其它類型的神經網路架構。可以被包括在解碼器部分436中的組件的示例是在圖5A-圖15中示出的。
解碼器部分436的神經網路438具有循環組件,所述循環組件可以包括一個或多個RNN、GRU、LSTM、卷積RNN、卷積GRU、卷積LSTM、其任何組合、和/或具有一個或多個循環層的其它神經網路架構。循環組件(例如,一個或多個循環層)可以提供第一狀態資料450和第二狀態資料452。第一狀態資料450和第二狀態資料452與神經網路438的狀態相對應,該狀態係來自用於輸入資料440的一個集合的表達446的產生。第一狀態資料450和第二狀態資料452(例如,與時步t相關聯的,例如在對當前視頻幀的處理期間)被分別作為輸入提供給編碼器部分432和解碼器部分436,以用於輸入資料440的下一順序的集合(例如,在下一時步t+1,比如在對在當前視頻幀之後處理的下一視頻幀的處理期間)。在一個說明性示例中,在狀態資料450、452中表示的解碼器部分436的狀態包括神經網路438內的節點的一個或多個值。結果,神經網路系統411充當基於循環的神經網路系統,所述神經網路系統可以透過訓練集(例如,輸入圖像和輸出圖像的訓練集)來進行訓練以減少(例如,最小化)在輸入資料440與輸入資料440的表達446之間的差異。在一些實現方式中,第一狀態資料450與第二狀態資料452匹配(例如,第一狀態資料450與第二狀態資料452相同)。在其它實現方式中,第一狀態資料450可以不同於第二狀態資料452。
如在圖4中所示出的,反饋資訊是從神經網路系統411的解碼器部分436向神經網路系統411的編碼器部分432提供的。反饋可以用於表示在解碼階段中引入的誤差,其可以藉由編碼器部分432用來補償這些誤差。可以在下一時步t從解碼器部分436提供到編碼器的來自先前時步t-1的資訊可以包括一個或多個經先前重構幀(表示為
Figure 02_image001
)、經先前重構運動估計、經先前重構殘差、和/或來自解碼器部分436的神經網路438的先前循環狀態。例如,對於可能顯示出時間相關性的一序列視頻幀,當處理視頻的下一幀時,解碼器部分436的與視頻的一幀相關聯的先前循環狀態可以作為輸入提供給編碼器部分432和解碼器部分436兩者。使用這樣的循環狀態以及其它反饋資訊可以提高壓縮比(例如,在輸入資料440中的位元數量與在輸出資料444中的位元數量相比),並且因此提高譯碼效率(透過使編碼器部分432能夠考慮由解碼器部分436所遇到的誤差)。作為說明性示例,狀態資料450、452可以充當使編碼器部分432和解碼器部分436能夠產生用於幀序列的下一幀的預測的輸入,並且編碼器部分432可以將殘差(例如,在下一幀與對下一幀的預測之間的差)編碼為以減少的位元率的輸出資料444(例如,與在不考慮解碼器部分436的歷史的情況下對輸出資料444進行編碼相比)。結果,經編碼的資料可以使用減少的儲存空間量來儲存、使用減少的網路頻寬量或以較高的傳輸速率來發送,或其任何組合。
處理器404被配置為向傳輸媒體418或儲存媒體414中的至少一者發送輸出資料444。例如,輸出資料444可以儲存在儲存媒體414,以藉由解碼器部分436稍後檢索和解壓縮以產生輸入資料440的表達446作為經重構的資料,比如以用於回放已被編碼/壓縮以產生輸出資料444的視頻資料。在一些實現方式中,輸出資料444可以在與解碼器部分436匹配的另一解碼器設備(例如,在設備402中或在另一設備中)處進行解碼,以產生輸入資料440的表達446作為經重構的資料。作為另一示例,第二設備490可以包括與解碼器部分436匹配(或基本上匹配)的解碼器,並且輸出資料444可以經由傳輸媒體418來發送,以在第二設備490處產生輸入資料440的表達446作為經重構的資料。
系統400的組件可以包括電子電路或其它電子硬體,和/或可以使用電子電路或其它電子硬體來實現,所述電子電路或其它電子硬體可以包括一個或多個可編程電子電路(例如,微處理器、圖形處理單元(GPU)、數位信號處理器(DSP)、中央處理單元(CPU)、和/或其它適當的電子電路),和/或可以包括計算機軟體、韌體或其任何組合,和/或可以使用計算機軟體、韌體或其任何組合來實現,以執行本文中所描述的各種操作。
雖然系統400被示為包括某些組件,但是本領域普通技術人員將明白的是,系統400可以包括與在圖4中所示出的組件相比更多或更少的組件。例如,在一些情況下,系統400還可以包括輸入設備和輸出設備(未示出),或者可以是包括輸入設備和輸出設備的計算設備的一部分。在一些實現方式中,系統400還可以包括以下各項或者可以是包括以下各項的計算設備的一部分:一個或多個記憶體設備(例如,一個或多個隨機存取記憶體(RAM)組件、唯讀記憶體(ROM)組件、快取記憶體組件、緩衝器組件、資料庫組件、和/或其它記憶體設備)、與一個或多個記憶體設備相通信和/或電連接到記憶體設備的一個或多個處理設備(例如,一個或多個CPU、GPU和/或其它處理設備)、用於執行無線通信的一個或多個無線介面(例如,包括用於每個無線介面的一個或多個收發機和基帶處理器)、用於透過一個或多個硬接線連接來執行通信的一個或多個有線介面(例如,比如通用串列匯流排(USB)輸入的串列介面、照明連接器、和/或其它有線介面)、和/或在圖4中未示出的其它組件。
在一些實現方式中,系統300可以藉由計算設備本地實現和/或被包括在計算設備中。例如,計算設備可以包括行動裝置、個人計算機、平板計算機、虛擬實境(VR)設備(例如,頭戴式顯示器(HMD)或其它VR設備)、擴增實境(AR)設備(例如,HMD、AR眼鏡或其它AR設備)、可穿戴設備、伺服器(例如,在軟體即服務(SaaS)系統或其它基於伺服器的系統中)、電視機、和/或具有執行本文中所描述的技術的資源能力的任何其它計算設備。
在一個示例中,神經網路系統411(在一些情況下,以及神經網路系統410)可以整合到可攜式電子設備中,所述可攜式電子設備包括:記憶體406,其耦接到處理器404並且被配置為儲存可藉由處理器404執行的指令;以及無線收發機,其耦接到天線並且耦接到處理器404並且可操作以將輸出資料444發送給遠程設備。
圖5A是示出包括神經網路系統510(作為在圖4中的神經網路系統410的示例)和神經網路系統511(作為神經網路系統411的示例)的系統的示意圖。神經網路系統510的I幀編碼器563可以包括被訓練為僅使用來自視頻幀的視頻資料來編碼或壓縮該視頻幀而不基於經先前重構幀的資料執行運動補償的神經網路(例如,包括一個或多個CNN)。例如,如在圖5A中所示出的,I幀編碼器563接收視頻幀
Figure 02_image003
作為輸入,並且僅使用被包括在視頻幀
Figure 02_image003
中的資料來編碼或壓縮視頻幀
Figure 02_image003
。I幀編碼器563可以編碼或壓縮視頻幀
Figure 02_image003
以產生中間資料(例如,中間資料472)。在一些情況下,中間資料可以包括表示殘差的資料,所述殘差表示在對視頻幀
Figure 02_image003
的預測與實際輸入視頻幀
Figure 02_image003
之間的差。
神經網路系統510的量化器564是在圖4中所示出的量化器464的示例。量化器564根據從I幀編碼器563輸出的中間資料來產生潛資料。在一些情況下,潛資料包括表示經壓縮的視頻幀
Figure 02_image003
的量化版本(例如,殘差的量化版本)的經量化碼。在一些情況下,潛資料可以包括表示經量化碼的神經網路資料(例如,節點的激活圖或特徵圖)。量化器564還包括I幀先驗。I幀先驗可以包括或表示熵模型,所述熵模型被應用於潛資料以產生熵碼或表示熵碼的神經網路資料(例如,節點的激活圖或特徵圖)。量化器564產生輸出資料(例如,輸出資料474),所述輸出資料被輸出到I幀解碼器568和/或儲存裝置(例如,儲存媒體414)以供稍後檢索。例如,來自量化器564的輸出資料可以透過傳輸媒體418發送給設備490。
神經網路系統510的I幀解碼器568處理來自量化器564的輸出資料,以產生經重構的幀
Figure 02_image005
。在一些實現方式中,I幀編碼器563、量化器564和I幀解碼器568可以使用端到端一起訓練的單個神經網路或多個神經網路來實現。在圖5A中所示出的損失函數
Figure 02_image007
可以用於利用包括輸入圖像和經重構的輸出圖像的訓練集,使用監督式學習技術來訓練單個神經網路。下文參照神經網路系統511描述關於神經網路訓練的進一步細節。在一些實現方式中,I幀編碼器563、I幀解碼器568和量化器564的神經網路可以分別進行訓練。
如上文所指出的,在一些實現方式中,I幀編碼器563、I幀解碼器568和量化器564可以執行傳統視頻譯碼技術(例如,根據HEVC、VVC、MPEG-4或其它視頻譯碼標準)來產生I幀。例如,視頻譯碼設備(其可以執行視頻編碼和解碼)可以被配置為根據HEVC標準或其它視頻譯碼標準來執行基於區塊的幀內預測以產生I幀。
由於神經網路系統511使用運動補償技術來執行視頻譯碼(例如,編碼和/或解碼),因此神經網路系統511在一些情況下可以稱為P幀自編碼器。神經網路系統511的編碼器533可以包括被訓練為使用基於一個或多個經先前重構幀的資料的運動補償來編碼或壓縮視頻幀的神經網路(例如,包括一個或多個CNN)。在圖5A中以兩個時步t和t+1示出神經網路系統511。在圖5A中所示出的時步t示出在產生I幀(例如,
Figure 02_image005
)之後神經網路系統511的操作的第一時步。在時步t,編碼器533接收視頻幀
Figure 02_image009
和經先前重構幀
Figure 02_image003
作為輸入,並且透過執行運動補償以判定在視頻幀
Figure 02_image009
與視頻幀
Figure 02_image003
之間的運動量,來對視頻幀
Figure 02_image009
進行編碼。
各種類型的運動補償可以藉由編碼器533來執行。例如,編碼器533可以執行基於區塊的運動補償(類似於透過比如HEVC、VVC、MPEG-4等的視頻譯碼標準所進行的運動補償)、基於光流的運動補償、基於動態(或自適應)卷積的運動補償、其任何組合和/或其它類型的運動補償。下面參照圖6描述各種運動補償選項。
作為對視頻幀
Figure 02_image009
進行編碼的結果,編碼器533可以產生中間資料(例如,中間資料442)。在一些情況下,中間資料可以包括表示殘差的資料以及表示在視頻幀
Figure 02_image009
與視頻幀
Figure 02_image003
之間的運動量的運動資料。殘差可以表示在對視頻幀
Figure 02_image009
的預測與實際輸入視頻幀
Figure 02_image009
之間的差。表示在視頻幀
Figure 02_image009
與視頻幀
Figure 02_image003
之間的運動量的運動資料可以被概念化為類似於在傳統視頻譯碼技術(例如,HEVC、VVC等)中的運動向量。
神經網路系統511的量化器534是在圖4中所示出的量化器434的示例。量化器534根據從編碼器533輸出的中間資料來產生潛資料。在一些情況下,潛資料包括表示經編碼的視頻幀
Figure 02_image009
的量化版本(例如,殘差的量化版本和運動資料的量化版本)的經量化碼。在一些情況下,潛資料可以包括表示經量化碼的神經網路資料(例如,節點的激活圖或特徵圖)。量化器534還包括可以包括或表示熵模型的先驗,所述熵模型被應用於潛資料以產生熵碼或表示熵碼的神經網路資料(例如,節點的激活圖或特徵圖)。量化器534產生輸出資料(例如,輸出資料444),所述輸出資料被輸出到解碼器538和/或儲存裝置(例如,儲存媒體414)以供稍後檢索。例如,來自量化器534的輸出資料可以透過傳輸媒體418發送給設備490。
神經網路系統511的解碼器538處理輸出資料以產生經重構的幀
Figure 02_image001
。解碼器538可以從量化器534、從儲存裝置(例如,儲存媒體414)或透過傳輸媒體(例如,傳輸媒體418)從另一設備接收輸出資料。如在圖5A中所示出的,解碼器538包括循環層或組件,其包括一個或多個預循環解碼器層570、一個或多個循環層571和一個或多個後循環層572。一個或多個循環層571可以儲存狀態資訊,並且可以在後續時步(例如,在時步t+1,如在圖5A中所示出的)將狀態資訊反饋給解碼器538和/或編碼器533的某些層。在稍後的時步處被提供給在神經網路系統511中的較早層的反饋,向神經網路系統511提供一類型的記憶體。一個或多個預循環解碼器層570和一個或多個後循環層572可以包括在一個方向上將資訊前向傳遞透過網路的其它層的前向層,而一個或多個循環層可以在前向方向上和/或透過反饋在反向方向上傳遞資訊,如上文所指出的。
解碼器538的循環狀態在圖5A中表示為
Figure 02_image011
。在圖5A中所示出的循環狀態
Figure 02_image013
(其與神經網路系統510產生I幀的時步t-1相對應)可以以一個或多個0值開始(例如,由於神經網路系統510不包括任何循環層)。在圖5A中的循環狀態
Figure 02_image015
表示解碼器538在時間戳t的循環狀態。循環狀態
Figure 02_image015
可以包括來自一個或多個循環層571的神經網路資訊。例如,神經網路資訊可以包括(例如,基於一個或多個循環層571的權重乘以正在透過解碼器538來傳遞的資料的乘積來產生的)激活圖或特徵圖。如在圖5A中所示出的,循環狀態
Figure 02_image015
作為反饋被傳遞給在下一時步t+1的一個或多個循環層571和編碼器533。
基於對輸出資料的處理,解碼器538的一個或多個後循環層572輸出經重構運動估計資料
Figure 02_image017
和經重構殘差資料
Figure 02_image019
。在一些情況下,經重構運動估計資料
Figure 02_image017
可以包括光流資料(例如,位移向量)、動態卷積資料(例如,用於資料卷積的矩陣或核心)或基於區塊的運動資料(例如,運動向量),如下文關於圖6所描述的。經重構運動估計資料
Figure 02_image017
藉由解碼器538的扭曲引擎567用於對經先前重構幀
Figure 02_image005
進行扭曲(例如,透過執行運動補償),導致產生經扭曲的幀。例如,經先前重構幀
Figure 02_image005
的像素可以根據經重構運動估計資料
Figure 02_image017
來移動到新位置或以其它方式修改。藉由扭曲引擎567輸出的經扭曲的幀被輸出到加法器引擎569。加法器引擎569將經扭曲的幀與經重構殘差資料
Figure 02_image019
相加(或組合),以產生用於當前時步t的經重構的幀
Figure 02_image001
除了循環狀態資訊(例如,循環狀態
Figure 02_image015
)之外,經重構的幀
Figure 02_image001
也可以被反饋給神經網路系統511,以用於操作的下一時步t+1。例如,如在圖5A中所示出的,經重構的幀
Figure 02_image001
和循環狀態
Figure 02_image015
是作為輸入提供給編碼器533的。在一些情況下,如在圖5A中所示出的,經先前重構運動估計資料
Figure 02_image017
和經先前重構殘差資料
Figure 02_image019
也可以作為輸入被反饋給在操作的下一時步t+1的編碼器533。在時步t+1,編碼器533可以處理當前輸入視頻幀
Figure 02_image021
、經先前重構幀
Figure 02_image001
、循環狀態
Figure 02_image015
、經先前重構運動估計資料
Figure 02_image017
和經先前重構殘差資料
Figure 02_image019
,以產生當前輸入視頻幀
Figure 02_image021
的經譯碼版本。量化器534可以對經譯碼的視頻資料進行量化以產生潛資料,並且可以對潛資料執行熵譯碼(使用先驗)以使用先驗來產生輸出資料。
解碼器538的一個或多個預循環解碼器層570、一個或多個循環層571和一個或多個後循環層572可以處理用於當前時步t+1的輸出資料,並且可以輸出經重構運動估計資料
Figure 02_image023
和經重構殘差資料
Figure 02_image025
。解碼器538的扭曲引擎567可以(例如,透過執行運動補償)對經先前重構幀
Figure 02_image001
進行扭曲,以產生用於當前時步t+1的經扭曲的幀。加法器引擎569可以將經扭曲的幀加到經重構殘差資料
Figure 02_image025
,以產生用於當前時步t+1的經重構的幀
Figure 02_image021
經重構的幀
Figure 02_image021
、循環狀態
Figure 02_image027
、經重構運動估計資料
Figure 02_image023
和經重構殘差資料
Figure 02_image025
可以作為輸入反饋給在下一操作時步t+2的編碼器533。神經網路系統511可以逐幀地針對幀的視頻序列繼續基於運動估計的譯碼處理,直到需要下一I幀為止(例如,用於對在視頻中的某個時間點的隨機存取,以重置可能累積的任何運動誤差等)。當需要I幀時,在視頻序列中的下一視頻幀可以藉由神經網路系統510進行編碼。
在一些實現方式中,編碼器533、量化器534和解碼器538可以使用端到端一起訓練的單個神經網路或多個神經網路來實現。圖5B是示出可以用於神經網路系統511的神經網路架構的示例的示意圖。在一些實現方式中,與在圖5B中所示出的神經網路架構類似的神經網路架構可以用於神經網路系統510,但不具有循環層(例如,ConvGRU層)。
如在圖5B中所示出的,對編碼器533的輸入包括要藉由編碼器533編碼的當前幀
Figure 02_image001
、經先前重構幀
Figure 02_image029
(例如,來自神經網路系統510或來自神經網路系統511)和先前的循環狀態
Figure 02_image027
。可以提供到編碼器的其它輸入包括經先前重構運動估計資料
Figure 02_image031
和經先前重構殘差資料
Figure 02_image033
輸入被提供到第一卷積層(被表示為Conv c:64 k:5 s:2,其中c是通道(例如,核心或濾波器)數量,k是核心大小,並且s是與給定卷積層相關聯的步幅)。卷積層以卷積方式處理輸入資料,比如透過處理稱為接受域的節點區域(例如,當前幀
Figure 02_image001
的像素)。卷積層可以藉由一個或多個核心(也稱為濾波器)組成,其中,每個核心可以對應於不同的激活或特徵圖,並且核心的每次卷積迭代是卷積層的節點或神經元。例如,當前幀
Figure 02_image001
的核心在每次卷積迭代所覆蓋的區域將是針對該核心的接受域。在一個說明性示例中,如果幀
Figure 02_image001
包括28×28陣列,並且每個核心(和各自的接受域)是5×5陣列(其中k=5),則在卷積層中將存在24×24個節點。注意的是,視頻幀通常具有比28x28大的解析度,例如,用於1080p視頻的1920x1080。每個在節點與針對該節點的接受域之間的連接會學習權重,並且在一些情況下學習總偏差,使得每個節點學習去分析其在輸入中的特定局域接受域。卷積層的每個節點可以具有相同的權重,並且在一些情況下具有偏差(稱為共享權重和共享偏差)。例如,核心有權重(數字)陣列和與輸入相同的深度。在一個示例中,針對當前幀
Figure 02_image001
,根據該幀
Figure 02_image001
的三個色彩分量(例如,紅色(R)、綠色(G)和藍色(B)色彩分量),核心可以具有之深度為3。
卷積層的卷積性質是由於卷積層的每個節點被應用於其各自的接受域。例如,卷積層的核心可以開始於當前幀
Figure 02_image001
的陣列的左上角,並且可以圍繞幀
Figure 02_image001
進行卷積。如上文所指出的,核心的每次卷積迭代可以被認為是卷積層的節點或神經元。在每次卷積迭代時,將核心的值與圖像的相應數量的原始像素值相乘(例如,將5x5核心陣列與在幀
Figure 02_image001
陣列的左上角的輸入像素值的5x5陣列相乘)。來自每次卷積迭代的乘法可以一起求和,以獲得用於該迭代或節點的總和。在幀
Figure 02_image001
中的下一位置處,根據在卷積層中的下一節點的接受域,接著繼續該程序。例如,核心可以透過步幅量(在圖5B中由s表示)被移動到下一接受域。步幅量可以被設定為1、2或其它適當的量。例如,如果步幅量被設定為1,則核心將在每次卷積迭代時向右移動1個像素。在輸入量的每個唯一位置處對核心進行處理,產生表示用於該位置的核心結果的數字,從而導致用於卷積層的每個節點的總和值被判定。
從輸入層到卷積隱藏層622a的映射稱為激活圖(或特徵圖)。激活圖包括針對每個節點的值,所述值表示在輸入量的每個位置處的核心結果。激活圖可以包括陣列,所述陣列包括從核心對輸入量(例如,當前幀
Figure 02_image001
)的每次迭代產生的各個總和值。例如,如果將5×5核心應用於28×28輸入幀的每個像素(步幅量為1),則激活圖將包括24×24陣列。卷積層可以包括若干激活圖,以便識別輸入的多個特徵。例如,使用三個激活圖,卷積層可以檢測三種不同種類的特徵,其中橫跨整個輸入的每個特徵都是可檢測的。
在第一卷積層之後可以應用標準化層和非線性層。標準化層可以用於(例如,在訓練期間)將在隱藏層(例如,卷積層)中的輸入標準化為非線性。標準化層的一個說明性示例包括BatchNorm,如在圖5B的架構中使用的。在一個說明性示例中,BatchNorm可以依如下所列對隱藏層
Figure 02_image035
進行標準化:
Figure 02_image037
等式(1)
其中,E[x]是x的一矩值(例如,均值或期望值),並且V[x]是x的二矩值(例如,變異數)。
非線性層可以用於將非線性度引入已經計算線性運算的系統。非線性層的一個說明性示例是整流線性單元(ReLU),如在圖5B的架構中使用的。ReLU層可以將函數f(x) = max(0, x)應用於輸入量中的所有值,這將所有負激活改變為0。因此,ReLU可以在不影響卷積層的接受域的情況下增加神經網路的非線性屬性。
第一ReLU的輸出被提供給卷積層、BatchNorm層和ReLU層的第二集合。第二ReLU的輸出被提供給第一殘差層(ResBlock B),所述第一殘差層將其輸出提供給第二殘差層(ResBlock A)。在圖5B中還示出ResBlock A和ResBlock B的細節。ResBlock A的輸出與第二ReLU的輸出被組合(或相加),並且經組合的輸出被提供給第三卷積層。第三卷積層的輸出被提供給第三BatchNorm層,第三BatchNorm層將資料輸出到量化層(被表示為柔/硬量化)。柔/硬量化層輸出一個或多個經量化(以及在一些情況下,經熵譯碼的)係數
Figure 02_image039
。一個或多個係數
Figure 02_image039
在一些情况下可以被儲存,並且在一些情況下可以被提供給解碼器538。
到解碼器538的輸入是一個或多個係數
Figure 02_image039
。一個或多個係數
Figure 02_image039
藉由第一卷積層(被表示為Tconv c:128 k:3 s:2)進行處理,之後藉由第一BatchNorm層和第一ReLu層進行處理。第一ReLU的輸出被提供給第一殘差層(ResBlock B),第一殘差層將其輸出提供給第二殘差層(ResBlock A)。ResBlock A的輸出與第一ReLU層的輸出被組合(或相加),並且經組合的輸出被提供給第二卷積層(被表示為Tconv c:64 k:5 s:2)。第二卷積層之後跟隨著第二BatchNorm層和第二ReLu層,第二ReLu層將資料輸出到第三卷積層(被表示為Tconv c:C2 k:5 s:2),第三卷積層之後跟隨著第三BatchNorm層。第三BatchNorm層的輸出被提供給循環層(被表示為ConvGRU c:C3 k:3 s:1)。如所示出的,到循環層的另一輸入是用於先前時步t-1的先前循環狀態ht-1 ,並且循環層的輸出包括用於當前時步t的循環狀態。循環層的輸出被提供給最後的卷積層(被表示為Conv c:5 k:5 s:1),最後的卷積層輸出經重構運動估計資料
Figure 02_image017
和經重構殘差資料
Figure 02_image019
如上文所指出的,解碼器538的扭曲引擎567可以(例如,透過執行運動補償)對經先前重構幀
Figure 02_image029
進行扭曲,以產生用於當前時步t的經扭曲的幀,並且加法器引擎569可以將經扭曲的幀加到經重構殘差資料
Figure 02_image019
,以產生用於當前時步t的經重構的幀
Figure 02_image001
。在一些實現方式中,扭曲引擎567和/或加法器引擎569可以是神經網路系統511的一部分(例如,使用一個或多個卷積層、一個或多個標準化層、一個或多個非線性層、一個或多個殘差區塊或其它神經網路層來實現的),比如在圖7中所示出的編碼器的配置中。在一些實現方式中,扭曲引擎567和/或加法器引擎569可以是在神經網路系統511之外的組件。例如,在這樣的實現方式中,扭曲和加法是非學習的運算符,在這種情況下,這些運算不是使用神經網路或其它機器學習系統來完成的。
神經網路系統511可以使用任何適當的機器學習訓練技術來進行訓練。在一個說明性示例中,監督式學習技術可以用於訓練神經網路系統511。例如,反向傳播訓練程序可以用於調整神經網路的節點的權重(在一些情況下,以及其它參數(比如偏差))。反向傳播可以包括前向傳遞、損失函數、後向傳遞和權重更新。前向傳遞、損失函數、後向傳遞和參數更新是針對一次訓練迭代來執行的。對於每個訓練資料集,該程序可以重複某個數量的迭代,直到神經網路系統511的參數的權重被準確地調諧為止。
在一個說明性示例中,用於訓練神經網路系統511的訓練資料可以包括作為輸入的視頻幀
Figure 02_image009
(其是未經編碼/未經壓縮的)和作為已知輸出的經重構視頻幀
Figure 02_image001
(輸入視頻幀
Figure 02_image009
的重構版本)。前向傳遞可以包括將輸入視頻幀傳遞透過神經網路。權重在訓練神經網路之前可以首先被隨機化。對於用於神經網路系統的第一次訓練迭代,輸出可能包括不優先考慮任何特定輸出的值,因為權重尚未被校準。例如,輸出可以包括具有表示經重構視頻幀
Figure 02_image001
的值的資料表達(例如,向量、張量等)。在使用初始權重的第一次訓練迭代之後,經重構視頻幀
Figure 02_image001
很可能與對應的輸入幀
Figure 02_image009
不相似。
損失函數可以用於分析在輸出中的誤差。在使用未經壓縮的視頻幀作為輸入並且經重構視頻幀
Figure 02_image001
作為已知輸出的示例中,在圖5A中所示出的損失函數
Figure 02_image041
可以用於訓練神經網路系統511。當使用其它訓練資料時,可以使用其它損失函數。另一損失函數的一個示例包括均方誤差(MSE),被定義為
Figure 02_image043
。MSE計算由實際答案減去所預測(所輸出)的答案的平方的二分之一的總和。
由於實際輸出值(藉由網路輸出的經重構的幀)可能與所預測的輸出(輸入幀的已知經重構版本)有很大相同,因此針對第一訓練視頻幀的損失(或誤差)可能是高的。訓練的目標是使針對所預測的輸出的損失量最小化。神經網路可以透過判定哪些輸入(權重)對神經網路的損失貢獻最大來執行後向傳遞,並且可以調整權重以使損失減少並且最終被最小化。可以計算損失相對於權重的導數(被表示為dL /dW ,其中W是在特定層處的權重),以判定對神經網路的損失貢獻最大的權重。例如,可以更新權重,使它們在梯度的相反方向上變化。權重更新可以被表示為
Figure 02_image045
,其中,w 表示權重,w i 表示初始權重,並且η表示學習率。學習率可以被設定為任何適當的值,其中,高學習率包括較大的權重更新,而較低的值指示較小的權重更新。神經網路系統511可以繼續以這種方式進行訓練,直到獲得期望的輸出為止。在一些情況下,神經網路系統510可以以類似的方式進行訓練。
圖6是示出可以藉由基於運動補償的神經網路系統(例如,神經網路系統411和/或神經網路系統511)執行的不同類型的運動估計的示意圖。在圖6中,項x 表示可以根據其來估計運動的幀(在當前幀正進行編碼時,對應於前一幀),項f表示運動估計,並且項y 表示可以依如下所列計算的經運動補償的幀:y = f(x)
可以執行的一種類型的運動估計是基於區塊的運動估計技術602。基於區塊的運動估計可以逐區塊地執行。例如,對於在(要進行運動補償)當前幀y 中的每個區塊,運動估計f 定義對應的區塊在先前幀x中的位置。在一個說明性示例中,運動估計f可以包括指示在當前幀y中的區塊相對於在先前幀x中的對應區塊的位移(例如,水平和垂直位移)的運動向量。可以透過判定在區塊之間的相似性(例如,在像素值上的相似性),來判定來自先前幀x的一個區塊與在當前幀y中的一個區塊相對應。
可以執行的另一種類型的運動估計是光流運動估計技術604。光流運動估計可以逐像素地執行。例如,對於在當前幀y 中的每個像素,運動估計f 定義對應像素在先前幀x 中的位置。用於每個像素的運動估計f 可以包括指示像素在幀之間的移動的向量。在一些情況下,可以基於對幀之間的光流向量的計算來產生光流圖(也稱為運動向量圖)。光流圖可以包括用於在幀中的每個像素的光流向量,其中,每個向量指示像素在幀之間的移動。在一個說明性示例中,用於像素的光流向量可以是表明像素從第一幀到第二幀的移動的位移向量(例如,指示水平和垂直位移,比如x-位移和y-位移)。基於運動補償的神經網路系統的編碼器(例如,編碼器533)可以對用於在當前幀y 中的每個像素的光流向量進行編碼或壓縮,或者可以在使用光流圖時對光流圖進行編碼或壓縮。藉由基於運動補償的神經網路系統的解碼器(例如,解碼器538)重構的運動估計資訊(
Figure 02_image047
)可以包括一組經重構的光流向量(例如,針對在幀中的每個像素有一個光流向量)或經重構的光流圖。
在一些情況下,光流圖可以包括用於在幀中的小於全部像素的向量。例如,可以計算在相鄰幀之間的密集光流以產生用於在幀中的每個像素的光流向量,所述光流向量可以被包括在密集光流圖中。在另一示例中,可以計算在相鄰幀之間的Lucas–Kanade光流,以產生在用於在幀中的一些或全部像素的光流向量,所述光流向量可以被包括在光流圖中。任何其它適當類型的光流技術或演算法可以用於來判定在幀之間的光流。每個光流圖可以包括2D向量場,其中,每個向量是表明點從第一幀移動到第二幀的位移向量。
如上文所指出的,可以計算幀序列的相鄰幀之間的(例如,在相鄰幀
Figure 02_image009
Figure 02_image049
的集合之間的)光流向量或光流圖。兩個相鄰幀可以包括在幀序列中作為連續擷取的幀的兩個直接相鄰的幀或者相隔一定距離的兩個幀(例如,彼此距離兩個幀、彼此距離三個幀或其它適當的距離)。從幀
Figure 02_image049
到幀
Figure 02_image009
的光流可以透過以下等式給出:O
Figure 02_image049
,
Figure 02_image051
= dof(
Figure 02_image049
,
Figure 02_image053
),其中,dof是密集光流。任何適當的光流程序都可以用於產生光流圖。在一個說明性示例中,在幀
Figure 02_image049
中的像素
Figure 02_image055
可以在下一幀
Figure 02_image009
中移動一距離(∆x,∆y)。假設在幀
Figure 02_image049
和下一幀
Figure 02_image009
之間像素是相同的並且強度不變,則可以假設以下等式:
Figure 02_image057
等式(2)
透過採用以上等式(2)右邊式子的泰勒級數近似,並且接著去除共同項並除以∆t,可以推導出光流等式:
Figure 02_image059
等式(3)
其中:
Figure 02_image061
Figure 02_image063
Figure 02_image065
Figure 02_image067
;以及
Figure 02_image069
使用光流等式(3),圖像梯度
Figure 02_image071
Figure 02_image073
可以與隨著時間的梯度(被表示為
Figure 02_image075
)一起得到。項u和v是
Figure 02_image055
的速度或光流的xy 分量,並且是未知的。當光流等式無法利用兩個未知變數來求解時,在一些情況下可能需要估計技術。任何適當的估計技術都可以用於估計光流。這樣的估計技術的示例包括差分方法(例如,Lucas-Kanade估計、Horn-Schunck估計、Buxton-Buxton估計或其它適當的微分方法)、相位相關性、基於區塊的方法或其它適當的估計技術。例如,Lucas-Kanade假設光流(圖像像素的位移)是小的並且在像素I的局部鄰域中近似固定,並且使用最小平方法來求解用於在該鄰域中的所有像素的基本光流等式。
可以執行的另一類型的運動估計是動態卷積(也稱為自適應卷積)運動估計技術606。動態卷積運動估計可以逐像素地執行。例如,對於在當前幀y中的每個像素,運動估計f定義在先前幀x中像素鄰域的線性組合。如在圖6中所示出的,對於在當前幀y中的一像素位置處的像素,圍繞在先前幀x中在相同像素位置處的像素周圍的像素鄰域來定義核心或矩陣。在圖6中的示例動態卷積運動估計是針對在當前幀y中的位置(2, 7)(對應於(行號,列號))處的像素執行的,其中,當前幀y中的左上像素位置在位置(0, 0)處。核心是圍繞在先前幀x中在位置(2, 7)處的像素來定義的。例如,如所示出的,將大小為5x5的核心應用於在先前幀x中在位置(2, 7)處的像素周圍的像素鄰域。
在核心或矩陣中的每個元素可以包括一數字(在圖6的示例中,為5x5數字的集合)。在核心中的數字集合可以描述如何組合來自像素鄰域的像素,所述像素鄰域圍繞在先前幀x中像素位置處的像素,該像素位置對應於在新重構的幀(當前幀y)中正被重構的像素的相同像素位置相。基於運動補償的神經網路系統的編碼器(例如,編碼器533)可以壓縮來自針對在當前幀y中的每個像素的核心的數字(例如,來自圖6的5x5核心的25個數字)的表示。藉由基於運動補償的神經網路系統的解碼器(例如,解碼器538)重構的運動估計資訊(
Figure 02_image047
)可以包括針對每個像素的經重構核心,所述經重構核心可以用於執行資料卷積以對經先前重構幀進行扭曲。
圖7是示出具有用於執行扭曲後增強的額外的扭曲後網路574的神經網路系統511的示例的示意圖。在一些情況下,在扭曲引擎567執行扭曲並且加法器引擎569加入殘差之後,可能仍然存在改善經重構的幀的空間。例如,在(藉由扭曲引擎567進行的)扭曲和(藉由加法器引擎569進行的)加入殘差之後的經重構的幀
Figure 02_image001
可能具有在原始幀
Figure 02_image077
中不存在的視覺偽影。扭曲後網路574可以包括用於進一步增強或細緻化經重構的幀(例如,透過去除偽影)的神經網路組件(例如,一個或多個卷積層)。
在扭曲引擎567對經先前重構幀進行扭曲之後,可以應用扭曲後網路574。例如,如在圖7中所示出的,在時步t,經扭曲的幀(在應用扭曲之後)和經重構的殘差
Figure 02_image019
被輸入到扭曲後網路574。扭曲後網路可以產生經重構的幀
Figure 02_image001
,其去除任何視覺雜質(例如,視覺偽影)。在一些示例中,扭曲後網路574是獨立於神經網路系統511的其餘部分的神經網路來訓練的。在一些示例中,扭曲後網路574不是獨立於神經網路系統511的其餘部分來訓練的,在這種情況下,整個神經網路系統511是端到端訓練的。例如,乾淨的或未經壓縮的幀可以輸入到神經網路系統511的神經網路,並且該網路輸出經重構的幀。反向傳播可以用於評估與經重構的幀相關聯的誤差或損失(與輸入幀相比),並且神經網路系統511的參數可以進行調諧,如上文所指出的。
圖8和圖9是示出具有額外運動估計網路575的神經網路系統511的示例的示意圖。運動估計網路575可以提供對運動估計的增強學習。如在圖8和圖9中所示出的,在時步t+1,在神經網路系統511的編碼器側提供額外輸入變數,包括先前輸入幀
Figure 02_image009
(被輸入到運動估計網路575)、在編碼器側藉由運動估計網路575判定的運動估計
Figure 02_image079
,以及透過運動估計
Figure 02_image079
來扭曲的經先前重構幀(被表示為經扭曲經重構幀
Figure 02_image081
)。
如上文所指出的,在一些實現方式中,神經網路系統511是以端到端的方式來訓練的。在一些情況下,在訓練期間當嘗試計算某些參數時,神經網路系統511可能具有問題。例如,當神經網路嘗試判定運動估計參數(例如,光流)並且使用這些運動估計參數來對經先前重構幀進行扭曲時,可能出現問題。在另一示例中,當估計殘差並且將經扭曲的幀加到殘差時,可能出現問題。由於神經網路系統511嘗試獲得可能的最佳重構,而不管重構是如何獲得的,所以可能出現這樣的問題。例如,在嘗試產生與原始幀盡可能接近的經重構的幀時,神經網路系統511可能未正確地學習運動估計參數(例如,光流),並且可能僅依靠殘差來產生經重構的幀。在一些情況下,經重構的光流輸出甚至可能是空白張量或其它沒有資料的資料結構。然而,在視頻中的許多冗餘可能來自這樣的運動資料(例如,來自在幀之間的光流),在這種情況下,學習運動估計參數可能是重要的。
運動估計網路575可以透過在神經網路系統511的編碼器側提供運動估計神經網路,來幫助神經網路系統511學習運動估計參數。例如,運動估計網路575可以包括估計運動估計參數(例如,光流向量、光流圖、基於區塊的運動資訊、針對每個像素的用於執行資料卷積的核心等)的單獨神經網路,並且將這些運動估計參數提供給編碼器533。透過在神經網路系統511的編碼器側判定運動估計參數,實際的運動估計參數集合被提供給編碼器533,迫使編碼器533考慮運動估計(例如,光流)。
在一些示例中,運動估計網路575可以是獨立於神經網路系統511的其餘部分來訓練的,或者整個神經網路系統511(包括運動估計網路575)可以是以端到端的方式一起訓練的。將運動估計網路575考慮在內的各種損失項可以包括以下各項:
Figure 02_image083
Figure 02_image085
Figure 02_image087
Figure 02_image089
在一些實現方式中,運動估計網路575可以是使用無監督學習(而不使用地面實況輸出)來訓練的。Loss1和Loss2項可以在編碼器側使用,以及Loss3和Loss4項可以在解碼器側使用。在使用光流作為運動估計的示例的一個說明性示例中,給定兩個連續幀
Figure 02_image009
和改善,運動估計網路575的目標是估計兩個幀
Figure 02_image009
和改善之間的光流。運動估計網路575將輸出經估計的光流參數,所述經估計的光流參數將用於對
Figure 02_image009
的重構版本
Figure 02_image001
進行扭曲。可以判定在經扭曲的
Figure 02_image001
和原始幀
Figure 02_image009
之間的損失(例如,上文Loss2)。損失接著可以用於使用上文描述的反向傳播技術來調諧權重(以及在一下情況下的其它參數)。在一些情況下,損失項Loss1可以在編碼器側使用,而不是Loss2。
相同的概念可以在使用Loss3或Loss4的解碼器側使用,以將解碼器538訓練為恢復在編碼器側估計的運動估計參數(例如,光流)。例如,解碼器538可以計算或估計在兩個連續幀之間的運動(例如,光流),兩個連續幀包括當前幀
Figure 02_image009
以及先前幀
Figure 02_image049
(當使用Loss3時)或經先前重構幀
Figure 02_image029
(當使用Loss4時)。以這種方式,未經壓縮的幀可以用於估計運動估計參數。所得到的運動估計參數可以用於對先前幀(
Figure 02_image049
Figure 02_image029
)進行扭曲,以嘗試匹配幀
Figure 02_image009
。期望的是,扭曲的輸出在當前時步與輸入幀
Figure 02_image009
匹配。
然後在經扭曲的幀和輸入幀
Figure 02_image009
之間的損失可以使用Loss3或Loss4來計算。如上文所指出的,Loss3包括對實際的先前幀
Figure 02_image049
的使用,以及Loss4包括對經先前重構幀
Figure 02_image029
(先前幀
Figure 02_image049
的經解壓縮或經解碼的版本)的使用。在來自時步t-1的實際的先前幀
Figure 02_image049
在下一時步t對神經網路系統511是不可用的情形下,可以使用在解碼器側的Loss4(和在編碼器側的Loss2)。反向傳播可以用於評估損失並且調整或調諧神經網路系統511的參數。這樣的訓練輔助解碼器538學習運動估計參數。
在一些示例中,損失項Loss1和Loss3或損失項Loss2和Loss4(取決於在時步t實際的先前幀
Figure 02_image049
是否可用)是在訓練的不同階段激活的。例如,當對神經網路系統511的訓練最初開始時,可以激活並且使用在編碼器側的Loss2和在解碼器側的Loss4,並且直到某個時刻,在此之後,神經網路系統511是使用Loss0(如在圖5A中及上文所示出的)作為唯一的損失項(損失項Loss1-Loss4被停用)來進行訓練的。透過在訓練期間最初使用損失項Loss1和Loss3或Loss2和Loss4,神經網路系統511被迫學習運動估計參數(例如,光流向量或圖)。一旦神經網路系統511已經充分地學習運動估計參數,其就可以保留該資訊並且將在進一步的訓練迭代中和在推論期間(當經訓練的網路被部署用於對實際視頻資料進行操作時)維持如何估計運動估計參數。因此,一旦運動估計參數藉由神經網路系統511學習,額外的損失項Loss1-Loss4就可以被停用,並且Loss0可以繼續用於進一步訓練神經網路系統511。
圖10是示出神經網路系統511的不同循環層配置的示例的示意圖,包括單階循環配置和多階循環配置。編碼器533和解碼器538被示為藉由瓶頸1034分開的不同層。瓶頸1034與使用量化器534來量化的潛表達(latent representation)相對應。在單階循環配置中,編碼器533僅包括前向層,以及解碼器包括四個前向層和單個循環層1071。編碼器533的前向層可以包括在圖5B中所示出的神經網路層中的一個或多個神經網路層,比如一個或多個卷積層、標準化層、非線性層、殘差區塊或其它神經網路層。前向層1070a、前向層1070b和前向層1070c與在圖5A中所示出的一個或多個預循環解碼器層570相對應。在一個說明性示例中,前向層1070a、1070b和1070c可以包括在圖5B中的解碼器538的在循環層(在圖5B中被表示為ConvGRU c:C3 k:3 s:1)之前出現的所有層(在圖5B中被表示為層579)。在圖10中的循環層1071與在圖5A中所示出的一個或多個循環層571相對應。循環層1071的示例是來自圖5B的ConvGRU循環層(具有設定c:C3 k:3 s:1)。如所示出的,在下一時步t+1,循環層1071的來自時步t的循環狀態被提供給循環層1071和編碼器533。前向層1073與在圖5A中所示出的一個或多個後循環層572相對應。在一個說明性示例中,前向層1073可以是在圖5B中的解碼器538的最後的卷積層(被表示為Conv c:5 k:5 s:1)。
多階循環配置包括與單個循環配置相同的前向層,但是在解碼器538處包括多階循環層。不同的循環層中的每者保持單獨的循環狀態(還稱為隱藏狀態),其中,每個循環狀態擷取不同層級的特徵,直到在神經網路系統511中的那個點為止。如在圖10中所示出的,除了被反饋給解碼器538的循環層之外,循環狀態還從解碼器538的循環層被反饋給在編碼器533中的鏡像位置。多個循環狀態可以允許編碼器533和解碼器538利用額外資訊來執行更高效的視頻譯碼。
圖11是示出具有額外扭曲引擎576的神經網路系統511的示例的示意圖。雖然出於說明目的從圖11中省略神經網路系統511的各種組件(例如,量化器534、一個或多個預循環解碼器層570等),但是本領域技術人員將理解的是,這些組件存在於神經網路系統511中。扭曲引擎576可以用於在當前時步(例如,時步t+1)使用循環狀態之前,對來自一個或多個循環層571的先前時步(例如,時步t)的先前循環狀態(或隱藏狀態)進行扭曲。扭曲引擎576可以使用可用於編碼器533和解碼器538的運動估計參數來對循環狀態進行扭曲,以便將循環狀態與在當前幀中的像素的位置進行匹配。
在當前時步使用先前循環狀態之前對其進行扭曲對於視頻可以是有用的。例如,物件可能在時間上跨視頻幀移動,並且這樣的運動可以透過上文描述的運動估計技術(例如,使用光流、基於區塊的運動估計等)來對進行模型化。當解碼器538的一個或多個循環層571的循環狀態在稍後的時步被直接饋送給解碼器538和編碼器533時,不對在隱藏狀態內的物件運動進行模型化(例如,由於運動補償是在循環層之後執行的,如在圖5A中所示出的)。循環狀態表示輸入幀(例如,其包括輸入圖像的特徵表示),在這種情況下,在輸入圖像中的像素的移動應當導致在循環狀態的特徵空間中的類似移動。因此,透過基於運動估計來對循環狀態進行扭曲,根據輸入幀估計的每次移動被轉移到在循環狀態中的對應移動,使得循環狀態與在當前幀中的像素的位置匹配。
參照圖11,在當前時步使用扭曲引擎576對來自先前時步的解碼器538的循環層的先前循環狀態或隱藏狀態h進行扭曲。先前隱藏狀態是在被重複使用於在當前時步的循環層之前,使用在當前時步估計的運動估計參數(例如,光流)來進行扭曲的。例如,在時步t+1,扭曲引擎576可以使用在時步t+1估計的運動估計參數
Figure 02_image023
對來自時步t的先前循環狀態
Figure 02_image015
進行扭曲。然後,經扭曲的循環狀態可以在當前時步t重複使用於循環層。
在一些實現方式中,可以在扭曲引擎576之前提供額外的循環層。額外的循環層可以用於重構用於操作的當前時步t+1的運動估計參數
Figure 02_image023
(例如,光流),所述運動估計參數可以藉由扭曲引擎576用於對來自從時步t的先前循環狀態
Figure 02_image015
進行扭曲。在當前時步t,經扭曲的先前循環狀態
Figure 02_image091
可以接著輸入到循環層。在一些實現方式中,可以執行迭代操作以在當前時步t+1首先判定運動估計參數(例如,光流),所述運動估計參數可以藉由扭曲引擎576用於對來自時步t的先前循環狀態
Figure 02_image015
進行扭曲。在當前時步t,經扭曲的先前循環狀態
Figure 02_image091
可以接著輸入到循環層。例如,可以執行前向傳遞來恢復或重構運動估計參數,並且然後操作可以返回到循環層以對先前循環狀態進行扭曲。在一些實現方式中,將經扭曲經先前重構幀(來自時步t-1)作為到當前時步(t)的循環層的反饋。
圖12是示出具有額外遮罩功能的神經網路系統511的示例的示意圖。如在圖12中所示出的,除了經重構運動估計資料
Figure 02_image017
和經重構殘差資料
Figure 02_image019
之外,一個或多個後循環層573可以輸出按元素遮罩
Figure 02_image093
。扭曲引擎567可以透過對經先前重構幀
Figure 02_image029
進行扭曲,來產生經扭曲經先前重構幀
Figure 02_image017
(
Figure 02_image029
),與上文關於圖5A所描述的類似。遮罩
Figure 02_image095
可以是具有針對在視頻幀中的每個像素的值的每像素遮罩。遮罩
Figure 02_image095
用於在重構經重構的幀
Figure 02_image001
時對經扭曲經先前重構幀
Figure 02_image017
(
Figure 02_image029
)和殘差
Figure 02_image019
的貢獻進行遮蔽(或加權)。例如,在一些實現方式中,遮罩
Figure 02_image095
可以根據以下等式來應用:
Figure 02_image001
=
Figure 02_image095
Figure 02_image017
(
Figure 02_image049
)+(1-
Figure 02_image095
)∙
Figure 02_image019
等式(4)
根據等式(4),隨著遮罩
Figure 02_image095
的值增加,經扭曲經先前重構幀
Figure 02_image017
(
Figure 02_image029
)對經重構的幀
Figure 02_image001
的影響增加,以及殘差資料
Figure 02_image019
對經重構的幀
Figure 02_image001
的影響減少。另一方面,隨著遮罩
Figure 02_image095
的值減少,經扭曲經先前重構幀
Figure 02_image017
(
Figure 02_image029
)的影響減少,以及殘差資料
Figure 02_image019
的影響增加。在一些實現方式中,
Figure 02_image095
可以被限制為在0與1之間的值的範圍([0, 1],包含0和1)。在一個說明性示例中,如果針對一像素遮罩具有0值,則在下一幀中針對該像素的值將完全取自殘差。
在一些示例中,遮罩
Figure 02_image095
可以是將當前視頻幀的在先前視頻幀中不存在的部分遮蔽掉的遮擋遮罩(occlussion mask)。例如當場景的一部分被暫時地遮擋時、當物件進入場景時等等,可能發生這樣的情形。由於運動資訊(以及因此扭曲)對於那些部分是不可用的,所以可以對幀的這樣的不可用部分執行遮蔽。例如,如果在當前幀的像素在先前幀中是不可用的,則無法針對這些像素執行在當前幀和先前幀之間的運動估計。在這樣的示例中,視頻幀的包括那些像素的部分無法進行扭曲。在這樣的情況下,對當前幀的重構可以透過更大程度地(或在一些情況下完全地)依靠於殘差資料
Figure 02_image019
來判定,取決於遮擋量。
圖13是示出具有額外重構細緻化功能的神經網路系統511的示例的示意圖。使用在圖13中所示出的配置,神經網路系統511可以在神經網路系統511的操作的兩個時步中重構每個視頻幀。例如,在當前時步(例如,時步t-1)判定的每個經重構視頻幀(例如,
Figure 02_image029
)可以在隨後的時步(例如,時步t)中進一步細緻化。在這樣的情況下,經先前重構視頻幀
Figure 02_image077
可以充當兩個角色。例如,在當前時步t,對經先前重構視頻幀
Figure 02_image029
進行扭曲,並且將殘差
Figure 02_image019
加入以形成當前時步重構
Figure 02_image001
(在圖5A中所示出的配置中也是這樣做的)。此外,還輸出殘差
Figure 02_image097
,並且將其加到經先前重構視頻幀
Figure 02_image029
,產生與經先前重構視頻幀
Figure 02_image029
相比具有改善的品質的經細緻化經重構幀
Figure 02_image099
如在圖13中所示出的,在每個時步,先前的地面實況(未經壓縮的)幀x作為輸入添加到編碼器533,以允許進行對經先前重構之幀
Figure 02_image077
的細緻化。例如,在時步t,將先前的地面實況幀
Figure 02_image049
作為輸入添加為編碼器533,以允許進行對經先前重構之幀
Figure 02_image029
的細緻化。如所示出的,在時步t,除了提供殘差
Figure 02_image019
之外,一個或多個後循環層573還提供輸出殘差
Figure 02_image097
。殘差
Figure 02_image097
是基於先前的地面實況幀
Figure 02_image049
來產生的,並且用於細緻化先前重構
Figure 02_image029
,以便產生經細緻化經重構幀
Figure 02_image099
。例如,經細緻化的重構可以依如下所列產生:
Figure 02_image101
等式(5)
經細緻化經重構幀
Figure 02_image099
可以用作用於在時步t-1的先前幀的最終重構。在這樣的情況下,系統500將輸出視頻序列延遲達神經網路系統511的操作的一個時步。允許神經網路系統511透過知道在第一初始的、未經細緻化的重構中執行的誤差來在下一時步中對經重構幀進行細緻化,這在編碼效率(例如,率失真)方面可以是有益的。這樣的配置允許在下一時步中補償在先前時步中發生的任何誤差,這可以對率失真最佳化有益。
圖14是示出使用一個或多個失真圖作為到神經網路系統511的編碼器533的輸入的示例的示意圖。在圖14中示出兩個示例失真圖,包括失真圖577和失真圖578。失真圖577包括在來自當前時步t的當前源幀
Figure 02_image009
與來自先前時步t-1的先前重構
Figure 02_image029
之間的失真。失真圖578包括在當前源幀
Figure 02_image009
與經扭曲經先前重構視頻幀
Figure 02_image103
之間的失真。如上文所指出的,經先前重構視頻幀
Figure 02_image105
可以根據運動估計(比如光流)來進行扭曲。在這樣的情況下,光流可以在編碼器側(比如使用flownet)進行估計。Flownet是利用卷積網路來學習光流的神經網路架構。
被包括在失真圖中的失真可以是用作用於訓練神經網路系統511的損失函數(例如,上文描述的Loss0、Loss1、Loss2、Loss3和/或Loss4)的失真(或誤差或損失)。失真可以是基於任何類型的失真,比如多尺度結構相似性指標(MS-SSIM)、每像素之均方誤差(MSE)等。失真圖還可以稱為感知失真圖。
透過明確地計算失真圖(在神經網路系統511之外)並且將失真圖作為輸入饋送到編碼器533中,可以向編碼器533可以被指導關於圖像的哪些部分正在對感知失真做出貢獻,並且因此其需要在哪裡分配更多資訊。例如,編碼器533可以將位元率集中在圖像上對失真貢獻最大的區域上。對於某些失真圖(比如感知失真圖(例如,MS-SSIM)),這樣的益處可以被增強,這對於神經網路進行學習是非常重要的。
圖15是示出在編碼器533中具有允許相乘交互作用的額外的線性神經網路層的神經網路系統511的示例的示意圖。以預設方式應用的卷積神經網路架構不允許相乘交互。相乘交互是指正在對輸入執行的計算取決於輸入本身。例如,傳統的卷積神經網路在訓練期間學習權重。權重是相同的,並且被應用於任何輸入,不管正被輸入到神經網路的輸入值。
參考圖15,相乘交互是透過在輸入的每個空間位置獨立地應用編碼器533的線性層581(在圖15所示出的,在線性層(1)處),來在編碼器533中實現的。線性層581的權重是透過藉由線性層582(在圖15中所示出的,在線性層(2)處)輸出的權重583來判定的。例如,權重583可以用作用於線性層581的權重。將相同的輸入580應用於線性層581和線性層582。使用線性層582來定義線性層581的權重允許藉由線性層581執行的計算取決於輸入580本身的值(因此,應用於輸入580的計算取決於輸入本身)。例如,與失真顯著的區域相比,神經網路系統511可以學習在經先前重構之幀與當前幀之間的失真可以忽略的區域中執行不同的計算。
在一些實現方式中,在圖15中的配置可以與在圖16中所示出的配置結合使用。例如,除了輸入580之外,一個或多個失真圖也可以輸入到線性層582,這可以幫助增強對權重583的計算。在一個示例中,如透過失真圖所指示的,在不同的空間位置上的權重可以根據在不同的空間位置處的失真的值來以不同的方式進行設定。
本文中所描述的用於視頻壓縮的基於循環的神經網路系統(例如,系統400和/或系統500)和相關技術提供視頻譯碼系統,所述視頻譯碼系統可以以最先進的水平來執行,提供高品質的每像素位元(bpp)值。例如,如在圖16和圖17中提供的曲線圖中所示出的,在用於1080p解析度的>0.14bpp的範圍中(這是實際感興趣的bpp區域,例如,Netflix使用近似0.09-0.12bpp串流1080p視頻),這樣的技術優於當前的行業標準編解碼器(包括HEVC和AVC)。在圖16和圖17中的“RecurrentAE”是指使用本文中所描述的基於循環的神經網路系統的結果,以及在圖16和圖17中的“RDAE”是指另一種基於機器學習的視頻壓縮技術。
本文中所描述的基於循環的神經網路系統(例如,系統400和/或系統500)提供低延遲操作。例如,系統允許逐幀地而不是以分批的若干幀(例如,以圖像組(GoP))來產生和傳輸視頻,以及因此不必等待要發送的幀的累積。此外,系統提供在運行時根據視頻的特性來調整GoP大小(即發送全幀的頻率,而不僅是殘差資訊)的能力,從而導致在率失真空間中的更好的操作點。本文中所描述的基於循環的神經網路系統還提供各種其它益處。
圖18是示出使用本文中所描述的基於循環的機器學習技術中的一種或多種技術來處理視頻的程序1800的示例的流程圖。在方塊1802處,程序1800包括:藉由神經網路系統的編碼器部分獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的至少一個循環狀態資料。在一些情況下,循環狀態資料包括至少一個循環層的節點的一個或多個值。在一些示例中,其它輸入資料(比如透過神經網路系統的操作的先前時步所產生的經先前重構視頻幀,如在圖5A中所示出的)可以藉由編碼器部分獲得。
在方塊1804處,程序1800包括:藉由神經網路系統的編碼器部分產生用於神經網路系統的操作的當前時步的輸出資料。輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的至少一個循環狀態資料來產生的。在一些情況下,輸出資料可以是基於其它輸入資料(例如,透過神經網路系統的操作的先前時步所產生的經先前重構視頻幀,如在圖5A中所示出的)來產生的。
在方塊1806處,程序1800包括:藉由神經網路系統的解碼器部分獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的至少一個循環狀態資料。例如,如在圖5A中所示出的,對於操作的當前時步t+1,解碼器538可以從量化器534獲得輸出資料,並且解碼器538的循環層可以將來自操作的先前時步t的循環狀態資料
Figure 02_image015
反饋到其自身中。在一些情況下,神經網路系統的解碼器部分包括多個循環層,多個循環層中的每個循環層提供各自的循環狀態資料。
在方塊1808處,程序1800包括:至少部分地基於輸出資料和來自操作的先前時步的至少一個循環狀態資料,來產生用於操作的當前時步的經重構視頻幀。經重構視頻幀表示輸入視頻幀。例如,經重構視頻幀是輸入視頻幀的經重構的版本。經重構視頻幀可以被輸出以供顯示、儲存和/或傳輸。例如,在一些示例中,程序1800包括:將輸出資料儲存在儲存媒體中。在一些示例中,程序1800包括:將經重構視頻幀儲存在儲存媒體中。在一些示例中,程序1800包括:透過傳輸媒體向至少一個設備發送經重構視頻幀。在一些情況下,經重構視頻幀可以在被輸出以供顯示、儲存和/或傳輸之前進行進一步處理(例如,去除由於重構程序而導致的視覺偽影,或進行其它處理)。
在一些示例中,程序1800包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的至少一個循環狀態資料,來判定用於操作的當前時步的運動估計資料。在這樣的示例中,程序1800可以包括:獲得在操作的先前時步期間產生的經先前重構視頻幀,以及透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。
在一些示例中,程序1800包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的至少一個循環狀態資料,來判定用於操作的當前時步的經重構殘差資料。在這樣的示例中,程序1800可以包括:透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
在一些示例中,程序1800包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的至少一個循環狀態資料,來判定用於操作的當前時步的經重構殘差資料。在這樣的示例中,程序1800可以包括:藉由解碼器部分的扭曲後網路對經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料進行處理。在一些情況下,用於操作的當前時步的經重構視頻幀是基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理來產生的。
在一些示例中,程序1800包括:藉由神經網路系統的運動估計網路至少部分地基於輸入視頻幀和以下兩者中的至少一項,來判定用於操作的當前時步的運動估計資料:來自操作的先前時步的經先前重構視頻幀或來自操作的先前時步的先前輸入視頻幀。在這樣的示例中,程序1800可以包括:透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀或先前輸入視頻幀中的至少一者的一個或多個像素,來產生用於當前時步的經扭曲經重構視頻幀。程序1800可以包括:向神經網路系統的編碼器部分發送經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料。在一些情況下,被產生用於操作的當前時步的輸出資料是藉由神經網路系統的編碼器部分至少部分地基於經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料來產生的。
在一些示例中,程序1800包括:針對一次或多次訓練迭代,使用第一損失函數來訓練神經網路系統。第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失。例如,第一損失函數可以包括上文描述的損失函數Loss1、Loss2、Loss3和/或Loss4中的任何損失函數。在一個說明性示例中,Loss1可以用於訓練編碼器533,以及Loss3可以用於訓練解碼器538。在另一說明性示例中,Loss2可以用於訓練編碼器533,以及Loss4可以用於訓練解碼器538。在這樣的示例中,程序1800可以包括:停用第一損失函數(例如,停用Loss1、Loss2、Loss3和/或Loss4)。例如,第一損失函數可以是回應於判定神經網路系統被訓練為學習運動估計參數而被停用的,如上文關於圖8和圖9所描述的。在這樣的示例中,程序1800可以包括:對於在一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練神經網路系統。第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。例如,第二損失函數可以包括上文描述的Loss0。
在一些示例中,程序1800包括:透過使用被判定用於操作的當前時步或操作的先前時步的運動估計資料修改來自操作的先前時步的至少一個循環狀態資料,來產生用於操作的當前時步的經扭曲循環狀態資料。在這樣的示例中,被產生用於操作的當前時步的經重構視頻幀是至少部分地基於經扭曲循環狀態資料來產生的。
在一些示例中,程序1800包括:藉由解碼器部分產生經重構遮罩。經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值。在這樣的示例中,程序1800包括:至少部分地基於經重構遮罩、用於操作的當前時步所產生的經扭曲經重構視頻幀以及被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。在一個說明性示例中,如上文關於圖12所描述的,遮罩可以使用等式(4)(
Figure 02_image001
=
Figure 02_image095
Figure 02_image017
(
Figure 02_image049
)+(1-
Figure 02_image095
)∙
Figure 02_image019
) 來實現。
在一些示例中,程序1800包括:獲得在操作的先前時步期間產生的經先前重構視頻幀。在這樣的示例中,程序1800包括:在操作的當前時步期間,透過使用被判定用於操作的當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。在這樣的示例中,程序1800可以包括:藉由解碼器部分在操作的當前時步期間判定用於操作的當前時步的第一經重構殘差資料。在這樣的示例中,程序1800可以包括:透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。程序1800可以包括:藉由解碼器部分在操作的當前時步期間至少部分地基於藉由編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的第二經重構殘差資料。在這樣的示例中,程序1800可以包括:在操作的當前時步期間使用第二經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。例如,如上文關於圖13所描述的,可以在時步t+1輸出經修改的經先前重構視頻幀
Figure 02_image107
(例如,以供顯示、儲存、傳輸和/或其它操作),而不是在時步t+1輸出經重構視頻幀
Figure 02_image021
。在這樣的示例中,可以輸出經重構視頻幀
Figure 02_image021
,以在下一時步t+2進行修改。
在一些示例中,程序1800包括:藉由神經網路系統的編碼器部分獲得一個或多個失真圖;以及藉由神經網路系統的編碼器部分至少部分地基於一個或多個失真圖來產生輸出資料。在一些情況下,如上文關於圖14所描述的,一個或多個失真圖可以包括第一失真圖,所述第一失真圖指示在用於操作的當前時步的輸入視頻幀與來自操作的先前時步的經先前重構視頻幀之間的失真。在一些情況下,如上文關於圖14所描述的,一個或多個失真圖可以包括第二失真圖,所述第二失真圖指示在用於操作的當前時步的輸入視頻幀與經扭曲經重構視頻幀之間的失真(其中,如上文所指出的,經扭曲經重構視頻幀可以是透過修改來自操作的先前時步的經先前重構視頻幀的一個或多個像素來產生的)。
在一些示例中,程序1800包括:藉由神經網路系統的編碼器部分的第一層處理輸入資料。在這樣的示例中,程序1800包括:藉由編碼器部分的第一層判定用於編碼器部分的第一層的多個權重值。在這樣的示例中,程序1800包括:將神經網路系統的編碼器部分的第二層的權重設定為多個權重值;以及藉由編碼器部分的第二層使用被設定為多個權重值的權重來處理輸入資料。例如,如上文關於圖15所描述的,線性層581的權重可以是透過藉由線性層582輸出的權重583來判定的,這可以允許藉由線性層581執行的計算取決於輸入580本身的值。
圖19是示出使用本文中所描述的基於循環的機器學習技術中的一種或多種技術來處理視頻的程序1900的另一示例的流程圖。在方塊1902處,程序1900包括:藉由神經網路系統的解碼器部分獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料。出於說明性目的使用圖5A的示例,針對操作的當前時步t+1,解碼器538可以從量化器534獲得輸出資料,並且解碼器538的循環層可以將來自操作的先前時步t的循環狀態資料
Figure 02_image015
反饋到其自身中。在一些情況下,神經網路系統的解碼器部分包括多個循環層,多個循環層中的每個循環層提供各自的循環狀態資料。
在方塊1904處,程序1900包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的運動估計資料。在方塊1906處,程序1900包括:獲得在操作的先前時步期間產生的經先前重構視頻幀。在方塊1908處,程序1900包括:至少部分地透過使用被判定用於當前時步的運動估計資料修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。
在方塊1910處,程序1900包括:至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀。經重構視頻幀表示藉由神經網路系統的編碼器部分或另一神經網路系統的編碼器處理的輸入視頻幀。例如,經重構視頻幀是輸入視頻幀的經重構的版本。經重構視頻幀可以被輸出以供顯示、儲存和/或傳輸。例如,在一些示例中,程序1800包括:將輸出資料儲存在儲存媒體中。在一些示例中,程序1800包括:將經重構視頻幀儲存在儲存媒體中。在一些示例中,程序1800包括:透過傳輸媒體向至少一個設備發送經重構視頻幀。在一些情況下,經重構視頻幀可以在被輸出以供顯示、儲存和/或傳輸之前進行進一步處理(例如,以去除由於重構程序而導致的視覺偽影,或進行其它處理)。
在一些示例中,程序1900包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料。在這樣的示例中,程序1900可以包括:至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
在一些示例中,程序1900包括:藉由解碼器部分在操作的當前時步期間至少部分地基於藉由神經網路系統的編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的經重構殘差資料操作。在這樣的示例中,程序1900可以包括:在操作的當前時步期間,使用來自操作的先前時步的經重構殘差資料來修改經先前重構視頻幀。程序1900可以包括:輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
在一些示例中,程序1900包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料。在這樣的示例中,程序1900可以包括:藉由解碼器部分的扭曲後網路對經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料進行處理。程序1900可以包括:至少部分地基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理來產生用於操作的當前時步的經重構視頻幀。
在一些示例中,程序1900包括:至少部分地透過使用被判定用於操作的當前時步的運動估計資料或被判定用於操作的先前時步的運動估計來修改來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經扭曲循環狀態資料。在這樣的示例中,程序1900可以包括:至少部分地基於經扭曲循環狀態資料來產生用於操作的當前時步的經重構視頻幀。
在一些示例中,程序1900包括:藉由解碼器部分產生經重構遮罩。經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值。在這樣的示例中,程序1900可以包括:至少部分地基於經重構遮罩、用於操作的當前時步的經扭曲經重構視頻幀以及被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。在一個說明性示例中,如上文關於圖12所描述的,遮罩可以使用等式(4) (
Figure 02_image001
=
Figure 02_image095
Figure 02_image017
(
Figure 02_image049
)+(1-
Figure 02_image095
)∙
Figure 02_image019
) 來實現。
在一些示例中,程序1900包括:藉由神經網路系統的編碼器部分獲得用於操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料。在一些情況下,循環狀態資料包括至少一個循環層的節點的一個或多個值。在一些示例中,其它輸入資料可以藉由編碼器部分獲得,比如透過神經網路系統的操作的先前時步所產生的經先前重構視頻幀,如在圖5A中所示出的。程序1900可以包括:藉由神經網路系統的編碼器部分產生用於操作的當前時步的輸出資料,所述輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料來產生的。輸出資料在一些情況下可以是基於其它輸入資料(比如透過神經網路系統的操作的先前時步所產生的經先前重構視頻幀,如在圖5A中所示出的)來產生的。
在一些示例中,程序1900包括:針對一次或多次訓練迭代,使用第一損失函數來訓練神經網路系統。第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失。例如,第一損失函數可以包括上文描述的損失函數Loss1、Loss2、Loss3和/或Loss4中的任何損失函數。在一個說明性示例中,Loss1可以用於訓練編碼器533,以及Loss3可以用於訓練解碼器538。在另一說明性示例中,Loss2可以用於訓練編碼器533,以及Loss4可以用於訓練解碼器538。在這樣的示例中,程序1900可以包括:停用第一損失函數(例如,停用Loss1、Loss2、Loss3和/或Loss4)。例如,第一損失函數可以是回應於判定神經網路系統被訓練為學習運動估計參數而被停用的,如上文關於圖8和圖9所描述的。在這樣的示例中,程序1900可以包括:針對在一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練神經網路系統。第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。例如,第二損失函數可以包括上文描述的Loss0。
在一些示例中,程序1900包括:獲得在操作的先前時步期間產生的經先前重構視頻幀。在這樣的示例中,程序1900包括:在操作的當前時步期間,透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。在這樣的示例中,程序1900可以包括:藉由解碼器部分在操作的當前時步期間判定用於操作的當前時步的第一經重構殘差資料。在這樣的示例中,程序1900可以包括:透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。程序1900可以包括:藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的第二經重構殘差資料。在這樣的示例中,程序1900可以包括:在操作的當前時步期間使用第二經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。例如,如上文關於圖13所描述的,可以在時步t+1輸出經修改的經先前重構視頻幀
Figure 02_image107
(例如,以供顯示、儲存、傳輸和/或其它操作),而不是在時步t+1輸出經重構視頻幀
Figure 02_image021
。在這樣的示例中,可以輸出經重構視頻幀
Figure 02_image021
,以在下一時步t+2進行修改。
在一些示例中,本文中所描述的程序(例如,程序1800、程序1900和/或本文中所描述的其它程序)可以藉由計算設備或裝置(比如具有在圖20中所示出的計算設備架構2000的計算設備)來執行。在一些示例中,計算設備可以包括行動設備、可穿戴設備、擴展實境設備(例如,虛擬實境(VR)設備、擴增實境(AR)設備或混合實境(MR)設備)、個人計算機、膝上型計算機、視頻伺服器、電視機、或其它設備。在一個示例中,程序1800和/或程序1900可以藉由具有實現系統400或系統500的計算設備架構2000的計算設備來執行(使用在圖5A-圖15中所示出的架構中的任何架構或其任何組合)。計算設備可以包括任何適當的設備,比如自駕車、機器人設備、行動設備(例如,行動電話)、桌上型計算設備、平板計算設備、可穿戴設備和/或具有執行本文中所描述的程序(包括程序1800)的資源能力的任何其它計算設備。在一些情況下,計算設備或裝置可以包括各種組件,比如一個或多個輸入設備、一個或多個輸出設備、一個或多個處理器、一個或多個微處理器、一個或多個微型計算機、一個或多個發射機、接收機或組合的發射機-接收機(例如,稱為收發機)、一個或多個相機、一個或多個感測器和/或被配置為執行本文中所描述的程序的步驟的其它組件。在一些示例中,計算設備可以包括顯示器、被配置為傳送和/或接收資料的網路介面、其任何組合和/或其它組件。網路介面可以被配置為傳送和/或接收基於網際網路協定(IP)的資料或其它類型的資料。
計算設備的組件可以在電路中實現。例如,組件可以包括電子電路或其它電子硬體,和/或可以使用電子電路或其它電子硬體來實現,所述電子電路或其它電子硬體可以包括一個或多個可編程電子電路(例如,微處理器、圖形處理單元(GPU)、數位信號處理器(DSP)、中央處理單元(CPU)、神經處理單元(NPU)、和/或其它適當的電子電路),和/或可以包括計算機軟體、韌體或其任何組合,和/或使用計算機軟體、韌體或其任何組合來實現,以執行本文中所描述的各種操作。
程序1800和程序1900被示為邏輯流程圖,所述邏輯流程圖的操作表示可以用硬體、計算機指令或其組合來實現的一系列操作。在計算機指令的背景下,所述操作表示儲存在一個或多個計算機可讀儲存媒體上的計算機可執行指令,所述計算機可執行指令在藉由一個或多個處理器執行時執行所記載的操作。通常,計算機可執行指令包括執行特定功能或實現特定資料類型的常式、程式、物件、組件、資料結構等。描述操作的順序並不旨在被解釋為限制,並且可以以任何順序和/或平行地組合所描述的操作中的任何數量的操作以實現所述程序。
另外,本文中所描述的程序(包括程序1800、程序1900和/或本文中所描述的其它程序)可以在被配置有可執行指令的一個或多個計算機系統的控制下執行,並且可以被實現為在一個或多個處理器上共同執行的碼(例如,可執行指令、一個或多個計算機程式、或一個或多個應用),透過硬體來實現,或其組合。如上文所指出的,碼可以例如以包括可藉由一個或多個處理器執行的多個指令的計算機程式的形式儲存在計算機可讀或機器可讀儲存媒體上。計算機可讀儲存媒體或機器可讀儲存媒體可以是非暫時性的。
圖20示出可以實現本文中所描述的各種技術的示例計算設備的示例計算設備架構2000。在一些示例中,計算設備可以包括行動設備、可穿戴設備、擴展實境設備(例如,虛擬實境(VR)設備、擴增實境(AR)設備或混合實境(MR)設備)、個人計算機、膝上型計算機、視頻伺服器或其它設備。例如,計算設備架構2000可以實現系統400或系統500(包括在圖5A-圖15中所示出的架構中的任何架構或其任何組合)。計算設備架構2000的組件被示為使用連接2005(例如,匯流排)彼此電通信。示例計算設備架構2000包括處理單元(CPU或處理器)2010和計算設備連接2005,所述計算設備連接2005將包括計算設備記憶體2015(比如唯讀記憶體(ROM)2020和隨機存取記憶體(RAM)2025)的各種計算設備組件耦接到處理器2010。
計算設備架構2000可以包括直接與處理器2010連接、靠近處理器2010或被整合為處理器2010的一部分的高速記憶體的快取。計算設備架構2000可以將資料從記憶體2015和/或儲存設備2030複製到快取2012,以藉由處理器2010快速存取。以這種方式,快取可以提供性能提升,其避免處理器2010在等待資料時延遲。這些模組和其它模組可以控制或被配置為控制處理器2010以執行各種動作。其它計算設備記憶體2015也可供使用。記憶體2015可以包括具有不同性能特性的多種不同類型的記憶體。處理器2010可以包括任何通用處理器和被配置為控制處理器2010的硬體或軟體服務(比如儲存在儲存設備2030中的服務1 2032、服務2 2034和服務3 2036),以及其中軟體指令被併入處理器設計中的專用處理器。處理器2010可以是包含多個核心或處理器、匯流排、記憶體控制器、快取等的自含系統。多核心處理器可以是對稱的或非對稱的。
為了實現用戶與計算設備架構2000的互動,輸入設備2045可以表示任何數量的輸入機制,比如用於語音的麥克風、用於手勢或圖形輸入的觸敏螢幕、鍵盤、滑鼠、運動輸入、語音等。輸出設備2035還可以是本領域技術人員已知的數種輸出機制中的一種或多種輸出機制,比如顯示器、投影機、電視機、揚聲器設備等。在一些實例下,多模式計算設備可以使得用戶能夠提供多種類型的輸入以與計算設備架構2000進行通信。通信介面2040通常可以控制和管理用戶輸入和計算設備輸出。對在任何特定硬體排列上工作沒有限制,並且因此,此處的基本特徵可以容易地被經改善的硬體或韌體排列(因為它們是先進的)所取代。
儲存設備2030是非揮發性記憶體,並且可以是可以儲存可藉由計算機存取的資料的硬碟或其它類型的計算機可讀媒體,比如磁帶、快閃記憶卡、固態記憶體設備、數位多功能磁碟、盒式磁帶、隨機存取記憶體(RAM)2025,唯讀記憶體(ROM)2020以及其混合。儲存設備2030可以包括用於控制處理器2010的服務2032、2034、2036。預期其它硬體或軟體模組。儲存設備2030可以連接到計算設備連接2005。在一個方面中,執行特定功能的硬體模組可以包括被儲存在與必要的硬體組件(比如處理器2010、連接2005、輸出設備2035等)相連接的計算機可讀媒體中的軟體組件,以執行該功能。
本公開內容的各方面可應用於任何適當的電子設備(比如安全系統、智慧型手機、平板計算機、膝上型計算機、車輛、無人機或其它設備),所述電子設備包括或耦接到一個或多個主動式深度感測系統。雖然下文是關於具有或耦接到一個光投影器的設備進行描述的,但是本公開內容的各方面可應用於具有任何數量的光投影器的設備,以及因此不限於特定設備。
術語“設備”不限於一個或特定數量的實體物件(比如一個智慧型手機、一個控制器、一個處理系統等)。如本文中所使用的,設備可以是具有可以實現本公開內容的至少一些部分的一個或多個部件的任何電子設備。雖然以下描述和示例使用術語“設備”來描述本公開內容的各個方面,但是術語“設備”不限於特定配置、類型或物件數量。另外,術語“系統”不限於多個組件或特定實施例。例如,系統可以在一個或多個印刷電路板或其它基板上實現,並且可以具有可移動或靜態的組件。雖然以下描述和示例使用術語“系統”來描述本公開內容的各個方面,但是術語“系統”不限於特定配置、類型、或物件數量。
在以上描述中提供具體細節以提供對本文中所提供的實施例和示例的透徹理解。然而,本領域普通技術人員將理解的是,可以在沒有這些具體細節的情況下實踐所述實施例。為了解釋清楚,在一些實例中,本文的技術可以被呈現為包括單獨功能區塊,所述單獨功能區塊包括功能區塊,所述功能區塊包括設備、設備組件、在以軟體體現的方法中的步驟或常式、或者硬體和軟體的組合。除了在圖式中所示和/或本文中所描述的那些組件之外,還可以使用額外的組件。例如,電路、系統、網路、程序和其它組件可以以方塊圖的形式被示為組件,以便不在不必要的細節上模糊所述實施例。在其它實例中,公知的電路、程序、演算法、結構和技術可能被示為不具有不必要的細節,以便避免模糊所述實施例。
上文可能將各個實施例描述為程序或方法,所述程序或方法被描繪為流程圖、流程示意圖、資料流程圖、結構圖或方塊圖。雖然流程圖可能將操作描述為順序的程序,但是這些操作中的許多操作可以平行或併發地執行。另外,可以重新排列操作的次序。程序在其操作完成時被終止,但是可能具有未被包括在圖中的額外的步驟。程序可以對應於方法、函數、程式、子常式、子程式等。當程序與函數相對應時,其終止可以對應於從函數回傳到到呼叫函數或主函數。
根據上文描述的示例的程序和方法可以使用計算機可執行指令來實現,所述計算機可執行指令被儲存在計算機可讀媒體中或者以其它方式可從計算機可讀媒體得到。這樣的指令可以包括例如使得或者配置通用計算機、專用計算機或處理設備執行特定功能或特定的一組功能的指令或資料。可以透過網路存取所使用的計算機資源的各部分。計算機可執行指令可以是例如二進制檔案、中間格式指令(比如組合語言、韌體、原始碼等)。
術語“計算機可讀媒體”包括但不限於可攜式或非可攜式儲存設備、光學儲存設備以及能夠儲存、包含或攜帶指令和/或資料的各種其它媒體。計算機可讀媒體可以包括可以在其中儲存資料的非暫時性媒體,並且不包括無線地或在有線連接上傳播的載波和/或暫時性電子信號。非暫時性媒體的示例可以包括但不限於磁碟或磁帶、光學儲存媒體(比如快閃記憶體)、記憶體或記憶體設備、磁碟或光碟、快閃記憶體、被提供有非揮發性記憶體的USB設備、網路儲存設備、光碟(CD)或數位多功能光碟(DVD)、其任何適當的組合等等。計算機可讀媒體可以具有儲存在其上的程式碼和/或機器可執行指令,所述機器可執行指令可以表示程序、函數、子程式、程式、常式、子常式、模組、軟體封包、類別、或指令、資料結構或程式敘述的任何組合。程式碼段可以透過傳遞和/或接收資訊、資料、引數、參數或記憶體內容來耦接到另一程式碼段或硬體電路。資訊、引數、參數、資料等可以經由任何適當的手段(包括記憶體共享、訊息傳遞、符記傳遞、網路傳輸等)來傳遞、轉發或發送。
在一些實施例中,計算機可讀儲存設備、媒體和記憶體可以包括電纜或包含位元流等的無線信號。然而,當被提及時,非暫時性計算機可讀儲存媒體明確地不包括比如能量、載波信號、電磁波和信號本身之類的媒體。
根據這些公開內容來實現程序和方法的設備可以包括硬體、軟體、韌體、中間軟體、微碼、硬體描述語言或其任何組合,並且可以採用多種形式因子中的任何形式因子。當用軟體、韌體、中間軟體或微碼來實現時,用於執行必要任務的程式碼或碼段(例如,計算機程式產品)可以被儲存在計算機可讀或機器可讀媒體中。處理器可以執行必要任務。形式因子的典型示例包括膝上型計算機、智慧型手機、行動電話、平板設備或其它小型形式因子的個人計算機、個人數位助理、機架式設備、獨立設備等。本文中所描述的功能還可以體現在周邊設備或擴充卡中。透過另外的示例的方式,除了在單個設備中執行的不同晶片和不同程序之外,這樣的功能還可以電路板上實現。
指令、用於傳送這樣的指令的媒體、用於執行它們的計算資源以及用於支持這樣的計算資源的其它結構是用於提供在本公開內容中描述的功能的示例性構件。
在前面的描述中,本申請的各方面是參考其特定實施例來描述的,但是本領域技術人員將認識到,本申請不限於此。因此,雖然本文已經詳細描述了本申請的說明性實施例,但是應理解的是,發明構思可以以其它方式不同地體現和採用,並且所附的申請專利範圍旨在被解釋為包括這樣的變化,除了受到先前技術之限制外。可以單獨地或共同地使用上文描述的應用的各個特徵和方面。此外,在不脫離本說明書的更寬泛的精神和範圍的情況下,實施例可以在除了本文中所描述的環境和應用之外的任何數量的環境和應用中使用。因此,說明書和圖式被認為是說明性的而不是限制性的。為了說明的目的,方法是以特定次序描述的。應當明白的是,在替代實施例中,所述方法可以以與所描述的次序不同的次序來執行。
本領域普通技術人員將明白的是,在不脫離本說明書的範圍的情況下,本文中使用的小於(“<”)和大於(“>”)符號或術語可以分別用小於或等於(“≤”)以及大於或等於(“≥”)符號來替換。
在將組件描述為“被配置為”執行某些操作的情況下,這樣的配置可以例如透過以下方式來實現:透過對電路或其它硬體設計以執行該操作,透過對可編程電路(例如,微處理器或其它適當的電路)進行編程以執行該操作,或其任何組合。
片語“耦接到”是指直接或間接地實體連接到另一組件的任何組件、和/或直接或間接地與另一組件相通信(例如,透過有線或無線連接和/或其它適當的通信介面而連接到另一組件)的任何組件。
記載集合中的“至少一個”和/或集合中的“一個或多個”的請求項語言或其它語言指示該集合中的一個成員或者該集合中(以任何組合)的多個成員滿足該請求項。例如,記載“A和B中的至少一個”或“A或B中的至少一個”的請求項語言意指A、B、或者A和B。在另一示例中,記載“A、B和C中的至少一個”或“A、B或C中的至少一個”的請求項語言意指A、B、C、或A和B、或A和C、或B和C、或A和B和C。關於集合中的“至少一個”和/或集合中的“一個或多個”的語言不將該集合限制為在該集合中列出的項目。例如,記載“A和B中的至少一個”或“A或B中的至少一個”的請求項語言可以意指A、B、或A和B,並且可以另外包括在A和B的集合中未列出的項。
結合本文中公開的實施例描述的各種說明性的邏輯方塊、模組、電路和演算法步驟可以被實現為電子硬體、計算機軟體、韌體或其組合。為了清楚地說明硬體和軟體的這種可互換性,上文已經對各種說明性的組件、方塊、模組、電路和步驟圍繞其功能進行總體描述。這樣的功能被實現為硬體還是軟體取決於特定的應用和施加在整個系統上的設計限制。本領域技術人員可以針對每種特定應用以不同的方式來實現所描述的功能,但是這樣的實現方式的決策不應當被解釋為導致脫離本申請的範圍。
本文中所描述的技術還可以用電子硬體、計算機軟體、韌體或其任何組合來實現。這樣的技術可以在各種設備中的任何設備中實現,比如通用計算機、無線通信設備手機或具有多種用途(包括在無線通信設備手機和其它設備中的應用)的積體電路設備。被描述為模組或組件的任何特徵都可以在積體邏輯設備中一起實現,或者分別作為離散但是可交互運作的邏輯設備來實現。如果用軟體來實現,則所述技術可以至少部分地透過包括程式碼的計算機可讀資料儲存媒體來實現,所處程式碼包括在被執行時執行上文描述的方法中的一種或多種方法的指令。計算機可讀資料儲存媒體可以形成計算機程式產品的一部分,所述計算機程式產品可以包括封裝材料。計算機可讀媒體可以包括記憶體或資料儲存媒體,比如隨機存取記憶體(RAM)(比如同步動態隨機存取記憶體(SDRAM))、唯讀記憶體(ROM)、非揮發性隨機存取記憶體(NVRAM)、電子可抹除可程式化唯讀記憶體(EEPROM)、快閃記憶體、磁或光資料儲存媒體等。另外或替代地,所述技術可以至少部分地透過以指令或資料結構的形式攜帶或傳送程式碼並且可以藉由計算機存取、讀取和/或執行的計算機可讀通信媒體(比如經傳播的信號或波)來實現。
程式碼可以藉由處理器執行,所述處理器可以包括一個或多個處理器,比如一個或多個數位信號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、場域可編程閘陣列(FPGA)或其它等效的積體或離散邏輯電路。這樣的處理器可以被配置為執行在本公開內容中描述的任何技術。通用處理器可以是微處理器,但是在替代方式中,處理器可以是任何常規的處理器、控制器、微控制器或狀態機。處理器也可以被實現為計算設備的組合,例如,DSP和微處理器的組合、多個微處理器、一個或多個微處理器與DSP核心的結合、或任何其它這樣的配置。因此,如本文中所使用的術語“處理器”可以是指任何前述結構、前述結構的任何組合、或適於實現本文中所描述的技術的任何其它結構或裝置。
本公開內容的說明性示例包括:
方面1:處理視頻資料的方法,方法包括:藉由神經網路系統的編碼器部分獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;藉由神經網路系統的編碼器部分產生用於神經網路系統的操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的;藉由神經網路系統的解碼器部分獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;以及至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀,經重構視頻幀表示輸入視頻幀。
方面2:根據方面1所述的方法,還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;以及至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。
方面3:根據方面2所述的方法,還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
方面4:根據方面2或方面3所述的方法,還包括:藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及藉由所述解碼器部分的扭曲後網路處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料;其中,用於操作的所述當前時步的所述經重構視頻幀是基於藉由所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理來產生的。
方面5:根據方面1至方面4中任何方面所述的方法,還包括:藉由神經網路系統的運動估計網路至少部分地基於輸入視頻幀和以下兩者中的至少一項來判定用於操作的當前時步的運動估計資料:來自操作的先前時步的經先前重構視頻幀或來自操作的先前時步的先前輸入視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀或先前輸入視頻幀中的至少一者的一個或多個像素,來產生用於當前時步的經扭曲經重構視頻幀;以及向神經網路系統的編碼器部分發送經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料;其中,被產生用於操作的當前時步的輸出資料是藉由神經網路系統的編碼器部分至少部分地基於經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料來產生的。
方面6:根據方面5所述的方法,還包括:針對一次或多次訓練迭代,使用第一損失函數來訓練神經網路系統,第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失;將第一損失函數停用;以及針對在一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練神經網路系統,第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。
方面7:根據方面1至方面6中任何方面所述的方法,其中,循環狀態資料包括至少一個循環層的節點的一個或多個值。
方面8:根據方面1至方面7中任何方面所述的方法,其中,神經網路系統的解碼器部分包括多個循環層,多個循環層中的每個循環層提供各自的循環狀態資料。
方面9:根據方面1至方面8中任何方面所述的方法,還包括:至少部分地透過使用被判定用於操作的當前時步或操作的先前時步的運動估計資料來修改來自操作的先前時步的循環狀態資料,以產生用於操作的當前時步的經扭曲的循環狀態資料;其中,被產生用於操作的當前時步的經重構視頻幀是至少部分地基於經扭曲的循環狀態資料來產生的。
方面10:根據方面1至方面9中任何方面所述的方法,還包括:藉由解碼器部分產生經重構遮罩,經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及至少部分地基於經重構遮罩、被產生用於操作的當前時步的經扭曲經重構視頻幀和被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀,經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。
方面11:根據方面1至方面10中任何方面所述的方法,還包括:獲得在操作的先前時步期間產生的經先前重構視頻幀;在操作的當前時步期間,至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀;藉由解碼器部分在操作的當前時步期間判定用於操作的當前時步的第一經重構殘差資料;至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀;藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的第二經重構殘差資料;在操作的當前時步期間,使用第二經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
方面12:根據方面1至方面11中任何方面所述的方法,還包括:藉由神經網路系統的編碼器部分獲得一個或多個失真圖;以及藉由神經網路系統的編碼器部分至少部分地基於一個或多個失真圖來產生輸出資料。
方面13:根據方面12所述的方法,其中,一個或多個失真圖包括第一失真圖,第一失真圖指示在用於操作的當前時步的輸入視頻幀與來自操作的先前時步的經先前重構視頻幀之間的失真。
方面14:根據方面12和方面13中任何方面所述的方法,其中,一個或多個失真圖包括第二失真圖,第二失真圖指示在用於操作的當前時步的輸入視頻幀與經扭曲經重構視頻幀之間的失真,經扭曲經重構視頻幀是至少部分地透過修改來自操作的先前時步的經先前重構視頻幀的一個或多個像素來產生的。
方面15:根據方面1至方面14中任何方面所述的方法,還包括:藉由神經網路系統的編碼器部分的第一層處理輸入資料;藉由編碼器部分的第一層判定用於編碼器部分的第一層的多個權重值;將神經網路系統的編碼器部分的第二層的權重設定為多個權重值;以及藉由編碼器部分的第二層使用被設定為多個權重值的權重來處理輸入資料。
方面16:根據方面1至方面15中任何方面所述的方法,還包括:將輸出資料儲存在儲存媒體中。
方面17:根據方面1至方面16中任何方面所述的方法,還包括:將經重構視頻幀儲存在儲存媒體中。
方面18:根據方面1至方面17中任何方面所述的方法,還包括:透過傳輸媒體向至少一個設備發送經重構視頻幀。
方面19:用於處理視頻資料的裝置。裝置包括:記憶體(例如,在電路中實現);以及處理器(或多個處理器),其耦接到記憶體。處理器(或多個處理器)被配置為:藉由神經網路系統的編碼器部分獲得用於神經網路系統的操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;藉由編碼器部分產生用於神經網路系統的操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的;藉由神經網路系統的解碼器部分獲得用於操作的當前時步的輸出資料和來自操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;以及至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀,經重構視頻幀表示輸入視頻幀。
方面20:根據方面19所述的裝置,其中,處理器被配置為:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;以及至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀。
方面21:根據方面20所述的裝置,其中,處理器被配置為:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
方面22:根據方面21和方面22中任何方面所述的裝置,其中,處理器被配置為:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及藉由解碼器部分的扭曲後網路處理經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料;用於操作的當前時步的經重構視頻幀是基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理來產生的。
方面23:根據方面19至方面22中任何方面所述的裝置,其中,處理器被配置為:藉由神經網路系統的運動估計網路至少部分地基於輸入視頻幀和以下兩者中的至少一項來判定用於操作的當前時步的運動估計資料:來自操作的先前時步的經先前重構視頻幀或來自操作的先前時步的先前輸入視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀或先前輸入視頻幀中的至少一者的一個或多個像素,來產生用於當前時步的經扭曲經重構視頻幀;以及向神經網路系統的編碼器部分發送經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料;被產生用於操作的當前時步的輸出資料是藉由神經網路系統的編碼器部分至少部分地基於經扭曲經重構視頻幀和被判定用於操作的當前時步的運動估計資料來產生的。
方面24:根據方面23所述的裝置,其中,所述處理器被配置為:針對一次或多次訓練迭代,使用第一損失函數來訓練神經網路系統,第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失;針對在一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練神經網路系統,第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。
方面25:根據方面19至方面24中任何方面所述的裝置,其中,循環狀態資料包括至少一個循環層的節點的一個或多個值。
方面26:根據方面19至方面25中任何方面所述的裝置,其中,神經網路系統的解碼器部分包括多個循環層,多個循環層中的每個循環層提供各自的循環狀態資料。
方面27:根據方面19至方面26中任何方面所述的裝置,其中,處理器被配置為:至少部分地透過使用被判定用於操作的當前時步或操作的先前時步的運動估計資料來修改來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經扭曲的循環狀態資料;被產生用於操作的當前時步的經重構視頻幀是至少部分地基於經扭曲的循環狀態資料來產生的。
方面28:根據方面19至方面27中任何方面所述的裝置,其中,處理器被配置為:藉由解碼器部分產生經重構遮罩,經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及至少部分地基於經重構遮罩、被產生用於操作的當前時步的經扭曲經重構視頻幀和被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀,經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。
方面29:根據方面19至方面28中任何方面所述的裝置,其中,處理器被配置為:獲得在操作的先前時步期間產生的經先前重構視頻幀;在操作的當前時步期間,至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀;藉由解碼器部分在操作的當前時步期間判定用於操作的當前時步的第一經重構殘差資料;至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀;藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的第二經重構殘差資料;在操作的當前時步期間,使用第二經重構殘差資料來修改經先前重構視頻幀;輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
方面30:根據方面19至方面29中任何方面所述的裝置,其中,處理器被配置為:藉由神經網路系統的編碼器部分獲得一個或多個失真圖;以及藉由神經網路系統的編碼器部分至少部分地基於一個或多個失真圖來產生輸出資料。
方面31:根據方面30所述的裝置,其中,一個或多個失真圖包括第一失真圖,第一失真圖指示在用於操作的當前時步的輸入視頻幀與來自操作的先前時步的經先前重構視頻幀之間的失真。
方面32:根據方面30和方面31中任何方面所述的裝置,其中,一個或多個失真圖包括第二失真圖,第二失真圖指示在用於操作的當前時步的輸入視頻幀與經扭曲經重構視頻幀之間的失真,經扭曲經重構視頻幀是至少部分地透過修改來自操作的先前時步的經先前重構視頻幀的一個或多個像素來產生的。
方面33:根據方面19至方面32中任何方面所述的裝置,其中,處理器被配置為:藉由神經網路系統的編碼器部分的第一層處理輸入資料;藉由編碼器部分的第一層判定用於編碼器部分的第一層的多個權重值;將神經網路系統的編碼器部分的第二層的權重設定為多個權重值;藉由編碼器部分的第二層使用被設定為多個權重值的權重來處理輸入資料。
方面34:根據方面19至方面33中任何方面所述的裝置,其中,處理器被配置為:使得輸出資料被儲存在記憶體中。
方面35:根據方面19至方面34中任何方面所述的裝置,其中,處理器被配置為:使得經重構視頻幀被儲存在記憶體中。
方面36:根據方面19至方面35中任何方面所述的裝置,還包括:發射機,其被配置為透過傳輸媒體向至少一個設備發送經重構視頻幀。
方面37:根據方面19至方面36中任何方面所述的裝置,其中,處理器包括神經處理單元(NPU)。
方面38:根據方面19至方面37中任何方面所述的裝置,其中,裝置包括行動設備。
方面39:根據方面19至方面37中任何方面所述的裝置,其中,裝置包括擴展實境設備。
方面40:根據方面19至方面37中任何方面所述的裝置,其中,裝置包括電視機。
方面41:根據方面19至方面39中任何方面所述的裝置,還包括顯示器。
方面42:根據方面19至方面41中任何方面所述的裝置,其中,裝置包括被配置為擷取一個或多個視頻幀的相機。
方面43:處理視頻資料的方法,方法包括:藉由神經網路系統的解碼器部分獲得用於神經網路系統的操作的當前時步的輸出資料和來自神經網路系統的操作的先前時步的來自解碼器部分的至少一個循環層的循環狀態資料;藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料來判定用於操作的當前時步的運動估計資料;獲得在操作的先前時步期間產生的經先前重構視頻幀;至少部分地透過使用被判定用於當前時步的運動估計資料來修改經先前重構視頻幀的一個或多個像素,來產生用於操作的當前時步的經扭曲經重構視頻幀;以及至少部分地基於經扭曲經重構視頻幀來產生用於操作的當前時步的經重構視頻幀。
方面44:根據方面43所述的方法,還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;以及至少部分地透過將經扭曲經重構視頻幀加到被判定用於當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀。
方面45:根據方面43和方面44中任何方面所述的方法,還包括:藉由解碼器部分在操作的當前時步期間,至少部分地基於藉由神經網路系統的編碼器部分在操作的當前時步期間處理的先前輸入視頻幀,來判定來自操作的先前時步的經重構殘差資料;在操作的當前時步期間,使用來自操作的先前時步的經重構殘差資料來修改經先前重構視頻幀;以及輸出經修改的經先前重構視頻幀作為用於操作的當前時步的最終輸出視頻幀。
方面46:根據方面43至方面45中任何方面所述的方法,還包括:藉由神經網路系統的解碼器部分至少部分地基於輸出資料和來自操作的先前時步的循環狀態資料,來判定用於操作的當前時步的經重構殘差資料;藉由解碼器部分的扭曲後網路處理經扭曲經重構視頻幀和被判定用於當前時步的經重構殘差資料;以及至少部分地基於藉由扭曲後網路對經扭曲經重構視頻幀和經重構殘差資料的處理,來產生用於操作的當前時步的經重構視頻幀。
方面47:根據方面43至方面46中任何方面所述的方法,還包括:至少部分地透過使用被判定用於操作的當前時步的運動估計資料或被判定用於操作的先前時步的運動估計來修改來自操作的先前時步的循環狀態資料,來產生用於操作的當前時步的經扭曲的循環狀態資料;以及至少部分地基於經扭曲的循環狀態資料,來產生用於操作的當前時步的經重構視頻幀。
方面48:根據方面43至方面47中任何方面所述的方法,還包括:藉由解碼器部分產生經重構遮罩,經重構遮罩包括指示在操作的先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及至少部分地基於經重構遮罩、用於操作的當前時步的經扭曲經重構視頻幀和被判定用於操作的當前時步的經重構殘差資料,來產生用於操作的當前時步的經重構視頻幀,經重構遮罩對經扭曲經重構視頻幀和經重構殘差資料的貢獻進行加權。
方面49:根據方面43至方面48中任何方面所述的方法,還包括:藉由神經網路系統的編碼器部分獲得用於操作的所述當前時步的輸入視頻幀、來自所述神經網路系統的操作的先前時步的經重構運動估計資料、來自所述神經網路系統的操作的所述先前時步的經重構殘差資料以及來自操作的所述先前時步的來自所述神經網路系統的所述解碼器部分的至少一個循環層的循環狀態資料;以及藉由所述神經網路系統的所述編碼器部分產生用於操作的所述當前時步的所述輸出資料,所述輸出資料是至少部分地基於所述輸入視頻幀、來自操作的所述先前時步的所述經重構運動估計資料、來自操作的所述先前時步的所述經重構殘差資料以及來自操作的所述先前時步的所述循環狀態資料所產生的。
方面50:一種用於處理視頻資料的裝置。所述裝置包括:記憶體(例如,在電路中實現);以及處理器(或多個處理器),其耦接到所述記憶體。所述處理器(或多個處理器)被配置為:透過神經網路系統的解碼器部分獲得用於所述神經網路系統的操作的當前時步的輸出資料和來自所述神經網路系統的操作的先前時步的來自所述解碼器部分的至少一個循環層的循環狀態資料;透過所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料來判定用於操作的所述當前時步的運動估計資料;獲得在操作的所述先前時步期間產生的經先前重構視頻幀;至少部分地透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀的一個或多個像素,來產生用於操作的所述當前時步的經扭曲經重構視頻幀;至少部分地基於所述經扭曲經重構視頻幀來產生用於操作的所述當前時步的經重構視頻幀。
方面51:根據方面50所述的裝置,其中,所述處理器被配置為:透過所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;至少部分地透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
方面52:根據方面50和方面51中任何方面所述的裝置,其中,所述處理器被配置為:透過所述解碼器部分在操作的所述當前時步期間,至少部分地基於藉由所述神經網路系統的編碼器部分在操作的所述當前時步期間處理的先前輸入視頻幀,來判定來自操作的所述先前時步的經重構殘差資料;在操作的所述當前時步期間,使用來自操作的所述先前時步的所述經重構殘差資料來修改所述經先前重構視頻幀;輸出經修改的經先前重構視頻幀作為用於操作的所述當前時步的最終輸出視頻幀。
方面53:根據方面50至方面52中任何方面所述的裝置,其中,所述處理器被配置為:透過所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;透過所述解碼器部分的扭曲後網路處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料;至少部分地基於所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理,來產生用於操作的所述當前時步的所述經重構視頻幀。
方面54:根據方面50至方面53中任何方面所述的裝置,其中,所述處理器被配置為:至少部分地透過使用被判定用於操作的所述當前時步的所述運動估計資料或被判定用於操作的所述先前時步的運動估計來修改來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經扭曲的循環狀態資料;以及至少部分地基於所述經扭曲的循環狀態資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
方面55:根據方面50至方面54中任何方面所述的裝置,其中,所述處理器被配置為:透過所述解碼器部分產生經重構遮罩,所述經重構遮罩包括指示在操作的所述先前時步期間產生的所述經先前重構視頻幀中存在資料的一個或多個值;至少部分地基於所述經重構遮罩、用於操作的所述當前時步的所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀,所述經重構遮罩對所述經扭曲經重構視頻幀和所述經重構殘差資料的貢獻進行加權。
方面56:根據方面50至方面55中任何方面所述的裝置,其中,處理器被配置為:透過神經網路系統的編碼器部分獲得用於操作的當前時步的輸入視頻幀、來自神經網路系統的操作的先前時步的經重構運動估計資料、來自神經網路系統的操作的先前時步的經重構殘差資料以及來自操作的先前時步的來自神經網路系統的解碼器部分的至少一個循環層的循環狀態資料;透過神經網路系統的編碼器部分產生用於操作的當前時步的輸出資料,輸出資料是至少部分地基於輸入視頻幀、來自操作的先前時步的經重構運動估計資料、來自操作的先前時步的經重構殘差資料以及來自操作的先前時步的循環狀態資料所產生的。
方面57:根據方面50至方面56中任何方面所述的裝置,其中,處理器被配置為:使得經重構視頻幀被儲存在記憶體中。
方面58:根據方面50至方面57中任何方面所述的裝置,其中,處理器被配置為:使得經重構視頻幀被顯示。
方面59:根據方面50至方面58中任何方面所述的裝置,還包括被配置為顯示經重構視頻幀的顯示器。
方面60:根據方面50至方面59中任何方面所述的裝置,其中,處理器包括神經處理單元(NPU)。
方面61:根據方面50至方面60中任何方面所述的裝置,其中,裝置包括行動設備。
方面62:根據方面50至方面60中任何方面所述的裝置,其中,裝置包括擴展實境設備。
方面63:根據方面50至方面60中任何方面所述的裝置,其中,裝置包括電視機。
方面64:根據方面50至方面63中任何方面所述的裝置,其中,裝置包括被配置為擷取一個或多個視頻幀的相機。
方面65:儲存指令的計算機可讀儲存媒體,所述指令在被執行時使得一個或多個處理器執行請求項1至請求項18的操作中的任何操作。
方面66:裝置,其包括用於執行根據請求項1至請求項18的操作中的任何操作的構件。
方面67:儲存指令的計算機可讀儲存媒體,所述指令在被執行時使得一個或多個處理器執行請求項43至請求項49的操作中的任何操作。
方面68:裝置,其包括用於執行請求項43至請求項49的操作中的任何操作的構件。
方面69:儲存指令的計算機可讀儲存媒體,所述指令在被執行時使得一個或多個處理器執行請求項1至請求項18的操作中的任何操作以及請求項43至請求項49的操作中的任何操作。
方面70:裝置,其包括用於執行請求項1至請求項18的操作中的任何操作以及請求項43至請求項49的操作中的任何操作的構件。
100:單晶片系統(SOC) 102:中央處理單元(CPU) 104:圖形處理單元(GPU) 106:數位信號處理器(DSP) 108:神經處理單元(NPU) 110:連接區塊 112:多媒體處理器 114:感測器處理器 116:圖像信號處理器(ISP) 118:記憶體區塊 120:導航模組 200:深度卷積網路(DCN) 202:全連接神經網路 204:局域連接神經網路 206:卷積神經網路 208:連接強度 210:連接強度 212:連接強度 214:連接強度 216:連接強度 218:第一特徵圖集合 220:第二特徵圖集合 222:輸出 224:第一特徵向量 226:圖像 228:第二特徵向量 230:從圖像擷取設備 232:卷積層 350:深度卷積網路 352:輸入資料 354A:卷積區塊 354B:卷積區塊 356:卷積層(CONV) 358:標準化層(LNorm) 360:最大池化層(MAX POOL) 362A:全連接層 362B:全連接層 364:邏輯迴歸(LR)層 366:分類得分 400:系統 402:設備 404:處理器 406:記憶體 407:相機 408:圖像資料 410:第一神經網路系統 411:第二神經網路系統 412:第一介面 414:儲存媒體 416:第二介面 432:編碼器部分 418:傳輸媒體 433:神經網路 434:量化器 436:解碼器部分 438:神經網路 440:輸入資料 442:中間資料 444:輸出資料 446:表達 450:第一狀態資料 452:第二狀態資料 462:編碼器部分 463:神經網路 464:量化器 466:解碼器部分 468:神經網路 470:輸入資料 472:中間資料 474:輸出資料 476:表達 490:第二設備 500:系統 510:神經網路系統 511:神經網路系統 533:編碼器 534:量化器 538:解碼器 563:I幀編碼器 564:量化器 567:扭曲引擎 568:I幀解碼器 569:加法器引擎 570:預循環解碼器層 571:循環層 572:後循環層 574:扭曲後網路 575:運動估計網路 576:扭曲引擎 577:失真圖 578:失真圖 580:輸入 581:線性層 582:線性層 583:權重 602:基於區塊的運動估計技術 604:光流運動估計技術 606:動態卷積(自適應卷積)運動估計技術 1034:瓶頸 1070a:前向層 1070b:前向層 1070c:前向層 1071:循環層 1073:前向層 1800:程序 1802:步驟 1804:步驟 1806:步驟 1808:步驟 1900:程序 1902:步驟 1904:步驟 1906:步驟 1908:步驟 1910:步驟 2000:計算設備架構 2005:連接 2010:處理器 2012:快取 2015:記憶體 2020:唯讀記憶體(ROM) 2025:隨機存取記憶體(RAM) 2030:儲存設備 2032:服務1 2034:服務2 2035:輸出設備 2036:服務3 2040:通信介面 2045:輸入設備
本申請的說明性實施例將參照以下圖式詳細地描述:
圖1示出單晶片系統(SOC)的示例實現方式;
圖2A示出全連接神經網路的示例;
圖2B示出局域連接神經網路的示例;
圖2C示出卷積神經網路的示例;
圖2D示出被設計為從圖像中識別視覺特徵的深度卷積網路(DCN)的詳細示例;
圖3是示出深度卷積網路(DCN)的方塊圖;
圖4是示出根據一些示例的系統的示例的示意圖,該系統包括可操作以使用基於循環的神經網路來執行視頻譯碼的設備;
圖5A是示出根據一些示例的用於視頻譯碼的神經網路系統的示例的示意圖;
圖5B是示出根據一些示例的用於視頻譯碼的基於循環的神經網路的詳細示例的示意圖;
圖6是示出根據一些示例的運動估計和運動補償技術的示例的示意圖;
圖7是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖8是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖9是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖10是示出根據一些示例的單階循環配置和多階循環配置的示例的示意圖;
圖11是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖12是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖13是示出根據一些示例的用於視頻譯碼的基於循環的神經網路系統的另一示例的示意圖;
圖14是示出根據一些示例的使用失真圖作為基於循環的神經網路系統的輸入的示例的示意圖;
圖15是示出根據一些示例的使用在基於循環的神經網路系統中的額外神經網路層的示例的示意圖;
圖16是示出根據一些示例的使用本文中所描述的技術獲得的結果相比於使用其它技術獲得的結果的示例的曲線圖;
圖17是示出根據一些示例的使用本文中所描述的技術獲得的結果相比於使用其它技術獲得的結果的示例的曲線圖;
圖18是示出根據一些示例的用於處理視頻資料的程序的示例的流程圖;
圖19是示出根據一些示例的用於處理視頻資料的程序的另一示例的流程圖;以及
圖20示出可以實現本文中所描述的各種技術的示例計算設備的示例計算設備架構。
500:系統
510:神經網路系統
511:神經網路系統
533:編碼器
534:量化器
538:解碼器
563:I幀編碼器
564:量化器
567:扭曲引擎
568:I幀解碼器
569:加法器引擎
570:預循環解碼器層
571:循環層
572:後循環層

Claims (64)

  1. 一種處理視頻資料的方法,所述方法包括: 藉由神經網路系統的編碼器部分獲得用於所述神經網路系統的操作的當前時步的輸入視頻幀、來自所述神經網路系統的操作的先前時步的經重構運動估計資料、來自所述神經網路系統的操作的所述先前時步的經重構殘差資料以及來自操作的所述先前時步的來自所述神經網路系統的解碼器部分的至少一個循環層的循環狀態資料; 藉由所述神經網路系統的所述編碼器部分產生用於所述神經網路系統的操作的所述當前時步的輸出資料,所述輸出資料是至少部分地基於所述輸入視頻幀、來自操作的所述先前時步的所述經重構運動估計資料、來自操作的所述先前時步的所述經重構殘差資料及來自操作的所述先前時步的所述循環狀態資料所產生的; 藉由所述神經網路系統的所述解碼器部分獲得用於操作的所述當前時步的所述輸出資料和來自操作的所述先前時步的來自所述解碼器部分的所述至少一個循環層的所述循環狀態資料;以及 至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經重構視頻幀,所述經重構視頻幀表示所述輸入視頻幀。
  2. 根據請求項1所述的方法,還包括: 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料來判定用於操作的所述當前時步的運動估計資料; 獲得在操作的所述先前時步期間產生的經先前重構視頻幀;以及 至少部分地透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀的一個或多個像素,來產生用於操作的所述當前時步的經扭曲經重構視頻幀。
  3. 根據請求項2所述的方法,還包括: 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 至少部分地透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  4. 根據請求項2所述的方法,還包括: 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 藉由所述解碼器部分的扭曲後網路處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料; 其中,用於操作的所述當前時步的所述經重構視頻幀是基於藉由所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理來產生的。
  5. 根據請求項1所述的方法,還包括: 藉由所述神經網路系統的運動估計網路至少部分地基於所述輸入視頻幀和以下兩者中的至少一項來判定用於操作的所述當前時步的運動估計資料:來自操作的所述先前時步的經先前重構視頻幀或來自操作的所述先前時步的先前輸入視頻幀; 至少部分地透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀或所述先前輸入視頻幀中的至少一者的一個或多個像素,以產生用於所述當前時步的經扭曲經重構視頻幀;以及 向所述神經網路系統的所述編碼器部分發送所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的所述運動估計資料; 其中,被產生用於操作的所述當前時步的所述輸出資料是藉由所述神經網路系統的所述編碼器部分至少部分地基於所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的所述運動估計資料來產生的。
  6. 根據請求項5所述的方法,還包括: 針對一次或多次訓練迭代,使用第一損失函數來訓練所述神經網路系統,所述第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失; 停用所述第一損失函數;以及 針對在所述一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練所述神經網路系統,所述第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。
  7. 根據請求項1所述的方法,其中,所述循環狀態資料包括所述至少一個循環層的節點的一個或多個值。
  8. 根據請求項1所述的方法,其中,所述神經網路系統的所述解碼器部分包括多個循環層,所述多個循環層中的每個循環層提供各自的循環狀態資料。
  9. 根據請求項1所述的方法,還包括: 至少部分地透過使用被判定用於操作的所述當前時步或操作的所述先前時步的運動估計資料來修改來自操作的所述先前時步的所述循環狀態資料,以產生用於操作的所述當前時步的經扭曲的循環狀態資料; 其中,被產生用於操作的所述當前時步的所述經重構視頻幀是至少部分地基於所述經扭曲的循環狀態資料來產生的。
  10. 根據請求項1所述的方法,還包括: 藉由所述解碼器部分產生經重構遮罩,所述經重構遮罩包括指示在操作的所述先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及 至少部分地基於所述經重構遮罩、被產生用於操作的所述當前時步的經扭曲經重構視頻幀和被判定用於操作的所述當前時步的經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀,所述經重構遮罩對所述經扭曲經重構視頻幀和所述經重構殘差資料的貢獻進行加權。
  11. 根據請求項1所述的方法,還包括: 獲得在操作的所述先前時步期間產生的經先前重構視頻幀; 在操作的所述當前時步期間,至少部分地透過使用被判定用於所述當前時步的運動估計資料來修改所述經先前重構視頻幀的一個或多個像素,以產生用於操作的所述當前時步的經扭曲經重構視頻幀; 藉由所述解碼器部分在操作的所述當前時步期間判定用於操作的所述當前時步的第一經重構殘差資料; 至少部分地透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀; 藉由所述解碼器部分在操作的所述當前時步期間,至少部分地基於藉由所述編碼器部分在操作的所述當前時步期間處理的先前輸入視頻幀,來判定來自操作的所述先前時步的第二經重構殘差資料; 在操作的所述當前時步期間,使用所述第二經重構殘差資料來修改所述經先前重構視頻幀;以及 輸出經修改的經先前重構視頻幀作為用於操作的所述當前時步的最終輸出視頻幀。
  12. 根據請求項1所述的方法,還包括: 藉由所述神經網路系統的所述編碼器部分獲得一個或多個失真圖;以及 藉由所述神經網路系統的所述編碼器部分至少部分地基於所述一個或多個失真圖來產生所述輸出資料。
  13. 根據請求項12所述的方法,其中,所述一個或多個失真圖包括第一失真圖,所述第一失真圖指示在用於操作的所述當前時步的所述輸入視頻幀與來自操作的所述先前時步的經先前重構視頻幀之間的失真。
  14. 根據請求項12所述的方法,其中,所述一個或多個失真圖包括第二失真圖,所述第二失真圖指示在用於操作的所述當前時步的所述輸入視頻幀與經扭曲經重構視頻幀之間的失真,所述經扭曲經重構視頻幀是至少部分地透過修改來自操作的所述先前時步的經先前重構視頻幀的一個或多個像素來產生的。
  15. 根據請求項1所述的方法,還包括: 藉由所述神經網路系統的所述編碼器部分的第一層處理輸入資料; 藉由所述編碼器部分的所述第一層判定用於所述編碼器部分的所述第一層的多個權重值; 將所述神經網路系統的所述編碼器部分的第二層的權重設定為所述多個權重值;以及 藉由所述編碼器部分的所述第二層使用被設定為所述多個權重值的所述權重來處理所述輸入資料。
  16. 根據請求項1所述的方法,還包括: 將所述輸出資料儲存在儲存媒體中。
  17. 根據請求項1所述的方法,還包括: 將所述經重構視頻幀儲存在儲存媒體中。
  18. 根據請求項1所述的方法,還包括: 透過傳輸媒體向至少一個設備發送所述經重構視頻幀。
  19. 一種用於處理視頻資料的裝置,包括: 記憶體;以及 處理器,其耦接到所述記憶體並且被配置為: 使用神經網路系統的編碼器部分來獲得用於所述神經網路系統的操作的當前時步的輸入視頻幀、來自所述神經網路系統的操作的先前時步的經重構運動估計資料、來自所述神經網路系統的操作的所述先前時步的經重構殘差資料及來自操作的所述先前時步的來自所述神經網路系統的解碼器部分的至少一個循環層的循環狀態資料; 使用所述編碼器部分來產生用於所述神經網路系統的操作的所述當前時步的輸出資料,所述輸出資料是至少部分地基於所述輸入視頻幀、來自操作的所述先前時步的所述經重構運動估計資料、來自操作的所述先前時步的所述經重構殘差資料以及來自操作的所述先前時步的所述循環狀態資料所產生的; 使用神經網路系統的所述解碼器部分來獲得用於操作的所述當前時步的所述輸出資料和來自操作的所述先前時步的來自所述解碼器部分的所述至少一個循環層的所述循環狀態資料;以及 至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經重構視頻幀,所述經重構視頻幀表示所述輸入視頻幀。
  20. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的運動估計資料; 獲得在操作的所述先前時步期間產生的經先前重構視頻幀;以及 透過使用被判定用於所述當前時步的所述運動估計資料修改所述經先前重構視頻幀的一個或多個像素,來產生用於操作的所述當前時步的經扭曲經重構視頻幀。
  21. 根據請求項20所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  22. 根據請求項21所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 使用所述解碼器部分的扭曲後網路來處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料; 其中,用於操作的所述當前時步的所述經重構視頻幀是基於藉由所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理來產生的。
  23. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的運動估計網路至少部分地基於所述輸入視頻幀和以下兩者中的至少一項來判定用於操作的所述當前時步的運動估計資料:來自操作的所述先前時步的經先前重構視頻幀或來自操作的所述先前時步的先前輸入視頻幀; 透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀或所述先前輸入視頻幀中的至少一者的一個或多個像素,以產生用於所述當前時步的經扭曲經重構視頻幀;以及 向所述神經網路系統的所述編碼器部分發送所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的所述運動估計資料; 其中,被產生用於操作的所述當前時步的所述輸出資料是藉由所述神經網路系統的所述編碼器部分至少部分地基於所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的所述運動估計資料來產生的。
  24. 根據請求項23所述的裝置,其中,所述處理器被配置為: 針對一次或多次訓練迭代,使用第一損失函數來訓練所述神經網路系統,所述第一損失函數判定在一個或多個輸入視頻幀與一個或多個經扭曲經重構視頻幀之間的損失; 停用所述第一損失函數;以及 針對在所述一次或多次訓練迭代之後執行的一次或多次後續訓練迭代,使用第二損失函數來訓練所述神經網路系統,所述第二損失函數判定在至少一個輸入視頻幀與至少一個經重構視頻幀之間的損失。
  25. 根據請求項19所述的裝置,其中,所述循環狀態資料包括所述至少一個循環層的節點的一個或多個值。
  26. 根據請求項19所述的裝置,其中,所述神經網路系統的所述解碼器部分包括多個循環層,所述多個循環層中的每個循環層提供各自的循環狀態資料。
  27. 根據請求項19所述的裝置,其中,所述處理器被配置為: 透過使用被判定用於操作的所述當前時步或操作的所述先前時步的運動估計資料修改來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經扭曲的循環狀態資料; 其中,被產生用於操作的所述當前時步的所述經重構視頻幀是至少部分地基於所述經扭曲的循環狀態資料來產生的。
  28. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使用所述解碼器部分產生經重構遮罩,所述經重構遮罩包括指示在操作的所述先前時步期間產生的經先前重構視頻幀中存在資料的一個或多個值;以及 使用所述解碼器部分至少部分地基於所述經重構遮罩、被產生用於操作的所述當前時步的經扭曲經重構視頻幀和被判定用於操作的所述當前時步的經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀,所述經重構遮罩對所述經扭曲經重構視頻幀和所述經重構殘差資料的貢獻進行加權。
  29. 根據請求項19所述的裝置,其中,所述處理器被配置為: 獲得在操作的所述先前時步期間產生的經先前重構視頻幀; 使用所述解碼器部分在操作的所述當前時步期間,透過使用被判定用於所述當前時步的運動估計資料修改所述經先前重構視頻幀的一個或多個像素,來產生用於操作的所述當前時步的經扭曲經重構視頻幀; 使用所述解碼器部分在操作的所述當前時步期間判定用於操作的所述當前時步的第一經重構殘差資料; 透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀; 使用所述解碼器部分在操作的所述當前時步期間,至少部分地基於藉由所述編碼器部分在操作的所述當前時步期間處理的先前輸入視頻幀,來判定來自操作的所述先前時步的第二經重構殘差資料; 使用所述解碼器部分在操作的所述當前時步期間,使用所述第二經重構殘差資料來修改所述經先前重構視頻幀;以及 輸出經修改的經先前重構視頻幀作為用於操作的所述當前時步的最終輸出視頻幀。
  30. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述編碼器部分獲得一個或多個失真圖;以及 使用所述神經網路系統的所述編碼器部分至少部分地基於所述一個或多個失真圖來產生所述輸出資料。
  31. 根據請求項30所述的裝置,其中,所述一個或多個失真圖包括第一失真圖,所述第一失真圖指示在用於操作的所述當前時步的所述輸入視頻幀與來自操作的所述先前時步的經先前重構視頻幀之間的失真。
  32. 根據請求項30所述的裝置,其中,所述一個或多個失真圖包括第二失真圖,所述第二失真圖指示在用於操作的所述當前時步的所述輸入視頻幀與經扭曲經重構視頻幀之間的失真,所述經扭曲經重構視頻幀是透過修改來自操作的所述先前時步的經先前重構視頻幀的一個或多個像素來產生的。
  33. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述編碼器部分的第一層來處理輸入資料; 使用所述編碼器部分的所述第一層來判定用於所述編碼器部分的所述第一層的多個權重值; 將所述神經網路系統的所述編碼器部分的第二層的權重設定為所述多個權重值;以及 藉由所述編碼器部分的所述第二層使用被設定為所述多個權重值的所述權重來處理所述輸入資料。
  34. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使得所述輸出資料被儲存在所述記憶體中。
  35. 根據請求項19所述的裝置,其中,所述處理器被配置為: 使得所述經重構視頻幀被儲存在所述記憶體中。
  36. 根據請求項19所述的裝置,還包括: 發射機,其被配置為透過傳輸媒體向至少一個設備發送所述經重構視頻幀。
  37. 根據請求項19所述的裝置,其中,所述處理器包括神經處理單元(NPU)。
  38. 根據請求項19所述的裝置,其中,所述裝置包括行動設備。
  39. 根據請求項19所述的裝置,其中,所述裝置包括擴展實境設備。
  40. 根據請求項19所述的裝置,還包括顯示器。
  41. 根據請求項19所述的裝置,其中,所述裝置包括電視機。
  42. 根據請求項19所述的裝置,其中,所述裝置包括被配置為擷取一個或多個視頻幀的相機。
  43. 一種處理視頻資料的方法,所述方法包括: 藉由神經網路系統的解碼器部分獲得用於所述神經網路系統的操作的當前時步的輸出資料和來自所述神經網路系統的操作的先前時步的來自所述解碼器部分的至少一個循環層的循環狀態資料; 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料來判定用於操作的所述當前時步的運動估計資料; 獲得在操作的所述先前時步期間產生的經先前重構視頻幀; 至少部分地透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀的一個或多個像素,以產生用於操作的所述當前時步的經扭曲經重構視頻幀;以及 至少部分地基於所述經扭曲經重構視頻幀來產生用於操作的所述當前時步的經重構視頻幀。
  44. 根據請求項43所述的方法,還包括: 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 至少部分地透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  45. 根據請求項44所述的方法,還包括: 藉由所述解碼器部分在操作的所述當前時步期間,至少部分地基於藉由所述神經網路系統的編碼器部分在操作的所述當前時步期間處理的先前輸入視頻幀,來判定來自操作的所述先前時步的經重構殘差資料; 在操作的所述當前時步期間,使用來自操作的所述先前時步的所述經重構殘差資料來修改所述經先前重構視頻幀;以及 輸出經修改的經先前重構視頻幀作為用於操作的所述當前時步的最終輸出視頻幀。
  46. 根據請求項43所述的方法,還包括: 藉由所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料; 藉由所述解碼器部分的扭曲後網路處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料;以及 至少部分地基於藉由所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理,來產生用於操作的所述當前時步的所述經重構視頻幀。
  47. 根據請求項43所述的方法,還包括: 至少部分地透過使用被判定用於操作的所述當前時步的所述運動估計資料或被判定用於操作的所述先前時步的運動估計來修改來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經扭曲的循環狀態資料;以及 至少部分地基於所述經扭曲的循環狀態資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  48. 根據請求項43所述的方法,還包括: 藉由所述解碼器部分產生經重構遮罩,所述經重構遮罩包括指示在操作的所述先前時步期間產生的所述經先前重構視頻幀中存在資料的一個或多個值;以及 至少部分地基於所述經重構遮罩、用於操作的所述當前時步的所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀,所述經重構遮罩對所述經扭曲經重構視頻幀和所述經重構殘差資料的貢獻進行加權。
  49. 根據請求項43所述的方法,還包括: 藉由所述神經網路系統的編碼器部分獲得用於操作的所述當前時步的輸入視頻幀、來自所述神經網路系統的操作的先前時步的經重構運動估計資料、來自所述神經網路系統的操作的所述先前時步的經重構殘差資料以及來自操作的所述先前時步的來自所述神經網路系統的所述解碼器部分的至少一個循環層的循環狀態資料;以及 藉由所述神經網路系統的所述編碼器部分產生用於操作的所述當前時步的所述輸出資料,所述輸出資料是至少部分地基於所述輸入視頻幀、來自操作的所述先前時步的所述經重構運動估計資料、來自操作的所述先前時步的所述經重構殘差資料以及來自操作的所述先前時步的所述循環狀態資料所產生的。
  50. 一種用於處理視頻資料的裝置,包括: 記憶體;以及 處理器,其耦接到所述記憶體並且被配置為: 使用神經網路系統的解碼器部分來獲得用於所述神經網路系統的操作的當前時步的輸出資料和來自所述神經網路系統的操作的先前時步的來自所述解碼器部分的至少一個循環層的循環狀態資料; 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料來判定用於操作的所述當前時步的運動估計資料; 獲得在操作的所述先前時步期間產生的經先前重構視頻幀; 至少部分地透過使用被判定用於所述當前時步的所述運動估計資料來修改所述經先前重構視頻幀的一個或多個像素,以產生用於操作的所述當前時步的經扭曲經重構視頻幀;以及 至少部分地基於所述經扭曲經重構視頻幀來產生用於操作的所述當前時步的經重構視頻幀。
  51. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料;以及 至少部分地透過將所述經扭曲經重構視頻幀加到被判定用於所述當前時步的所述經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  52. 根據請求項51所述的裝置,其中,所述處理器被配置為: 使用所述解碼器部分在操作的所述當前時步期間,至少部分地基於藉由所述神經網路系統的編碼器部分在操作的所述當前時步期間處理的先前輸入視頻幀,來判定來自操作的所述先前時步的經重構殘差資料; 在操作的所述當前時步期間,使用來自操作的所述先前時步的所述經重構殘差資料來修改所述經先前重構視頻幀;以及 輸出經修改的經先前重構視頻幀作為用於操作的所述當前時步的最終輸出視頻幀。
  53. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使用所述神經網路系統的所述解碼器部分至少部分地基於所述輸出資料和來自操作的所述先前時步的所述循環狀態資料,來判定用於操作的所述當前時步的經重構殘差資料; 使用所述解碼器部分的扭曲後網路來處理所述經扭曲經重構視頻幀和被判定用於所述當前時步的所述經重構殘差資料;以及 至少部分地基於藉由所述扭曲後網路對所述經扭曲經重構視頻幀和所述經重構殘差資料的處理,來產生用於操作的所述當前時步的所述經重構視頻幀。
  54. 根據請求項50所述的裝置,其中,所述處理器被配置為: 至少部分地透過使用被判定用於操作的所述當前時步的所述運動估計資料或被判定用於操作的所述先前時步的運動估計來修改來自操作的所述先前時步的所述循環狀態資料,來產生用於操作的所述當前時步的經扭曲的循環狀態資料;以及 至少部分地基於所述經扭曲的循環狀態資料,來產生用於操作的所述當前時步的所述經重構視頻幀。
  55. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使用所述解碼器部分產生經重構遮罩,所述經重構遮罩包括指示在操作的所述先前時步期間產生的所述經先前重構視頻幀中存在資料的一個或多個值;以及 至少部分地基於所述經重構遮罩、用於操作的所述當前時步的所述經扭曲經重構視頻幀和被判定用於操作的所述當前時步的經重構殘差資料,來產生用於操作的所述當前時步的所述經重構視頻幀,所述經重構遮罩對所述經扭曲經重構視頻幀和所述經重構殘差資料的貢獻進行加權。
  56. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使用神經網路系統的編碼器部分來獲得用於操作的所述當前時步的輸入視頻幀、來自所述神經網路系統的操作的先前時步的經重構運動估計資料、來自所述神經網路系統的操作的所述先前時步的經重構殘差資料以及來自操作的所述先前時步的來自所述神經網路系統的所述解碼器部分的至少一個循環層的循環狀態資料;以及 使用所述神經網路系統的所述編碼器部分產生用於操作的所述當前時步的所述輸出資料,所述輸出資料是至少部分地基於所述輸入視頻幀、來自操作的所述先前時步的所述經重構運動估計資料、來自操作的所述先前時步的所述經重構殘差資料以及來自操作的所述先前時步的所述循環狀態資料所產生的。
  57. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使得所述經重構視頻幀被儲存在所述記憶體中。
  58. 根據請求項50所述的裝置,其中,所述處理器被配置為: 使得所述經重構視頻幀被顯示。
  59. 根據請求項50所述的裝置,還包括: 顯示器,被配置為顯示所述經重構視頻幀。
  60. 根據請求項50所述的裝置,其中,所述處理器包括神經處理單元(NPU)。
  61. 根據請求項50所述的裝置,其中,所述裝置包括行動設備。
  62. 根據請求項50所述的裝置,其中,所述裝置包括擴展實境設備。
  63. 根據請求項50所述的裝置,其中,所述裝置包括電視機。
  64. 根據請求項50所述的裝置,其中,所述裝置包括被配置為擷取一個或多個視頻幀的相機。
TW110101726A 2020-03-03 2021-01-15 使用基於循環的機器學習系統的視頻壓縮 TW202135529A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062984673P 2020-03-03 2020-03-03
US62/984,673 2020-03-03
US17/091,570 US11405626B2 (en) 2020-03-03 2020-11-06 Video compression using recurrent-based machine learning systems
US17/091,570 2020-11-06

Publications (1)

Publication Number Publication Date
TW202135529A true TW202135529A (zh) 2021-09-16

Family

ID=77554929

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110101726A TW202135529A (zh) 2020-03-03 2021-01-15 使用基於循環的機器學習系統的視頻壓縮

Country Status (8)

Country Link
US (1) US11405626B2 (zh)
EP (1) EP4115617A1 (zh)
JP (1) JP2023517846A (zh)
KR (1) KR20220150298A (zh)
CN (1) CN115211115A (zh)
BR (1) BR112022016793A2 (zh)
TW (1) TW202135529A (zh)
WO (1) WO2021178050A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI824861B (zh) * 2022-11-30 2023-12-01 國立陽明交通大學 機器學習裝置及其訓練方法
TWI832406B (zh) * 2022-09-01 2024-02-11 國立陽明交通大學 反向傳播訓練方法和非暫態電腦可讀取媒體

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110677649B (zh) * 2019-10-16 2021-09-28 腾讯科技(深圳)有限公司 基于机器学习的去伪影方法、去伪影模型训练方法及装置
US20210192681A1 (en) * 2019-12-18 2021-06-24 Ati Technologies Ulc Frame reprojection for virtual reality and augmented reality
WO2021220008A1 (en) 2020-04-29 2021-11-04 Deep Render Ltd Image compression and decoding, video compression and decoding: methods and systems
US11425402B2 (en) * 2020-07-20 2022-08-23 Meta Platforms, Inc. Cross-codec encoding optimizations for video transcoding
US11551090B2 (en) * 2020-08-28 2023-01-10 Alibaba Group Holding Limited System and method for compressing images for remote processing
US11490078B2 (en) 2020-12-29 2022-11-01 Tencent America LLC Method and apparatus for deep neural network based inter-frame prediction in video coding
US11570465B2 (en) * 2021-01-13 2023-01-31 WaveOne Inc. Machine-learned in-loop predictor for video compression
CN114845107A (zh) * 2021-02-02 2022-08-02 联咏科技股份有限公司 图像编码方法及其图像编码器
US11399198B1 (en) * 2021-03-01 2022-07-26 Qualcomm Incorporated Learned B-frame compression
US11831909B2 (en) * 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system
WO2023069337A1 (en) * 2021-10-18 2023-04-27 Op Solutions, Llc Systems and methods for optimizing a loss function for video coding for machines
US11546614B1 (en) * 2021-10-25 2023-01-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder and decoder for encoding and decoding images
CN116112673A (zh) * 2021-11-10 2023-05-12 华为技术有限公司 编解码方法及电子设备
CN118216149A (zh) * 2021-11-25 2024-06-18 Oppo广东移动通信有限公司 解码方法、编码方法、解码器、编码器和编解码系统
US20230214630A1 (en) * 2021-12-30 2023-07-06 Cron Ai Ltd. (Uk) Convolutional neural network system, method for dynamically defining weights, and computer-implemented method thereof
WO2023138687A1 (en) * 2022-01-21 2023-07-27 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for data processing
WO2023167502A1 (ko) * 2022-03-02 2023-09-07 엘지전자 주식회사 피쳐 부호화/복호화 방법, 장치, 비트스트림을 저장한 기록 매체 및 비트스트림 전송 방법
WO2023165596A1 (en) * 2022-03-03 2023-09-07 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for visual data processing
WO2024015638A2 (en) * 2022-07-15 2024-01-18 Bytedance Inc. A neural network-based image and video compression method with conditional coding
WO2024020112A1 (en) * 2022-07-19 2024-01-25 Bytedance Inc. A neural network-based adaptive image and video compression method with variable rate
CN115294224B (zh) * 2022-09-30 2022-12-16 南通市通州区华凯机械有限公司 用于驾驶模拟器的图像数据快速载入方法
WO2024073076A1 (en) * 2022-09-30 2024-04-04 Tesla, Inc. Systems and methods for accelerated video-based training of machine learning models

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10706351B2 (en) * 2016-08-30 2020-07-07 American Software Safety Reliability Company Recurrent encoder and decoder

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832406B (zh) * 2022-09-01 2024-02-11 國立陽明交通大學 反向傳播訓練方法和非暫態電腦可讀取媒體
TWI824861B (zh) * 2022-11-30 2023-12-01 國立陽明交通大學 機器學習裝置及其訓練方法

Also Published As

Publication number Publication date
KR20220150298A (ko) 2022-11-10
EP4115617A1 (en) 2023-01-11
US20210281867A1 (en) 2021-09-09
CN115211115A (zh) 2022-10-18
BR112022016793A2 (pt) 2022-10-11
JP2023517846A (ja) 2023-04-27
WO2021178050A1 (en) 2021-09-10
US11405626B2 (en) 2022-08-02

Similar Documents

Publication Publication Date Title
TW202135529A (zh) 使用基於循環的機器學習系統的視頻壓縮
CN113574883A (zh) 使用深度生成性模型的视频压缩
TW202247650A (zh) 使用機器學習系統進行隱式圖像和視訊壓縮
US11477464B2 (en) End-to-end neural network based video coding
US20220191523A1 (en) Front-end architecture for neural network based video coding
US12003734B2 (en) Machine learning based flow determination for video coding
CN117882376A (zh) 使用机器学习系统的网络参数子空间中的实例自适应图像和视频压缩
US20240022761A1 (en) Learned b-frame coding using p-frame coding system
TW202318878A (zh) 用於媒體變換譯碼的基於變換器的架構
US11399198B1 (en) Learned B-frame compression
US20240015318A1 (en) Video coding using optical flow and residual predictors
US20240013441A1 (en) Video coding using camera motion compensation and object motion compensation
US20240214578A1 (en) Regularizing neural networks with data quantization using exponential family priors
KR20230117346A (ko) 뉴럴 네트워크 기반 비디오 코딩을 위한 프론트-엔드 아키텍처
EP4298795A1 (en) Machine learning based flow determination for video coding
CN116965032A (zh) 用于视频译码的基于机器学习的流确定
CN116547965A (zh) 用于基于神经网络的视频译码的前端架构
TW202404360A (zh) 用於具有機器學習增強的視訊解碼的位元速率估計
CN117716687A (zh) 使用机器学习系统的隐式图像和视频压缩