(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-21
(54)【発明の名称】機械学習システムを使用する暗黙的画像およびビデオ圧縮
(51)【国際特許分類】
H04N 19/50 20140101AFI20240514BHJP
H04N 19/105 20140101ALI20240514BHJP
H04N 19/147 20140101ALI20240514BHJP
H04N 19/176 20140101ALI20240514BHJP
【FI】
H04N19/50
H04N19/105
H04N19/147
H04N19/176
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023570426
(86)(22)【出願日】2022-03-31
(85)【翻訳文提出日】2023-11-14
(86)【国際出願番号】 US2022022881
(87)【国際公開番号】W WO2022245434
(87)【国際公開日】2022-11-24
(32)【優先日】2021-05-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-12-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】ジャン、インファン
(72)【発明者】
【氏名】バン・ロゼンダール、ティース・ジャン
(72)【発明者】
【氏名】コーエン、タコ・セバスティアーン
(72)【発明者】
【氏名】ナーゲル、マルクス
(72)【発明者】
【氏名】ブレーマー、ヨハン・ヒンリッヒ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA19
5C159MC11
5C159ME11
5C159PP04
5C159TA25
5C159TB08
5C159TC08
5C159TC18
5C159UA02
5C159UA05
(57)【要約】
機械学習システムを使用してデータを圧縮および展開するための技法が説明される。例示的なプロセスが、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することを含むことができる。プロセスは、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することを含むことができる。プロセスは、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することを含むことができる。プロセスは、受信機への送信のために第1のビットストリームを出力することを含むことができる。
【特許請求の範囲】
【請求項1】
メディアデータを処理する方法であって、
ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することと、
前記複数の画像からの第1の画像に基づいて、前記ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することと、
前記第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することと、
受信機への送信のために前記第1のビットストリームを出力することと
を備える、方法。
【請求項2】
前記第1のモデルの少なくとも1つの層が、前記第1の画像に関連付けられた複数の座標の位置符号化を含む、請求項1に記載の方法。
【請求項3】
前記第1のモデルが、前記第1の画像に関連付けられた前記複数の座標に対応する1つまたは複数のピクセル値を決定するように構成された、請求項2に記載の方法。
【請求項4】
前記複数の画像からの第2の画像に基づいて、前記ニューラルネットワーク圧縮システムに関連付けられた第2のモデルによる使用のための第2の複数の重み値を決定することと、
前記第2の複数の重み値の圧縮バージョンを備える第2のビットストリームを生成することと、
受信機への送信のために前記第2のビットストリームを出力することと
をさらに備える、請求項1に記載の方法。
【請求項5】
前記第2のモデルが、前記第1の画像と前記第2の画像との間のオプティカルフローを決定するように構成された、請求項4に記載の方法。
【請求項6】
前記オプティカルフローに基づいて、前記第1の複数の重み値から少なくとも1つの更新された重み値を決定すること
をさらに備える、請求項5に記載の方法。
【請求項7】
複数の量子化された重み値を生じるために重みプライア下で前記第1の複数の重み値を量子化すること、ここにおいて、前記第1のビットストリームが前記複数の量子化された重み値の圧縮バージョンを備える、
をさらに備える、請求項1に記載の方法。
【請求項8】
前記重みプライアが、前記受信機に前記第1のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択される、請求項7に記載の方法。
【請求項9】
前記第1のビットストリームを生成することが、
前記重みプライアを使用して前記第1の複数の重み値をエントロピー符号化すること
を備える、請求項7に記載の方法。
【請求項10】
前記第1の複数の重み値が、固定小数点量子化を使用して量子化される、請求項7に記載の方法。
【請求項11】
前記固定小数点量子化が、機械学習アルゴリズムを使用して実装される、請求項10に記載の方法。
【請求項12】
前記第1の画像に基づいて、前記第1のモデルに対応するモデルアーキテクチャを選択すること
をさらに備える、請求項1に記載の方法。
【請求項13】
前記モデルアーキテクチャの圧縮バージョンを備える第2のビットストリームを生成することと、
前記受信機への送信のために前記第2のビットストリームを出力することと
をさらに備える、請求項12に記載の方法。
【請求項14】
前記モデルアーキテクチャを選択することは、
前記第1の画像に基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することと、ここにおいて、前記1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる、
前記第1の画像と前記1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力との間の少なくとも1つのひずみを決定することと、
前記少なくとも1つのひずみに基づいて前記1つまたは複数のモデルアーキテクチャから前記モデルアーキテクチャを選択することと
を備える、請求項12に記載の方法。
【請求項15】
前記1つまたは複数のモデル特性が、幅、深度、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含む、請求項14に記載の方法。
【請求項16】
少なくとも1つのメモリと、
前記少なくとも1つのメモリに結合された少なくとも1つのプロセッサと
を備える装置であって、前記少なくとも1つのプロセッサが、
ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することと、
前記複数の画像からの第1の画像に基づいて、前記ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することと、
前記第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することと、
受信機への送信のために前記第1のビットストリームを出力することと
を行うように構成された、装置。
【請求項17】
前記第1のモデルの少なくとも1つの層が、前記第1の画像に関連付けられた複数の座標の位置符号化を含む、請求項16に記載の装置。
【請求項18】
前記第1のモデルが、前記第1の画像に関連付けられた前記複数の座標に対応する1つまたは複数のピクセル値を決定するように構成された、請求項17に記載の装置。
【請求項19】
前記少なくとも1つのプロセッサが、
前記複数の画像からの第2の画像に基づいて、前記ニューラルネットワーク圧縮システムに関連付けられた第2のモデルによる使用のための第2の複数の重み値を決定することと、
前記第2の複数の重み値の圧縮バージョンを備える第2のビットストリームを生成することと、
受信機への送信のために前記第2のビットストリームを出力することと
を行うようにさらに構成された、請求項16に記載の装置。
【請求項20】
前記第2のモデルが、前記第1の画像と前記第2の画像との間のオプティカルフローを決定するように構成された、請求項19に記載の装置。
【請求項21】
前記少なくとも1つのプロセッサが、
前記オプティカルフローに基づいて、前記第1の複数の重み値から少なくとも1つの更新された重み値を決定すること
を行うようにさらに構成された、請求項20に記載の装置。
【請求項22】
前記少なくとも1つのプロセッサは、
複数の量子化された重み値を生じるために重みプライア下で前記第1の複数の重み値を量子化すること、ここにおいて、前記第1のビットストリームが前記複数の量子化された重み値の圧縮バージョンを備える、
を行うようにさらに構成された、請求項16に記載の装置。
【請求項23】
前記重みプライアが、前記受信機に前記第1のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択される、請求項22に記載の装置。
【請求項24】
前記第1のビットストリームを生成するために、前記少なくとも1つのプロセッサが、
前記重みプライアを使用して前記第1の複数の重み値をエントロピー符号化すること
を行うようにさらに構成された、請求項22に記載の装置。
【請求項25】
前記第1の複数の重み値が、固定小数点量子化を使用して量子化される、請求項22に記載の装置。
【請求項26】
前記固定小数点量子化が、機械学習アルゴリズムを使用して実装される、請求項25に記載の装置。
【請求項27】
前記少なくとも1つのプロセッサが、
前記第1の画像に基づいて、前記第1のモデルに対応するモデルアーキテクチャを選択すること
を行うようにさらに構成された、請求項16に記載の装置。
【請求項28】
前記少なくとも1つのプロセッサが、
前記モデルアーキテクチャの圧縮バージョンを備える第2のビットストリームを生成することと、
前記受信機への送信のために前記第2のビットストリームを出力することと
を行うようにさらに構成された、請求項27に記載の装置。
【請求項29】
前記モデルアーキテクチャを選択するために、前記少なくとも1つのプロセッサは、
前記第1の画像に基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することと、ここにおいて、前記1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる、
前記第1の画像と前記1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力との間の少なくとも1つのひずみを決定することと、
前記少なくとも1つのひずみに基づいて前記1つまたは複数のモデルアーキテクチャから前記モデルアーキテクチャを選択することと
を行うようにさらに構成された、請求項27に記載の装置。
【請求項30】
前記1つまたは複数のモデル特性が、幅、深度、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含む、請求項29に記載の装置。
【請求項31】
メディアデータを処理するための方法であって、
複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、
前記第1の複数のニューラルネットワーク重み値を展開することと、
第1のニューラルネットワークモデルを使用して、前記第1の画像を生じるために前記第1の複数のニューラルネットワーク重み値を処理することと
を備える、方法。
【請求項32】
前記複数の画像からの第2の画像に関連付けられた第2の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、
前記第2の複数のニューラルネットワーク重み値を展開することと、
第2のニューラルネットワークモデルを使用して、前記第1の画像と前記第2の画像との間のオプティカルフローを決定するために前記第2の複数のニューラルネットワーク重み値を処理することと
をさらに備える、請求項31に記載の方法。
【請求項33】
前記オプティカルフローに基づいて、前記第1のニューラルネットワークモデルに関連付けられた前記第1の複数のニューラルネットワーク重み値から少なくとも1つの更新された重み値を決定すること
をさらに備える、請求項32に記載の方法。
【請求項34】
前記第1のニューラルネットワークモデルを使用して、前記第2の画像の再構築されたバージョンを生じるために前記少なくとも1つの更新された重み値を処理すること
をさらに備える、請求項33に記載の方法。
【請求項35】
前記第1の複数のニューラルネットワーク重み値が、重みプライア下で量子化される、請求項31に記載の方法。
【請求項36】
前記第1の複数のニューラルネットワーク重み値の前記圧縮バージョンが、エントロピー符号化ビットストリーム中で受信される、請求項31に記載の方法。
【請求項37】
前記第1のニューラルネットワークモデルに対応するニューラルネットワークアーキテクチャの圧縮バージョンを受信すること
をさらに備える、請求項31に記載の方法。
【請求項38】
少なくとも1つのメモリと、
前記少なくとも1つのメモリに結合された少なくとも1つのプロセッサと
を備える装置であって、前記少なくとも1つのプロセッサが、
複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、
前記第1の複数のニューラルネットワーク重み値を展開することと、
第1のニューラルネットワークモデルを使用して、前記第1の画像を生じるために前記第1の複数のニューラルネットワーク重み値を処理することと
を行うように構成された、装置。
【請求項39】
前記少なくとも1つのプロセッサが、
前記複数の画像からの第2の画像に関連付けられた第2の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、
前記第2の複数のニューラルネットワーク重み値を展開することと、
第2のニューラルネットワークモデルを使用して、前記第1の画像と前記第2の画像との間のオプティカルフローを決定するために前記第2の複数のニューラルネットワーク重み値を処理することと
を行うようにさらに構成された、請求項38に記載の装置。
【請求項40】
前記少なくとも1つのプロセッサが、
前記オプティカルフローに基づいて、前記第1のニューラルネットワークモデルに関連付けられた前記第1の複数のニューラルネットワーク重み値から少なくとも1つの更新された重み値を決定すること
を行うようにさらに構成された、請求項39に記載の装置。
【請求項41】
前記少なくとも1つのプロセッサが、
前記第1のニューラルネットワークモデルを使用して、前記第2の画像の再構築されたバージョンを生じるために前記少なくとも1つの更新された重み値を処理すること
を行うようにさらに構成された、請求項40に記載の装置。
【請求項42】
前記第1の複数のニューラルネットワーク重み値が、重みプライア下で量子化される、請求項38に記載の装置。
【請求項43】
前記第1の複数のニューラルネットワーク重み値の前記圧縮バージョンが、エントロピー符号化ビットストリーム中で受信される、請求項38に記載の装置。
【請求項44】
前記少なくとも1つのプロセッサが、
前記第1のニューラルネットワークモデルに対応するニューラルネットワークアーキテクチャの圧縮バージョンを受信すること
を行うようにさらに構成された、請求項38に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本開示は、一般にデータ圧縮(data compression)に関する。たとえば、本開示の態様は、画像(image)および/またはビデオコンテンツ(video content)を圧縮するために機械学習システム(machine learning system)を使用することを含む。
【背景技術】
【0002】
[0002] 多くのデバイスおよびシステムは、メディアデータ(media data)(たとえば、画像データ、ビデオデータ、オーディオデータなど)が消費のために処理され、出力されることを可能にする。メディアデータは、画像/ビデオ/オーディオ品質、性能、および特徴の増加する需要を満たすための大量のデータを含む。たとえば、ビデオデータの消費者は、一般に、高い忠実度、解像度、フレームレートなどをもつ高品質ビデオを望む。これらの需要を満たすためにしばしば必要とされる大量のビデオデータは、ビデオデータを処理し、記憶する通信ネットワークおよびデバイスに、かなりの負担をかける。ビデオコーディング技法が、ビデオデータを圧縮するために使用され得る。ビデオコーディングの1つの例示的な目標は、ビデオ品質の劣化を回避するかまたは最小限に抑えながら、より低いビットレートを使用する形式にビデオデータを圧縮することである。常に発展しつつあるビデオサービスが利用可能になり、大量のビデオデータの需要が増加するとともに、より良い性能および効率をもつコーディング技法が必要とされる。
【発明の概要】
【0003】
[0003] いくつかの例では、1つまたは複数の機械学習システムを使用するデータ圧縮および/または展開(data compression and/or decompression )のためのシステムおよび技法が説明される。いくつかの例では、(たとえば、1つまたは複数のニューラルネットワークシステムを使用する)機械学習システムが、メディアデータ(たとえば、ビデオデータ、画像データ、オーディオデータなど)を圧縮および/または展開するために提供される。少なくとも1つの例示的な例によれば、画像データを処理する方法が提供される。本方法は、ニューラルネットワーク圧縮システム(neural network compression system)による圧縮(compression)のための複数の画像を受信することと、複数の画像からの第1の画像(first image)に基づいて、ニューラルネットワーク圧縮システムの第1のモデル(first model)に関連付けられた第1の複数の重み値(a first plurality of weight values)を決定することと、第1の複数の重み値の圧縮バージョン(compressed version)を備える第1のビットストリーム(first bitstream)を生成することと、受信機(receiver)への送信(transmission)のために第1のビットストリームを出力することとを含み得る。
【0004】
[0004] 別の例では、少なくとも1つのメモリと、少なくとも1つのメモリに通信可能に結合された(たとえば、回路において構成された)少なくとも1つのプロセッサとを含む、メディアデータを処理するための装置が提供される。少なくとも1つのプロセッサは、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することと、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することと、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することと、受信機への送信のために第1のビットストリームを出力することとを行うように構成され得る。
【0005】
[0005] 別の例では、その上に記憶された少なくとも1つの命令を含む非一時的コンピュータ可読媒体が提供され、少なくとも1つの命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することと、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することと、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することと、受信機への送信のために第1のビットストリームを出力することとを行わせ得る。
【0006】
[0006] 別の例では、画像データを処理するための装置が提供される。本装置は、ニューラルネットワーク圧縮システムによる圧縮のための入力データを受信するための手段と、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信するための手段と、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定するための手段と、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成するための手段と、受信機への送信のために第1のビットストリームを出力するための手段とを含み得る。
【0007】
[0007] 別の例では、メディアデータを処理するための方法が提供される。本方法は、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、第1の複数のニューラルネットワーク重み値(a first plurality of neural network weight values)を展開することと、第1のニューラルネットワークモデル(first neural network model)を使用して、第1の画像を生じるために第1の複数のニューラルネットワーク重み値を処理することとを含み得る。
【0008】
[0008] 別の例では、少なくとも1つのメモリと、少なくとも1つのメモリに通信可能に結合された(たとえば、回路において構成された)少なくとも1つのプロセッサとを含む、画像データを処理するための装置が提供される。少なくとも1つのプロセッサは、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、第1の複数のニューラルネットワーク重み値を展開することと、第1のニューラルネットワークモデルを使用して、第1の画像を生じるために第1の複数のニューラルネットワーク重み値を処理することとを行うように構成され得る。
【0009】
[0009] 別の例では、その上に記憶された少なくとも1つの命令を含む非一時的コンピュータ可読媒体が提供され、少なくとも1つの命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、第1の複数のニューラルネットワーク重み値を展開することと、第1のニューラルネットワークモデルを使用して、第1の画像を生じるために第1の複数のニューラルネットワーク重み値を処理することとを行わせ得る。
【0010】
[0010] 別の例では、画像データを処理するための装置が提供される。本装置は、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信するための手段と、第1の複数のニューラルネットワーク重み値を展開するための手段と、第1のニューラルネットワークモデルを使用して、第1の画像を生じるために第1の複数のニューラルネットワーク重み値を処理するための手段とを含み得る。
【0011】
[0011] いくつかの態様では、装置は、カメラ(たとえば、IPカメラ)、モバイルデバイス(たとえば、携帯電話またはいわゆる「スマートフォン」、あるいは他のモバイルデバイス)、スマートウェアラブルデバイス、エクステンデッドリアリティデバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、または複合現実(MR)デバイス)、パーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、3Dスキャナ、マルチカメラシステム、または他のデバイスであり得るか、またはその一部であり得る。いくつかの態様では、装置は、1つまたは複数の画像をキャプチャするための1つまたは複数のカメラを含む。いくつかの態様では、装置は、1つまたは複数の画像、通知、および/または他の表示可能なデータを表示するためのディスプレイをさらに含む。いくつかの態様では、上記で説明された装置は、1つまたは複数のセンサーを含むことができる。
【0012】
[0012] 本発明の概要は、請求される主題の主要なまたは本質的な特徴を識別することが意図されず、請求される主題の範囲を決定するために独立して使用されることも意図されない。本主題は、本特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照することによって理解されたい。
【0013】
[0013] 上記のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照すると、より明らかになろう。
【0014】
[0014] 本出願の例示的な実施形態は、以下の図面を参照しながら以下で詳細に説明される。
【図面の簡単な説明】
【0015】
【
図1】[0015] 本開示のいくつかの例による、画像処理システム(image processing system)の一例を示す図。
【
図2A】[0016] 本開示のいくつかの例による、全結合ニューラルネットワーク(fully-connected neural network)の一例を示す図。
【
図2B】[0017] 本開示のいくつかの例による、局所結合ニューラルネットワーク(locally-connected neural network)の一例を示す図。
【
図2C】[0018] 本開示のいくつかの例による、畳み込みニューラルネットワーク(convolutional neural network)の一例を示す図。
【
図2D】[0019] 本開示のいくつかの例による、画像から視覚特徴(visual feature)を認識するための深層畳み込みネットワーク(DCN:deep convolutional network)の一例を示す図。
【
図3】[0020] 本開示のいくつかの例による、例示的な深層畳み込みネットワーク(DCN)を示すブロック図。
【
図4】[0021] 本開示のいくつかの例による、ビデオコンテンツを圧縮するための送信デバイスと、受信されたビットストリームをビデオコンテンツに展開するための受信デバイスとを含むシステムの一例を示す図。
【
図5A】[0022] 本開示のいくつかの例による、例示的なレートひずみオートエンコーダシステム(rate-distortion autoencoder system)を示す図。
【
図5B】本開示のいくつかの例による、例示的なレートひずみオートエンコーダシステムを示す図。
【
図6】[0023] 本開示のいくつかの例による、モデルプライア(model prior)を使用して微調整される例示的なニューラルネットワーク圧縮システムによって実装される例示的な推論プロセスを示す図。
【
図7A】[0024] 本開示のいくつかの例による、暗黙的ニューラル表現(implicit neural representation)に基づく例示的な画像圧縮コーデック(image compression codec)を示す図。
【
図7B】[0025] 本開示のいくつかの例による、暗黙的ニューラル表現に基づく別の例示的な画像圧縮コーデックを示す図。
【
図8A】[0026] 本開示のいくつかの例による、暗黙的ニューラル表現を使用するピクチャグループのための圧縮パイプライン(compression pipeline)の一例を示す図。
【
図8B】[0027] 本開示のいくつかの例による、暗黙的ニューラル表現を使用するピクチャグループのための圧縮パイプラインの別の例を示す図。
【
図8C】[0028] 本開示のいくつかの例による、暗黙的ニューラル表現を使用するピクチャグループのための圧縮パイプラインの別の例を示す図。
【
図9】[0029] 本開示のいくつかの例による、ビデオフレーム符号化順序(video frame encoding order)を示す図。
【
図10】[0030] 本開示のいくつかの例による、暗黙的ニューラル圧縮(implicit neural compression)を実施するための例示的なプロセスを示す図。
【
図11】[0031] 本開示のいくつかの例による、暗黙的ニューラル表現に基づいて画像データを圧縮するためのプロセスの一例を示すフローチャート。
【
図12】[0032] 本開示のいくつかの例による、暗黙的ニューラル表現に基づいて画像データを圧縮するためのプロセスの別の例を示すフローチャート。
【
図13】[0033] 本開示のいくつかの例による、暗黙的ニューラル表現に基づいて画像データを展開するためのプロセスの一例を示すフローチャート。
【
図14】[0034] 本開示のいくつかの例による、暗黙的ニューラル表現に基づいて画像データを圧縮するためのプロセスの一例を示すフローチャート。
【
図15】[0035] 本開示のいくつかの例による、暗黙的ニューラル表現に基づいて画像データを展開するためのプロセスの一例を示すフローチャート。
【
図16】[0036] 本開示のいくつかの例による、例示的なコンピューティングシステムを示す図。
【発明を実施するための形態】
【0016】
[0037] 本開示のいくつかの態様および実施形態が以下で提供される。当業者に明らかであるように、これらの態様および実施形態のうちのいくつかは独立して適用され得、それらのうちのいくつかは組み合わせて適用され得る。以下の説明では、説明の目的で、本出願の実施形態の完全な理解を提供するために具体的な詳細が記載される。ただし、様々な実施形態は、これらの具体的な詳細なしに実施され得ることが明らかであろう。図および説明は限定するものではない。
【0017】
[0038] 以下の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定するものではない。そうではなく、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載されるように、本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が行われ得ることを理解されたい。
【0018】
[0039] 上述のように、メディアデータ(たとえば、画像データ、ビデオデータ、および/またはオーディオデータ)は、特に、高品質ビデオデータに対する需要が成長し続けるにつれて、大量のデータを含むことができる。たとえば、画像、オーディオ、およびビデオデータの消費者は、一般に、高い忠実度、解像度、フレームレートなど、ますます高いレベルの品質を望む。しかしながら、そのような需要を満たすために必要とされる大量のデータは、高帯域幅およびネットワークリソース要件など、通信ネットワークに、およびビデオデータを処理し、記憶するデバイスに、かなりの負担をかけることがある。したがって、画像およびビデオデータの記憶および/または送信のために必要とされるデータの量を低減するための(コーディングアルゴリズムまたはツールとも呼ばれる)圧縮アルゴリズムが有利である。
【0019】
[0040] メディアデータを圧縮するために、様々な技法が使用され得る。画像データの圧縮は、特に、ジョイントフォトグラフィックエキスパートグループ(JPEG)、ベターポータブルグラフィックス(BPG:Better Portable Graphics)などのアルゴリズムを使用して達成された。近年、ニューラルネットワークベース圧縮方法は、画像データを圧縮することにおいて、かなり有望視されている。ビデオコーディングは、特定のビデオコーディング規格に従って実施され得る。例示的なビデオコーディング規格は、高効率ビデオコーディング(HEVC)、エッセンシャルビデオコーディング(EVC)、アドバンストビデオコーディング(AVC)、ムービングピクチャエキスパートグループ(MPEG)コーディング、および汎用ビデオコーディング(VVC)を含む。しかしながら、そのような従来の画像およびビデオコーディング技法は、復号が実施された後に、再構築された画像中にアーティファクトを生じることがある。
【0020】
[0041] いくつかの態様では、1つまたは複数の機械学習システムを使用して(コーディングと総称される、符号化(encoding)および復号(decoding)とも呼ばれる)データ(たとえば、画像、ビデオ、オーディオなど)圧縮(compression)および展開(decompression)を実施するための(本明細書では「システムおよび技法」と総称される)システム、装置、(方法とも呼ばれる)プロセス、およびコンピュータ可読媒体が、本明細書で説明される。たとえば、システムおよび技法は、暗黙的ニューラルモデル(implicit neural model)を使用して実装され得る。暗黙的ニューラルモデルは、暗黙的ニューラル表現(INR:implicit neural representation)に基づき得る。本明細書で説明されるように、暗黙的ニューラルモデルは、入力として座標位置(たとえば、画像またはビデオフレーム内の座標)をとることができ、ピクセル値(pixel value)(たとえば、各座標位置またはピクセルについての色値など、画像またはビデオフレームについての色値)を出力することができる。いくつかの場合には、暗黙的ニューラルモデルは、IPBフレーム方式にも基づき得る。いくつかの例では、暗黙的ニューラルモデルは、オプティカルフロー(optical flow)をモデル化するために入力データを修正することができる。
【0021】
[0042] いくつかの例では、暗黙的ニューラルモデルは、局所変換が要素単位の加算になることがある暗黙的ニューラル表現を用いてオプティカルフローをモデル化することができる。いくつかの場合には、暗黙的モデルは、対応する出力ピクセル値を生じるように入力座標位置を調節することによってオプティカルフローをモデル化することができる。たとえば、入力の要素単位の加算は出力における局所変換につながることがあり、これは、ピクセル移動の必要および関連する計算複雑さをなくすことができる。
【0022】
[0043] 1つまたは複数の機械学習システムは、本明細書で説明されるようにトレーニングされ、画像、ビデオ、および/またはオーディオ圧縮および展開など、データ圧縮および/または展開を実施するために使用され得る。本明細書で説明される機械学習システムは、高品質データ出力を生成する圧縮/展開技法を実施するようにトレーニングされ得る。本明細書で説明されるシステムおよび技法は、任意のタイプのデータの圧縮および/または展開を実施することができる。たとえば、いくつかの場合には、本明細書で説明されるシステムおよび技法は、画像データの圧縮および/または展開を実施することができる。別の例として、いくつかの場合には、本明細書で説明されるシステムおよび技法は、ビデオデータの圧縮および/または展開を実施することができる。本明細書で使用される「画像」および「フレーム」という用語は互換的に使用され、スタンドアロン画像またはフレーム(たとえば、写真)、あるいは(たとえば、ビデオ、または画像/フレームの他のシーケンスを構成する)画像またはフレームのグループまたはシーケンスを指す。別の例として、いくつかの場合には、本明細書で説明されるシステムおよび技法は、オーディオデータの圧縮および/または展開を実施することができる。簡単、例示および説明のために、本明細書で説明されるシステムおよび技法は、画像データ(たとえば、画像またはフレーム、ビデオなど)の圧縮および/または展開に関して説明される。しかしながら、上述のように、本明細書で説明される概念は、オーディオデータおよび任意の他のタイプのデータなど、他のモダリティにも適用され得る。
【0023】
[0044] エンコーダおよび/またはデコーダによって使用される圧縮モデルは、異なるタイプのデータに一般化可能であり得る。その上、本明細書で説明される様々な特性をもつ暗黙的ニューラルモデルを利用することによって、機械学習システムは、データの特定のセットについての圧縮および/または展開性能、ビットレート、品質、ならびに/あるいは効率を増加させることができる。たとえば、暗黙的ニューラルモデルベース機械学習システムは、受信機側において(および、いくつかの場合には送信機側において)事前トレーニングされたニューラルネットワークを記憶する必要をなくすことができる。送信機および受信機側におけるニューラルネットワークは、軽量フレームワークを用いて実装され得る。そのような機械学習システムの別の利点は、いくつかの場合には(たとえば、ハードウェアにおいて)実装することが困難であり得る、実際の機械学習システム(たとえば、ニューラルネットワーク)によるフロー動作の不在である。さらに、復号関数は、標準的な機械学習ベースコーダデコーダ(コーデック)におけるものよりも速くなり得る。いくつかの場合には、本明細書で説明される暗黙的ニューラルモデルベース機械学習システムは、それが、符号化されるべきであるデータ(たとえば、座標グリッド、および画像、ビデオフレーム、ビデオなどの現在のインスタンス)を使用して暗黙的にトレーニングされ得るので、別個のトレーニングデータセットを必要としない。本明細書で説明される暗黙的ニューラルモデルの構成は、潜在的プライバシー問題の回避にもつながることがある。システムは、好適なトレーニングデータが利用可能でないものを含む、異なるドメインからのデータに対してもうまく機能する。
【0024】
[0045] いくつかの例では、機械学習システムは、1つまたは複数のニューラルネットワークを含むことができる。機械学習(ML)は人工知能(AI)のサブセットである。MLシステムは、明示的な命令を使用せずにパターンおよび推論に依拠することによって様々なタスクを実施するためにコンピュータシステムが使用することができるアルゴリズムおよび統計モデルを含む。MLシステムの一例は、人工ニューロン(たとえば、ニューロンモデル)の相互結合されたグループから構成され得る、(人工ニューラルネットワークとも呼ばれる)ニューラルネットワークである。ニューラルネットワークは、特に、画像解析および/またはコンピュータビジョンアプリケーション、インターネットプロトコル(IP)カメラ、モノのインターネット(IoT)デバイス、自律車両、サービスロボットなど、様々な適用例および/またはデバイスのために使用され得る。
【0025】
[0046] ニューラルネットワーク中の個々のノードは、入力データをとることと、データに対して単純な演算を実施することとによって、生物学的ニューロンをエミュレートし得る。入力データに対して実施された単純な演算の結果は、他のニューロンに選択的に受け渡される。重み値が、各ベクトルとネットワーク中のノードとに関連付けられ、これらの値は、入力データがどのように出力データに関係するかを制約する。たとえば、各ノードの入力データは、対応する重み値を乗算され得、この積は合計され得る。積の合計は、随意のバイアスによって調節され得、活性化関数が結果に適用され、ノードの出力信号または(活性化マップまたは特徴マップと呼ばれることがある)「出力活性化」が生じ得る。重み値は、最初に、ネットワークを通してトレーニングデータの反復フローによって決定され得る(たとえば、重み値は、ネットワークが特定のクラスの典型的な入力データ特性によってそれらのクラスをどのように識別すべきかを学習するトレーニングフェーズ中に確定される)。
【0026】
[0047] 特に、深層生成ニューラルネットワークモデル(たとえば、敵対的生成ネットワーク(GAN))、リカレントニューラルネットワーク(RNN)モデル、多層パーセプトロン(MLP)ニューラルネットワークモデル、畳み込みニューラルネットワーク(CNN)モデル、オートエンコーダ(AE)など、異なるタイプのニューラルネットワークが存在する。たとえば、GANは、ニューラルネットワークモデルが、合理的に元のデータセットからのものであることがある新しい合成出力を生成することができるように、入力データ中のパターンを学習することができる生成ニューラルネットワークの形態である。GANは、一緒に動作する2つのニューラルネットワークを含むことができる。(G(z)として示される生成ニューラルネットワークまたは生成器と呼ばれる)ニューラルネットワークのうちの1つが、合成された出力を生成し、(D(X)として示される弁別ニューラルネットワーク(discriminative neural network)または弁別器と呼ばれる)他のニューラルネットワークが、出力を真正性(出力が、トレーニングデータセットなど、元のデータセットからのものであるのか、生成器によって生成されたのか)について評価する。トレーニング入力および出力は、例示的な例として画像を含むことができる。生成器は、弁別器を、生成器によって生成された合成された画像がデータセットからの本物の画像であると決定させようと試み、だますようにトレーニングされる。トレーニングプロセスは続き、生成器は、本物の画像のように見える合成画像を生成することがよりうまくなる。弁別器は、合成された画像中の欠陥を見つけ続け、生成器は、弁別器が画像中の欠陥を決定するために何を見ているかを解明する。ネットワークがトレーニングされると、生成器は、弁別器が本物の画像と区別することができない、本物に見える画像を生成することが可能である。
【0027】
[0048] RNNは、層(layer)の出力を節約し、この出力を、層の結果を予測するのを助けるために入力にフィードバックする原理で動作する。MLPニューラルネットワークでは、データは入力層に供給され得、1つまたは複数の隠れ層が、データに抽象化レベルを提供する。次いで、予測が、抽象化されたデータに基づいて出力層上で行われ得る。MLPは、入力がクラスまたはラベルを割り当てられる分類予測問題に特に好適であり得る。畳み込みニューラルネットワーク(CNN)は、フィードフォワード人工ニューラルネットワークのタイプである。CNNは、受容野(たとえば、入力空間の空間的に局所化された領域)を各々有し、入力空間を集合的にタイリングする人工ニューロンの集合を含み得る。CNNは、パターン認識および分類を含む多数の適用例を有する。
【0028】
[0049] (複数の隠れ層が存在するとき、深層ニューラルネットワークと呼ばれる)層状(layered)ニューラルネットワークアーキテクチャ(neural network architecture)では、人工ニューロンの第1の層の出力は、人工ニューロンの第2の層への入力になり、人工ニューロンの第2の層の出力は、人工ニューロンの第3の層への入力になり、以下同様である。畳み込みニューラルネットワークは、特徴の階層を認識するようにトレーニングされ得る。畳み込みニューラルネットワークアーキテクチャにおける計算は、1つまたは複数の計算チェーンにおいて構成され得る処理ノードの集団にわたって分散され得る。これらの多層アーキテクチャは、一度に1つの層をトレーニングされ得、バックプロパゲーションを使用して微調整され得る。
【0029】
[0050] オートエンコーダ(AE)は、教師なし様式で効率的なデータコーディングを学習することができる。いくつかの例では、AEは、信号雑音を無視するようにネットワークをトレーニングすることによって、データのセットのための表現(たとえば、データコーディング)を学習することができる。AEはエンコーダとデコーダとを含むことができる。エンコーダは入力データをコードにマッピングすることができ、デコーダはコードを入力データの再構築にマッピングすることができる。いくつかの例では、レートひずみオートエンコーダ(RD-AE)は、画像および/またはビデオデータポイントなど、データポイントのデータセットにわたる平均レートひずみ損失を最小限に抑えるようにトレーニングされ得る。いくつかの場合には、RD-AEは、新しいデータポイントを符号化するために推論時間においてフォワードパスを行うことができる。
【0030】
[0051] いくつかの例では、データ圧縮および/または展開のための機械学習システムは、(たとえば、圧縮されるべきである画像データを使用して)暗黙的にトレーニングされるニューラルネットワークを含むことができる。いくつかの場合には、暗黙的ニューラル表現(INR)に基づくデータ圧縮および/または展開は、畳み込みベースアーキテクチャを使用して実装され得る。いくつかの態様では、画像データを符号化することは、ニューラルネットワークアーキテクチャを選択することと、画像データに対してネットワーク重みを過剰適合させることとを含むことができる。いくつかの例では、デコーダは、ニューラルネットワークアーキテクチャを含み、エンコーダからネットワーク重みを受信し得る。他の例では、デコーダは、エンコーダからニューラルネットワークアーキテクチャを受信し得る。
【0031】
[0052] いくつかの場合には、ニューラルネットワーク重みは大きいことがあり、これは、デコーダに重みを送出するために必要とされるビットレートおよび/または計算オーバーヘッドを増加させることがある。いくつかの例では、重みは、全体的なサイズを低減するために量子化され得る。いくつかの態様では、量子化された重みは、重みプライア(weight prior)を使用して圧縮され得る。重みプライアは、デコーダに送出されるデータの量を低減することができる。いくつかの場合には、重みプライアは、モデル重みを送信するためのコストを低減するように設計され得る。たとえば、重みプライアは、重みのビットレートオーバーヘッドを低減および/または制限するために使用され得る。
【0032】
[0053] いくつかの場合には、重みプライアの設計は、本明細書でさらに説明されるように改善され得る。いくつかの例示的な例では、重みプライア設計は、非依存(independent)ガウス重みプライアを含むことがある。他の例示的な例では、重みプライア設計は、非依存ラプラス重みプライアを含むことがある。他の例示的な例では、重みプライア設計は、非依存スパイクおよびスラブ(Spike and Slab)プライアを含むことがある。いくつかの例示的な例では、重みプライアは、ニューラルネットワークによって学習される複雑な依存性を含むことがある。
【0033】
[0054]
図1は、本開示のいくつかの例による、画像処理システム100の一例を示す図である。いくつかの場合には、画像処理システム100は、本明細書で説明される機能のうちの1つまたは複数を実施するように構成された中央処理ユニット(CPU)102またはマルチコアCPUを含むことができる。情報の中でも、変数(たとえば、ニューラル信号およびシナプス荷重)、計算デバイスに関連付けられたシステムパラメータ(たとえば、重みをもつニューラルネットワーク)、遅延、周波数ビン情報、タスク情報が、ニューラル処理ユニット(NPU)108に関連付けられたメモリブロック、CPU102に関連付けられたメモリブロック、グラフィックス処理ユニット(GPU)104に関連付けられたメモリブロック、デジタル信号プロセッサ(DSP)106に関連付けられたメモリブロック、メモリブロック118に記憶されるか、または複数のブロックにわたって分散され得る。CPU102において実行される命令が、CPU102に関連付けられたプログラムメモリ、および/またはメモリブロック118からロードされ得る。
【0034】
[0055] 画像処理システム100は、GPU104、DSP106など、特定の機能に適合された追加の処理ブロック、第5世代(5G)接続性、第4世代ロングタームエボリューション(4G LTE(登録商標))接続性、Wi-Fi(登録商標)接続性、USB接続性、Bluetooth(登録商標)接続性などを含み得る接続性ブロック110、および/または、たとえば、特徴を検出および認識し得るマルチメディアプロセッサ112を含み得る。一実装形態では、NPU108は、CPU102、DSP106、および/またはGPU104において実装される。画像処理システム100は、センサープロセッサ114、1つまたは複数の画像信号プロセッサ(ISP)116、および/または記憶域120をも含み得る。いくつかの例では、画像処理システム100は、ARM命令セットに基づき得る。
【0035】
[0056] 画像処理システム100は、1つまたは複数のコンピューティングデバイスの一部であり得る。いくつかの例では、画像処理システム100は、カメラシステム(たとえば、デジタルカメラ、IPカメラ、ビデオカメラ、防犯カメラなど)、電話システム(たとえば、スマートフォン、セルラー電話、会議システムなど)、デスクトップコンピュータ、XRデバイス(たとえば、ヘッドマウントディスプレイなど)、スマートウェアラブルデバイス(たとえば、スマートウォッチ、スマートグラスなど)、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、ディスプレイデバイス、デジタルメディアプレーヤ、ゲーミングコンソール、ビデオストリーミングデバイス、ドローン、車におけるコンピュータ、システムオンチップ(SOC)、モノのインターネット(IoT)デバイス、または(1つまたは複数の)任意の他の好適な電子デバイスなど、(1つまたは複数の)電子デバイスの一部であり得る。
【0036】
[0057] 画像処理システム100がいくつかの構成要素を含むように示されているが、画像処理システム100が
図1に示されている構成要素よりも多いまたは少ない構成要素を含むことができることを、当業者は諒解されよう。たとえば、画像処理システム100はまた、いくつかの事例では、1つまたは複数のメモリデバイス(たとえば、RAM、ROM、キャッシュなど)、1つまたは複数のネットワーキングインターフェース(たとえば、ワイヤードおよび/またはワイヤレス通信インターフェースなど)、1つまたは複数のディスプレイデバイス、および/あるいは
図1に示されていない他のハードウェアまたは処理デバイスを含むことができる。画像処理システム100とともに実装され得るコンピューティングデバイスおよびハードウェア構成要素の例示的な例が、
図16に関して以下で説明される。
【0037】
[0058] 画像処理システム100および/またはそれの構成要素は、本明細書で説明される機械学習システムおよび技法を使用して(画像コーディングと総称される、符号化および/または復号とも呼ばれる)圧縮および/または展開を実施するように構成され得る。いくつかの場合には、画像処理システム100および/またはそれの構成要素は、本明細書で説明される技法を使用して画像またはビデオ圧縮および/または展開を実施するように構成され得る。いくつかの例では、機械学習システムは、画像、ビデオ、および/またはオーディオデータの圧縮および/または展開を実施するために深層学習ニューラルネットワークアーキテクチャを利用することができる。深層学習ニューラルネットワークアーキテクチャを使用することによって、機械学習システムは、デバイス上のコンテンツの圧縮および/または展開の効率および速度を増加させることができる。たとえば、説明される圧縮および/または展開技法を使用するデバイスは、機械学習ベース技法を使用して効率的に、1つまたは複数の画像を圧縮することができ、圧縮された1つまたは複数の画像を受信デバイスに送信することができ、受信デバイスは、本明細書で説明される機械学習ベース技法を使用して効率的に、1つまたは複数の圧縮された画像を展開することができる。本明細書で使用される画像は、静止画像、および/またはフレームのシーケンス(たとえば、ビデオ)に関連付けられたビデオフレームを指すことがある。
【0038】
[0059] 上述のように、ニューラルネットワークは機械学習システムの一例である。ニューラルネットワークは、入力層と、1つまたは複数の隠れ層と、出力層とを含むことができる。データは、入力層の入力ノードから提供され、処理は、1つまたは複数の隠れ層の隠れノードによって実施され、出力は、出力層の出力ノードを通して生成される。深層学習ネットワークは、一般に、複数の隠れ層を含む。ニューラルネットワークの各層は、人工ニューロン(またはノード)を含むことができる特徴マップまたは活性化マップを含むことができる。特徴マップは、フィルタ、カーネルなどを含むことができる。ノードは、層のうちの1つまたは複数のノードの重要性を示すために使用される1つまたは複数の重みを含むことができる。いくつかの場合には、深層学習ネットワークは、一連の多くの隠れ層を有することができ、早期の層は、入力の単純で低レベルの特性を決定するために使用され、後の層は、より複雑で抽象的な特性の階層を構築する。
【0039】
[0060] 深層学習アーキテクチャは特徴の階層を学習し得る。たとえば、視覚データが提示された場合、第1の層は、エッジなど、入力ストリーム中の比較的単純な特徴を認識するように学習し得る。別の例では、聴覚データが提示された場合、第1の層は、特定の周波数におけるスペクトル電力を認識するように学習し得る。第1の層の出力を入力としてとる第2の層は、視覚データの場合の単純な形状、または聴覚データの場合の音の組合せなど、特徴の組合せを認識するように学習し得る。たとえば、上位層は、視覚データ中の複雑な形状、または聴覚データ中の単語を表すように学習し得る。さらに上位の層は、共通の視覚オブジェクトまたは発話フレーズを認識するように学習し得る。
【0040】
[0061] 深層学習アーキテクチャは、自然階層構造を有する問題に適用されたとき、特にうまく機能し得る。たとえば、原動機付き車両の分類は、ホイール、フロントガラス、および他の特徴を認識するための第1の学習から恩恵を受け得る。これらの特徴は、車、トラック、および飛行機を認識するために、異なる方法で、上位層において組み合わせられ得る。
【0041】
[0062] ニューラルネットワークは、様々な結合性パターンを用いて設計され得る。フィードフォワードネットワークでは、情報が下位層から上位層に受け渡され、所与の層における各ニューロンは、上位層におけるニューロンに通信する。上記で説明されたように、フィードフォワードネットワークの連続する層において、階層表現が構築され得る。ニューラルネットワークはまた、リカレントまたは(トップダウンとも呼ばれる)フィードバック結合を有し得る。リカレント結合では、所与の層におけるニューロンからの出力は、同じ層における別のニューロンに通信され得る。リカレントアーキテクチャは、ニューラルネットワークに順次配信される入力データチャンクのうちの2つ以上にわたるパターンを認識するのに役立ち得る。所与の層におけるニューロンから下位層におけるニューロンへの結合は、フィードバック(またはトップダウン)結合と呼ばれる。高レベルの概念の認識が、入力の特定の低レベルの特徴を弁別することを助け得るとき、多くのフィードバック結合をもつネットワークが役立ち得る。
【0042】
[0063] ニューラルネットワークの層間の結合は全結合または局所結合であり得る。
図2Aは、全結合ニューラルネットワーク202の一例を示す。全結合ニューラルネットワーク202では、第1の層におけるニューロンは、第2の層における各ニューロンが第1の層におけるあらゆるニューロンから入力を受信するように、それの出力を第2の層におけるあらゆるニューロンに通信し得る。
図2Bは、局所結合ニューラルネットワーク204の一例を示す。局所結合ニューラルネットワーク204では、第1の層におけるニューロンは、第2の層における限られた数のニューロンに結合され得る。より一般的には、局所結合ニューラルネットワーク204の局所結合層は、層における各ニューロンが同じまたは同様の結合性パターンを有するように構成されるが、異なる値を有し得る結合強度で構成され得る(たとえば、210、212、214、および216)。局所結合の結合性パターンは、所与の領域中の上位層ニューロンが、ネットワークへの総入力のうちの制限された部分のプロパティにトレーニングを通して調整された入力を受信し得るので、上位層において空間的に別個の受容野を生じ得る。
【0043】
[0064] 局所結合ニューラルネットワークの一例は、畳み込みニューラルネットワークである。
図2Cは、畳み込みニューラルネットワーク206の一例を示す。畳み込みニューラルネットワーク206は、第2の層における各ニューロンのための入力に関連付けられた結合強度が共有されるように構成され得る(たとえば、208)。畳み込みニューラルネットワークは、入力の空間ロケーションが有意味である問題に好適であり得る。畳み込みニューラルネットワーク206は、本開示の態様による、ビデオ圧縮および/または展開の1つまたは複数の態様を実施するために使用され得る。
【0044】
[0065] 1つのタイプの畳み込みニューラルネットワークは、深層畳み込みネットワーク(DCN)である。
図2Dは、車載カメラなどの画像キャプチャデバイス230から入力された画像226から視覚特徴を認識するように設計されたDCN200の詳細な例を示す。本例のDCN200は、交通標識と、交通標識上で提供された数とを識別するようにトレーニングされ得る。もちろん、DCN200は、車線マーキングを識別すること、または交通信号を識別することなど、他のタスクのためにトレーニングされ得る。
【0045】
[0066] DCN200は、教師あり学習を用いてトレーニングされ得る。トレーニング中に、DCN200は、速度制限標識の画像226など、画像を提示され得、次いで、出力222を生成するために、フォワードパスが計算され得る。DCN200は、特徴抽出セクションと分類セクションとを含み得る。画像226を受信すると、畳み込み層232が、特徴マップ218の第1のセットを生成するために、畳み込みカーネル(図示せず)を画像226に適用し得る。一例として、畳み込み層232のための畳み込みカーネルは、28×28特徴マップを生成する5×5カーネルであり得る。本例では、4つの異なる特徴マップが、特徴マップ218の第1のセットにおいて生成されるので、4つの異なる畳み込みカーネルが、畳み込み層232において画像226に適用された。畳み込みカーネルは、フィルタまたは畳み込みフィルタと呼ばれることもある。
【0046】
[0067] 特徴マップ218の第1のセットは、特徴マップ220の第2のセットを生成するために、最大プーリング層(図示せず)によってサブサンプリングされ得る。最大プーリング層は、特徴マップ218の第1のセットのサイズを低減する。すなわち、14×14などの特徴マップ220の第2のセットのサイズが、28×28などの特徴マップ218の第1のセットのサイズよりも小さい。低減されたサイズは、メモリ消費を低減しながら、後続の層に同様の情報を提供する。特徴マップ220の第2のセットは、特徴マップの1つまたは複数の後続のセット(図示せず)を生成するために、1つまたは複数の後続の畳み込み層(図示せず)を介して、さらに畳み込まれ得る。
【0047】
[0068]
図2Dの例では、特徴マップ220の第2のセットは、第1の特徴ベクトル224を生成するために畳み込まれる。さらに、第1の特徴ベクトル224は、第2の特徴ベクトル228を生成するために、さらに畳み込まれる。第2の特徴ベクトル228の各特徴は、「標識」、「60」、および「100」など、画像226の可能な特徴に対応する数を含み得る。ソフトマックス関数(図示せず)が、第2の特徴ベクトル228中の数を確率にコンバートし得る。したがって、DCN200の出力222は、画像226が1つまたは複数の特徴を含む確率である。
【0048】
[0069] 本例では、「標識」および「60」についての出力222における確率は、「30」、「40」、「50」、「70」、「80」、「90」、および「100」など、出力222の他のものの確率よりも高い。トレーニングの前に、DCN200によって生成される出力222は、不正確である可能性がある。したがって、誤差が、出力222とターゲット出力との間で計算され得る。ターゲット出力は、画像226(たとえば、「標識」および「60」)のグランドトゥルースである。次いで、DCN200の重みは、DCN200の出力222がターゲット出力とより密接に整合されるように調節され得る。
【0049】
[0070] 重みを調節するために、学習アルゴリズムは、重みのための勾配ベクトルを計算し得る。勾配は、重みが調節された場合に、誤差が増加または減少する量を示し得る。最上層において、勾配は、最後から2番目の層における活性化されたニューロンと出力層におけるニューロンとを結合する重みの値に直接対応し得る。下位層では、勾配は、重みの値と、上位層の計算された誤差勾配とに依存し得る。次いで、重みは、誤差を低減するために調節され得る。重みを調節するこの様式は、それがニューラルネットワークを通して「バックワードパス」を伴うので、「バックプロパゲーション」と呼ばれることがある。
【0050】
[0071] 実際には、重みの誤差勾配は、計算された勾配が真の誤差勾配を近似するように、少数の例にわたって計算され得る。この近似方法は、確率的勾配降下(stochastic gradient descent)と呼ばれることがある。システム全体の達成可能な誤差レートが減少しなくなるまで、または誤差レートがターゲットレベルに達するまで、確率的勾配降下が繰り返され得る。学習の後に、DCNは新しい画像を提示され得、ネットワークを通したフォワードパスは、DCNの推論または予測と見なされ得る出力222を生じ得る。
【0051】
[0072] 深層信念ネットワーク(DBN:deep belief network)は、隠れノードの複数の層を備える確率モデルである。DBNは、トレーニングデータセットの階層表現を抽出するために使用され得る。DBNは、制限ボルツマンマシン(RBM:Restricted Boltzmann Machine)の層を積層することによって取得され得る。RBMは、入力のセットにわたる確率分布を学習することができる人工ニューラルネットワークのタイプである。RBMは、各入力がそれにカテゴリー分類されるべきクラスに関する情報の不在下で確率分布を学習することができるので、RBMは、教師なし学習においてしばしば使用される。ハイブリッド教師なしおよび教師ありパラダイムを使用して、DBNの下部RBMは、教師なし様式でトレーニングされ得、特徴抽出器として働き得、上部RBMは、(前の層からの入力とターゲットクラスとの同時分布上で)教師あり様式でトレーニングされ得、分類器として働き得る。
【0052】
[0073] 深層畳み込みネットワーク(DCN)は、追加のプーリング層および正規化層で構成された、畳み込みネットワークのネットワークである。DCNは、多くのタスクに関して最先端の性能を達成している。DCNは、入力と出力ターゲットの両方が、多くの標本について知られており、勾配降下方法の使用によってネットワークの重みを修正するために使用される、教師あり学習を使用してトレーニングされ得る。
【0053】
[0074] DCNは、フィードフォワードネットワークであり得る。さらに、上記で説明されたように、DCNの第1の層におけるニューロンから次の上位層におけるニューロンのグループへの結合は、第1の層におけるニューロンにわたって共有される。DCNのフィードフォワードおよび共有結合は、高速処理のために活用され得る。DCNの計算負担は、たとえば、リカレントまたはフィードバック結合を備える同様のサイズのニューラルネットワークのそれよりもはるかに少ないことがある。
【0054】
[0075] 畳み込みネットワークの各層の処理は、空間的に不変のテンプレートまたは基底投射と見なされ得る。入力が、カラー画像の赤色、緑色、および青色チャネルなど、複数のチャネルに最初に分解された場合、その入力に関してトレーニングされた畳み込みネットワークは、画像の軸に沿った2つの空間次元と、色情報をキャプチャする第3の次元とをもつ、3次元であると見なされ得る。畳み込み結合の出力は、後続の層において特徴マップを形成すると考えられ、特徴マップ(たとえば、220)の各要素が、前の層(たとえば、特徴マップ218)における様々なニューロンから、および複数のチャネルの各々から入力を受信し得る。特徴マップにおける値は、整流(rectification)、max(0,x)など、非線形性を用いてさらに処理され得る。隣接するニューロンからの値は、さらにプールされ得、これは、ダウンサンプリングに対応し、さらなる局所不変性と次元削減とを提供し得る。
【0055】
[0076]
図3は、深層畳み込みネットワーク350の一例を示すブロック図である。深層畳み込みネットワーク350は、結合性および重み共有に基づく、複数の異なるタイプの層を含み得る。
図3に示されているように、深層畳み込みネットワーク350は、畳み込みブロック354A、354Bを含む。畳み込みブロック354A、354Bの各々は、畳み込み層(CONV)356と、正規化層(LNorm)358と、最大プーリング層(MAX POOL)360とで構成され得る。
【0056】
[0077] 畳み込み層356は、1つまたは複数の畳み込みフィルタを含み得、これは、特徴マップを生成するために入力データ352に適用され得る。2つの畳み込みブロック354A、354Bのみが示されているが、本開示はそのように限定しておらず、代わりに、設計選好に従って、任意の数の畳み込みブロック(たとえば、ブロック354A、354B)が深層畳み込みネットワーク350中に含まれ得る。正規化層358は、畳み込みフィルタの出力を正規化し得る。たとえば、正規化層358は、白色化またはラテラル抑制を行い得る。最大プーリング層360は、局所不変性および次元削減のために、空間にわたってダウンサンプリングアグリゲーションを行い得る。
【0057】
[0078] たとえば、深層畳み込みネットワークの並列フィルタバンクは、高性能および低電力消費を達成するために、画像処理システム100のCPU102またはGPU104にロードされ得る。代替実施形態では、並列フィルタバンクは、画像処理システム100のDSP106またはISP116にロードされ得る。さらに、深層畳み込みネットワーク350は、センサープロセッサ114など、画像処理システム100上に存在し得る他の処理ブロックにアクセスし得る。
【0058】
[0079] 深層畳み込みネットワーク350はまた、(「FC1」と標示された)層362Aおよび(「FC2」と標示された)層362Bなど、1つまたは複数の全結合層を含み得る。深層畳み込みネットワーク350は、ロジスティック回帰(LR)層364をさらに含み得る。深層畳み込みネットワーク350の各層356、358、360、362、364の間には、更新されるべき重み(図示せず)がある。層(たとえば、356、358、360、362、364)の各々の出力は、畳み込みブロック354Aのうちの第1のものにおいて供給された入力データ352(たとえば、画像、オーディオ、ビデオ、センサーデータおよび/または他の入力データ)から階層特徴表現を学習するために、深層畳み込みネットワーク350中の層(たとえば、356、358、360、362、364)のうちの後続の層の入力として働き得る。深層畳み込みネットワーク350の出力は、入力データ352についての分類スコア366である。分類スコア366は、確率のセットであり得、ここで、各確率は、入力データが特徴のセットからの特徴を含む確率である。
【0059】
[0080] 画像、オーディオ、およびビデオコンテンツが、記憶され得、および/またはデバイスの間で共有され得る。たとえば、画像、オーディオ、およびビデオコンテンツは、サービスをホストするおよびプラットフォームを共有するメディアにアップロードされ得、様々なデバイスに送信され得る。圧縮されていない画像、オーディオ、およびビデオコンテンツを記録することは、概して、画像、オーディオ、およびビデオコンテンツの解像度が増加するにつれて大幅に増加する大きいファイルサイズを生じる。たとえば、1080p/24(たとえば、24フレーム毎秒でキャプチャされる、幅が1920ピクセルで高さが1080ピクセルの解像度)において記録される圧縮されていない16ビット毎チャネル(bit per channel)ビデオは、12.4メガバイト毎フレーム(megabyte per frame)、または297.6メガバイト毎秒(megabyte per second)を占有し得る。24フレーム毎秒で4K解像度において記録される圧縮されていない16ビット毎チャネルビデオは、フレームごとに49.8メガバイト、または1195.2メガバイト毎秒を占有し得る。
【0060】
[0081] 圧縮されていない画像、オーディオ、およびビデオコンテンツが、物理的記憶域のためのかなりのメモリと、送信のための相当な帯域幅とを伴い得る大きいファイルを生じることがあるので、そのようなビデオコンテンツを圧縮するための技法が利用され得る。たとえば、画像コンテンツのサイズ、したがって、画像コンテンツを記憶することに関与する記憶域の量とビデオコンテンツを配信することに関与する帯域幅の量とを低減するために、様々な圧縮アルゴリズムが、画像、オーディオ、およびビデオコンテンツに適用され得る。
【0061】
[0082] いくつかの場合には、画像コンテンツは、特に、ジョイントフォトグラフィックエキスパートグループ(JPEG)、ベターポータブルグラフィックス(BPG)など、アプリオリに定義された圧縮アルゴリズムを使用して圧縮され得る。JPEGは、たとえば、離散コサイン変換(DCT)に基づく、圧縮の不可逆形態である。たとえば、画像のJPEG圧縮を実施するデバイスは、画像を最適な色空間(たとえば、ルミナンス(Y)、クロミナンス青(Cb)、クロミナンス赤(Cr)を含むYCbCr色空間)に変換することができ、ピクセルのグループを一緒に平均化することによってクロミナンス成分をダウンサンプリングすることができ、冗長画像データを除去し、したがって画像データを圧縮するために、DCT関数をピクセルのブロックに適用することができる。圧縮は、画像の内部の同様の領域の識別と、(DCT関数に基づいて)領域を同じカラーコードにコンバートすることとに基づく。ビデオコンテンツはまた、モーションピクチャエキスパートグループ(MPEG)アルゴリズム、H.264、または高効率ビデオコーディングアルゴリズムなど、アプリオリに定義された圧縮アルゴリズムを使用して圧縮され得る。
【0062】
[0083] これらのアプリオリに定義された圧縮アルゴリズムは、生画像およびビデオコンテンツ中の大部分の情報を保持することが可能であり得、信号処理および情報理論概念に基づいてアプリオリに定義され得る。しかしながら、これらのあらかじめ定義された圧縮アルゴリズムは、概して(たとえば、任意のタイプの画像/ビデオコンテンツに)適用可能であり得るが、それらの圧縮アルゴリズムは、コンテンツの類似度、ビデオキャプチャおよび配信のための新しい解像度またはフレームレート、非自然的な像(たとえば、レーダー像、または様々なセンサーを介してキャプチャされた他の像)などを考慮に入れないことがある。
【0063】
[0084] アプリオリに定義された圧縮アルゴリズムは、不可逆圧縮アルゴリズムと見なされる。入力画像(またはビデオフレーム)の不可逆圧縮では、入力画像は、厳密な入力画像が再構築されるように、コーディングされず、次いで、復号/再構築され得ない。そうではなく、不可逆圧縮では、圧縮された入力画像の復号/再構築の後に、入力画像の近似バージョンが生成される。不可逆圧縮は、再構築された画像中に存在するアーティファクトを生じるひずみ(distortion)を犠牲にして、ビットレートの低減を生じる。したがって、不可逆圧縮システムではレートひずみトレードオフがある。いくつかの圧縮方法(たとえば、特に、JPEG、BPG)の場合、ひずみベースアーティファクトは、ブロッキングアーティファクトまたは他のアーティファクトの形態をとることができる。いくつかの場合には、ニューラルネットワークベース圧縮が使用され得、画像データおよびビデオデータの高品質圧縮を生じることができる。いくつかの場合には、ぼけおよび色シフトがアーティファクトの例である。
【0064】
[0085] ビットレートが入力データの真のエントロピーを下回るときはいつでも、厳密な入力データを再構築することが困難または不可能であり得る。しかしながら、データの圧縮/展開から実現されるひずみ/損失があるという事実は、再構築された画像またはフレームがアーティファクトを有する必要がないことを意味しない。実際、圧縮された画像を、高い視覚的品質を有する別の同様の、ただし異なる画像に再構築することが可能であり得る。
【0065】
[0086] いくつかの場合には、圧縮および展開は、1つまたは複数の機械学習(ML)システムを使用して実施され得る。いくつかの例では、そのようなMLベースシステムは、高品質視覚出力を生成する画像および/またはビデオ圧縮を提供することができる。いくつかの例では、そのようなシステムは、レートひずみオートエンコーダ(RD-AE)など、(1つまたは複数の)深層ニューラルネットワークを使用してコンテンツ(たとえば、画像コンテンツ、ビデオコンテンツ、オーディオコンテンツなど)の圧縮および展開を実施することができる。深層ニューラルネットワークは、画像を(たとえば、コードzのセットを含む)ラテント(latent)コード空間にマッピングするオートエンコーダ(AE)を含むことができる。ラテントコード空間は、エンコーダおよびデコーダによって使用され、コンテンツがコードzに符号化された、コード空間を含むことができる。コード(たとえば、コードz)は、ラテント、ラテント変数またはラテント表現と呼ばれることもある。深層ニューラルネットワークは、ラテントコード空間からのコードzを可逆圧縮することができる(プライアまたはコードモデルとも呼ばれる)確率モデルを含むことができる。確率モデルは、入力データに基づいて、符号化されたデータを表すことができる、コードzのセットにわたる確率分布を生成することができる。いくつかの場合には、確率分布は(P(z))として示され得る。
【0066】
[0087] いくつかの例では、深層ニューラルネットワークは、確率分布P(z)および/またはコードzのセットに基づいて、出力されるべき圧縮されたデータを含むビットストリームを生成する算術コーダを含み得る。圧縮されたデータを含むビットストリームは、記憶され得、および/または受信デバイスに送信され得る。受信デバイスは、たとえば、算術デコーダ、確率(またはコード)モデル、およびAEのデコーダを使用してビットストリームを復号または展開するために、逆プロセスを実施することができる。圧縮されたデータを含むビットストリームを生成したデバイスも、圧縮されたデータを記憶域から取り出すとき、同様の復号/展開プロセスを実施することができる。更新されたモデルパラメータを圧縮/符号化および展開/復号するために、同様の技法が実施され得る。
【0067】
[0088] いくつかの例では、RD-AEは、(高レート動作と低レート動作とを含む)マルチレートAEとして機能するようにトレーニングおよび動作され得る。たとえば、マルチレートAEのエンコーダによって生成されたラテントコード空間は、2つまたはそれ以上のチャンクに分割され得る(たとえば、コードzはチャンクz1とチャンクz2とに分割される)。高レート動作では、マルチレートAEは、RD-AEに関して上記で説明された動作と同様に、データを展開するために受信デバイスによって使用され得るラテント空間全体(たとえば、z1、z2などを含むコードz)に基づくビットストリームを送出することができる。低レート動作では、受信デバイスに送出されるビットストリームは、ラテント空間のサブセット(たとえば、チャンクz2ではなくz1)に基づく。受信デバイスは、送出されたサブセットに基づいてラテント空間の残りの部分を推論することができ、ラテント空間のサブセットと、ラテント空間の推論された残りの部分とを使用して、再構築されたデータを生成することができる。
【0068】
[0089] RD-AEまたはマルチレートAEを使用してコンテンツを圧縮(および展開)することによって、符号化および復号機構は、様々な使用事例に適応可能であり得る。機械学習ベース圧縮技法は、高品質および/または低減されたビットレートを有する、圧縮されたコンテンツを生成することができる。いくつかの例では、RD-AEは、画像および/またはビデオデータポイントなど、データポイントのデータセットにわたる平均レートひずみ損失を最小限に抑えるようにトレーニングされ得る。いくつかの場合には、RD-AEはまた、受信機に送出され、受信機によって復号されるべき特定のデータポイントについて微調整され得る。いくつかの例では、データポイント上でRD-AEを微調整することによって、RD-AEは、高い圧縮(レート/ひずみ)性能を取得することができる。RD-AEに関連付けられたエンコーダが、ビットストリームを復号するために、受信機(たとえば、デコーダ)にAEモデルまたはAEモデルの一部を送出することができる。
【0069】
[0090] いくつかの場合には、ニューラルネットワーク圧縮システムが、(量子化された)ラテント表現から入力インスタンス(たとえば、入力画像、ビデオ、オーディオなど)を再構築することができる。ニューラルネットワーク圧縮システムはまた、ラテント表現を可逆圧縮するためにプライアを使用することができる。いくつかの場合には、ニューラルネットワーク圧縮システムは、テスト時間データ分布が知られており、比較的低いエントロピーである(たとえば、静的シーンを見ているカメラ、自律車におけるダッシュカムなど)と決定することができ、そのような分布に微調整または適応され得る。微調整または適応は、改善されたレート/ひずみ(RD)性能につながることがある。いくつかの例では、ニューラルネットワーク圧縮システムのモデルは、圧縮されるべき単一の入力インスタンスに適応され得る。ニューラルネットワーク圧縮システムは、ラテント表現とともに、いくつかの例ではパラメータ空間プライアを使用して量子化および圧縮され得る、モデル更新を提供することができる。
【0070】
[0091] 微調整は、モデル量子化の影響と、モデル更新を送出することによって招かれる追加コストとを考慮に入れることができる。いくつかの例では、ニューラルネットワーク圧縮システムは、RD損失、ならびに、モデルプライア下でモデル更新を送出するために必要とされるビット数を測定する、追加のモデルレート項Mを使用して、微調整され、複合RDM損失を生じ得る。
【0071】
[0092]
図4は、本開示のいくつかの例による、送信デバイス410と受信デバイス420とを含むシステム400を示す図である。送信デバイス410および受信デバイス420は、各々、いくつかの場合にはRD-AEと呼ばれることがある。送信デバイス410は、画像コンテンツを圧縮することができ、圧縮された画像コンテンツを記憶し、および/または、圧縮された画像コンテンツを展開のために受信デバイス420に送信することができる。受信デバイス420は、圧縮された画像コンテンツを展開することができ、展開された画像コンテンツを(たとえば、表示、編集などのために)受信デバイス420上で出力することができ、および/または、展開された画像コンテンツを、受信デバイス420に接続された他のデバイス(たとえば、テレビジョン、モバイルデバイス、または他のデバイス)に出力することができる。いくつかの場合には、受信デバイス420は、画像コンテンツを(エンコーダ422を使用して)圧縮し、圧縮された画像コンテンツを記憶し、および/または送信デバイス410などの別のデバイスに送信することによって、送信デバイスになることができる(その場合、送信デバイス410が受信デバイスになる)。システム400は画像圧縮および展開に関して本明細書で説明されるが、当業者は、システム400が、ビデオコンテンツを圧縮および展開するために本明細書で説明される技法を使用することができることを諒解されよう。
【0072】
[0093]
図4に示されているように、送信デバイス410は画像圧縮パイプラインを含み、受信デバイス420は画像ビットストリーム展開パイプラインを含む。送信デバイス410中の画像圧縮パイプラインおよび受信デバイス420中のビットストリーム展開パイプラインは、概して、本開示の態様によれば、画像コンテンツを圧縮し、および/または受信されたビットストリームを画像コンテンツに展開するために、1つまたは複数の人工ニューラルネットワークを使用する。送信デバイス410中の画像圧縮パイプラインは、オートエンコーダ401と、コードモデル404と、算術コーダ406とを含む。いくつかの実装形態では、算術コーダ406は、随意であり、いくつかの場合には省略され得る。受信デバイス420中の画像展開パイプラインは、オートエンコーダ421と、コードモデル424と、算術デコーダ426とを含む。いくつかの実装形態では、算術デコーダ426は、随意であり、いくつかの場合には省略され得る。送信デバイス410のオートエンコーダ401およびコードモデル404は、前にトレーニングされた機械学習システムとして
図4に示されており、したがって、トレーニングされた機械学習システムの推論または動作中に動作を実施するために構成される。オートエンコーダ421およびコードモデル424も、前にトレーニングされた機械学習システムとして示されている。
【0073】
[0094] オートエンコーダ401は、エンコーダ402とデコーダ403とを含む。エンコーダ402は、受信された圧縮されていない画像コンテンツに対する不可逆圧縮を、圧縮されていない画像コンテンツの1つまたは複数の画像中のピクセルを(コードzを含む)ラテントコード空間にマッピングすることによって、実施することができる。概して、エンコーダ402は、圧縮された(または符号化された)画像を表すコードzが離散またはバイナリであるように構成され得る。これらのコードは、確率的摂動(stochastic perturbation)技法、ソフトベクトル量子化、または別個のコードを生成することができる他の技法に基づいて生成され得る。いくつかの態様では、オートエンコーダ401は、圧縮されていない画像を、圧縮可能な(低エントロピー)分布を有するコードにマッピングし得る。これらのコードは、交差エントロピーにおいて、あらかじめ定義されたまたは学習された事前分布に近いことがある。
【0074】
[0095] いくつかの例では、オートエンコーダ401は、畳み込みアーキテクチャを使用して実装され得る。たとえば、いくつかの場合には、オートエンコーダ401は、画像コンテンツをラテントコード空間にマッピングするための空間フィルタをオートエンコーダ401が学習するように、2次元畳み込みニューラルネットワーク(CNN)として構成され得る。システム400がビデオデータをコーディングするために使用される例では、オートエンコーダ401は、ビデオをラテントコード空間にマッピングするための時空間フィルタをオートエンコーダ401が学習するように、3次元CNNとして構成され得る。そのようなネットワークでは、オートエンコーダ401は、キーフレーム(たとえば、フレームのシーケンスの始端をマークする初期フレーム。シーケンス中の後続のフレームが、シーケンス中の初期フレームに対する差分として説明される)、キーフレームとビデオ中の他のフレームとの間のワーピング(または差分)、および残差ファクタに関して、ビデオを符号化し得る。他の態様では、オートエンコーダ401は、前のフレームと、フレーム間の残差ファクタと、チャネルを積み重ねることまたはリカレント層を含むことによる条件づけとを条件とする2次元ニューラルネットワークとして実装され得る。
【0075】
[0096] オートエンコーダ401のエンコーダ402は、入力として(
図4では画像xとして指定される)第1の画像を受信することができ、第1の画像xをラテントコード空間中のコードzにマッピングすることができる。上述のように、エンコーダ402は、ラテントコード空間が、各(x,y)位置において、その位置を中心とする画像xのブロックを記述するベクトルを有するように、2次元畳み込みネットワークとして実装され得る。x座標は画像xのブロック中の水平ピクセルロケーションを表すことができ、y座標は画像xのブロック中の垂直ピクセルロケーションを表すことができる。ビデオデータをコーディングするとき、ラテントコード空間はt変数または位置を有することができ、t変数は、(空間x座標およびy座標に加えて)ビデオデータのブロック中のタイムスタンプを表す。水平および垂直ピクセル位置の2つの次元を使用することによって、ベクトルは、画像x中の画像パッチを記述することができる。
【0076】
[0097] 次いで、オートエンコーダ401のデコーダ403が、コードzを展開して、第1の画像xの再構築
【0077】
【0078】
を取得することができる。概して、再構築
【0079】
【0080】
は、圧縮されていない第1の画像xの近似であり得、第1の画像xの厳密なコピーである必要がない。いくつかの場合には、再構築された画像
【0081】
【0082】
は、送信デバイスに記憶するための圧縮された画像ファイルとして出力され得る。
【0083】
[0098] コードモデル404は、符号化された画像またはそれの部分を表すコードzを受信し、コードzを表すために使用され得る圧縮されたコードワードのセットにわたる確率分布P(z)を生成する。いくつかの例では、コードモデル404は、確率自己回帰生成モデルを含むことができる。いくつかの場合には、確率分布が生成され得るコードは、算術コーダ406に基づいてビット割当てを制御する学習された分布を含む。たとえば、算術コーダ406を使用して、第1のコードzのための圧縮コードが独立して予測され得、第2のコードzのための圧縮コードが、第1のコードzのための圧縮コードに基づいて予測され得、第3のコードzのための圧縮コードが、第1のコードzのための圧縮コードおよび第2のコードzのための圧縮コードに基づいて予測され得、以下同様である。圧縮コードは、概して、圧縮されるべき所与の画像の異なる時空間チャンクを表す。
【0084】
[0099] いくつかの態様では、zは3次元テンソルとして表され得る。テンソルの3つの次元は、(たとえば、コードzc,w,hとして示される)特徴チャネル次元、ならびに高さおよび幅空間次元を含み得る。(チャネルならびに水平および垂直位置によってインデックス付けされるコードを表す)各コードzc,w,hは、前のコードに基づいて予測され得、これは、コードの固定のおよび理論的に任意の順序付けであり得る。いくつかの例では、コードは、所与の画像ファイルを開始から終了まで分析することと、画像中の各ブロックをラスタ走査順序で分析することとによって生成され得る。
【0085】
[0100] コードモデル404は、確率自己回帰モデルを使用して入力コードzのための確率分布を学習することができる。確率分布は、(上記で説明されたように)それの前の値を条件とし得る。いくつかの例では、確率分布は、以下の式によって表され得る。
【0086】
【0087】
ここで、cは、すべての画像チャネルC(たとえば、R、G、およびBチャネル、Y、Cb、およびCrチャネル、または他のチャネル)のためのチャネルインデックスであり、wは、総画像フレーム幅Wのための幅インデックスであり、hは、総画像フレーム高さHのための高さインデックスである。
【0088】
[0101] いくつかの例では、確率分布P(z)は、因果的畳み込みの完全畳み込みニューラルネットワークによって予測され得る。いくつかの態様では、畳み込みニューラルネットワークの各層のカーネルは、畳み込みネットワークが、確率分布を計算する際に前の値z0:c,0:w,0:hに気づいており、他の値に気づいていないことがあるようにマスキングされ得る。いくつかの態様では、畳み込みネットワークの最終層は、ラテント空間中のコードが入力値にわたって適用可能である確率(たとえば、所与のコードが所与の入力を圧縮するために使用され得る尤度)を決定するソフトマックス関数を含み得る。
【0089】
[0102] 算術コーダ406は、コードzの予測に対応する(「0010011...」として
図4に示されている)ビットストリーム415を生成するために、コードモデル404によって生成された確率分布P(z)を使用する。コードzの予測は、可能なコードのセットにわたって生成された確率分布P(z)中で最も高い確率スコアを有するコードとして表され得る。いくつかの態様では、算術コーダ406は、コードzの予測の正確さとオートエンコーダ401によって生成された実際のコードzとに基づいて、可変長のビットストリームを出力することができる。たとえば、ビットストリーム415は、予測が正確である場合、短いコードワードに対応することができるが、ビットストリーム415は、コードzとコードzの予測との間の差分の大きさが増加するにつれて、より長いコードワードに対応し得る。
【0090】
[0103] いくつかの場合には、ビットストリーム415は、圧縮された画像ファイルに記憶するために算術コーダ406によって出力され得る。ビットストリーム415はまた、要求元デバイス(たとえば、
図4に示されているように、受信デバイス420)への送信のために出力され得る。概して、算術コーダ406によって出力されたビットストリーム415は、圧縮された画像ファイル上に適用された展開プロセス中にzが正確に復元され得るように、zを可逆的に符号化し得る。
【0091】
[0104] 算術コーダ406によって生成され、送信デバイス410から送信されたビットストリーム415は、受信デバイス420によって受信され得る。送信デバイス410と受信デバイス420との間の送信は、様々な好適なワイヤードまたはワイヤレス通信技術のいずれかを使用して行われ得る。送信デバイス410と受信デバイス420との間の通信は、直接であり得るか、または、1つまたは複数のネットワークインフラストラクチャ構成要素(たとえば、基地局、中継局、移動局、ネットワークハブ、ルータ、および/または他のネットワークインフラストラクチャ構成要素)を通して実施され得る。
【0092】
[0105] 図示のように、受信デバイス420は、算術デコーダ426と、コードモデル424と、オートエンコーダ421とを含むことができる。オートエンコーダ421は、エンコーダ422とデコーダ423とを含む。デコーダ423は、所与の入力について、デコーダ403と同じまたは同様の出力を生成することができる。オートエンコーダ421はエンコーダ422を含むものとして示されているが、エンコーダ422は、送信デバイス410から受信されたコードzから
【0093】
【0094】
(たとえば、送信デバイス410において圧縮された元の画像xの近似)を取得するために、復号プロセス中に使用される必要がない。
【0095】
[0106] 受信されたビットストリーム415は、ビットストリームから1つまたは複数のコードzを取得するために算術デコーダ426に入力され得る。算術デコーダ426は、可能なコードのセットにわたってコードモデル424によって生成された確率分布P(z)と、各生成されたコードzをビットストリームに関連付ける情報とに基づいて、展開されたコードzを抽出し得る。ビットストリームの受信された部分と次のコードzの確率予測とを仮定すれば、算術デコーダ426は、新しいコードzを、それが送信デバイス410において算術コーダ406によって符号化されたように、生成することができる。新しいコードzを使用して、算術デコーダ426は、連続するコードzについての確率予測を行い、ビットストリームの追加の部分を読み取り、受信されたビットストリーム全体が復号されるまで連続するコードzを復号することができる。展開されたコードzは、オートエンコーダ421中のデコーダ423に提供され得る。デコーダ423は、コードzを展開し、画像コンテンツxの(再構築または復号された画像と呼ばれることがある)近似
【0096】
【0097】
を出力する。いくつかの場合には、コンテンツxの近似
【0098】
【0099】
は、後の取出しのために記憶され得る。いくつかの場合には、コンテンツxの近似
【0100】
【0101】
は、受信デバイス420によって復元され、受信デバイス420に通信可能に結合されたまたはそれと一体のスクリーン上に表示され得る。
【0102】
[0107] 上述のように、送信デバイス410のオートエンコーダ401およびコードモデル404は、前にトレーニングされた機械学習システムとして
図4に示されている。いくつかの態様では、オートエンコーダ401およびコードモデル404は、画像データを使用して一緒にトレーニングされ得る。たとえば、オートエンコーダ401のエンコーダ402は、入力として第1のトレーニング画像nを受信することができ、第1のトレーニング画像nをラテントコード空間中のコードzにマッピングすることができる。コードモデル404は、(上記で説明された技法と同様の)確率自己回帰モデルを使用してコードzのための確率分布P(z)を学習することができる。算術コーダ406は、画像ビットストリームを生成するために、コードモデル404によって生成された確率分布P(z)を使用することができる。コードモデル404からのビットストリームおよび確率分布P(z)を使用して、算術コーダ406は、コードzを生成することができ、コードzをオートエンコーダ401のデコーダ403に出力することができる。デコーダ403は、次いで、コードzを展開して、第1のトレーニング画像nの再構築
【0103】
【0104】
を取得することができる(ここで、再構築
【0105】
【0106】
は、圧縮されていない第1のトレーニング画像nの近似である)。
【0107】
[0108] いくつかの場合には、送信デバイス410のトレーニング中に使用されるバックプロパゲーションエンジンが、1つまたは複数の損失関数に基づいてオートエンコーダ401およびコードモデル404のニューラルネットワークのパラメータ(たとえば、重み、バイアスなど)を調整するために、バックプロパゲーションプロセスを実施することができる。いくつかの場合には、バックプロパゲーションプロセスは、確率的勾配降下技法に基づき得る。バックプロパゲーションは、フォワードパスと、1つまたは複数の損失関数と、バックワードパスと、重み(および/または(1つまたは複数の)他のパラメータ)更新とを含むことができる。フォワードパスと、損失関数と、バックワードパスと、パラメータ更新とは、1つのトレーニング反復のために実施され得る。プロセスは、ニューラルネットワークの重みおよび/または他のパラメータが正確に調整されるまでトレーニングデータの各セットについて、ある数の反復の間繰り返され得る。
【0108】
[0109] たとえば、オートエンコーダ401は、nと、
【0109】
【0110】
とを比較して、第1のトレーニング画像nと、再構築された第1のトレーニング画像
【0111】
【0112】
との間の(たとえば、距離ベクトルまたは他の差分値によって表される)損失を決定することができる。損失関数は、出力中の誤差を分析するために使用され得る。いくつかの例では、損失は最尤に基づき得る。圧縮されていない画像nを入力として使用し、再構築された画像
【0113】
【0114】
を出力として使用する1つの例示的な例では、損失関数Loss=D+β*Rは、オートエンコーダ401およびコードモデル404のニューラルネットワークシステムをトレーニングするために使用され得、ここで、Rはレートであり、Dはひずみであり、*は乗算関数を示し、βは、ビットレートを定義する値に設定されるトレードオフパラメータである。別の例では、損失関数
【0115】
【0116】
は、オートエンコーダ401およびコードモデル404のニューラルネットワークシステムをトレーニングするために使用され得る。他のトレーニングデータが使用されるときなど、いくつかの場合には、他の損失関数が使用され得る。別の損失関数の一例は、
【0117】
【0118】
として定義された平均2乗誤差(MSE)を含む。MSEは、実際の応答-予測された(出力)応答を2乗したものの和の1/2倍を計算する。
【0119】
[0110] 決定された損失(たとえば、距離ベクトルまたは他の差分値)に基づいて、およびバックプロパゲーションプロセスを使用して、オートエンコーダ401およびコードモデル404のニューラルネットワークシステムのパラメータ(たとえば、重み、バイアスなど)は、入力された圧縮されていない画像と、オートエンコーダ401によって出力として生成された圧縮された画像コンテンツとの間の損失を低減するように調節され得る(受信された画像コンテンツとラテントコード空間との間のマッピングを効果的に調節する)。
【0120】
[0111] 実際の出力値(再構築された画像)が入力画像とは大きく異なり得るので、損失(または誤差)は、第1のトレーニング画像について高くなり得る。トレーニングの目的は、予測された出力のための損失の量を最小限に抑えることである。ニューラルネットワークは、(対応する重みをもつ)ニューラルネットワークのどのノードがニューラルネットワークの損失に最も寄与したのかを決定することによってバックワードパスを実施することができ、損失が減少し、最終的に最小限に抑えられるように重み(および/または他のパラメータ)を調節することができる。ニューラルネットワークの損失に最も寄与した重みを決定するために、(dL/dWとして示される、ここで、Wは特定の層における重みである)重みに対する損失の導関数が計算され得る。たとえば、重みは、それらが勾配の反対方向に変化するように更新され得る。重み更新は、
【0121】
【0122】
として示され得、ここで、wは、重みを示し、wiは、初期重みを示し、ηは、学習レートを示す。学習レートは、任意の好適な値に設定され得、高い学習レートはより大きい重み更新を含み、より低い値はより小さい重み更新を示す。
【0123】
[0112] オートエンコーダ401およびコードモデル404のニューラルネットワークシステムは、所望の出力が達成されるまでそのような様式でトレーニングされ続けることができる。たとえば、オートエンコーダ401およびコードモデル404は、入力画像nと生成されたコードzの展開から生じる再構築された画像
【0124】
【0125】
との間の差分を最小限に抑えるかまたはさもなければ低減するために、バックプロパゲーションプロセスを繰り返すことができる。
【0126】
[0113] オートエンコーダ421およびコードモデル424は、送信デバイス410のオートエンコーダ401およびコードモデル404をトレーニングするための上記で説明されたものと同様の技法を使用してトレーニングされ得る。いくつかの場合には、オートエンコーダ421およびコードモデル424は、送信デバイス410のオートエンコーダ401およびコードモデル404をトレーニングするために使用される同じまたは異なるトレーニングデータセットを使用してトレーニングされ得る。
【0127】
[0114]
図4に示されている例では、レートひずみオートエンコーダ(送信デバイス410および受信デバイス420)は、ビットレートに従って推論においてトレーニングされ、稼働される。いくつかの実装形態では、レートひずみオートエンコーダは、変動する情報量がラテントコードzにおいて提供されるとき、(たとえば、入力画像に関するひずみによる限られたアーティファクトを伴わないまたは伴う)高品質の再構築された画像またはビデオフレームの生成および出力を可能にするために、複数のビットレートにおいてトレーニングされ得る。
【0128】
[0115] いくつかの実装形態では、ラテントコードzは、少なくとも2つのチャンクz1およびz2に分割され得る。RD-AEモデルが高レート設定において使用されるとき、両方のチャンクが復号のためにデバイスに送信される。レートひずみオートエンコーダモデルが低レート設定において使用されるとき、チャンクz1のみが送信され、チャンクz2がデコーダ側でz1から推論される。z1からのz2の推論は、以下でより詳細に説明されるように、様々な技法を使用して実施され得る。
【0129】
[0116] いくつかの実装形態では、(たとえば、大量の情報を伝達することができる)連続ラテントと(たとえば、より少ない情報を含んでいる)対応する量子化された離散ラテントとのセットが使用され得る。RD-AEモデルをトレーニングした後に、補助逆量子化モデルがトレーニングされ得る。いくつかの場合には、RD-AEを使用するとき、離散ラテントのみが送信され、補助逆量子化モデルは、離散ラテントから連続ラテントを推論するためにデコーダ側で使用される。
【0130】
[0117] システム400がいくつかの構成要素を含むように示されているが、システム400が
図4に示されている構成要素よりも多いまたは少ない構成要素を含むことができることを、当業者は諒解されよう。たとえば、システム400の送信デバイス410および/または受信デバイス420はまた、いくつかの事例では、1つまたは複数のメモリデバイス(たとえば、RAM、ROM、キャッシュなど)、1つまたは複数のネットワーキングインターフェース(たとえば、ワイヤードおよび/またはワイヤレス通信インターフェースなど)、1つまたは複数のディスプレイデバイス、および/あるいは
図4に示されていない他のハードウェアまたは処理デバイスを含むことができる。
図4に示されている構成要素および/またはシステム400の他の構成要素は、1つまたは複数の計算または処理構成要素を使用して実装され得る。1つまたは複数の計算構成要素は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、および/または画像信号プロセッサ(ISP)を含むことができる。システム1600とともに実装され得るコンピューティングデバイスおよびハードウェア構成要素の例示的な例が、
図16に関して以下で説明される。
【0131】
[0118] システム400は、単一のコンピューティングデバイスまたは複数のコンピューティングデバイスの一部であるか、またはそれによって実装され得る。いくつかの例では、送信デバイス410は第1のデバイスの一部であり得、受信デバイス420は第2のコンピューティングデバイスの一部であり得る。いくつかの例では、送信デバイス410および/または受信デバイス420は、電話システム(たとえば、スマートフォン、セルラー電話、会議システムなど)、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、スマートテレビジョン、ディスプレイデバイス、ゲーミングコンソール、ビデオストリーミングデバイス、SOC、IoT(モノのインターネット)デバイス、スマートウェアラブルデバイス(たとえば、ヘッドマウントディスプレイ(HMD)、スマートグラスなど)、カメラシステム(たとえば、デジタルカメラ、IPカメラ、ビデオカメラ、防犯カメラなど)、または(1つまたは複数の)任意の他の好適な電子デバイスなど、(1つまたは複数の)電子デバイスの一部として含まれ得る。いくつかの場合には、システム400は、
図1に示されている画像処理システム100によって実装され得る。他の場合、システム400は、1つまたは複数の他のシステムまたはデバイスによって実装され得る。
【0132】
[0119]
図5Aは、例示的なニューラルネットワーク圧縮システム500を示す図である。いくつかの例では、ニューラルネットワーク圧縮システム500は、RD-AEシステムを含むことができる。
図5Aでは、ニューラルネットワーク圧縮システム500は、エンコーダ502と、算術エンコーダ508と、算術デコーダ512と、デコーダ514とを含む。いくつかの場合には、エンコーダ502および/またはデコーダ514は、それぞれ、エンコーダ402および/またはデコーダ403と同じであり得る。他の場合には、エンコーダ502および/またはデコーダ514は、それぞれ、エンコーダ402および/またはデコーダ403とは異なり得る。
【0133】
[0120] エンコーダ502は、画像501(画像xi)を入力として受信することができ、画像501(画像xi)をラテントコード空間中のラテントコード504(ラテントzi)にマッピングし、および/またはコンバートすることができる。画像501は、静止画像、および/またはフレームのシーケンス(たとえば、ビデオ)に関連付けられたビデオフレームを表すことができる。いくつかの場合には、エンコーダ502は、ラテントコード504を生成するためにフォワードパスを実施することができる。いくつかの例では、エンコーダ502は、学習可能な関数を実装することができる。いくつかの場合には、エンコーダ502は、
【0134】
【0135】
によってパラメータ化された学習可能な関数を実装することができる。たとえば、エンコーダ502は、関数
【0136】
【0137】
を実装することができる。いくつかの例では、学習可能な関数は、デコーダ514と共有されるか、またはデコーダ514によって知られている必要がない。
【0138】
[0121] 算術エンコーダ508は、ラテントコード504(ラテントzi)およびラテントプライア(latent prior)506に基づいてビットストリーム510を生成することができる。いくつかの例では、ラテントプライア506は、学習可能な関数を実装することができる。いくつかの場合には、ラテントプライア506は、ψによってパラメータ化された学習可能な関数を実装することができる。たとえば、ラテントプライア506は、関数pψ(z)を実装することができる。ラテントプライア506は、可逆圧縮を使用してラテントコード504(ラテントzi)をビットストリーム510にコンバートするために使用され得る。ラテントプライア506は、送出機側(sender side)(たとえば、エンコーダ502および/または算術エンコーダ508)と受信機側(receiver side)(たとえば、算術デコーダ512および/またはデコーダ514)の両方において共有され、および/または利用可能にされ得る。
【0139】
[0122] 算術デコーダ512は、符号化されたビットストリーム510を算術エンコーダ508から受信し、ラテントプライア506を使用して、符号化されたビットストリーム510中のラテントコード504(ラテントzi)を復号することができる。デコーダ514は、ラテントコード504(ラテントzi)を近似再構築画像516(再構築
【0140】
【0141】
)に復号することができる。いくつかの場合には、デコーダ514は、θによってパラメータ化された学習可能な関数を実装することができる。たとえば、デコーダ514は、関数pθ(x|z)を実装することができる。デコーダ514によって実装される学習可能な関数は、送出機側(たとえば、エンコーダ502および/または算術エンコーダ508)と受信機側(たとえば、算術デコーダ512および/またはデコーダ514)の両方において共有され、および/または利用可能にされ得る。
【0142】
[0123] ニューラルネットワーク圧縮システム500は、レートひずみを最小限に抑えるようにトレーニングされ得る。いくつかの例では、レートはビットストリーム510(ビットストリームb)の長さを反映し、ひずみは、画像501(画像xi)と再構築画像516(再構築
【0143】
【0144】
)との間のひずみを反映する。パラメータβが、特定のレートひずみ比についてモデルをトレーニングするために使用され得る。いくつかの例では、パラメータβは、レートとひずみとの間のあるトレードオフを定義および/または実装するために使用され得る。
【0145】
[0124] いくつかの例では、損失が以下のように示され得る。
【0146】
【0147】
ここで、関数Eは期待値である。ひずみ(x│z;θ)は、たとえば、平均2乗誤差(MSE)など、損失関数に基づいて決定され得る。いくつかの例では、項-logpθ(x│z)は、ひずみD(x|z;θ)を示し、および/または表すことができる。
【0148】
[0125] ラテントを送出するためのレートは、Rz(z;ψ)として示され得る。いくつかの例では、項logpψ(z)は、レートRz(z;ψ)を示し、および/または表すことができる。いくつかの場合には、損失は、以下のように、フルデータセットDにわたって最小限に抑えられ得る。
【0149】
【0150】
[0126]
図5Bは、推論プロセスを実装するための例示的なニューラルネットワーク圧縮システム530を示す図である。図示のように、エンコーダ502は、画像501をラテントコード504にコンバートすることができる。いくつかの例では、画像501は、静止画像、および/またはフレームのシーケンス(たとえば、ビデオ)に関連付けられたビデオフレームを表すことができる。
【0151】
[0127] いくつかの例では、エンコーダ502は、単一のフォワードパスを使用して画像501を符号化することができる。
【0152】
【0153】
算術エンコーダ508は、次いで、ラテントプライア506下でラテントコード504(ラテントzi)の算術コーディングを実施して、ビットストリーム520
【0154】
【0155】
を生成することができる。いくつかの例では、算術エンコーダ508は、以下のようにビットストリーム520を生成することができる。
【0156】
【0157】
[0128] 算術デコーダ512は、算術エンコーダ508からビットストリーム520を受信し、ラテントプライア506下でラテントコード504(ラテントzi)の算術復号を実施することができる。いくつかの例では、算術デコーダ512は、以下のようにビットストリーム520からラテントコード504を復号することができる。
【0158】
【0159】
デコーダ514は、ラテントコード504(ラテントzi)を復号し、再構築画像516(再構築
【0160】
【0161】
)を生成することができる。いくつかの例では、デコーダ514は、以下のように単一のフォワードパスを使用してラテントコード504(ラテントzi)を復号することができる。
【0162】
【0163】
[0129] いくつかの例では、RD-AEシステムは、トレーニングデータのセットを使用してトレーニングされ、さらに、受信機(たとえば、デコーダ)に送信され、それによって復号されるべきデータポイント(たとえば、画像データ、ビデオデータ、オーディオデータ)について微調整され得る。たとえば、推論時間において、RD-AEシステムは、受信機に送信されている画像データに関して微調整され得る。圧縮モデルは概して大きいので、モデルに関連付けられたパラメータを受信機に送出することは、ネットワーク(たとえば、帯域幅など)、記憶域および計算リソースなど、リソースに関して、極めてコストがかかることがある。いくつかの場合には、RD-AEシステムは、圧縮され、展開のために受信機に送出されている単一のデータポイントに関して、微調整され得る。これは、圧縮/展開効率、性能、および/または品質を維持し、および/または増加させながら、受信機に送出される情報の量(および関連するコスト)を制限することができる。
【0164】
[0130]
図6は、モデルプライアを使用して微調整される例示的なニューラルネットワーク圧縮システム600によって実装される例示的な推論プロセスを示す図である。いくつかの例では、ニューラルネットワーク圧縮システム600は、RDM-AEモデルプライアを使用して微調整されるRD-AEシステムを含むことができる。いくつかの場合には、ニューラルネットワーク圧縮システム600は、モデルプライアを使用して微調整されるAEモデルを含むことができる。
【0165】
[0131] この例示的な例では、ニューラルネットワーク圧縮システム600は、エンコーダ602と、算術エンコーダ608と、算術デコーダ612と、デコーダ614と、モデルプライア616と、ラテントプライア606とを含む。いくつかの場合には、エンコーダ602は、エンコーダ402またはエンコーダ502と同じであるかまたはそれとは異なり得、デコーダ614は、デコーダ403またはデコーダ514と同じであるかまたはそれとは異なり得る。算術エンコーダ608は、算術コーダ406または算術エンコーダ508と同じであるかまたはそれとは異なり得、算術デコーダ612は、算術デコーダ426または算術デコーダ512と同じであるかまたはそれとは異なり得る。
【0166】
[0132] ニューラルネットワーク圧縮システム600は、画像601のためのラテントコード604(ラテントzi)を生成することができる。ニューラルネットワーク圧縮システム600は、ラテントコード604およびラテントプライア606を使用して画像601(画像xi)を符号化し、再構築画像620(再構築
【0167】
【0168】
)を生成するために受信機によって使用され得るビットストリーム610を生成することができる。いくつかの例では、画像601は、静止画像、および/またはフレームのシーケンス(たとえば、ビデオ)に関連付けられたビデオフレームを表すことができる。
【0169】
[0133] いくつかの例では、ニューラルネットワーク圧縮システム600は、RDM-AE損失を使用して微調整され得る。ニューラルネットワーク圧縮システム600は、レートひずみモデルレート(RDM:rate-distortion-model rate)損失を最小限に抑えることによってトレーニングされ得る。いくつかの例では、エンコーダ側において、AEモデルは、以下のようにRDM損失を使用して画像601(画像xi)に関して微調整され得る。
【0170】
【0171】
[0134] 微調整されたエンコーダ602は、画像601(画像xi)を符号化してラテントコード604を生成することができる。いくつかの場合には、微調整されたエンコーダ602は、以下のように単一のフォワードパスを使用して画像601(画像xi)を符号化することができる。
【0172】
【0173】
算術エンコーダ608は、ラテントプライア606を使用して、ラテントコード604を算術デコーダ612のためのビットストリーム610にコンバートすることができる。算術エンコーダ608は、モデルプライア616下で、微調整されたデコーダ614と微調整されたラテントプライア606とのパラメータをエントロピーコーディングし、微調整されたデコーダ614と微調整されたラテントプライア606との圧縮されたパラメータを含むビットストリーム611を生成することができる。いくつかの例では、ビットストリーム611は、微調整されたデコーダ614と微調整されたラテントプライア606との更新されたパラメータを含むことができる。更新されたパラメータは、たとえば、微調整より前のデコーダ614およびラテントプライア606など、ベースラインデコーダおよびラテントプライアに対するパラメータ更新を含むことができる。
【0174】
[0135] いくつかの場合には、微調整されたラテントプライア606は、以下のようにモデルプライア616下でエントロピーコーディングされ得、
【0175】
【0176】
微調整されたデコーダ614は、以下のようにモデルプライア616下でエントロピーコーディングされ得、
【0177】
【0178】
ラテントコード604(ラテントzi)は、以下のように、微調整されたラテントプライア606下でエントロピーコーディングされ得る。
【0179】
【0180】
いくつかの場合には、デコーダ側において、微調整されたラテントプライア606は、以下のようにモデルプライア616下でエントロピーコーディングされ得、
【0181】
【0182】
微調整されたデコーダ614は、以下のようにモデルプライア616下でエントロピーコーディングされ得、
【0183】
【0184】
ラテントコード604(ラテントzi)は、以下のように、微調整されたラテントプライア606下でエントロピーコーディングされ得る。
【0185】
【0186】
[0136] デコーダ614は、ラテントコード604(ラテントzi)を近似再構築画像620(再構築
【0187】
【0188】
)に復号することができる。いくつかの例では、デコーダ614は、以下のように、微調整されたデコーダの単一のフォワードパスを使用してラテントコード604を復号することができる。
【0189】
【0190】
[0137] 前に説明されたように、ニューラルネットワーク圧縮システム600は、RDM損失を最小限に抑えることによってトレーニングされ得る。いくつかの場合には、レートはビットストリームb(たとえば、ビットストリーム610および/または611)の長さを反映することができ、ひずみは、入力画像601(画像xi)と再構築画像620(再構築
【0191】
【0192】
との間のひずみを反映することができ、モデルレートは、受信機に(たとえば、デコーダ614に)モデル更新(たとえば、更新されたパラメータ)を送出するために使用され、および/または必要とされるビットストリームの長さを反映することができる。パラメータβが、特定のレートひずみ比についてモデルをトレーニングするために使用され得る。
【0193】
[0138] いくつかの例では、データポイントxについての損失が、以下のように推論時間において最小限に抑えられ得る。
【0194】
【0195】
いくつかの例では、RDM損失は以下のように示され得る。
【0196】
【0197】
いくつかの場合には、ひずみD(x│z;θ)は、たとえば、平均2乗誤差(MSE)など、損失関数に基づいて決定され得る。
【0198】
[0139] 項-logpθ(x│z)は、ひずみD(x|z;θ)を示し、および/または表すことができる。項β logpψ(z)は、ラテントRz(z;ψ)を送出するためのレートを示し、および/または表すことができ、項β logpω(ψ,θ)は、微調整されたモデル更新Rψ,θ(ψ,θ;ω)を送出するためのレートを示し、および/または表すことができる。
【0199】
[0140] いくつかの場合には、モデルプライア616は、モデル更新を送出するためのビットレートオーバーヘッドの長さを反映することができる。いくつかの例では、モデル更新を送出するためのビットレートは、以下のように説明され得る。
【0200】
【0201】
いくつかの場合には、モデルプライアは、更新なしにモデルを送出することが安価であるように、すなわち、ビット長(モデルレート損失)が小さくなる:
【0202】
【0203】
ように、選択され得る。
【0204】
[0141] いくつかの場合には、RDM損失関数を使用して、ニューラルネットワーク圧縮システム600は、ラテントレートまたはひずみが少なくとも同数のビットで減少する場合のみ、モデル更新のためのビットストリーム
【0205】
【0206】
にビットを追加し得る。これは、レートひずみ(R/D)性能にブーストを与え得る。たとえば、ニューラルネットワーク圧縮システム600は、モデル更新を送出するためのビットストリーム611中のビットの数を、それが少なくとも同数のビットでレートまたはひずみを減少させることもできる場合、増加させ得る。他の場合には、ニューラルネットワーク圧縮システム600は、ラテントレートまたはひずみが少なくとも同数のビットで減少しない場合でも、モデル更新のためのビットストリーム
【0207】
【0208】
にビットを追加し得る。
【0209】
[0142] ニューラルネットワーク圧縮システム600は、エンドツーエンドでトレーニングされ得る。いくつかの場合には、RDM損失は、エンドツーエンドで推論時間において最小限に抑えられ得る。いくつかの例では、ある計算量(amount of compute)が1回費やされ(たとえば、モデルを微調整し)得、高い圧縮比が、その後、受信機側への余分のコストなしに取得され得る。たとえば、コンテンツプロバイダは、多数の受信機に提供されるビデオのためにニューラルネットワーク圧縮システム600をより広範囲にわたってトレーニングおよび微調整するために、高い計算量を費やし得る。高度にトレーニングおよび微調整されたニューラルネットワーク圧縮システム600は、そのビデオのための高い圧縮性能を提供することができる。高い計算量を費やしたので、ビデオプロバイダは、モデルプライアの更新されたパラメータを記憶し、圧縮されたビデオの各受信機に、ビデオを展開するために効率的に提供することができる。ビデオプロバイダは、モデルをトレーニングおよび微調整する初期計算コストを著しく上回ることがあるビデオの各送信での圧縮における大きい利益(ならびにネットワークおよび計算リソースの低減)を達成することができる。
【0210】
[0143] ビデオおよび画像(たとえば、高解像度画像)中の多数のピクセルにより、上記で説明されたトレーニング/学習および微調整手法は、ビデオ圧縮および/または高解像度画像について極めて有利であり得る。いくつかの場合には、全体的なシステム設計および/または実装のための追加される考慮事項として、複雑さおよび/またはデコーダ計算が使用され得る。たとえば、推論を行うのが速い極めて小さいネットワークが微調整され得る。別の例として、受信機複雑さのためにコスト項が追加され得、これは、モデルに、1つまたは複数の層を除去することを強制し、および/またはそれを行わせることができる。いくつかの例では、一層大きい利得を達成するために、機械学習を使用して、より複雑なモデルプライアが学習され得る。
【0211】
[0144] モデルプライア設計は、様々な属性を含むことができる。いくつかの例では、実装されるモデルプライアは、更新なしにモデルを送出するための高い確率
【0212】
【0213】
と、したがって低ビットレート
【0214】
【0215】
とを割り当てるモデルプライアを含むことができる。いくつかの場合には、モデルプライアは、
【0216】
【0217】
,
【0218】
【0219】
の周辺の値に非0確率を割り当てるモデルプライアを含むことができ、したがって、実際には、微調整されたモデルの異なるインスタンスが符号化され得る。いくつかの場合には、モデルプライアは、推論時間において量子化され、エントロピーコーディングを行うために使用され得る、モデルプライアを含むことができる。
【0220】
[0145] 加速された研究開発にもかかわらず、(「コーデック」と呼ばれる)深層学習ベース圧縮コーダデコーダは、商用または消費者適用例においてまだ導入されていない。これの1つの理由は、ニューラルコーデックが、まだ、レートひずみに関して旧来のコーデックよりもロバストに優れていないことである。さらに、既存のニューラルベースコーデックは、さらなる実装課題を提示する。たとえば、ニューラルベースコーデックは、すべての受信機に関して、トレーニングされたニューラルネットワークを必要とする。したがって、異なるプラットフォームにわたるすべてのユーザが、復号関数を実施するために、そのようなニューラルネットワークの同等のコピーを記憶しなければならない。そのようなニューラルネットワークの記憶域は、かなりの量のメモリを消費し、維持することが困難であり、破損の影響を受けやすい。
【0221】
[0146] 上述のように、上述の問題に対処することができる、暗黙的ニューラル圧縮コーデックを含むシステムおよび技法が、本明細書で説明される。たとえば、本開示の態様は、暗黙的ニューラルモデルと呼ばれることがある、暗黙的ニューラル表現(INR)に基づくビデオ圧縮コーデックを含む。本明細書で説明されるように、暗黙的ニューラルモデルは、入力として座標位置(たとえば、画像またはビデオフレーム内の座標)をとることができ、ピクセル値(たとえば、各座標位置またはピクセルについての赤緑青(RGB)値など、画像またはビデオフレームについての色値)を出力することができる。いくつかの場合には、暗黙的ニューラルモデルは、IPBフレーム方式にも基づき得る。いくつかの例では、暗黙的ニューラルモデルは、暗黙的ニューラルオプティカルフロー(INOF:implicit neural optical flow)と呼ばれる、オプティカルフローをモデル化するために入力データを修正することができる。
【0222】
[0147] たとえば、暗黙的ニューラルモデルは、局所変換が要素単位の加算になることがある暗黙的ニューラル表現を用いてオプティカルフローをモデル化することができる。いくつかの場合には、オプティカルフローは、局所変換(たとえば、位置の関数としてのピクセルの移動)に対応することができる。いくつかの態様では、オプティカルフローは、圧縮性能を改善するためにビデオのフレームにわたってモデル化され得る。いくつかの場合には、暗黙的モデルは、対応する出力ピクセル値を生じるように入力座標位置を調節することによってオプティカルフローをモデル化することができる。たとえば、入力の要素単位の加算は出力における局所変換につながることがあり、これは、ピクセル移動の必要および関連する計算複雑さをなくすことができる。1つの例示的な例では、3つのピクセル(たとえば、P1|P2|P3)を有する第1のフレームおよび3つのピクセル(たとえば、P0|P1|P2)を有する第2のフレームからの遷移が、要素単位の減算または加算を実施することによってなど、(たとえば、ピクセルの位置をシフトする必要なしに)入力を修正することによって、暗黙的ニューラルモデルによってモデル化され得る。以下の図はこの例を示す。
【0223】
[0148] 1|2|3→P1|P2|P3
[0149] 0|1|2→P0|P1|P2
[0150] 上述のように、暗黙的ニューラルモデルは、入力として画像またはビデオフレームの座標位置をとることができ、画像またはビデオフレームについてのピクセル値を出力することができる。この場合、入力(1|2|3および0|1|2)は、暗黙的ニューラルモデルへの入力を表し、画像内の座標を含む。出力(P1|P2|P3)および(P0|P1|P2)は、暗黙的ニューラルモデルの出力を表し、RGB値を含むことができる。上記の2つのライン(1|2|3→P1|P2|P3および0|1|2→P0|P1|P2)の各々は、入力が「1」の値だけ変化し、出力における対応するシフトを生じる、同じモデルに対応する。旧来のオプティカルフローでは、機械学習モデル自体が、あるフレームから次のフレームにピクセルの位置をシフトしなければならない。暗黙的機械学習モデルは入力として座標をとるので、入力は、あらゆる入力値を1だけ減算するように(コーデックによって処理されるより前に)前処理され得、その場合、出力は、シフトされ、したがって、オプティカルフローを効果的にモデル化する。いくつかの場合には、(たとえば、フレーム中のオブジェクトが特定の方向に移動するとき)要素単位の加算が実施され得、値(たとえば、1の値)が入力値に加算される。
【0224】
[0151] いくつかの例では、暗黙的ニューラルモデルの重み更新とともにフレームにわたって残差がモデル化され得る。いくつかの場合には、本技術は、インター予測フレーム(たとえば、単方向フレーム(Pフレーム)および/または双方向フレーム(Bフレーム))を圧縮するために必要とされるビットレートを低減するために使用され得る。いくつかの例では、イントラフレーム(たとえば、イントラフレームまたはIフレーム)を処理するために畳み込みベースアーキテクチャが使用され得る。暗黙的モデルの復号計算ボトルネックを解消するために畳み込みベースアーキテクチャが使用され、符号化および復号するのが速い、得られたモデルを生じ得る。いくつかの態様では、データをビットストリームにコンバートすることは、Iフレームについてのポストトレーニング(post-training)量子化と、PフレームおよびBフレームについての量子化アウェア(quantization-aware)トレーニングとを用いて実施され得る。
【0225】
[0152] いくつかの場合には、モデルは、完全なニューラル圧縮コーデックを形成するために量子化および/または符号化され得る。いくつかの例では、モデルは受信機に送出され得る。いくつかの場合には、モデルの微調整がPフレームおよびBフレーム上で実施され得、収束された更新が受信機に送出され得る。いくつかの態様では、モデルは、スパース性を誘導する(sparsity inducing)プライア、ならびに/またはPフレームおよびBフレームについてのビットレートを最小限に抑えることができる量子化アウェアプロシージャを用いて、微調整され得る。既存のニューラル圧縮コーデックと比較して、暗黙的ニューラルモデルベースニューラル圧縮コーデックは、受信機側において(および、いくつかの場合には送信機側において)事前トレーニングされたネットワークについての要件をなくす。本技術の性能は、前のINRベースニューラルコーデックよりも向上した性能を伴って、画像データセットとビデオデータセットの両方に関して旧来のニューラルベースコーデックと比べて勝っている。
【0226】
[0153] いくつかの態様では、ビデオおよび画像圧縮のために、暗黙的ニューラル表現(INR)方法/モデルが使用され得る。ビデオまたは画像は、ニューラルネットワークとして実装され得る関数として表され得る。いくつかの例では、画像またはビデオを符号化することは、アーキテクチャを選定することと、単一の画像またはビデオに対してネットワーク重みを過剰適合させることとを含むことができる。いくつかの例では、復号は、ニューラルネットワークフォワードパスを含むことができる。圧縮のために使用される暗黙的ニューラルモデルの1つの課題は、復号計算効率である。たいていの既存の暗黙的ニューラルモデルは、入力データ中の各ピクセルについて1つのフォワードパスを必要とする。いくつかの態様では、本技術は、高解像度ビデオまたは画像を復号することに関連付けられた計算オーバーヘッドを低減し、したがって復号時間およびメモリ要件を低減することができる暗黙的ニューラル表現モデルの一般化として、畳み込みアーキテクチャを含む。
【0227】
[0154] いくつかの例では、ビットレートは、記憶されたモデル重みのサイズによって決定され得る。いくつかの場合には、本明細書で開示される暗黙的ニューラル手法の性能を改善するために、モデルサイズは、ビットレートを改善するために低減され得る。いくつかの構成では、モデルサイズを低減することは、重みを量子化することと、量子化されたネットワーク重みを可逆圧縮するために使用され得る重みプライアを適合させることとによって、実施され得る。
【0228】
[0155] いくつかの場合には、本技術は、最先端のニューラル画像およびビデオコーデックの圧縮性能にマッチすることができる。本明細書で開示されるコーデックの1つの例示的な利点は、それが、受信機側でニューラルネットワークを記憶する必要をなくすことができ、軽量フレームワークを用いて実装され得ることである。(たとえば、スケール空間フロー(SSF:scale-space flow)のようなニューラルコーデックと比較した)別の利点は、ハードウェアで実装することが困難であり得るフロー動作の不在である。さらに、復号関数は、標準的なニューラルコーデックにおけるものよりも速くなり得る。さらに、本技術は、それが、符号化されるべきであるデータ(たとえば、画像、ビデオフレーム、ビデオなどの現在のインスタンス)を使用して暗黙的にトレーニングされ得るので、別個のトレーニングデータセットを必要としない。本明細書で説明される暗黙的ニューラルモデルの構成は、潜在的プライバシー問題を回避するのを助けることができ、好適なトレーニングデータが利用可能でないものを含む、異なるドメインからのデータに対してうまく機能する。
【0229】
[0156] ニューラル圧縮コードに関係する一例では、ニューラルビデオ圧縮は、変分または圧縮オートエンコーダのフレームワークを使用して実装され得る。そのようなモデルは、以下のようにレートひずみ(RD)損失を最適化するように構成される。
【0230】
【0231】
[0157] この例では、エンコーダqφは、各インスタンスxをラテントzにマッピングし、デコーダpは再構築を復元する。トレーニングされたデコーダが受信機側において利用可能であると仮定すると、送信されたビットストリームは、符号化されたラテントzを含む。このタイプの構成の例は、3D畳み込みアーキテクチャおよびIPフレームフローアーキテクチャを含み、これは、各Pフレームについて、前のフレームを条件とする。別の例は、モデルが各テストインスタンスに関して微調整されるインスタンス適応微調整を含み、モデルはラテントとともに送信される。この方法は、前の作業に勝る利点(たとえば、ドメインシフトに対するロバストネスおよびモデルサイズの低減)を含むことができるが、それは、依然として、事前トレーニングされたグローバルデコーダが受信機サイズにおいて利用可能であることを必要とする。
【0232】
[0158] ニューラル圧縮コーデックに関係する別の例では、画像を、ニューラルネットワーク重みとしてそれらの暗黙的表現を通して圧縮するために、モデルが使用され得る。この構成は、異なる数の層およびチャネルをもつ正弦波表現ネットワーク(SIREN:sinusoidal representation network)ベースモデルを実装し、それらを16ビット精度に量子化する。説明される暗黙的ニューラルコーデックは、画像圧縮タスクのためにSIRENモデルを使用し得る他のシステムとは異なる。たとえば、いくつかの例では、本明細書で説明される暗黙的ニューラルコーデックは、位置符号化(positional encoding)を用いた畳み込みアーキテクチャを含むことができ、量子化とエントロピーコーディングとを含むより高度な圧縮方式を実装することができ、ビデオ圧縮を実施することができる。
【0233】
[0159] 暗黙的ニューラル表現に関係する一例では、暗黙的表現は、3次元構造および明視野を学習するために使用された。いくつかの事例では、これらの構成は、単一のシーンがネットワーク重みによって符号化されるように、単一のシーンに関してニューラルネットワークをトレーニングすることができる。次いで、シーンの新しいビューが、ネットワークのフォワードパスを通して生成され得る。いくつかの態様では、これらの方法は、離散的同等物よりも効率的であり得、なぜなら、オブジェクトデータが高次元座標フレーム中の低次元多様体上にあるとき、離散的表現において高い冗長があり、ここで、座標の各セットに値が関連付けられるからである。いくつかの例では、暗黙的ニューラル表現は、そのような冗長を活用し、それにより効率的な表現を学習することが可能である。
【0234】
[0160] 暗黙的表現は、画像およびビデオなど、より低次元の座標をもつデータに適用され得るが、離散的またはラテント表現と比較した相対効率は、まだ決定されていない。さらに、暗黙的表現を使用する既存の構成の性能は、離散的表現を使用するまたは確立された圧縮コーデックをもつ、構成の性能にマッチするか、またはそれを超える必要がある。
【0235】
[0161] 入力データの次元にかかわらず、表現の正しいクラスを選定することが重要である。いくつかの例では、フーリエドメイン特徴は、現実的なシーンの構造を学習する暗黙的ニューラルモデルの助けとなる。たとえば、フーリエドメイン特徴は自然言語処理のために実装され、ここで、センテンス中の単語のフーリエ位置符号化が、完全アテンションアーキテクチャを用いたそのとき最先端の言語モデル化を可能にするために示される。さらに、ビジョンタスクの暗黙的ニューラルモデル化に関して、構成は、MLPモデルにおいてパスすることより前に、エンコーダとして、ランダムにサンプリングされたフーリエ周波数を使用することができる。さらに、いくつかの構成は、重みが慎重に初期化されるとすれば、正弦関数であり得るすべてのMLP活性化を含み、ここで、Xintはbビットをもつ整数テンソルであり、sは浮動小数点におけるスケーリングファクタ(またはベクトル)である。
【0236】
[0162] いくつかの例では、ニューラルネットワーク量子化は、リソース制約デバイス上でより効率的にモデルを稼働することを可能にするために、モデルサイズを低減するために使用され得る。ニューラルネットワーク量子化の例は、量子化されたテンソルを、整数テンソルとスケーリングファクタとを含む固定小数点数でテンソルを表すことができるコードブックおよび固定小数点量子化(fixed-point quantization)を使用して表すことができる、ベクトル量子化を含む。固定小数点では、量子化関数は、次のように定義され得る。
【0237】
【0238】
[0163] ここで、θintはbビットをもつ整数テンソルであり、sは浮動小数点におけるスケーリングファクタ(またはベクトル)である。いくつかの態様では、シンボルτ=(s,b)は、すべての量子化パラメータのセットを指すために使用され得る。
【0239】
[0164] いくつかの例では、ニューラルネットワークにおける重みテンソル(たとえば、すべての重みテンソル)の低ビット量子化は、かなりの量子化雑音を招くことがある。量子化アウェアトレーニングでは、ニューラルネットワークは、量子化演算を用いてエンドツーエンドでそれらをトレーニングすることによって、量子化雑音に適応することができる。式2における丸め演算は微分不可能であるので、通常、それの勾配を近似するためにストレートスルー推定器(STE:straight-trough estimator)が使用される。いくつかの場合には、ネットワークと一緒にスケーリングファクタを学習することに加えて、あらゆる層についてテンソルごとのビット幅を学習することも実施され得る。いくつかの態様では、本技術は、量子化ビット幅をレート損失(rate loss)として策定することができ、ビットレートとピクセル空間におけるひずみとの間の最も良好なトレードオフを暗黙的に学習するためにRD損失を最小限に抑えることができる。
【0240】
[0165]
図7Aは、暗黙的ニューラルネットワーク圧縮システム700に基づく例示的なコーデックを示す図である。いくつかの態様では、暗黙的ニューラル圧縮システム700は、ひずみおよび/またはビットレートを最適化するように構成された暗黙的圧縮モデルをトレーニングするためのパイプラインを含むことができる。いくつかの例では、ひずみは、ひずみ目標に対して暗黙的モデルΨ(w)704の重みw706をトレーニングすることによって、最小限に抑えられ得る。いくつかの態様では、レートは、量子化関数Q
τ(w)を用いて重み706を量子化することによって、および、量子化された重み708にわたって重みプライア
【0241】
【0242】
712を適合させることによって、最小限に抑えられ得る。ある例では、以下のように、これらの構成要素は組み合わせられて、レートひずみ損失を反映する単一の目標になり得る。
【0243】
【0244】
[0166] いくつかの例では、(たとえば、1つまたは複数の画像を含むことができる入力画像データ702に対応する)データポイントxを「符号化」する第1のステップは、データポイント(たとえば、入力画像データ702)についての式(3)における損失の最小値を見つけることである。いくつかの場合には、損失の最小値は、探索および/またはトレーニングアルゴリズムを使用して取得され得る。たとえば、
図7Aに示されているように、送信機側で暗黙的ニューラルモデル704をトレーニングするために、座標グリッド703が暗黙的モデル704に入力される。トレーニングの前に、暗黙的モデル704の重みは初期値に初期化される。重みの初期値は、座標グリッド703を処理するために、および、式(3)においてΨ(Q
τ(ω))として表される、入力画像データ702についての再構築された出力値(たとえば、各ピクセルについてのRGB値)を生成するために、使用される。圧縮されている実際の入力画像データ702は、式(3)においてデータポイントxとして表される、知られている出力(またはラベル)として使用され得る。次いで、再構築された出力値(Ψ(Q
τ(ω)))と、知られている出力(
図7A中の入力画像データ702であるデータポイントx)との間で、損失(L
NIC(Ψ,ω,τ,ω))が決定され得る。損失に基づいて、暗黙的モデル704の重みは、(たとえば、バックプロパゲーショントレーニング技法に基づいて)調整され得る。そのようなプロセスは、ある損失値(たとえば、最小限に抑えられた損失値)が取得されるように重みが調整されるまで、ある数の反復、実施され得る。暗黙的モデル704がトレーニングされると、
図7Aに示されているように、暗黙的モデル704からの重みw706が出力され得る。受信機側で、座標グリッド703は、逆量子化の後の復号された重みwを用いて(または量子化された重み708を使用して)調整された暗黙的モデル704を使用して処理され得る。いくつかの場合には、暗黙的モデル704のアーキテクチャパラメータ(Ψ(w))は、アーキテクチャデコーダ726によるビットストリーム720の復号に基づいて決定され得る。
【0245】
[0167] いくつかの態様では、第1のステップは、ネットワークアーキテクチャΨ(・)にわたって探索することと、量子化なしにD損失を最小限に抑えることによって各モデルについての重みw706をトレーニングすることとによって、(利用可能な暗黙的モデルのグループの中から)入力画像データ702を圧縮するために使用すべき最適な暗黙的モデル704を決定することを含むことができる。いくつかの例では、このプロセスは、暗黙的モデル704を選択するために使用され得る。
【0246】
[0168] いくつかの場合には、量子化器ハイパーパラメータτに基づいて最適なひずみDを達成するために、量子化器が実装され得る。いくつかの態様では、暗黙的モデルΨ(w)704は、量子化された重み708に基づいて微調整され得る。
【0247】
[0169] いくつかの例では、重みプライア712は、量子化器パラメータおよび暗黙的モデル重み(たとえば、量子化された重み708または重み706)を固定しながら実装され得る。いくつかの態様では、重みプライア712は、レート損失Rを最小限に抑える(重みw706を含む)最適な設定を決定するために使用され得る。
【0248】
[0170] いくつかの態様では、暗黙的ニューラルネットワーク圧縮システム700は、(プライアエンコーダ714を使用して)ビットストリーム722中で重みプライアパラメータw712を符号化し、量子化された重み
【0249】
【0250】
708を、ビットストリーム724中で重みプライア
【0251】
【0252】
712下で(算術エンコーダ(AE)710によって)エントロピーコーディングを使用して符号化するように構成され得る、画像またはビデオコーデックとして使用され得る。いくつかの例では、復号は、逆の様式で実装され得る。たとえば、受信機/デコーダ側で、算術デコーダ(AD)730は、(プライアデコーダ728によって復号された)復号された重みプライアを使用して、エントロピー復号を実施してビットストリーム724を復号し、重み(たとえば、重み706または量子化された重み708)を生成することができる。重みおよびニューラルネットワークモデルアーキテクチャ(たとえば、Ψ(w))を使用して、暗黙的モデル704は出力画像データ732を生成することができる。一例では、Ψ(・)および
【0253】
【0254】
が復号されると、再構築
【0255】
【0256】
が、フォワードパスを使用して取得され得る。
【0257】
【0258】
[0171] 上述のように、暗黙的モデル704は、重みw706をトレーニングすることと、最小ひずみを決定することとによって選択され得る1つまたは複数のニューラルネットワークアーキテクチャを含むことができる。一例では、暗黙的モデル704は、入力として画像内の座標をとり、以下のように、RGB値(または他の色値)を返す、多層パーセプトロン(MLP)を含むことができる。
【0259】
【0260】
[0172] いくつかの態様では、暗黙的モデル704は、画像およびビデオにおける細かい詳細が正確に表され得ることを保証するために周期活性化関数を使用することができるSIRENアーキテクチャを実装することができる。いくつかの例では、画像を復号することは、関心のあらゆるピクセルロケーション(x,y)においてMLPを評価することを含むことができる。いくつかの場合には、表現は連続であるので、表現は、異なる解像度設定において、または任意のタイプのピクセルグリッド(たとえば、不規則なグリッド)上でトレーニングまたは評価され得る。
【0261】
[0173] いくつかの例では、暗黙的モデル704は、(たとえば、特に受信機側で)コードの計算効率を改善するために使用され得る畳み込みネットワークを含むことができる。いくつかの場合には、MLPベース暗黙的ニューラルモデルは、各入力ピクセル座標についてフォワードパスを必要とすることがあり、これは、1K解像度ビデオの各フレームを復号するために多くの(たとえば、約200万個の)フォワードパスを生じることがある。
【0262】
[0174] いくつかの態様では、MLPベース暗黙的ニューラルモデルは、1×1カーネルを用いた畳み込み演算と見なされ得る。いくつかの例では、本明細書で説明される技法は、暗黙的モデルを畳み込みアーキテクチャに一般化することができる。
【0263】
[0175] 一度に1つの座標を処理するMLPとは異なり、本技術は、チャネル軸中の座標値を用いて、一度にすべての座標を配置することができる。いくつかの態様では、本技術は、転置畳み込みブロックについて3×3カーネルと、(たとえば、畳み込みカーネルまたはフィルタが各畳み込み演算の後に2つの位置移動されることを示す)2のストライド値とを使用することができ、これは、画像を再構築するために必要とされるフォワードパスの数の22L倍の低減を生じることがあり、ここで、Lは畳み込み層の数である。
【0264】
[0176] いくつかの例では、ランダムフーリエ符号化およびSIRENアーキテクチャは、このようにして一般化され得る。たとえば、畳み込みアーキテクチャ中の第1の層は、以下のように、座標の位置符号化を含むことができる。
【0265】
【0266】
[0177] ここで、c、iは、チャネルおよび空間次元に沿ったインデックスであり、
【0267】
【0268】
は、ガウス分布からのNω個の周波数サンプルである。標準偏差、および周波数の数は、ハイパーパラメータである。この位置符号化の後に、転置された畳み込みとReLU活性化とを交互にすることが続くことができる。
【0269】
[0178] いくつかの態様では、本技術からの畳み込みモデルは、任意に低い数のフォワードパスを用いて高解像度画像を容易に処理し、したがって、符号化と復号の両方の速度を上げることができる。それはまた、高ビットレートにおいてはるかにメモリ効率が良い。いくつかの例では、超低ビットレートにおいて3×3畳み込みカーネルをトレーニングすることは、異なる畳み込みカーネル(たとえば、パイプライン中の1×1および/または3×3畳み込み)を使用して実装され得る。
【0270】
[0179] 上述のように、ニューラルネットワーク圧縮システム700への入力は、ビデオデータを含むことがある画像データ702を(たとえば、暗黙的モデルをトレーニングするために)含むことができる。いくつかの例では、ビデオデータは、後続のフレーム間の強い冗長を有することがある。既存のビデオコーデックでは、しばしば、各フレームが前のフレームに依存するようなやり方でピクチャグループ(GoP)が圧縮される。詳細には、新しいフレーム予測が、前のフレームのワーピングと残差との和として策定され得る。本技術は、暗黙的ニューラル圧縮方式とともに使用するための類似する構成を実装することができる。いくつかの場合には、暗黙的モデルは、正確にワーピングを表すことが示されている。いくつかの態様では、本技術は、暗黙的に活用され得る時間的冗長性を使用し、フレームにわたって重みを共有することができる。いくつかの態様では、(本明細書で開示される)完全暗黙的手法は、概念単純さおよびアーキテクチャ自由性という利点を有することができる。
【0271】
[0180] いくつかの例では、暗黙的ビデオ表現は、ピクチャグループを使用して実装され得る。たとえば、ビデオがN個のフレーム(またはピクチャ)のグループに分割され得、各バッチが別個のネットワークで圧縮され得る。いくつかの場合には、この実装形態は、暗黙的表現の必要とされる表現性を低減する。いくつかの例では、この実装形態は、次のN個のフレームが復号され得る前に1つの小さいネットワークのみが送出される必要があるので、バッファされたストリーミングを可能にすることができる。
【0272】
[0181] いくつかの態様では、暗黙的ビデオ表現は、3D MLPを使用して実装され得る。たとえば、MLP表現は、フレーム番号(または時間成分)tを表す第3の入力を加算することによって、ビデオデータに容易に拡張され得る。いくつかの例では、SIRENアーキテクチャがサイン活性化(sine activation)とともに使用され得る。
【0273】
[0182] いくつかの場合には、暗黙的ビデオ表現は、3D畳み込みネットワークを使用して実装され得る。前記のように、3D MLPは、1×1×1畳み込み演算と見なされ得る。2次元の場合と同様に、本技術は、3D MLPを、3次元カーネルをもつ畳み込み演算に実装することができる。パラメータの数を最小値に保つために、本技術は、サイズk×k×1の空間カーネルを使用し、その後に、形状1×1×k’のフレーム単位カーネルを使用することができる。
【0274】
[0183] 式5におけるフーリエ符号化に関して、追加の座標が、xiを[t,x,y]とすることと、それに応じて余分の周波数をもたらすこととによって考慮され得る。時間相関スケールと空間相関スケールとは、おそらくまったく異なるので、本技術は、時間共役周波数分散を別個のハイパーパラメータとすることができる。ReLU活性化と交互にする3次元転置畳み込みのシーケンスが、位置符号化特徴をビデオシーケンスに処理することができる。
いくつかの態様では、暗黙的ビデオ表現は、時間変調されたネットワークを使用して実装され得、それは、単一のインスタンスではなくデータのセットに対して働くように表現を適応させることができる暗黙的表現に対応する。いくつかの例では、方法は、ハイパーネットワークの使用、ならびにラテントベース方法を含むことができる。いくつかの場合には、本技術は、我々のインスタンスモデルを(データポイントのセットの代わりに)ビデオ中のフレームに一般化するために、時間変調されたネットワークを使用することができる。いくつかの例では、本技術は、それらの概念単純さおよびパラメータ共有効率のために、合成-変調器複合ネットワークアーキテクチャ(synthesis-modulator composite network architecture)を実装することができる。先の実装形態は、SIREN MLPが高解像度において高品質再構築を行うことができないことを発見し、したがって、重み共有目的で画像を重複する空間タイルにスプリットしたが、本技術は、高解像度フレームを生成することができる畳み込みSIRENアーキテクチャを実装する。いくつかの場合には、本技術は、フレーム軸に沿ってのみ変調を予約することができる。この手法では、モデルへの入力は、依然として、ただ空間座標(x,y)である。ただし、このネットワークの第kの層は、以下によって与えられる。
【0275】
【0276】
[0184] ここで、σ(・)は活性化関数であり、Fは、3×3畳み込みまたは1×1畳み込みのいずれかを含むニューラルネットワーク層であり、ztは各フレームについての学習可能なラテントベクトルであり、gk(・)は変調MLPの第kの層の出力を示す。要素単位の乗法的相互作用が、複雑な時間依存性をモデル化することを可能にする。
【0277】
[0185] いくつかの例では、暗黙的ビデオ表現は、IPBフレームブレイクダウン(breakdown)および/またはIPフレームブレイクダウンに基づく構成を使用して実装され得る。
図9を参照すると、連続するフレーム902のグループは、最初にIフレームとして中間フレームを圧縮することによって、(たとえば、IPBフレームブレイクダウンを使用して)符号化され得る。次に、トレーニングされたIフレーム暗黙的モデルから開始して、本技術は、Pフレームとしての最初のフレームおよび最後のフレームに関して微調整することができる。いくつかの例では、最初のフレームおよび最後のフレームに関して微調整することは、スパース性を誘導するプライアを使用することと、ビットレートを最小限に抑えるための量子化アウェア微調整とを含むことができる。いくつかの態様では、残りのフレームは、Bフレームとして符号化され得る。いくつかの例では、IPBフレームブレイクダウンは、フレームのいずれかの側でのモデル重みの補間としてモデル重みを初期化することによって実装され得る。いくつかの場合には、全体的なビットストリームは、適合されたモデルプライアで符号化されたIフレームモデルの量子化されたパラメータと、スパース性を誘導するプライアで符号化された、PフレームおよびBフレームのための量子化された更新とを含むことができる。いくつかの例では、暗黙的ビデオ表現は、
図9中のフレーム904によって示されるように、IPフレームブレイクダウンを使用して実装され得る。
【0278】
[0186]
図7Aに戻ると、ニューラルネットワーク圧縮システム700は、重み706を量子化して、量子化された重み708を生じるために使用され得る量子化アルゴリズムを実装することができる。いくつかの態様では、ネットワーク量子化は、固定小数点表現を使用してあらゆる重みテンソルw
(i)∈wを量子化することによってモデルサイズを低減するために使用され得る。いくつかの場合には、量子化パラメータとビット幅とは、たとえば、スケールsおよびクリッピングしきい値q
maxを学習することによって、一緒に学習され得る。次いで、ビット幅bは、b(s,q
max)=log
2(q
max+1)として暗黙的に定義され、これは、このパラメータ化が、非有界勾配ノルムという問題がないので、ビット幅を直接学習することよりも勝っていることを示した。
【0279】
[0187] いくつかの例では、ビットストリームを符号化することは、すべての量子化パラメータ
【0280】
【0281】
と、すべての整数テンソル
【0282】
【0283】
とを符号化することを含むことができる。すべてのs(i)が32ビット浮動小数点変数として符号化され、ビット幅b(i)がINT4として符号化され、整数テンソル
【0284】
【0285】
がそれらのそれぞれのビット幅b(i)において符号化される。
【0286】
[0188] いくつかの態様では、ニューラルネットワーク圧縮システム700は、エントロピーコーディングを実装することができる。たとえば、最後のトレーニング段階は、算術エンコーダ(AE)710が、重み(たとえば、重み706または量子化された重み708)にわたってプライアを適合させて、ビットストリーム724を生成することを含むことができる。上述のように、受信機/デコーダ側で、算術デコーダ(AD)730は、(プライアデコーダ728によって復号された)復号された重みプライアを使用して、エントロピー復号を実施してビットストリーム724を復号し、重み(たとえば、重み706または量子化された重み708)を生成することができる。重みおよびニューラルネットワークモデルアーキテクチャを使用して、暗黙的モデル704は出力画像データ732を生成することができる。いくつかの場合には、重みは、大部分のテンソルについて0を中心とするガウスとして近似的に分布され得る。いくつかの例では、あらゆる重みのスケールは異なり得るが、重み範囲は(送信された)量子化パラメータ
【0287】
【0288】
の一部であるので、重みは正規化され得る。いくつかの場合には、ネットワーク圧縮システム700は、次いで、正規化された重みにガウスを適合させ、これをエントロピーコーディングのために使用する(たとえば、ビットストリーム724を生じる)ことができる。
【0289】
[0189] いくつかの例では、いくつかの重み(たとえば、重み706または量子化された重み708)はスパースに分布される。スパースに分布された重みの場合、ニューラルネットワーク圧縮システム700は、コンテンツを有するバイナリのみに確率質量を再分布するために使用され得るバイナリマスクを送信することができる。いくつかの場合には、マスクが送信されるかどうかを符号化するために、信号ビットが含まれ得る。
【0290】
[0190]
図7Bは、暗黙的ニューラルネットワーク圧縮システム700に基づく例示的なコーデックを示す図である。いくつかの態様では、暗黙的ニューラル圧縮システム700は、ひずみおよび/またはビットレートを最適化するように構成された暗黙的圧縮モデルをトレーニングするためのパイプラインを含むことができる。
図7Aに関して上述したように、第1のステップは、ネットワークアーキテクチャΨ(・)にわたって探索することと、量子化なしにひずみ損失を最小限に抑えることによって各モデルについての重みw706をトレーニングすることとによって、(利用可能な暗黙的モデルのグループの中から)入力画像データ702を圧縮するために使用すべき最適な暗黙的モデル704を決定することを含むことができる。いくつかの例では、このプロセスは、暗黙的モデル704を選択するために使用され得る。いくつかの例では、暗黙的モデル704は、モデル幅、モデル深度、解像度(resolution)、畳み込みカーネル(convolution kernel)のサイズ(size)、入力次元(input dimension)、および/あるいは任意の他の好適なモデルパラメータまたは特性を含むことができる1つまたは複数のモデル特性(model characteristics)に関連付けられ得る。
【0291】
[0191] いくつかの態様では、受信機側(たとえば、デコーダ)は、入力画像データ702を符号化するために使用されるネットワークアーキテクチャΨ(・)の事前知識を有しない。いくつかの場合には、暗黙的ニューラルネットワーク圧縮システム700は、(アーキテクチャエンコーダ716を使用して)ビットストリーム720中でモデルアーキテクチャ(model architecture)Ψ(・)718を符号化するように構成され得る。
【0292】
[0192]
図8Aは、暗黙的ニューラル表現を使用するピクチャグループのためのパイプライン800の一例を示す図である。いくつかの態様では、パイプライン800は、入力画像(たとえば、Iフレーム802および/またはP1フレーム808)に関連付けられた座標をピクセル値(たとえば、RGB値)にマッピングすることができるニューラルネットワークを使用して画像を処理することができるビデオ圧縮コーデックによって実装され得る。いくつかの例では、パイプライン800の出力は、(たとえば、ネットワークアーキテクチャを識別するために使用される)ヘッダを有する圧縮されたファイル、および/または対応する入力フレームについてのニューラルネットワークの重みを含むことができる。
【0293】
[0193] いくつかの例では、パイプライン800は、ビデオ入力に関連付けられたフレームグループからの1つまたは複数の画像フレームを圧縮するために使用され得るベースモデル804(たとえば、ベースモデルfθ)を含むことができる。いくつかの場合には、ベースモデル804は、フレームグループからの第1のフレームを使用してトレーニングされるIフレームモデルを含むことができる。いくつかの態様では、ベースモデル804のトレーニングは、(たとえば、式(4)を使用して)入力座標位置をピクセル値にマッピングすることによって、フレームグループからの第1のフレーム(たとえば、Iフレーム)を圧縮することを含むことができる。
【0294】
[0194] いくつかの態様では、ベースモデル804のサイズは、ベースモデル804に関連付けられた重みテンソルのうちの1つまたは複数を量子化することによって低減され得る。いくつかの例では、重みテンソルは、式(2)からの関数など、固定小数点量子化関数を使用して量子化され得る。たとえば、式(2)は、ベースモデル804を量子化して、量子化されたベースモデル806(たとえば、量子化されたベースモデルfQ(θ))を生じるために使用され得る。いくつかの態様では、量子化されたベースモデル806は、(たとえば、算術エンコーダを使用して)圧縮され、受信機に送出され得る。
【0295】
[0195] いくつかの例では、パイプライン800は、2つの画像フレーム(たとえば、Iフレーム802およびP1フレーム808)間のオプティカルフロー場を決定するために使用され得るフローモデル810(たとえば、フローモデルhφ)を含むことができる。たとえば、フローモデル810は、ビデオからの連続画像フレーム間のオプティカルフロー場または動きベクトル(たとえば、変位ベクトルの場)を決定するように構成され得る。いくつかの態様では、フローモデル810は、フレームグループからの第2のフレーム(たとえば、P1フレーム808)を使用してトレーニングされ得る。いくつかの場合には、フローモデル810によって決定された変位ベクトルの場は、現在フレームをモデル化するために前のフレームに適用され得る。いくつかの態様では、オプティカルフロー場からの変位は、hφ(x,y)=(Δx,Δy)として表され得る。いくつかの場合には、オプティカルフロー場からの変位は、以下に従って入力変数に変位ベクトルを加算することによって適用され得る。
【0296】
【0297】
[0196] いくつかの態様では、フローモデル810のサイズは、フローモデル810に関連付けられた重みテンソルのうちの1つまたは複数を量子化することによって低減され得る。いくつかの例では、重みテンソルは、式(2)からの関数など、固定小数点量子化関数を使用して量子化され得る。たとえば、式(2)は、フローモデル810を量子化して、量子化されたフローモデル812(たとえば、量子化されたフローモデルhQ(φ))を生じるために使用され得る。いくつかの態様では、量子化されたフローモデル812は、(たとえば、算術エンコーダを使用して)圧縮され、受信機に送出され得る。
【0298】
[0197]
図8Bは、暗黙的ニューラル表現を使用するピクチャグループのためのパイプライン840の一例を示す図である。いくつかの態様では、パイプライン840は、パイプライン800に続くことができる第2のパイプラインフェーズを表すことができる。たとえば、パイプライン840は、トレーニングされたベースモデル(たとえば、ベースモデル844)およびトレーニングされたフローモデル(たとえば、フローモデル846)を使用してフレームを処理し、圧縮するために使用され得る。
【0299】
[0198] いくつかの例では、パイプライン840は、複合モデルのパラメータの量子化された更新を決定することによって、フレームグループからの追加のフレームを符号化するために使用され得る。たとえば、パイプライン840は、前のフレームに対するベースモデル重み更新δθおよびフローモデル重み更新δφを学習するために、後続のPフレーム(たとえば、P1フレーム842)にわたって連続的に反復するために使用され得る。いくつかの場合には、ベースモデル重みθの更新およびフローモデル重みφの更新は、以下のように決定され得る。
【0300】
【0301】
[0199] いくつかの態様では、ベースモデル844およびフローモデル846についての更新された重みは、受信機に送出され得る。いくつかの場合には、重み更新δθおよびδφは、δθ=0を中心とする幅tのn個の等しいサイズのビンの固定グリッド上で量子化され得る。いくつかの例では、重み更新は、スパイクおよびスラブプライア、狭いガウス分布と広いガウス分布との混合モデル下で、エントロピーコーディングされ、以下によって与えられ得る。
【0302】
【0303】
[0200] いくつかの態様では、式(9)において使用される分散
【0304】
【0305】
をもつ「スラブ」成分は、更新された重みを受信機に送出するためのビットレートを最小限に抑えることができる。いくつかの場合には、狭い標準偏差σ
spike<<σ
slabをもつ「スパイク」成分は、0更新に関連付けられた処理コストを最小限に抑えることができる。いくつかの例では、同様の後続のフレームは、スパースであり、比較的低いビットレートコストに関連付けられた、更新δθを有することができる。いくつかの態様では、量子化グリッドパラメータnおよびtと、先の標準偏差σ
spikeおよびσ
slabと、スパイク-スラブ比∝とは、ハイパーパラメータに対応する。
図8Bに示されているように、受信機は、(フレーム
【0306】
【0307】
850)として示されている)再構築されたP1フレーム850と、(フレーム
【0308】
【0309】
848として示されている)再構築されたIフレームとを出力する。
【0310】
[0201]
図8Cは、暗黙的ニューラル表現を使用するピクチャグループのためのパイプライン860の一例を示す図である。いくつかの例では、パイプライン860は、フレームグループからのそれぞれのフレームを処理するように構成された複数の段階を含むことができる。たとえば、パイプライン860は、第1のフレーム(たとえば、Iフレーム802)を処理して、再構築された第1のフレーム
【0311】
【0312】
872を生じることができる、第1の段階866を含むことができる。
【0313】
[0202] いくつかの態様では、パイプライン860は、第2のフレーム(たとえば、P1フレーム862)を処理して、再構築された第2のフレーム
【0314】
【0315】
874を生じることができる、第2の段階868を含むことができる。いくつかの例では、パイプライン860は、第3のフレーム(たとえば、P2フレーム864)を処理して、再構築された第3のフレーム
【0316】
【0317】
876を生じることができる、第3の段階870を含むことができる。本技術によれば、パイプライン860が任意の数の段階を有するように構成され得ることを、当業者は認識されよう。
【0318】
[0203] いくつかの例では、パイプライン860の各段階は、ベースモデル(たとえば、ベースモデル804)とフローモデル(たとえば、フローモデル810)とを含むことができる。いくつかの態様では、ベースモデルへの入力は、現在のフローモデル、ならびにフローモデル出力の前のバージョンをもつ、入力座標の要素単位の和であり得る。いくつかの場合には、付加されたフローモデルは、スキップ結合を用いて追加され得る追加の層として実装され得る。
【0319】
[0204]
図10は、暗黙的ニューラル圧縮を実施するための例示的なプロセス1000を示す図である。一態様では、プロセス1000の各ブロックは、ニューラルネットワーク圧縮システム(たとえば、システム700)においてレートひずみを最小限に抑えるために実装され得る、式1002に関連付けられ得る。いくつかの例では、式1002は、以下の形式を有することができる。
【0320】
【0321】
[0205] 式1002を参照すると、dはひずみ関数(たとえば、MSE、MS-SSIM)に対応することができ、Ψは暗黙的モデルクラス(たとえば、ネットワークタイプおよびアーキテクチャ)に対応することができ、Qνは重み量子化器に対応することができ、wは暗黙的モデル重みに対応することができ、Iは入力画像またはビデオに対応することができ、βはトレードオフパラメータに対応することができ、pωは重みプライアに対応することができる。
【0322】
[0206] プロセス1000を参照すると、ブロック1004において、プロセスは、最適な関数クラスまたはモデルアーキテクチャを見つけることを含む。いくつかの態様では、最適な暗黙的モデルを見つけることは、ネットワークアーキテクチャにわたって探索することと、(たとえば、重みの量子化なしに)ひずみ損失を最小限に抑えることによって各モデルについての重みをトレーニングすることとを含むことができる。いくつかの例では、最適なモデルは、最小限に抑えられたひずみ損失に基づいて選択される。いくつかの場合には、探索は、ニューラルネットワーク探索またはベイズ最適化技法(Bayesian optimization technique)を含むことができる。
【0323】
[0207] ブロック1006において、プロセス1000は、最適な関数パラメータおよび/または重みを見つけることを含む。いくつかの例では、最適な重みを見つけることは、最適な重みを見つけるために勾配降下または確率的勾配降下を使用することを含むことができる。
【0324】
[0208] ブロック1008において、プロセス1000は、最適な量子化設定を見つけることを含む。いくつかの態様では、最適な量子化設定を見つけることは、(たとえば、機械学習アルゴリズムを使用してトレーニングされる)トレーニング可能な量子化器を使用して実施され得る。いくつかの例では、量子化設定は、コードブック量子化、学習された固定小数点量子化、および/または任意の他の好適な量子化技法を使用して決定され得る。
【0325】
[0209] ブロック1010において、プロセス1000は、最適な重みプライアを見つけることを含む。いくつかの場合には、最適な重みプライアは、異なる分布タイプ(たとえば、ガウス、ベータ、ラプラスなど)を探索することによって見つけられ得る。いくつかの態様では、最適な重みプライアを見つけることは、レート損失を最小限に抑えるために重み分布のパラメータ(たとえば、平均および/または標準偏差)を適合させることを含むことができる。いくつかの例では、重みをもたないバイナリの指示を提供することができるデコーダへの送信のためにバイナリマスクが含まれ得る。
【0326】
[0210] いくつかの例では、プロセス1000中のステップは、順次、または、適用可能な場合、並列処理を使用して、実行され得る。いくつかの態様では、1つまたは複数のパラメータは、1つまたは複数のステップの組合せを可能にすることができるバックプロパゲーションを可能にすることができる(たとえば、ブロック1006およびブロック1008は、学習可能な量子化器を使用するとき、勾配降下を使用して最小限に抑えられ得る)。
【0327】
[0211]
図11は、暗黙的ニューラル圧縮を実施するための例示的なプロセス1100を示す図である。ブロック1102において、プロセス1100は、ニューラルネットワーク圧縮システムによる圧縮のための入力ビデオデータを受信することを含むことができる。いくつかの例では、ニューラルネットワーク圧縮システムは、暗黙的ニューラル表現に基づく暗黙的フレームフロー(IFF:implicit frame flow)を使用してビデオおよび画像圧縮を実施するように構成され得る。たとえば、フル解像度ビデオシーケンスは、座標位置をピクセル値にマッピングするニューラルネットワークを用いて各フレームを表すことによって圧縮され得る。いくつかの態様では、フレーム間の動き補償(たとえば、オプティカルフローワーピング)を可能にするために座標入力を変調するために、別個の暗黙的ネットワークが使用され得る。いくつかの例では、IFFは、受信機が事前トレーニングされたニューラルネットワークへのアクセスを有することを必要とされないように実装され得る。いくつかの場合には、IFFは、別個のトレーニングデータセットの必要なしに実装され得る(たとえば、ネットワークは入力フレームを使用してトレーニングされ得る)。
【0328】
[0212] ブロック1104において、プロセス1100は、入力ビデオを(「ピクチャグループ」または「GoP」とも呼ばれる)フレームグループに分割することを含む。いくつかの例では、フレームグループは、5つまたはそれ以上のフレームを含むことができる。いくつかの態様では、フレームグループ中の第1のフレームは、スタンドアロン画像(たとえば、Iフレーム)として圧縮され得、フレームグループ中の他のフレームは、他のフレームからの利用可能な情報を使用して圧縮され得る。たとえば、フレームグループ中の他のフレームは、前のフレームに依存するPフレームとして圧縮され得る。いくつかの態様では、フレームは、先行するフレームと後続のフレームの両方に依存するBフレームとして圧縮され得る。
【0329】
[0213] ブロック1106において、プロセス1100は、Iフレームに関してベースモデル(たとえば、ベースモデル
【0330】
【0331】
)をトレーニングすることを含む。いくつかの例では、Iフレームに関してベースモードをトレーニングすることは、ひずみを最小限に抑えることを含むことができる。いくつかの態様では、Iフレームに関してベースモデルをトレーニングすることは、以下の関係式に基づき得る。
【0332】
【0333】
[0214] 式(11)において、tはフレームインデックスに対応することができ、x,yはビデオフレーム内の座標に対応することができ、It,x,yは座標(x,y)におけるグランドトゥルースRGB値に対応することができ、fθt(x,y)は、座標(x,y)において評価される重みθtをもつ暗黙的ニューラルネットワークに対応することができ、Qτはパラメータψをもつ量子化関数に対応することができ、pωは、量子化された重みωを圧縮するために使用されるプライアに対応することができる。
【0334】
[0215] ブロック1108において、プロセス1100は、Iフレーム重みθ0を量子化およびエントロピーコーディングし、それらをビットストリームに書き込むことを含む。いくつかの態様では、Iフレームを表す暗黙的モデルのモデルサイズを低減するために、各重みテンソルθ(l)∈θは、固定小数点表現を使用して(たとえば、式(2)を使用して)量子化され得る。いくつかの例では、ビット幅は、b(s,θmax)=log2(θmax+1)として暗黙的に定義され得、ここで、sはスケールに対応することができ、θmaxはクリッピングしきい値に対応することができる。いくつかの例では、行列中のあらゆる行について別個の範囲およびビット幅を取得するために、チャネルごとの量子化が実施され得る。一態様では、チャネルごとの混合精度量子化関数が、以下に従って定義され得る。
【0335】
【0336】
[0216] いくつかの態様では、量子化パラメータ
【0337】
【0338】
および整数テンソル
【0339】
【0340】
は、ビデオビットストリームに符号化され得る。たとえば、s(l)は、32ビット浮動小数点ベクトルとして符号化され得、ビット幅b(l)は、5ビット整数ベクトルとして符号化され得、整数テンソル
【0341】
【0342】
は、それらのそれぞれのチャネルごとのビット幅
【0343】
【0344】
において符号化され得る。
【0345】
[0217] ブロック1110において、プロセス1100は、Pフレームに関してフローモデル(たとえば、モデル
【0346】
【0347】
)をトレーニングすることを含む。いくつかの態様では、Pフレームは、フレームグループ中の次の連続的なフレーム(たとえば、Iフレームの後の最初のPフレーム)に対応することができる。上述のように、オプティカルフローは、暗黙的表現の間の連続性を活用することによって暗黙的にモデル化され得る。IFFを使用して、フレームは、以下のように、入力として画像座標をとるネットワークとして表され、ピクセル値を返すことができる:(x,y)→fθ(x,y)=(r,g,b)。いくつかの態様では、オプティカルフロー場からの変位hφ(x,y)=(Δx,Δy)は、入力変数に変位ベクトルを加算すること(たとえば、式(7))によって適用され得る。いくつかの態様では、Pフレームに関してフローモデルをトレーニングすることは、式(11)における関係式に基づき得る。
【0348】
[0218] ブロック1112において、プロセス1100は、Pフレーム重みφ0を量子化およびエントロピーコーディングし、それらをビットストリームに書き込むことを含む。いくつかの態様では、Pフレーム重みφ0は、Iフレーム重みθ0に関して上記で説明された方法を使用して量子化およびエントロピーコーディングされ得る。たとえば、Pフレーム重みφ0は、固定小数点表現を使用して量子化され得る。ある事例では、チャネルごとの量子化は、式(12)に従って実施され得る。いくつかの態様では、量子化パラメータおよび整数テンソルは、ビットストリームに書き込まれるかまたは符号化され、受信機に送出され得る。いくつかの態様では、学習可能な量子化パラメータωも、ビットストリームに符号化され、書き込まれ得る。
【0349】
[0219] ブロック1114において、プロセス1100は、現在フレームPtを処理するための既存のモデルパラメータをロードすることを含む。いくつかの態様では、現在フレームPtは、フレームグループ中の次のフレームに対応することができる。たとえば、現在フレームは、それぞれ、ベースモデルおよびフローモデルをトレーニングするために使用されたIフレームおよびPフレームに続くフレームに対応することができる。いくつかの態様では、既存のモデルパラメータは、先のフレームについてのベースモデル重み(たとえば、θt-1)および先のフレームについてのフローモデル重み(たとえば、φt-1)として表され得る。
【0350】
[0220] ブロック1116において、プロセス1100は、現在フレームに関してベースモデルおよびフローモデルをトレーニングすることを含む。いくつかの態様では、現在フレームに関してベースモデルおよびフローモデルをトレーニングすることは、以下のように前のフレームに対する重み更新δθおよびδφを学習することを含む。
【0351】
【0352】
[0221] いくつかの例では、ベースモデルの更新は、残差をモデル化することに対応することができる。いくつかの場合には、更新をモデル化することは、前に計算されたフロー情報を再送出することを回避することができる(たとえば、連続フレーム間のオプティカルフローは、おそらく同様である)。いくつかの態様では、PフレームTの暗黙的表現は、以下の式によって示され得る。
【0353】
【0354】
[0222] いくつかの例では、式(15)によって証明されるように、すべての先のフローモデルの累積効果は、局所変位の和である単一のテンソルに記憶される。いくつかの場合には、このテンソルは、送出機(sender)および受信機(receiver)によって維持され得る。いくつかの態様では、単一のテンソルの使用は、各フレームについてあらゆるネットワークを通してフォワードパスを実施するためにフローネットワークの前のバージョンを記憶する必要を回避することができる。
【0355】
[0223] いくつかの場合には、フレームPTのためのトレーニングは、以下の関係式に従って表され得る。
【0356】
【0357】
[0224] 式(16)において、DTは、フレームPTに関するひずみを示すことができ、R(δθ,δφ)は、更新されたレートコストを示すことができる。
【0358】
[0225] ブロック1118において、プロセス1100は、重み更新δθおよびδφをビットストリームに量子化およびエントロピーコーディングすることを含むことができる。いくつかの例では、更新δθおよびδφは、δθ=0を中心とする幅tのn個の等しいサイズのビンの固定グリッド上で量子化され得る。いくつかの態様では、量子化された重み更新は、式(9)に関して説明されたように、スパイクおよびスラブプライア下でエントロピーコーディングされ得る。上述のように、いくつかの態様では、式(9)において使用される分散
【0359】
【0360】
をもつ「スラブ」成分は、更新された重みを受信機に送出するためのビットレートを最小限に抑えることができる。いくつかの場合には、狭い標準偏差σspike<<σslabをもつ「スパイク」成分は、0更新に関連付けられた処理コストを最小限に抑えることができる。
【0361】
[0226] ブロック1120において、プロセス1100は、ベースモデルおよびフローモデルのためのモデルパラメータを更新することを含む。いくつかの態様では、モデルパラメータの更新は、θt←θt-1+δθおよびφt←φt-1+δθとして示され得る。いくつかの場合には、モデルパラメータの更新は、受信機に送出され得る。
【0362】
[0227] ブロック1122において、プロセス1100は、変位テンソル(displacement tensor)を更新することを含む。いくつかの態様では、変位テンソルの更新は、Δt←Δt-1+hφtとして示され得る。
【0363】
[0228] ブロック1124において、プロセス1100は、フレームグループ(たとえば、GoP)中に追加のフレームがあるかどうかを決定することができる。処理すべき追加のフレーム(たとえば、追加のPフレーム)がある場合、プロセス1100は、ブロック1114~1122に関して説明された動作を繰り返すことができる。ネットワーク圧縮システムがフレームグループを処理することを完了した場合、プロセス1100は、ブロック1126に進み、ビデオ入力に関連付けられたさらなるフレームグループがあるかどうかを決定することができる。処理すべき追加のフレームグループがある場合、方法は、ブロック1106に戻り、次のフレームグループに対応する新しいIフレームを使用してベースモデルのトレーニングを始めることができる。追加のフレームグループがない場合、プロセス1100は、ブロック1102に戻って、圧縮のための新しい入力データを受信することができる。
【0364】
[0229]
図12は、メディアデータを処理するための例示的なプロセス1200を示すフローチャートである。ブロック1202において、プロセス1200は、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することを含むことができる。たとえば、暗黙的ニューラルネットワーク圧縮システム700が、画像データ702を受信することができる。いくつかの態様では、暗黙的ニューラルネットワーク圧縮システム700はパイプライン800を使用して実装され得、複数の画像はIフレーム802とP
1フレーム808とを含むことができる。
【0365】
[0230] ブロック1204において、プロセス1200は、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することを含むことができる。たとえば、ベースモデル804が、Iフレーム802に基づいて第1の複数の重み値(たとえば、重みw706)を決定することができる。いくつかの態様では、第1のモデルの少なくとも1つの層が、第1の画像に関連付けられた複数の座標(a plurality of coordinates)の位置符号化を含むことができる。たとえば、ベースモデル804の少なくとも1つの層が、Iフレーム802に関連付けられた座標の位置符号化を含むことができる。
【0366】
[0231] いくつかの場合には、第1のモデルは、第1の画像に関連付けられた複数の座標に対応する1つまたは複数のピクセル値を決定するように構成され得る。たとえば、ベースモデル804は、Iフレーム802に関連付けられた複数の座標に対応する1つまたは複数のピクセル値(たとえば、RGB値)を決定するように構成され得る。
【0367】
[0232] ブロック1206において、プロセス1200は、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することを含むことができる。たとえば、算術エンコーダ710が、複数の重み値(a plurality of weight values)(たとえば、重みw706)の圧縮バージョンを含み得るビットストリーム724を生成することができる。ブロック1208において、プロセス1200は、受信機への送信のために第1のビットストリームを出力することを含むことができる。たとえば、ビットストリーム724は、受信機(たとえば、算術デコーダ730)への送信のために算術エンコーダ710によって出力され得る。
【0368】
[0233] いくつかの態様では、プロセス1200は、複数の量子化された重み値(a plurality of quantized weight values)を生じるために重みプライア下で第1の複数の重み値を量子化することを含むことができる。いくつかの場合には、ビットストリームは、複数の量子化された重み値の圧縮バージョンを含むことができる。たとえば、重みw706は、量子化された重み708を生じるために重みプライア712下で量子化され得る。いくつかの例では、量子化された重み708は、算術エンコーダ710によってビットストリーム724に符号化され得る。いくつかの態様では、プロセス1200は、重みプライアを使用して第1の複数の重み値をエントロピー符号化することを含むことができる。たとえば、算術エンコーダ710は、量子化された重み708を、ビットストリーム724中で、重みプライア712下でエントロピーコーディングを使用して符号化することができる。
【0369】
[0234] いくつかの場合には、重みプライアは、受信機に第1のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択され得る。たとえば、重みプライア712は、受信機にビットストリーム724を送出することに関連付けられたレート損失を最小限に抑えるように選択または構成され得る。いくつかの例では、第1の複数の重み値は、固定小数点量子化を使用して量子化され得る。いくつかの態様では、固定小数点量子化は、機械学習アルゴリズムを使用して実装され得る。たとえば、重みw706は、整数テンソルとスケーリングファクタとを含む固定小数点数で重みテンソルを表すことができる固定小数点量子化を使用して量子化され得る。いくつかの場合には、暗黙的ニューラルネットワーク圧縮システム700は、機械学習アルゴリズムを使用して重みw706の固定小数点量子化を実装することができる。
【0370】
[0235] いくつかの態様では、プロセス1200は、複数の画像からの第2の画像(second image)に基づいて、ニューラルネットワーク圧縮システムに関連付けられた第2のモデル(second model)による使用のための第2の複数の重み値(a second plurality of weight values)を決定することを含むことができる。たとえば、パイプライン800は、P1フレーム808に基づいて、フローモデル810による使用のための重み値の第2のセットを決定することができる。いくつかの場合には、プロセス1200は、第2の複数の重み値の圧縮バージョンを備える第2のビットストリーム(second bitstream)を生成することと、受信機への送信のために第2のビットストリームを出力することとを含むことができる。たとえば、算術エンコーダ(たとえば、算術エンコーダ710)は、フローモデル810によって使用される重みテンソルの圧縮バージョンを含み得るビットストリームを生成することができる。
【0371】
[0236] いくつかの例では、第2のモデルは、第1の画像と第2の画像との間のオプティカルフローを決定するように構成され得る。たとえば、Iフレーム802とP1フレーム808との間のオプティカルフロー場を決定するために使用され得るフローモデル810(たとえば、フローモデルhφ)。いくつかの態様では、プロセス1200は、オプティカルフローに基づいて、第1の複数の重み値から少なくとも1つの更新された重み値(updated weight value)を決定することを含むことができる。たとえば、フローモデル810は、オプティカルフローに基づいて、ベースモデル804によって使用される重み値から、更新された重み値を決定することができる。
【0372】
[0237] いくつかの態様では、プロセス1200は、第1の画像に基づいて、第1のモデルに対応するモデルアーキテクチャを選択することを含むことができる。いくつかの場合には、モデルアーキテクチャを選択することは、第1の画像に基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することを含むことができ、ここにおいて、1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる。たとえば、暗黙的ニューラル圧縮システム700は、画像データ702に基づいて各モデルアーキテクチャについての重みw706を調整することができる。いくつかの例では、1つまたは複数のモデル特性は、幅(width)、深度(depth)、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含むことができる。
【0373】
[0238] いくつかの場合には、プロセス1200は、第1の画像と1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力(reconstructed data output)との間の少なくとも1つのひずみを決定することを含むことができる。たとえば、暗黙的ニューラル圧縮システム700は、量子化なしにひずみ損失を最小限に抑えるために、各モデルに関連付けられた重みw706を調整することができる。いくつかの態様では、プロセス1200は、少なくとも1つのひずみに基づいて1つまたは複数のモデルアーキテクチャからモデルアーキテクチャを選択することを含むことができる。たとえば、暗黙的ニューラル圧縮システム700は、最も低いひずみ値に基づいてモデルアーキテクチャを選択することができる。
【0374】
[0239] いくつかの例では、プロセス1200は、モデルアーキテクチャの圧縮バージョンを備える第2のビットストリームを生成することと、受信機への送信のために第2のビットストリームを出力することとを含むことができる。たとえば、アーキテクチャエンコーダ716は、ビットストリーム720中でモデルアーキテクチャΨ(・)718を符号化し、受信機(たとえば、アーキテクチャデコーダ726)への送信のためにビットストリーム720を出力することができる。
【0375】
[0240]
図13は、メディアデータを処理するための例示的なプロセス1300を示すフローチャートである。ブロック1302において、プロセス1300は、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することを含むことができる。たとえば、算術デコーダ730は、画像データ702に関連付けられた複数の重み値(たとえば、重みw706)を含むことができるビットストリーム724を受信することができる。
【0376】
[0241] ブロック1304において、プロセス1300は、第1の複数のニューラルネットワーク重み値を展開することを含むことができる。たとえば、算術デコーダは、ビットストリーム724から重みw706を展開することができる。ブロック1306において、プロセス1300は、第1のニューラルネットワークモデルを使用して、第1の画像を生じる(yield)ために第1の複数のニューラルネットワーク重み値を処理することを含むことができる。たとえば、暗黙的ニューラル圧縮システム700は、Iフレーム802の再構築されたバージョン(reconstructed version)を生じるために重みテンソルを処理するために使用され得る量子化されたベースモデル806を有するパイプライン800を含むことができる。
【0377】
[0242] いくつかの態様では、プロセス1300は、複数の画像からの第2の画像に関連付けられた第2の複数のニューラルネットワーク重み値(a second plurality of neural network weight values)の圧縮バージョンを受信することを含むことができる。いくつかの場合には、プロセス1300は、第2の複数のニューラルネットワーク重み値を展開することと、第2のニューラルネットワークモデル(second neural network model)を使用して、第1の画像と第2の画像との間のオプティカルフローを決定するために第2の複数のニューラルネットワーク重み値を処理することとを含むことができる。たとえば、暗黙的ニューラル圧縮システム600は、Iフレーム802とP1フレーム808との間のオプティカルフローを決定するためにフローモデル810に関連付けられた重みテンソルを処理するために使用され得る量子化されたフローモデルを有するパイプライン800を含むことができる。
【0378】
[0243] いくつかの場合には、プロセス1300は、オプティカルフローに基づいて、第1のニューラルネットワークモデルに関連付けられた第1の複数のニューラルネットワーク重み値から少なくとも1つの更新された重み値を決定することを含むことができる。たとえば、フローモデル810は、フローモデル810に関連付けられた重みから、更新された重み値を決定することができる。いくつかの態様では、プロセス1300は、第1のニューラルネットワークモデルを使用して、第2の画像の再構築されたバージョンを生じるために少なくとも1つの更新された重み値を処理することを含むことができる。たとえば、量子化されたベースモデル806は、P1フレーム808の再構築されたバージョンを生じるために、(たとえば、オプティカルフローに基づく)更新された重みを使用することができる。
【0379】
[0244] いくつかの例では、第1の複数のニューラルネットワーク重み値は、重みプライア下で量子化され得る。たとえば、量子化されたベースモデル806によって受信された重みは、重みプライア(たとえば、重みプライア712)下で量子化され得る。いくつかの態様では、第1の複数のネットワーク重み値の圧縮バージョンは、エントロピー符号化ビットストリーム(entropy encoded bitstream)中で受信される。たとえば、算術エンコーダ710は、重み(たとえば、重みw706)または量子化された重み(たとえば、量子化された重み708)のエントロピー符号化を実施し、ビットストリーム724を出力することができる。
【0380】
[0245] いくつかの場合には、プロセス1300は、第1のニューラルネットワークモデルに対応するニューラルネットワークアーキテクチャの圧縮バージョンを受信することを含むことができる。たとえば、アーキテクチャエンコーダ716は、ビットストリーム720中でモデルアーキテクチャΨ(・)718を符号化し、それをアーキテクチャデコーダ726に送出することができる。
【0381】
[0246]
図14は、暗黙的ニューラル表現に基づいて画像データを圧縮するための例示的なプロセス1400を示すフローチャートである。ブロック1402において、プロセス1400は、ニューラルネットワーク圧縮システムによる圧縮のための入力データを受信することを含むことができる。いくつかの態様では、入力データは、メディアデータ(たとえば、ビデオデータ、ピクチャデータ、オーディオデータなど)に対応することができる。いくつかの例では、入力データは、ニューラルネットワーク圧縮システムをトレーニングするために使用される画像データに対応する複数の座標を含むことができる。
【0382】
[0247] ブロック1404において、プロセス1400は、入力データに基づいて、入力データを圧縮するためのニューラルネットワーク圧縮システムによる使用のためのモデルアーキテクチャを選択することを含むことができる。いくつかの態様では、モデルアーキテクチャを選択することは、入力データに基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することを含むことができ、ここにおいて、1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる。いくつかの例では、モデルアーキテクチャを選択することは、入力データと1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力との間の少なくとも1つのひずみを決定することをも含むことができる。いくつかの場合には、1つまたは複数のモデルアーキテクチャからモデルアーキテクチャを選択することは、少なくとも1つのひずみに基づき得る。いくつかの態様では、1つまたは複数のモデル特性は、幅、深度、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含むことができる。
【0383】
[0248] ブロック1406において、プロセス1400は、入力データを使用して、モデルアーキテクチャに関連付けられた複数の層に対応する複数の重み値を決定することを含むことができる。ブロック1408において、プロセス1400は、重みプライアの圧縮バージョンを備える第1のビットストリームを生成することを含むことができる。いくつかの例では、第1のビットストリームを生成することは、オープンニューラルネットワーク交換(ONNX:Open Neural Network Exchange)フォーマットを使用して重みプライアを符号化することを含むことができる。ブロック1410において、プロセス1400は、重みプライア下での複数の重み値の圧縮バージョンを備える第2のビットストリームを生成することを含むことができる。いくつかの態様では、第2のビットストリームを生成することは、重みプライアを使用して複数の重み値をエントロピー符号化することを含むことができる。いくつかの例では、重みプライアは、受信機に第2のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択され得る。
【0384】
[0249] ブロック1412において、プロセス1400は、受信機への送信のために第1のビットストリームおよび第2のビットストリームを出力することを含むことができる。いくつかの例では、プロセスは、モデルアーキテクチャの圧縮バージョンを備える第3のビットストリームを生成することと、受信機への送信のために第3のビットストリームを出力することとを含むことができる。いくつかの態様では、モデルアーキテクチャの少なくとも1つの層が、入力データに関連付けられた複数の座標の位置符号化を備える。
【0385】
[0250] いくつかの例では、プロセスは、複数の量子化された重み値を生じるために複数の重み値を量子化することを含むことができ、ここにおいて、第2のビットストリームは、重みプライア下での複数の量子化された重み値の圧縮バージョンを備える。いくつかの態様では、複数の重み値は、学習された固定小数点量子化を使用して量子化され得る。いくつかの場合には、学習された固定小数点量子化は、機械学習アルゴリズムを使用して実装され得る。いくつかの例では、第2のビットストリームは、複数の重み値を量子化するために使用される複数の符号化された量子化パラメータを含むことができる。
【0386】
[0251]
図15は、暗黙的ニューラル表現に基づいて画像データを展開するためのプロセス1500の一例を示すフローチャートである。ブロック1502において、プロセス1500は、重みプライアの圧縮バージョンと、重みプライア下での複数の重み値の圧縮バージョンとを受信することを含むことができる。いくつかの態様では、重みプライア下での複数の重みは、エントロピー符号化ビットストリーム中で受信され得る。ブロック1504において、プロセス1500は、重みプライアと、重みプライア下での複数の重み値の圧縮バージョンとを展開することを含むことができる。
【0387】
[0252] ブロック1506において、プロセス1500は、重みプライアと重みプライア下での複数の重みとに基づいて、複数のニューラルネットワーク重みを決定することを含むことができる。ブロック1508において、プロセス1500は、ニューラルネットワークアーキテクチャを使用して、再構築された画像コンテンツを生じるために複数のニューラルネットワーク重みを処理することを含むことができる。いくつかの態様では、重みプライア下での複数の重み値は、重みプライア下での複数の量子化された重みに対応することができる。いくつかの例では、プロセスは、重みプライア下での複数の量子化された重みを量子化するために使用される複数の符号化された量子化パラメータを受信することを含むことができる。
【0388】
[0253] いくつかの態様では、プロセスは、ニューラルネットワークアーキテクチャの圧縮バージョンを受信することと、ニューラルネットワークアーキテクチャの圧縮バージョンを展開することとを含むことができる。いくつかの例では、プロセスは、バイナリマスクに基づいて重みプライア下での複数の重みを再分布することを含むことができる。
【0389】
[0254] いくつかの例では、本明細書で説明されるプロセス(たとえば、プロセス1100、プロセス1200、プロセス1300、プロセス1400、プロセス1500、および/または本明細書で説明される他のプロセス)は、コンピューティングデバイスまたは装置によって実施され得る。一例では、プロセス1100、1200、1300、1400、および/または1500は、
図4に示されているシステム400または
図16に示されているコンピューティングシステム1600によるコンピューティングデバイスによって実施され得る。
【0390】
[0255] コンピューティングデバイスは、モバイルデバイス(たとえば、モバイルフォン)、デスクトップコンピューティングデバイス、タブレットコンピューティングデバイス、ウェアラブルデバイス(たとえば、VRヘッドセット、ARヘッドセット、ARグラス、ネットワーク接続された時計またはスマートウォッチ、あるいは他のウェアラブルデバイス)、サーバコンピュータ、自律車両または自律車両のコンピューティングデバイス、ロボティックデバイス、テレビジョン、ならびに/あるいは、プロセス1100、プロセス1200、プロセス1300、プロセス1400、プロセス1500、および/または本明細書で説明される他のプロセスを含む、本明細書で説明されるプロセスを実施するリソース能力をもつ任意の他のコンピューティングデバイスなど、任意の好適なデバイスを含むことができる。いくつかの場合には、コンピューティングデバイスまたは装置は、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、1つまたは複数のカメラ、1つまたは複数のセンサー、および/あるいは本明細書で説明されるプロセスのステップを行うように構成された(1つまたは複数の)他の構成要素など、様々な構成要素を含み得る。いくつかの例では、コンピューティングデバイスは、ディスプレイ、データを通信および/または受信するように構成されたネットワークインターフェース、それらの任意の組合せ、ならびに/あるいは(1つまたは複数の)他の構成要素を含み得る。ネットワークインターフェースは、インターネットプロトコル(IP)ベースデータまたは他のタイプのデータを通信および/または受信するように構成され得る。
【0391】
[0256] コンピューティングデバイスの構成要素は、回路において実装され得る。たとえば、構成要素は、本明細書で説明される様々な動作を実施するために、1つまたは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、および/または他の好適な電子回路)を含むことができる、電子回路もしくは他の電子ハードウェアを含むことができ、および/またはそれらを使用して実装され得、ならびに/あるいは、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組合せを含むことができ、および/またはそれらを使用して実装され得る。
【0392】
[0257] プロセス1100、1200、1300、1400、および1500は、論理流れ図として示されており、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せにおいて実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、具陳された動作を実施する1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実施するか、または特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されるものではなく、任意の数の説明される動作は、プロセスを実装するために任意の順序でおよび/または並行して組み合わせられ得る。
【0393】
[0258] さらに、プロセス1100、1200、1300、1400、1500、および/または本明細書で説明される他のプロセスは、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実施され得、まとめて1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで実行するコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読または機械可読記憶媒体に記憶され得る。コンピュータ可読または機械可読記憶媒体は非一時的であり得る。
【0394】
[0259]
図16は、本技術のいくつかの態様を実装するためのシステムの一例を示す図である。特に、
図16は、たとえば、内部コンピューティングシステムを構成する任意のコンピューティングデバイス、リモートコンピューティングシステム、カメラ、または、その任意の構成要素であり得る、コンピューティングシステム1600の一例を示し、システムの構成要素は、接続1605を使用して互いと通信している。接続1605は、バスを使用したプロセッサ1610への物理接続、または、チップセットアーキテクチャなどにおける、プロセッサ1610への直接接続であり得る。接続1605は、仮想接続、ネットワーク化された接続、または論理接続でもあり得る。
【0395】
[0260] いくつかの実施形態では、コンピューティングシステム1600は、本開示で説明される機能が、データセンター、複数のデータセンター、ピアネットワーク内などに分散され得る、分散型システムである。いくつかの実施形態では、説明されるシステム構成要素のうちの1つまたは複数は、構成要素がそれについて説明される機能の一部または全部を各々実施する多くのそのような構成要素を表す。いくつかの実施形態では、構成要素は、物理デバイスまたは仮想デバイスであり得る。
【0396】
[0261] 例示的なシステム1600は、少なくとも1つの処理ユニット(CPUまたはプロセッサ)1610と接続1605とを含み、接続1605は、読取り専用メモリ(ROM)1620およびランダムアクセスメモリ(RAM)1625など、システムメモリ1615を含む様々なシステム構成要素を、プロセッサ1610に結合する。コンピューティングシステム1600は、プロセッサ1610と直接接続された、プロセッサ1610に極めて近接した、またはプロセッサ1610の一部として統合された、高速メモリのキャッシュ1612を含むことができる。
【0397】
[0262] プロセッサ1610は、任意の汎用プロセッサと、プロセッサ1610ならびに専用プロセッサを制御するように構成された、記憶デバイス1630に記憶されたサービス1632、1634、および1636など、ハードウェアサービスまたはソフトウェアサービスとを含むことができ、ここで、ソフトウェア命令が実際のプロセッサ設計に組み込まれる。プロセッサ1610は、本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含んでいる、完全自己完結型コンピューティングシステムであり得る。マルチコアプロセッサは、対称的または非対称的であり得る。
【0398】
[0263] ユーザ対話を可能にするために、コンピューティングシステム1600は入力デバイス1645を含み、入力デバイス1645は、音声のためのマイクロフォン、ジェスチャーまたはグラフィカル入力のためのタッチセンシティブスクリーン、キーボード、マウス、動き入力、音声など、任意の数の入力機構を表すことができる。コンピューティングシステム1600は、いくつかの出力機構のうちの1つまたは複数であり得る、出力デバイス1635をも含むことができる。いくつかの事例では、マルチモーダルシステムは、ユーザがコンピューティングシステム1600と通信するために複数のタイプの入出力を提供することを可能にすることができる。コンピューティングシステム1600は、概してユーザ入力とシステム出力とを統制および管理することができる、通信インターフェース1640を含むことができる。
【0399】
[0264] 通信インターフェースは、オーディオジャック/プラグ、マイクロフォンジャック/プラグ、ユニバーサルシリアルバス(USB)ポート/プラグ、Apple(登録商標)Lightning(登録商標)ポート/プラグ、イーサネット(登録商標)ポート/プラグ、光ファイバーポート/プラグ、プロプライエタリワイヤードポート/プラグ、BLUETOOTH(登録商標)ワイヤレス信号転送、BLUETOOTH(登録商標)低エネルギー(BLE)ワイヤレス信号転送、IBEACON(登録商標)ワイヤレス信号転送、無線周波数識別(RFID)ワイヤレス信号転送、ニアフィールド通信(NFC)ワイヤレス信号転送、専用短距離通信(DSRC)ワイヤレス信号転送、802.11Wi-Fiワイヤレス信号転送、ワイヤレスローカルエリアネットワーク(WLAN)信号転送、可視光通信(VLC)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX(登録商標))、赤外線(IR)通信ワイヤレス信号転送、公衆交換電話網(PSTN)信号転送、統合サービスデジタルネットワーク(ISDN)信号転送、3G/4G/5G/LTEセルラーデータネットワークワイヤレス信号転送、アドホックネットワーク信号転送、電波信号転送、マイクロ波信号転送、赤外線信号転送、可視光信号転送、紫外光信号転送、電磁スペクトルに沿ったワイヤレス信号転送、またはそれらの何らかの組合せを利用するものを含む、ワイヤードおよび/またはワイヤレストランシーバを使用して、ワイヤードまたはワイヤレス通信の受信および/または送信を実施するか、または可能にし得る。
【0400】
[0265] 通信インターフェース1640はまた、1つまたは複数のグローバルナビゲーション衛星システム(GNSS)システムに関連付けられた1つまたは複数の衛星からの1つまたは複数の信号の受信に基づいてコンピューティングシステム1600のロケーションを決定するために使用される1つまたは複数のGNSS受信機またはトランシーバを含み得る。GNSSシステムは、限定はしないが、米国ベースの全地球測位システム(GPS)と、ロシアベースの全地球航法衛星システム(GLONASS)と、中国ベースの北斗航法衛星システム(BDS)と、欧州ベースのGalileo GNSSとを含む。任意の特定のハードウェア構成上で動作することに対する制限はなく、したがって、ここでの基本的特徴は、改善されたハードウェア構成またはファームウェア構成が開発されるにつれて、それらで容易に代用され得る。
【0401】
[0266] 記憶デバイス1630は、不揮発性および/または非一時的および/またはコンピュータ可読メモリデバイスであり得、磁気カセット、フラッシュメモリカード、固体メモリデバイス、デジタル多用途ディスク、カートリッジ、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、磁気ストリップ/ストライプ、任意の他の磁気記憶媒体、フラッシュメモリ、メモリストレージ、任意の他の固体メモリ、コンパクトディスク読取り専用メモリ(CD-ROM)光ディスク、書換え可能コンパクトディスク(CD)光ディスク、デジタルビデオディスク(DVD)光ディスク、blu-ray(登録商標)ディスク(BDD)光ディスク、ホログラフィック光ディスク、別の光媒体、セキュアデジタル(SD)カード、マイクロセキュアデジタル(microSD)カード、Memory Stick(登録商標)カード、スマートカードチップ、EMVチップ、加入者識別モジュール(SIM)カード、ミニ/マイクロ/ナノ/ピコSIMカード、別の集積回路(IC)チップ/カード、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、フラッシュEPROM(FLASHEPROM)、キャッシュメモリ(L1/L2/L3/L4/L5/L#)、抵抗性ランダムアクセスメモリ(RRAM(登録商標)/ReRAM)、相変化メモリ(PCM)、スピン転送トルクRAM(STT-RAM)、別のメモリチップまたはカートリッジ、および/あるいはそれらの組合せなど、コンピュータによってアクセス可能であるデータを記憶することができるハードディスクまたは他のタイプのコンピュータ可読媒体であり得る。
【0402】
[0267] 記憶デバイス1630は、ソフトウェアサービス、サーバ、サービスなどを含むことができ、それらは、そのようなソフトウェアを定義するコードがプロセッサ1610によって実行されるとき、システムに機能を実施させる。いくつかの実施形態では、特定の機能を実施するハードウェアサービスは、その機能を行うために、プロセッサ1610、接続1605、出力デバイス1635など、必要なハードウェア構成要素に関して、コンピュータ可読媒体に記憶されたソフトウェア構成要素を含むことができる。「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、ならびに(1つまたは複数の)命令および/またはデータを記憶、含有、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データがそこに記憶され得る非一時的媒体を含み得、それは、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的電子信号を含まない。非一時的媒体の例は、限定はしないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの任意の組合せを表し得る、コードおよび/または機械実行可能命令をその上に記憶していることがある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツをパスおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の好適な手段を介してパス、フォワーディング、または送信され得る。
【0403】
[0268] いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含んでいるケーブル信号またはワイヤレス信号を含むことができる。しかしながら、述べられるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号自体などの媒体を明確に除外する。
【0404】
[0269] 本明細書で提供される実施形態および例の完全な理解を提供するために、具体的な詳細が上記の説明で提供される。ただし、実施形態はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。説明の明快のために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現される方法におけるステップまたはルーチン、あるいはハードウェアとソフトウェアとの組合せを備える、個々の機能ブロックを含むものとして提示され得る。図に示されているおよび/または本明細書で説明される構成要素以外の追加の構成要素が使用され得る。たとえば、回路、システム、ネットワーク、プロセス、および他の構成要素は、実施形態を不要な詳細で不明瞭にしないためにブロック図の形態で構成要素として示され得る。他の事例では、実施形態を不明瞭にすることを回避するために、よく知られている回路、プロセス、アルゴリズム、構造、および技法が不要な詳細なしに示され得る。
【0405】
[0270] 個々の実施形態は、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として、上記で説明され得る。フローチャートは、動作を逐次的なプロセスとして説明し得るが、動作の多くは、並行してまたは同時に実施され得る。さらに、動作の順序は並べ替えられ得る。プロセスの動作が完了されるとき、プロセスは終了されるが、図中に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、それの終了は呼出し関数またはメイン関数への関数の復帰に対応することができる。
【0406】
[0271] 上記で説明された例によるプロセスおよび方法は、記憶されるかまたはさもなければコンピュータ可読媒体から利用可能である、コンピュータ実行可能命令を使用して実装され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスが、ある機能または機能のグループを実施することを引き起こすか、あるいはさもなければそれらを実施するように構成する、命令とデータとを含むことができる。使用されるコンピュータリソースの部分が、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、ソースコードであり得る。命令、使用される情報、および/または説明される例による方法中に作成される情報を記憶するために使用され得るコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク化された記憶デバイスなどを含む。
【0407】
[0272] これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。(1つまたは複数の)プロセッサが、必要なタスクを実施し得る。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他のスモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明される機能はまた、周辺機器またはアドインカードで具現され得る。そのような機能はまた、さらなる例として、単一のデバイスにおいて実行する異なるチップまたは異なるプロセスの間で回路板上に実装され得る。
【0408】
[0273] 命令、そのような命令を伝達するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明される機能を提供するための例示的な手段である。
【0409】
[0274] 上記の説明では、本出願の態様がそれの特定の実施形態を参照しながら説明されたが、本出願はそれに限定されないことを、当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、従来技術によって限定される場合を除いて、発明的概念が、場合によっては様々に具現および採用され得、添付の特許請求の範囲が、そのような変形形態を含むように解釈されるものであることを理解されたい。上記で説明された適用例の様々な特徴および態様は、個々にまたは一緒に使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明された環境および適用例以外に、任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定的なものではなく例示的なものとして考慮されるべきである。説明の目的で、方法は特定の順序で説明された。代替実施形態では、方法は、説明された順序とは異なる順序で実施され得ることを諒解されたい。
【0410】
[0275] 本明細書で使用される、よりも小さい(「<」)、および、よりも大きい(「>」)のシンボルまたは専門用語は、本明細書の範囲から逸脱することなく、それぞれ、よりも小さいかまたはそれに等しい(「≦」)、および、よりも大きいかまたはそれに等しい(「≧」)のシンボルと置き換えられ得ることを、当業者は諒解されよう。
【0411】
[0276] 構成要素がいくつかの動作を実施する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実施するように電子回路または他のハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の好適な電子回路)をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。
【0412】
[0277] 「に結合された」という句は、直接または間接的にのいずれかで別の構成要素に物理的に接続された任意の構成要素、および/あるいは直接または間接的にのいずれかで別の構成要素と通信している(たとえば、ワイヤードまたはワイヤレス接続、および/あるいは他の好適な通信インターフェースを介して他の構成要素に接続された)任意の構成要素を指す。
【0413】
[0278] セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」を具陳するクレームの文言または他の文言は、セットのうちの1つのメンバーまたは(任意の組合せにおける)セットのうちの複数のメンバーがクレームを満たすことを示す。たとえば、「AおよびBのうちの少なくとも1つ」または「AまたはBのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」または「A、B、またはCのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」という文言は、セットを、セットに記載されている項目に限定しない。たとえば、「AおよびBのうちの少なくとも1つ」または「AまたはBのうちの少なくとも1つ」を具陳するクレームの文言は、A、B、またはAおよびBを意味することができ、さらに、AおよびBのセットに記載されていない項目を含むことができる。
【0414】
[0279] 本明細書で開示される例に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明された。そのような機能がハードウェアとして実装されるのかソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明される機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本出願の範囲からの逸脱を生じるものと解釈されるべきではない。
【0415】
[0280] 本明細書で説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用を含む複数の用途を有する集積回路デバイスなど、様々なデバイスのいずれかにおいて実装され得る。モジュールまたは構成要素として説明された特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別個に実装され得る。ソフトウェアで実装された場合、技法は、実行されたとき、上記で説明された方法、アルゴリズム、および/または動作のうちの1つまたは複数を実施する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光データ記憶媒体など、メモリまたはデータ記憶媒体を備え得る。本技法は、追加または代替として、伝搬信号または電波など、命令またはデータ構造の形態でプログラムコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって少なくとも部分的に実現され得る。
【0416】
[0281] プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のいずれかを実施するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造のいずれか、上記の構造の任意の組合せ、あるいは本明細書で説明された技法の実装に好適な任意の他の構造または装置を指し得る。
【0417】
[0282] 本開示の例示的な例は、以下を含む。
【0418】
[0283] 態様1:少なくとも1つのメモリと、少なくとも1つのメモリに結合された少なくとも1つのプロセッサとを備える装置であって、少なくとも1つのプロセッサが、ニューラルネットワーク圧縮システムによる圧縮のための複数の画像を受信することと、複数の画像からの第1の画像に基づいて、ニューラルネットワーク圧縮システムの第1のモデルに関連付けられた第1の複数の重み値を決定することと、第1の複数の重み値の圧縮バージョンを備える第1のビットストリームを生成することと、受信機への送信のために第1のビットストリームを出力することとを行うように構成された、装置。
【0419】
[0284] 態様2:第1のモデルの少なくとも1つの層が、第1の画像に関連付けられた複数の座標の位置符号化を含む、態様1に記載の装置。
【0420】
[0285] 態様3:第1のモデルが、第1の画像に関連付けられた複数の座標に対応する1つまたは複数のピクセル値を決定するように構成された、態様2に記載の装置。
【0421】
[0286] 態様4:少なくとも1つのプロセッサが、複数の画像からの第2の画像に基づいて、ニューラルネットワーク圧縮システムに関連付けられた第2のモデルによる使用のための第2の複数の重み値を決定することと、第2の複数の重み値の圧縮バージョンを備える第2のビットストリームを生成することと、受信機への送信のために第2のビットストリームを出力することとを行うようにさらに構成された、態様1から3のいずれかに記載の装置。
【0422】
[0287] 態様5:第2のモデルが、第1の画像と第2の画像との間のオプティカルフローを決定するように構成された、態様4に記載の装置。
【0423】
[0288] 態様6:少なくとも1つのプロセッサが、オプティカルフローに基づいて、第1の複数の重み値から少なくとも1つの更新された重み値を決定することを行うようにさらに構成された、態様5に記載の装置。
【0424】
[0289] 態様7:少なくとも1つのプロセッサは、複数の量子化された重み値を生じるために重みプライア下で第1の複数の重み値を量子化すること、ここにおいて、第1のビットストリームが複数の量子化された重み値の圧縮バージョンを備える、を行うようにさらに構成された、態様1から6のいずれかに記載の装置。
【0425】
[0290] 態様8:重みプライアが、受信機に第1のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択される、態様7に記載の装置。
【0426】
[0291] 態様9:第1のビットストリームを生成するために、少なくとも1つのプロセッサが、重みプライアを使用して第1の複数の重み値をエントロピー符号化することを行うようにさらに構成された、態様7から8のいずれかに記載の装置。
【0427】
[0292] 態様10:第1の複数の重み値が、固定小数点量子化を使用して量子化される、態様7から9のいずれかに記載の装置。
【0428】
[0293] 態様11:固定小数点量子化が、機械学習アルゴリズムを使用して実装される、態様10に記載の装置。
【0429】
[0294] 態様12:少なくとも1つのプロセッサが、第1の画像に基づいて、第1のモデルに対応するモデルアーキテクチャを選択することを行うようにさらに構成された、態様1から11のいずれかに記載の装置。
【0430】
[0295] 態様13:少なくとも1つのプロセッサが、モデルアーキテクチャの圧縮バージョンを備える第2のビットストリームを生成することと、受信機への送信のために第2のビットストリームを出力することとを行うようにさらに構成された、態様12に記載の装置。
【0431】
[0296] 態様14:モデルアーキテクチャを選択するために、少なくとも1つのプロセッサは、第1の画像に基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することと、ここにおいて、1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる、第1の画像と1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力との間の少なくとも1つのひずみを決定することと、少なくとも1つのひずみに基づいて1つまたは複数のモデルアーキテクチャからモデルアーキテクチャを選択することとを行うようにさらに構成された、態様12から13のいずれかに記載の装置。
【0432】
[0297] 態様15:1つまたは複数のモデル特性が、幅、深度、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含む、態様14に記載の装置。
【0433】
[0298] 態様16:態様1から15に記載の動作のいずれかを実施する方法。
【0434】
[0299] 態様17:実行されたとき、1つまたは複数のプロセッサに、態様1から15に記載の動作のいずれかを実施させる命令を記憶するコンピュータ可読記憶媒体。
【0435】
[0300] 態様18:態様1から15に記載の動作のいずれかを実施するための手段を備える装置。
【0436】
[0301] 態様19:少なくとも1つのメモリと、少なくとも1つのメモリに結合された少なくとも1つのプロセッサとを備える装置であって、少なくとも1つのプロセッサが、複数の画像からの第1の画像に関連付けられた第1の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、第1の複数のニューラルネットワーク重み値を展開することと、第1のニューラルネットワークモデルを使用して、第1の画像を生じるために第1の複数のニューラルネットワーク重み値を処理することとを行うように構成された、装置。
【0437】
[0302] 態様20:少なくとも1つのプロセッサが、複数の画像からの第2の画像に関連付けられた第2の複数のニューラルネットワーク重み値の圧縮バージョンを受信することと、第2の複数のニューラルネットワーク重み値を展開することと、第2のニューラルネットワークモデルを使用して、第1の画像と第2の画像との間のオプティカルフローを決定するために第2の複数のニューラルネットワーク重み値を処理することとを行うようにさらに構成された、態様19に記載の装置。
【0438】
[0303] 態様21:少なくとも1つのプロセッサが、オプティカルフローに基づいて、第1のニューラルネットワークモデルに関連付けられた第1の複数のニューラルネットワーク重み値から少なくとも1つの更新された重み値を決定することを行うようにさらに構成された、態様20に記載の装置。
【0439】
[0304] 態様22:少なくとも1つのプロセッサが、第1のニューラルネットワークモデルを使用して、第2の画像の再構築されたバージョンを生じるために少なくとも1つの更新された重み値を処理することを行うようにさらに構成された、態様21に記載の装置。
【0440】
[0305] 態様23:第1の複数のニューラルネットワーク重み値が、重みプライア下で量子化される、態様19から22のいずれかに記載の装置。
【0441】
[0306] 態様24:第1の複数のニューラルネットワーク重み値の圧縮バージョンが、エントロピー符号化ビットストリーム中で受信される、態様19から23のいずれかに記載の装置。
【0442】
[0307] 態様25:少なくとも1つのプロセッサが、第1のニューラルネットワークモデルに対応するニューラルネットワークアーキテクチャの圧縮バージョンを受信することを行うようにさらに構成された、態様19から24のいずれかに記載の装置。
【0443】
[0308] 態様26:態様19から25に記載の動作のいずれかを実施する方法。
【0444】
[0309] 態様27:実行されたとき、1つまたは複数のプロセッサに、態様19から25に記載の動作のいずれかを実施させる命令を記憶するコンピュータ可読記憶媒体。
【0445】
[0310] 態様28:態様19から25に記載の動作のいずれかを実施するための手段を備える装置。
【0446】
[0311] 態様29:メモリと、メモリに結合された1つまたは複数のプロセッサとを備える装置であって、1つまたは複数のプロセッサが、ニューラルネットワーク圧縮システムによる圧縮のための入力データを受信することと、入力データに基づいて、入力データを圧縮するためのニューラルネットワーク圧縮システムによる使用のためのモデルアーキテクチャを選択することと、入力データを使用して、モデルアーキテクチャに関連付けられた複数の層に対応する複数の重み値を決定することと、重みプライアの圧縮バージョンを備える第1のビットストリームを生成することと、重みプライア下での複数の重み値の圧縮バージョンを備える第2のビットストリームを生成することと、受信機への送信のために第1のビットストリームおよび第2のビットストリームを出力することとを行うように構成された、装置。
【0447】
[0312] 態様30:ニューラルネットワークによる使用のためのモデルアーキテクチャを選択するために、1つまたは複数のプロセッサは、入力データに基づいて、1つまたは複数のモデルアーキテクチャに関連付けられた複数の重み値を調整することと、ここにおいて、1つまたは複数のモデルアーキテクチャの各々が1つまたは複数のモデル特性に関連付けられる、入力データと1つまたは複数のモデルアーキテクチャの各々に対応する再構築されたデータ出力との間の少なくとも1つのひずみを決定することと、少なくとも1つのひずみに基づいて1つまたは複数のモデルアーキテクチャからモデルアーキテクチャを選択することとを行うように構成された、態様29に記載の装置。
【0448】
[0313] 態様31:1つまたは複数のモデル特性が、幅、深度、解像度、畳み込みカーネルのサイズ、および入力次元のうちの少なくとも1つを含む、態様30に記載の装置。
【0449】
[0314] 態様32:1つまたは複数のプロセッサは、複数の量子化された重み値を生じるために複数の重み値を量子化すること、ここにおいて、第2のビットストリームが、重みプライア下での複数の量子化された重み値の圧縮バージョンを備える、を行うようにさらに構成された、態様29から31のいずれかに記載の装置。
【0450】
[0315] 態様33:複数の重み値が、学習された固定小数点量子化を使用して量子化される、態様32に記載の装置。
【0451】
[0316] 態様34:固定小数点量子化が、機械学習アルゴリズムを使用して実装される、態様32に記載の装置。
【0452】
[0317] 態様35:第2のビットストリームが、複数の重み値を量子化するために使用される複数の符号化された量子化パラメータを備える、態様32に記載の装置。
【0453】
[0318] 態様36:1つまたは複数のプロセッサが、モデルアーキテクチャの圧縮バージョンを備える第3のビットストリームを生成することと、受信機への送信のために第3のビットストリームを出力することとを行うようにさらに構成された、態様29から35のいずれかに記載の装置。
【0454】
[0319] 態様37:モデルアーキテクチャの少なくとも1つの層が、入力データに関連付けられた複数の座標の位置符号化を備える、態様29から36のいずれかに記載の装置。
【0455】
[0320] 態様38:第1のビットストリームを生成するために、1つまたは複数のプロセッサが、オープンニューラルネットワーク交換フォーマットを使用して重みプライアを符号化することを行うように構成された、態様29から37のいずれかに記載の装置。
【0456】
[0321] 態様39:第2のビットストリームを生成するために、1つまたは複数のプロセッサが、重みプライアを使用して複数の重み値をエントロピー符号化することを行うように構成された、態様29から38のいずれかに記載の装置。
【0457】
[0322] 態様40:重みプライアが、受信機に第2のビットストリームを送出することに関連付けられたレート損失を最小限に抑えるように選択される、態様29から39のいずれかに記載の装置。
【0458】
[0323] 態様41:入力データが、ニューラルネットワーク圧縮システムをトレーニングするために使用される画像データに対応する複数の座標を含む、態様29から40のいずれかに記載の装置。
【0459】
[0324] 態様42:態様29から41に記載の動作のいずれかを実施する方法。
【0460】
[0325] 態様43:実行されたとき、1つまたは複数のプロセッサに、態様29から41に記載の動作のいずれかを実施させる命令を記憶するコンピュータ可読記憶媒体。
【0461】
[0326] 態様44:態様29から41に記載の動作のいずれかを実施するための手段を備える装置。
【0462】
[0327] 態様45:メモリと、メモリに結合された1つまたは複数のプロセッサとを備える装置であって、1つまたは複数のプロセッサが、重みプライアの圧縮バージョンと、重みプライア下での複数の重み値の圧縮バージョンとを受信することと、重みプライアと、重みプライア下での複数の重み値の圧縮バージョンとを展開することと、重みプライアと重みプライア下での複数の重みとに基づいて、複数のニューラルネットワーク重みを決定することと、ニューラルネットワークアーキテクチャを使用して、再構築された画像コンテンツを生じるために複数のニューラルネットワーク重みを処理することとを行うように構成された、装置。
【0463】
[0328] 態様46:1つまたは複数のプロセッサが、ニューラルネットワークアーキテクチャの圧縮バージョンを受信することと、ニューラルネットワークアーキテクチャの圧縮バージョンを展開することとを行うようにさらに構成された、態様45に記載の装置。
【0464】
[0329] 態様47:重みプライア下での複数の重み値が、重みプライア下での複数の量子化された重みに対応する、態様45から46のいずれかに記載の装置。
【0465】
[0330] 態様48:1つまたは複数のプロセッサが、重みプライア下での複数の量子化された重みを量子化するために使用される複数の符号化された量子化パラメータを受信することを行うようにさらに構成された、態様47に記載の装置。
【0466】
[0331] 態様49:重みプライア下での複数の重みの圧縮バージョンが、エントロピー符号化ビットストリーム中で受信される、態様45から48のいずれかに記載の装置。
【0467】
[0332] 態様50:1つまたは複数のプロセッサが、バイナリマスクに基づいて重みプライア下での複数の重みを再分布することを行うようにさらに構成された、態様45から49のいずれかに記載の装置。
【0468】
[0333] 態様51:態様45から50に記載の動作のいずれかを実施する方法。
【0469】
[0334] 態様52:実行されたとき、1つまたは複数のプロセッサに、態様45から50に記載の動作のいずれかを実施させる命令を記憶するコンピュータ可読記憶媒体。
【0470】
[0335] 態様53:態様45から50に記載の動作のいずれかを実施するための手段を備える装置。
【国際調査報告】