(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-24
(45)【発行日】2024-05-07
(54)【発明の名称】符号化ビデオストリームにおいてニューラルネットワークトポロジ及びパラメータを伝達するための技術
(51)【国際特許分類】
H04N 19/70 20140101AFI20240425BHJP
【FI】
H04N19/70
(21)【出願番号】P 2022556632
(86)(22)【出願日】2021-10-07
(86)【国際出願番号】 US2021053951
(87)【国際公開番号】W WO2022146522
(87)【国際公開日】2022-07-07
【審査請求日】2022-09-20
(32)【優先日】2021-01-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-09-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チョイ,ビョンドゥ
(72)【発明者】
【氏名】リー,ゼチアン
(72)【発明者】
【氏名】ジアン,ウェイ
(72)【発明者】
【氏名】ワン,ウェイ
(72)【発明者】
【氏名】シュー,シャオジョン
(72)【発明者】
【氏名】ウェンジャー,ステファン
(72)【発明者】
【氏名】リウ,シャン
【審査官】田中 純一
(56)【参考文献】
【文献】特表2023-535131(JP,A)
【文献】特表2023-528641(JP,A)
【文献】米国特許出願公開第2023/0116285(US,A1)
【文献】特開2022-007319(JP,A)
【文献】米国特許出願公開第2020/0304836(US,A1)
【文献】Byeongdoo Choi, et al.,AHG9/AHG11: SEI message for carriage of neural network information for post filtering [online], JVET-U JVET-U0091,ITU-T インターネット<URL:https://jvet-experts.org/doc_end_user/documents/21_Teleconference/wg11/JVET-U0091-v1.zip>,2021年01月01日,pp.1-3
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサが実行するビデオ符号化のための方法であって、
ビデオビットストリームを取得するステップと、
少なくとも部分的にニューラルネットワークによって前記ビデオビットストリームを符号化するステップと、
前記ニューラルネットワークのトポロジ情報及びパラメータを決定するステップと、
前記符号化されたビデオビットストリームに関連する複数のシンタックスエレメントにおいて前記決定されたニューラルネットワークのトポロジ情報及びパラメータを伝達するステップと
を含
み、
前記複数のシンタックスエレメントのうち少なくとも1つは、前記トポロジ情報及びパラメータが全て単一の補足エンハンスメント情報(SEI)メッセージに含まれるか、複数のSEIメッセージに分割されるかを伝達する、方法。
【請求項2】
前記複数のシンタックスエレメントは
、パラメータセット
、メタデータコンテナボックス
、及び前記単一のSEIメッセージ又は前記複数のSEIメッセージのうち1つ以上を介して伝達される、請求項1に記載の方法。
【請求項3】
前記ニューラルネットワークは、複数のオペレーションノードを含み、
前記ニューラルネットワークによって前記ビデオビットストリームを符号化するステップは、
前記ビデオビットストリームの入力テンソルデータを前記オペレーションノードの第1のオペレーションノードに供給するステップと、
予め訓練された定数及び変数のいずれかで前記入力テンソルデータを処理するステップと、
中間テンソルデータを出力するステップとを含み、
前記中間テンソルデータは、前記入力テンソルデータと訓練された定数及び更新された変数のいずれかとの加重和を含む、請求項2に記載の方法。
【請求項4】
前記トポロジ情報及びパラメータは、前記ニューラルネットワークによる前記ビデオビットストリームの前記符号化に基づく、請求項3に記載の方法。
【請求項5】
前記決定されたトポロジ情報及びパラメータを伝達するステップは、前記決定されたトポロジ情報及びパラメータが記憶される外部リンク情報を提供するステップを含む、請求項1乃至4のうちいずれか1項に記載の方法。
【請求項6】
前記決定されたトポロジ情報及びパラメータを伝達するステップは、
ニューラルネットワーク交換フォーマット(NNEF)、オープンニューラルネットワーク交換(ONNX)フォーマット及びMPEGニューラルネットワーク圧縮標準(NNR)フォーマットのうち少なくとも1つによって、前記決定されたトポロジ情報及びパラメータを明示的に伝達するステップを含む、請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
前記ニューラルネットワーク交換フォーマット(NNEF)、前記オープンニューラルネットワーク交換(ONNX)フォーマット及び前記MPEGニューラルネットワーク圧縮標準(NNR)フォーマットのうち前記少なくとも1つは、前記MPEG NNRフォーマットであり、
前記パラメータのうち少なくとも1つは
、データファイル
、及び前記単一のSEIメッセージ又は前記複数のSEIメッセージのうち少なくとも1つに圧縮される、請求項6に記載の方法。
【請求項8】
ビデオ符号化のための装置であって、
コンピュータプログラムコードを記憶するように構成された少なくとも1つのメモリと、
前記コンピュータプログラムコードにアクセスして前記コンピュータプログラムコードによって命令される通りに動作するように構成された少なくとも1つのプロセッサと
を含み、前記コンピュータプログラムコードは、
前記少なくとも1つのプロセッサに対して、請求項1乃至7のうちいずれか1項に記載の方法を実行させる、装置。
【請求項9】
コンピュータに、請求項1乃至7のうちいずれか1項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本出願は、2021年1月4日に出願された米国仮出願第63/133,682号、及び2021年9月16日に出願された米国出願第17/476,824号に対する優先権を主張し、これらの出願の全内容を参照により明示的に援用する。
【0002】
[技術分野]
本開示は、ニューラルネットワークに関連するビデオ符号化で使用される補足エンハンスメント情報(SEI, supplemental enhancement information)を含むもののようなビデオ符号化技術に関する。
【背景技術】
【0003】
ITU-T VCEG(Q6/16)及びISO/IEC MPEG(JTC 1/SC 29/WG11)は、2013年(バージョン1)、2014年(バージョン2)、2015年(バージョン3)及び2016年(バージョン4)にH.265/HEVC(High Efficiency Video Coding)標準を公開した。2015年に、これらの2つの標準組織は、HEVCを越える次のビデオ符号化標準の開発の可能性を探索するために、JVET(Joint Video Exploration Team)を共同で結成した。2017年10月に、HEVCを超える能力を有するビデオ圧縮の提案に関する共同募集(CfP, Joint Call for Proposals on Video Compression with Capability beyond HEVC)を発表した。2018年2月15日までに、標準ダイナミックレンジ(SDR, standard dynamic range)について22個のCfP回答、高ダイナミックレンジ(HDR, high dynamic range)について12個のCfP回答、及び360ビデオのカテゴリについて12個のCfP回答がそれぞれ提出された。2018年4月に、第122回MPEG/第10回JVET会議において、全ての受け付けられたCfP回答が評価された。この会議の結果、JVETは、HEVCを超える次世代ビデオ符号化の標準化プロセスを正式に開始した。この新たな標準はVVC(Versatile Video Coding)と命名され、JVETはJoint Video Expert Teamに改名された。中国のオーディオビデオ符号化標準(AVS, Audio Video coding Standard)も進行中である。
【0004】
ニューラルネットワークに関して、少なくともニューラルネットワークベースの符号化の複雑さのため、このような符号化において、通常のコーデックは、フィルタリングプロセスを行うことができない可能性がある。したがって、ニューラルネットワークに関連する情報の圧縮性、精度及び別法では不要な廃棄の欠如を含む技術的欠陥が存在する。
【発明の概要】
【0005】
例示的な実施形態によれば、コンピュータプログラムコードを記憶するように構成されたメモリと、コンピュータプログラムコードにアクセスしてコンピュータプログラムコードによって命令される通りに動作するように構成された1つ又は複数のプロセッサとを含む方法及び装置が含まれる。コンピュータプログラムコードは、少なくとも1つのプロセッサに対して、ビデオビットストリームを取得させるように構成された取得コードと、少なくとも1つのプロセッサに対して、少なくとも部分的にニューラルネットワークによってビデオビットストリームを符号化させるように構成された符号化コードと、少なくとも1つのプロセッサに対して、ニューラルネットワークのトポロジ情報及びパラメータを決定させるように構成された決定コードと、少なくとも1つのプロセッサに対して、符号化されたビデオビットストリームに関連する複数のシンタックスエレメントにおいて決定されたニューラルネットワークのトポロジ情報及びパラメータを伝達させるように構成された伝達コードとを含む。
【0006】
例示的な実施形態によれば、複数のシンタックスエレメントは、補足エンハンスメント情報(SEI, supplemental enhancement information)メッセージ、パラメータセット及びメタデータコンテナボックスのうち1つ以上を介して伝達される。さらに、例示的な実施形態によれば、ニューラルネットワークは、複数のオペレーションノードを含み、ニューラルネットワークによってビデオビットストリームを符号化することは、ビデオビットストリームの入力テンソルデータをオペレーションノードの第1のオペレーションノードに供給し、予め訓練された定数及び変数のいずれかで入力テンソルデータを処理し、中間テンソルデータを出力することを含み、中間テンソルデータは、入力テンソルデータと訓練された定数及び更新された変数のいずれかとの加重和を含む。さらに、例示的な実施形態によれば、トポロジ情報及びパラメータは、ニューラルネットワークによるビデオビットストリームの上記の符号化に基づく。
【0007】
例示的な実施形態によれば、決定されたトポロジ情報及びパラメータを伝達することは、決定されたトポロジ情報及びパラメータが記憶される外部リンク情報を提供することを含む。さらに、例示的な実施形態によれば、ニューラルネットワークは、複数のオペレーションノードを含み、ニューラルネットワークによってビデオビットストリームを符号化することは、ビデオビットストリームの入力テンソルデータをオペレーションノードの第1のオペレーションノードに供給し、予め訓練された定数及び変数のいずれかで入力テンソルデータを処理し、中間テンソルデータを出力することを含み、中間テンソルデータは、入力テンソルデータと訓練された定数及び更新された変数のいずれかとの加重和を含む。さらに、例示的な実施形態によれば、トポロジ情報及びパラメータは、ニューラルネットワークによるビデオビットストリームの上記の符号化に基づく。
【0008】
例示的な実施形態によれば、決定されたトポロジ情報及びパラメータを伝達することは、ニューラルネットワーク交換フォーマット(NNEF, neural network exchange format)、オープンニューラルネットワーク交換(ONNX, open neural network exchange)フォーマット及びMPEGニューラルネットワーク圧縮標準(NNR, neural network compression standard)フォーマットのうち少なくとも1つによって、決定されたトポロジ情報及びパラメータを明示的に伝達することを含む。さらに、例示的な実施形態によれば、ニューラルネットワークは、複数のオペレーションノードを含み、ニューラルネットワークによってビデオビットストリームを符号化することは、ビデオビットストリームの入力テンソルデータをオペレーションノードの第1のオペレーションノードに供給し、予め訓練された定数及び変数のいずれかで入力テンソルデータを処理し、中間テンソルデータを出力することを含み、中間テンソルデータは、入力テンソルデータと訓練された定数及び更新された変数のいずれかとの加重和を含む。さらに、例示的な実施形態によれば、トポロジ情報及びパラメータは、ニューラルネットワークによるビデオビットストリームの上記の符号化に基づく。さらに、例示的な実施形態によれば、ニューラルネットワーク交換フォーマット(NNEF, neural network exchange format)、オープンニューラルネットワーク交換(ONNX, open neural network exchange)フォーマット及びMPEGニューラルネットワーク圧縮標準(NNR, neural network compression standard)フォーマットのうち少なくとも1つは、MPEG NNRフォーマットであり、パラメータのうち少なくとも1つは、補足エンハンスメント情報(SEI, supplemental enhancement information)メッセージ及びデータファイルのうち少なくとも1つに圧縮される。
【図面の簡単な説明】
【0009】
開示の対象物の更なる特徴、性質及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになる。
【
図1】実施形態による概略図の簡略化された例である。
【
図2】実施形態による概略図の簡略化された例である。
【
図3】実施形態による概略図の簡略化された例である。
【
図4】実施形態による概略図の簡略化された例である。
【
図9A】実施形態による図の簡略化された例である。
【
図9B】実施形態による図の簡略化された例である。
【
図10】実施形態による図の簡略化された例である。
【
図11】実施形態によるフローチャートの簡略化された例である。
【
図12】実施形態によるフローチャートの簡略化された例である。
【
図13】実施形態によるフローチャートの簡略化された例である。
【
図14】実施形態によるフローチャートの簡略化された例である。
【
図15】実施形態によるフローチャートの簡略化された例である。
【
図16】実施形態によるフローチャートの簡略化された例である。
【
図17】実施形態によるフローチャートの簡略化された例である。
【
図18】実施形態による概略図の簡略化された例である。
【発明を実施するための形態】
【0010】
以下に議論される提案される特徴は、別々に使用されてもよく、或いは、いずれかの順序で組み合わせてもよい。さらに、実施形態は、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に記憶されたプログラムを実行する。
【0011】
図1は、本開示の一実施形態による通信システム100の簡略化したブロック図を示す。通信システム100は、ネットワーク105を介して相互接続された少なくとも2つの端末102及び103を含む。データの一方向伝送のために、第1の端末103は、ネットワーク105を介して他の端末102に伝送するために、ローカル位置のビデオデータを符号化してもよい。第2の端末102は、ネットワーク105から他の端末の符号化ビデオデータを受信し、符号化データを復号し、復元されたビデオデータを表示してもよい。一方向データ伝送は、メディア提供アプリケーション等において一般的でもよい。
【0012】
図1は、例えば、テレビ会議中に発生し得る符号化ビデオの双方向伝送をサポートするために設けられた第2の対の端末101及び104を示す。データの双方向伝送のために、各端末101及び104は、ネットワーク105を介して他の端末に伝送するために、ローカル位置でキャプチャされたビデオデータを符号化してもよい。また、各端末101及び104は、他の端末によって送信された符号化ビデオデータを受信してもよく、符号化データを復号してもよく、復元されたビデオデータをローカルディスプレイデバイスに表示してもよい。
【0013】
図1において、端末101、102、103及び104は、サーバ、パーソナルコンピュータ及びスマートフォンとして示されることがあるが、本開示の原理はこれらに限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレイヤ及び/又は専用のテレビ会議機器に適用がある。ネットワーク105は、例えば、有線及び/又は無線通信ネットワークを含む、端末101、102、103及び104の間で符号化ビデオデータを伝達するいずれかの数のネットワークを表す。通信ネットワーク105は、回線交換チャネル及び/又はパケット交換チャネルにおいてデータを交換してもよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク及び/又はインターネットを含む。本説明の目的では、ネットワーク105のアーキテクチャ及びトポロジは、本明細書において以下に説明しない限り、本開示の動作には重要ではない。
【0014】
図2は、開示の対象物のアプリケーションの例として、ストリーミング環境におけるビデオエンコーダ及びデコーダの配置を示す。開示の対象物は、例えば、テレビ会議、デジタルTV、デジタルメディア(CD、DVD、メモリスティック等を含む)上の圧縮ビデオの記憶等を含む、他のビデオ可能なアプリケーションにも同様に適用可能である。
【0015】
ストリーミングシステムはキャプチャサブシステム203を含んでもよく、例えば、当該キャプチャサブシステム203は、例えば、非圧縮のビデオピクチャのストリーム213を生成するデジタルカメラを含んでもよい。そのサンプルストリーム213は、符号化ビデオビットストリームと比較したときに高いデータ量であるとして強調されてもよく、カメラ201に結合されたエンコーダ202によって処理されてもよい。エンコーダ202は、以下により詳細に説明するように、開示の対象物の態様を可能にするため或いは実装するために、ハードウェア、ソフトウェア又はこれらの組み合わせを含んでもよい。符号化ビデオデータ204は、サンプルストリームと比較したときにより低いデータ量として強調されてもよく、将来の使用のためにストリーミングサーバ205に記憶されてもよい。1つ以上のストリーミングクライアント212及び207は、ストリーミングサーバ205にアクセスして符号化ビデオデータ204のコピー208及び206を取得してもよい。クライアント212は、ビデオデコーダ211を含んでもよく、ビデオデコーダ211は、符号化ビデオビットストリーム208の入力コピーを復号し、ディスプレイ209又は他のレンダリングデバイス(図示せず)上にレンダリングできる出力ビデオサンプルストリーム210を生成する。いくつかのストリーミングシステムでは、ビデオビットストリーム204、206及び208は、特定のビデオ符号化/圧縮標準に従って符号化されてもよい。これらの標準の例は上記に記載されており、ここで更に説明する。
【0016】
図3は、本発明の一実施形態によるビデオデコーダ300の機能ブロックでもよい。
【0017】
受信機302は、デコーダ300によって復号されるべき1つ以上の符号化ビデオシーケンスを受信してもよく、同一又は他の実施形態では、一度に1つの符号化ビデオシーケンスを受信してもよく、各符号化ビデオシーケンスの復号は、他の符号化ビデオシーケンスとは独立している。符号化ビデオシーケンスは、チャネル301から受信されてもよく、当該チャネルは、符号化ビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクでもよい。受信機302は、符号化ビデオデータを、他のデータ(例えば、符号化オーディオデータ及び/又は補助データストリーム)と共に受信してもよく、これらは、それぞれの使用エンティティ(図示せず)に転送されてもよい。受信機302は、符号化ビデオシーケンスを他のデータから分離してもよい。ネットワークジッタを防止するために、バッファメモリ302は、受信機302とエントロピーデコーダ/パーサ304(以下、「パーサ」という)との間に結合されてもよい。受信機302が、十分な帯域幅及び制御可能性を有する記憶/転送デバイスから、或いは、アイソクロナスネットワークからデータを受信している場合、バッファ303は必要なくてもよく或いは小さくすることができる。インターネットのようなベストエフォート型パケットネットワークでの使用については、バッファ303が必要とされてもよく、比較的大きくすることができ、有利には適応的なサイズとすることができる。
【0018】
ビデオデコーダ300は、エントロピー符号化ビデオシーケンスからシンボル313を復元するためのパーサ304を含んでもよい。これらのシンボルのカテゴリは、デコーダ303の動作を管理するために使用される情報を含み、デコーダの一体的な部分ではないがデコーダに結合できるディスプレイ312のようなレンダリングデバイスを制御するための情報を潜在的に含む。レンダリングデバイスの制御情報は、補足エンハンスメント情報(SEI, Supplementary Enhancement Information)(SEIメッセージ)又はビデオユーザビリティ情報(VUI, Video Usability Information)パラメータセットフラグメント(図示せず)の形式でもよい。パーサ304は、受信した符号化ビデオシーケンスを解析/エントロピー復号してもよい。符号化ビデオシーケンスの符号化は、ビデオ符号化技術又は標準に従ってもよく、可変長符号化、ハフマン符号化、コンテキスト感度を伴う或いは伴わない算術符号化等を含む、当業者に周知の原理に従ってもよい。パーサ304は、グループに対応する少なくとも1つのパラメータに基づいて、符号化ビデオシーケンスから、ビデオデコーダ内の画素のサブグループのうち少なくとも1つについてのサブグループパラメータのセットを抽出してもよい。サブグループは、グループオブピクチャ(GOP, Group of Picture)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU, Coding Unit)、ブロック、変換ユニット(TU, Transformation Unit)、予測ユニット(PU, Prediction Unit)等を含んでもよい。また、エントロピーデコーダ/パーサは、符号化ビデオシーケンスから、変換係数、量子化パラメータ値、動きベクトル等のような情報を抽出してもよい。
【0019】
パーサ304は、シンボル313を生成するために、バッファ303から受信したビデオシーケンスに対してエントロピー復号/解析動作を実行してもよい。パーサ304は、符号化データを受信し、特定のシンボル313を選択的に復号してもよい。さらに、パーサ304は、特定のシンボル313が動き補償予測ユニット306、スケーラ/逆変換ユニット305、イントラ予測ユニット307又はループフィルタ311に提供されるべきか否かを決定してもよい。
【0020】
シンボル313の復元には、符号化ビデオピクチャ又はその部分のタイプ(例えば、インターピクチャ及びイントラピクチャ、インターブロック及びイントラブロック)及び他の要因に依存して、複数の異なるユニットが関与してもよい。どのユニットがどのように関与するかは、パーサ304によって符号化ビデオシーケンスから解析されたサブグループ制御情報によって制御されてもよい。パーサ304と以下の複数ユニットとの間のこのようなサブグループ制御情報の流れは、明確にするために図示されていない。
【0021】
上記の機能ブロックの他に、デコーダ300は、概念的に、以下に説明するような複数の機能ユニットに細分されてもよい。商用的な制約の下で動作する実用的な実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合されてもよい。しかし、開示の対象物を説明する目的で、以下の機能ユニットに概念的に細分することが適切である。
【0022】
第1のユニットは、スケーラ/逆変換ユニット305である。スケーラ/逆変換ユニット305は、パーサ304からシンボル313として、制御情報(どの変換を使用するべきか、ブロックサイズ、量子化係数、量子化スケーリング行列等を含む)と共に、量子化された変換係数を受信する。スケーラ/逆変換ユニットは、アグリゲータ310に入力できるサンプル値を含むブロックを出力してもよい。
【0023】
場合によっては、スケーラ/逆変換305の出力サンプルは、イントラ符号化ブロックに関連してもよく、すなわち、前に復元されたピクチャからの予測情報を使用していないが、カレントピクチャの前に復元された部分からの予測情報を使用できるブロックに関連してもよい。このような予測情報は、イントラピクチャ予測ユニット307によって提供されてもよい。場合によっては、イントラピクチャ予測ユニット307は、(部分的に復元された)カレントピクチャ308から取り出された周囲の既に復元された情報を使用して、復元中のブロックの同じサイズ及び形状のブロックを生成する。場合によっては、アグリゲータ310は、サンプル毎に、イントラ予測ユニット307が生成した予測情報を、スケーラ/逆変換ユニット305によって提供された出力サンプル情報に追加する。
【0024】
他の場合には、スケーラ/逆変換ユニット305の出力サンプルは、インター符号化されて潜在的に動き補償されたブロックに関連してもよい。このような場合、動き補償予測ユニット306は、参照ピクチャメモリ308にアクセスして、予測に使用されるサンプルを取り出してもよい。ブロックに関連するシンボル313に従って、取り出されたサンプルを動き補償した後に、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ310によってスケーラ/逆変換ユニットの出力(この場合には、残差サンプル又は残差信号と呼ばれる)に追加されてもよい。動き補償ユニットに利用可能な、動き補償ユニットが予測サンプルを取り出す参照ピクチャメモリ内のアドレスは、例えば、X、Y及び参照ピクチャ成分を有することができるシンボル313の形式で、動きベクトルによって制御されてもよい。また、動き補償は、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリから取り出されるサンプル値の補間、動きベクトル予測メカニズム等を含んでもよい。
【0025】
アグリゲータ310の出力サンプルは、ループフィルタユニット311内の様々なループフィルタリング技術を受けてもよい。ビデオ圧縮技術はループ内フィルタ技術を含んでもよく、当該ループ内フィルタ技術は、符号化ビデオビットストリームに含まれるパラメータによって制御され、パーサ304からシンボル313としてループフィルタユニット311に利用可能にされるが、符号化ピクチャ又は符号化ビデオシーケンスの(復号順に)前の部分の復号の間に取得されたメタ情報に応答すると共に、前に復元されてループフィルタリングされたサンプル値にも応答してもよい。
【0026】
ループフィルタユニット311の出力はサンプルストリームでもよく、当該サンプルストリームは、レンダリングデバイス312に出力されると共に、将来のインターピクチャ予測に使用するために参照ピクチャメモリ557に記憶されてもよい。
【0027】
特定の符号化ピクチャは、完全に復元されると、将来の予測のための参照ピクチャとして使用されてもよい。符号化ピクチャが完全に復元され、符号化ピクチャが(例えば、パーサ304によって)参照ピクチャとして識別されると、カレント参照ピクチャ309は参照ピクチャバッファ308の一部となってもよく、新たなカレントピクチャメモリが、後続の符号化ピクチャの復元を開始する前に再割り当てされてもよい。
【0028】
ビデオデコーダ300は、ITU-T Rec. H.265のような標準に文書化され得る所定のビデオ圧縮技術に従って復号動作を実行してもよい。符号化ビデオシーケンスがビデオ圧縮技術又は標準に指定されており、特にそのプロファイル文書に指定されているように、ビデオ圧縮技術又は標準のシンタックスに従うという意味で、符号化ビデオシーケンスは、使用されているビデオ圧縮技術又は標準によって指定されたシンタックスに適合してもよい。また、コンプライアンスのために必要なことは、符号化ビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって定義される範囲内にあることである。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大復元サンプルレート(例えば、毎秒当たりのメガサンプル単位で測定される)、最大参照ピクチャサイズ等を制限する。場合によっては、レベルによって設定される制限は、仮想参照デコーダ(HRD, Hypothetical Reference Decoder)仕様及び符号化ビデオシーケンスで伝達されるHRDバッファ管理についてのメタデータを通じて更に制限されてもよい。
【0029】
一実施形態では、受信機302は、符号化ビデオと共に更なる(冗長な)データを受信してもよい。更なるデータは、符号化ビデオシーケンスの一部として含まれてもよい。更なるデータは、データを適切に復号するために、及び/又は元のビデオデータをより正確に復元するために、ビデオデコーダ300によって使用されてもよい。更なるデータは、例えば、時間、空間又は信号雑音比(SNR, signal-to-noise ratio)エンハンスメント層、冗長スライス、冗長ピクチャ、前方誤り訂正コード等の形式でもよい。
【0030】
図4は、本開示の一実施形態によるビデオエンコーダ400の機能ブロック図でもよい。
【0031】
エンコーダ400、ビデオソース401(エンコーダの一部ではない)からビデオサンプルを受信してもよく、当該ビデオソース401は、エンコーダ400によって符号化されるべきビデオ画像をキャプチャしてもよい。
【0032】
ビデオソース401は、デジタルビデオサンプルストリームの形式でエンコーダ303によって符号化されるべきソースビデオシーケンスを提供してもよく、当該デジタルビデオサンプルストリームは、いずれかの適切なビット深度(例えば、8ビット、10ビット、12ビット等)、いずれかの色空間(例えば、BT.601 Y CrCB、RGB等)及びいずれかの適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)でもよい。メディア提供システムにおいて、ビデオソース401は、事前に準備されたビデオを記憶する記憶デバイスでもよい。テレビ会議システムでは、ビデオソース401は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラでもよい。ビデオデータは、順に見たときに動きを伝える複数の個々のピクチャとして提供されてもよい。ピクチャ自体は、画素の空間配列として構成されてもよく、各画素は、使用中のサンプリング構造、色空間等に依存して、1つ以上のサンプルを含んでもよい。当業者は、画素とサンプルとの関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てる。
【0033】
一実施形態によれば、エンコーダ400は、リアルタイムで或いはアプリケーションによって要求されるいずれかの他の時間制約下で、ソースビデオシーケンスのピクチャを、符号化ビデオシーケンス410に符号化及び圧縮してもよい。適切な符号化速度を実現することは、コントローラ402の1つの機能である。コントローラは、以下に説明するように、他の機能ユニットを制御し、これらの機能ユニットに機能的に結合される。結合は、明確にするために図示されていない。コントローラによって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化技術のラムダ値等)、ピクチャサイズ、グループオブピクチャ(GOP)のレイアウト、最大動きベクトル探索範囲等を含んでもよい。当業者は、特定のシステム設計のために最適化されたビデオエンコーダ400に関連し得るようなコントローラ402の他の機能を容易に認識し得る。
【0034】
いくつかのビデオエンコーダは、当業者が「符号化ループ」として容易に認識するもので動作する。非常に簡略化した説明として、符号化ループは、エンコーダ402の符号化部分(ここでは「ソースコーダ」という)(符号化されるべき入力ピクチャ及び参照ピクチャに基づいてシンボルを生成することを担う)と、エンコーダ400に埋め込まれた(ローカル)デコーダ406とで構成されてもよい。デコーダ406は、(リモート)デコーダが生成するのと同様に(シンボルと符号化ビデオビットストリームとの間のいずれかの圧縮が、開示の対象物において検討されるビデオ圧縮技術において可逆であるように)、サンプルデータを生成するようにシンボルを復元する。その復元されたサンプルストリームは、参照ピクチャメモリ405に入力される。シンボルストリームの復号は、デコーダの位置(ローカル又はリモート)と独立したビット単位の正確な結果をもたらすので、参照ピクチャバッファの内容も、ローカルエンコーダとリモートエンコーダとの間でビット単位で正確である。言い換えると、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに「見る」のと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期(例えば、チャネルエラーの理由で同期が維持できない場合の結果として生じるドリフトを含む)のこの基本原理は、当業者に周知である。
【0035】
「ローカル」デコーダ406の動作は、「リモート」デコーダ300と同じでもよく、これは、
図3に関連して上記において既に詳細に説明した。しかし、
図4を簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ408及びパーサ304による符号化ビデオシーケンスへのシンボルの符号化/復号が可逆になり得るので、チャネル301、受信機302、バッファメモリ303及びパーサ304を含むデコーダ300のエントロピー復号部分は、ローカルデコーダ406に完全には実装されなくてもよい。
【0036】
この時点で行うことができる考察は、デコーダ内に存在する解析/エントロピー復号を除く如何なるデコーダ技術も、必然的に対応するエンコーダ内に実質的に同一の機能形式で存在する必要があることである。エンコーダ技術の説明は、包括的に記載されるデコーダ技術の逆であるので、省略できる。特定の領域においてのみ、より詳細な説明が必要であり、以下に提供される。
【0037】
その動作の一部として、ソースコーダ403は、動き補償予測符号化を実行してもよく、当該動き補償予測符号化は、「参照フレーム」として指定されたビデオシーケンスからの1つ以上の前に符号化されたフレームを参照して入力フレームを予測的に符号化する。このように、符号化エンジン407は、入力フレームの画素ブロックと、入力フレームに対する予測参照として選択され得る参照フレームの画素ブロックとの間の差を符号化する。
【0038】
ローカルビデオデコーダ406は、ソースコーダ403によって生成されたシンボルに基づいて、参照フレームとして指定され得るフレームの符号化ビデオデータを復号してもよい。符号化エンジン407の動作は、有利には、不可逆処理でもよい。符号化ビデオデータがビデオデコーダ(
図4に図示せず)で復号され得る場合、復元されたビデオシーケンスは、典型的には、いくつかのエラーを伴うソースビデオシーケンスのレプリカになり得る。ローカルビデオデコーダ406は、参照フレームに対してビデオデコーダによって実行され得る復号処理を複製し、復元された参照フレームを参照ピクチャキャッシュ405に記憶させてもよい。このように、エンコーダ400は、遠端のビデオデコーダによって取得される(送信エラーのない)復元された参照フレームとして、共通の内容を有する復元された参照フレームのコピーをローカルに記憶してもよい。
【0039】
予測器404は、符号化エンジン407のための予測探索を実行してもよい。すなわち、符号化されるべき新たなフレームについて、予測器404は、(候補参照画素ブロックとしての)サンプルデータ又は特定のメタデータ(参照ピクチャ動きベクトル、ブロック形状等)を求めて参照ピクチャメモリ405を検索してもよい。これらは、新たなピクチャについての適切な予測参照として機能してもよい。予測器404は、適切な予測参照を検出するために、サンプルブロック毎画素ブロック毎(sample block-by-pixel block)に動作してもよい。場合によっては、予測器404によって取得された検索結果によって決定された入力ピクチャは、参照ピクチャメモリ405に記憶された複数の参照ピクチャから引き出された予測参照を有してもよい。
【0040】
コントローラ402は、例えば、ビデオデータを符号化するために使用されるパラメータ及びサブグループパラメータの設定を含む、ビデオコーダ403の符号化動作を管理してもよい。
【0041】
全ての上記の機能ユニットの出力は、エントロピーコーダ408におけるエントロピー符号化を受けてもよい。エントロピーコーダは、例えば、ハフマン符号化、可変長符号化、算術符号化等のような当業者に既知の技術に従って、シンボルを可逆圧縮することによって、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスに変換する。
【0042】
送信機409は、エントロピーコーダ408によって生成された符号化ビデオシーケンスをバッファして、通信チャネル411を介した送信の準備をしてもよく、当該通信チャネル411は、符号化ビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクでもよい。送信機409は、ビデオコーダ403からの符号化ビデオデータを、送信されるべき他のデータ(例えば、符号化オーディオデータ及び/又は補助データストリーム(図示せず))とマージしてもよい。
【0043】
コントローラ402は、エンコーダ400の動作を管理してもよい。符号化中に、コントローラ405は、各符号化ピクチャに、特定の符号化ピクチャタイプを割り当ててもよい。当該符号化ピクチャタイプは、各ピクチャに適用され得る符号化技術に影響を与えてもよい。例えば、ピクチャは、しばしば、以下のフレームタイプのうち1つとして割り当てられてもよい。
【0044】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずに、符号化及び復号され得るものでもよい。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのこれらの変形例と、それぞれの用途及び特徴を認識する。
【0045】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用して符号化及び復号され得るものでもよい。
【0046】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトル及び参照インデックスを使用して、イントラ予測又はインター予測を使用して符号化及び復号され得るものでもよい。同様に、複数の予測ピクチャは、単一のブロックの復元のために、2つより多くの参照ピクチャ及び関連するメタデータを使用してもよい。
【0047】
一般的に、ソースピクチャは、空間的に複数のサンプルブロック(例えば、それぞれ4×4、8×8、4×8又は16×16のサンプルのブロック)に細分され、ブロック毎に符号化されてもよい。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当てによって決定される通り、他の(既に符号化された)ブロックを参照して予測的に符号化されてもよい。例えば、Iピクチャのブロックは、非予測的に符号化されてもよく、或いは、同じピクチャの既に符号化されたブロックを参照して予測的に符号化されてもよい(空間予測又はイントラ予測)。Pピクチャの画素ブロックは、1つ前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して非予測的に符号化されてもよい。Bピクチャのブロックは、1つ又は2つ前に符号化された参照ピクチャを参照して、空間予測又は時間予測を介して非予測的に符号化されてもよい。
【0048】
ビデオコーダ400は、ITU-T Rec. H.265のような所定のビデオ符号化技術又は標準に従って符号化動作を実行してもよい。その動作において、ビデオコーダ400は、入力ビデオシーケンスにおける時間的及び空間的冗長性を利用する予測符号化動作を含む様々な圧縮動作を実行してもよい。したがって、符号化ビデオデータは、使用されているビデオ符号化技術又は標準によって指定されたシンタックスに適合してもよい。
【0049】
一実施形態では、送信機409は、符号化ビデオと共に更なるデータを送信してもよい。ソースコーダ403は、符号化ビデオシーケンスの一部としてこのようなデータを含んでもよい。更なるデータは、時間/空間/SNRエンハンスメント層、冗長ピクチャ及びスライス、補足エンハンスメント情報(SEI, Supplementary Enhancement Information)メッセージ、ビジュアルユーザビリティ情報(VUI, Visual Usability Information)パラメータセットフラグメント等のような他の形式の冗長データを含んでもよい。
【0050】
図5は、HEVC及びJEMで使用されるイントラ予測モードを示す。ナチュラルビデオで提示される任意のエッジ方向をキャプチャするために、方向性イントラモードの数は、HEVCで使用される33から65に拡張される。HEVCに加えてJEMの更なる方向性モードは、
図1(b)において点線の矢印で示されており、プラナー(planar)モード及びDCモードは同じままである。これらのより高密度の方向性イントラ予測モードは、全てのブロックサイズ、及びルマとクロマとの双方のイントラ予測に適用される。
図5に示すように、点線の矢印で特定される方向性イントラ予測モードは、奇数のイントラ予測モードインデックスに関連付けられており、奇数イントラ予測モードと呼ばれる。実線の矢印で特定される方向性イントラ予測モードは、偶数のイントラ予測モードインデックスに関連付けられており、偶数イントラ予測モードと呼ばれる。この文書では、
図5における実線又は点線の矢印で示される方向性イントラ予測モードはまた、角度モードとも呼ばれる。
【0051】
JEMにおいて、合計で67個のイントラ予測モードがルマイントラ予測に使用される。イントラモードを符号化するために、サイズ6の最確モード(MPM, most probable mode)リストが、隣接ブロックのイントラモードに基づいて構築される。イントラモードがMPMリストからのものでない場合、イントラモードが選択モードに属するか否かを示すフラグが伝達される。JEM-3.0において、16個の選択モードが存在し、4つおきの角度モードとして均一に選択される。JVET-D0114及びJVET-G0060において、均一に選択されたモードを置き換えるために、16個の二次MPMが導出される。
【0052】
図6は、イントラ方向性モードに利用されるN個の参照層(reference tier)を示す。ブロックユニット611、セグメントA601、セグメントB602、セグメントC603、セグメントD604、セグメントE605、セグメントF606、第1の参照層610、第2の参照層609、第3の参照層608及び第4の参照層607が存在する。
【0053】
HEVCとJEMとの双方、及びH.264/AVCのようないくつかの他の標準において、カレントブロックを予測するために使用される参照サンプルは、最も近い参照ライン(行又は列)に制限されている。複数参照ラインのイントラ予測の方法では、候補参照ライン(行又は列)の数が、イントラ方向性モードについて1つ(すなわち、最も近い)からN個に増加し、Nは1以上の整数である。
図2は、複数ラインのイントラ方向性予測方法の概念を示すために、4×4予測ユニット(PU, prediction unit)を例として取り上げる。イントラ方向性モードは、予測子を生成するために、N個の参照層のうちの1つを任意に選択してもよい。言い換えると、予測子p(x,y)は、参照サンプルS1、S2、…及びSNのうち1つから生成される。どの参照層がイントラ方向性モードに選択されたかを示すために、フラグが伝達される。Nが1に設定される場合、イントラ方向性予測方法はJEM2.0における従来の方法と同じになる。
図6において、参照ライン610、609、608及び607は、左上の参照サンプルと共に6つのセグメント601、602、603、604、605及び606から構成される。この文書では、参照層はまた参照ラインとも呼ばれる。カレントブロックユニット内の左上画素の座標は(0,0)であり、1番目の参照ラインの左上画素は(-1,-1)である。
【0054】
JEMでは、ルマ成分について、イントラ予測サンプルの生成に使用される隣接サンプルは、生成プロセスの前にフィルタリングされる。フィルタリングは、所与のイントラ予測モード及び変換ブロックサイズによって制御される。イントラ予測モードがDCである場合、又は変換ブロックサイズが4×4に等しい場合、隣接サンプルはフィルタリングされない。所与のイントラ予測モードと垂直モード(又は水平モード)との間の距離が所定の閾値よりも大きい場合、フィルタリングプロセスが有効になる。隣接サンプルのフィルタリングには、[1,2,1]フィルタ及び双線形フィルタが使用される。
【0055】
位置依存イントラ予測組み合せ(PDPC, position dependent intra prediction combination)方法は、フィルタリングされていない境界参照サンプルと、フィルタリングさた境界参照サンプルによるHEVCスタイルのイントラ予測との組み合せを呼び出すイントラ予測方法である。(x,y)に位置する各予測サンプルpred[x][y]は以下のように計算される。
pred[x][y]=(wL*R
-1,y+wT*R
x,-1+wTL*R
-1,-1+(64-wL-wT-wTL)*pred[x][y]+32)>>6 (式2-1)
ここで、R
x,-1、R
-1,yは、それぞれ現在のサンプル(x,y)の上及び左に位置するフィルタリングされていない参照サンプルを表し、R
-1,-1は、カレントブロックの左上角に位置するフィルタリングされていない参照サンプルを表す。重み付けは以下のように計算される。
wT=32>>(y<<1)>>shift) (式2-2)
wL=32>>((x<<1)>>shift) (式2-3)
wTL=-(wL>>4)-(wT>>4) (式2-4)
shift=(log2(width)+log2(height)+2)>>2 (式2-5)
図7は、1つの4×4ブロック内の位置(0,0)及び(1,0)についてDCモードのPDPC重み(wL,wT,wTL)を示す
図700を示す。PDPCがDC、プラナー、水平及び垂直のイントラモードに適用される場合、HEVC DCモード境界フィルタ又は水平/垂直モードエッジフィルタのような更なる境界フィルタは必要ない。
図7は、右上対角モードに適用されるPDPCの参照サンプルR
x,-1、R
-1,y及びR
-1,-1の定義を示している。予測サンプルpred(x’,y’)は、予測ブロック内の(x’,y’)に位置する。参照サンプルR
x,-1の座標xはx=x’+y’+1で与えられ、参照サンプルR
-1,yの座標yは同様にy=x’+y’+1で与えられる。
【0056】
図8は、ローカル照明補償(LIC, Local Illumination Compensation)の
図800を示しており、スケーリング係数a及びオフセットbを使用した、照明変化の線形モデルに基づいている。また、インターモード(inter-mode)符号化された符号化ユニット(CU, coding unit)毎に適応的に有効又は無効になる。
【0057】
LICがCUに適用される場合、カレントCUの隣接サンプル及びこれらの対応する参照サンプルを使用することによってパラメータa及びbを導出するために、最小二乗誤差法が使用される。より具体的には、
図8に示すように、CUのサブサンプリング(2:1サブサンプリング)された隣接サンプルと、参照ピクチャ内の対応するサンプル(カレントCU又はサブCUの動き情報によって識別される)とが使用される。ICパラメータは、予測方向毎に別々に導出及び適用される。
【0058】
CUがマージモードで符号化される場合、LICフラグは、マージモードでの動き情報のコピーと同様の方法で、隣接ブロックからコピーされる。そうでない場合、LICが適用されるか否かを示すために、CUについてLICフラグが伝達される。
【0059】
図9Aは、HEVCで使用されるイントラ予測モード900を示す。HEVCには、合計で35個のイントラ予測モードが存在し、そのうちモード10は水平モードであり、モード26は垂直モードであり、モード2、モード18及びモード34は対角モードである。イントラ予測モードは、3つの最確モード(MPM, most probable mode)及び残りの32個のモードによって伝達される。
【0060】
図9Bは、VVCの実施形態において、合計で87個のイントラ予測モードが存在し、モード18が水平モードであり、モード50が垂直モードであり、モード2、モード34及びモード66が対角モードであることを示す。モード-1~-10及びモード67~76は、広角イントラ予測(WAIP, Wide-Angle Intra Prediction)モードと呼ばれる。
【0061】
位置(x,y)に位置する予測サンプルpred(x,y)は、PDPC式に従ってイントラ予測モード(DC、プラナー、角度)及び参照サンプルの線形結合を使用して予測される。
pred(x,y)=(wL×R-1,y+wT×Rx,-1-wTL×R-1,-1+(64-wL-wT+wTL)×pred(x,y)+32)>>6
ここで、Rx,-1、R-1,yは、それぞれ現在のサンプル(x,y)の上及び左に位置する参照サンプルを表し、R-1,-1は、カレントブロックの左上角に位置する参照サンプルを表す。
【0062】
DCモードについては、重みは、寸法width及びheightを有するブロックについて以下のように計算される。
wT=32>>((y<<1)>>nScale)、wL=32>>((x<<1)>>nScale)、wTL=(wL>>4)+(wT>>4)
ここで、nScale=(log2(width)-2+log2(height)-2>2)>>2であり、wTは、同じ水平座標を有する上参照ラインに位置する参照サンプルの重み係数を示し、wLは、同じ垂直座標を有する左参照ラインに位置する参照サンプルの重み係数を示し、wTLは、カレントブロックの左上参照サンプルの重み係数を示す。nScaleは、軸に沿って重み係数がどれだけ速く減少するかを指定し(wLが左から右に減少するか、或いは、wTが上から下に減少する)、すなわち、重み係数の減少率であり、これは、現在の設計ではx軸(左から右)及びy軸(上から下)に沿って同じである。また、32は、隣接サンプルの初期重み係数を示し、初期重み係数はまた、カレントCB内の左上のサンプルに割り当てられた上(左又は左上)の重みでもあり、PDPCプロセスにおける隣接サンプルの重み係数は、この初期重み係数以下とするべきである。
【0063】
プラナーモードについては、wTL=0であり、水平モードについては、wTL=wTであり、垂直モードについては、wTL=wLである。PDPCの重みは、加算及びシフトのみで計算できる。pred(x,y)の値は、式(1)を使用して単一のステップで計算できる。
【0064】
ここで、提案される方法は、別々に使用されてもよく、或いは、任意の順序で組み合わされてもよい。さらに、方法(又は実施形態)、エンコーダ及びデコーダのそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に記憶されたプログラムを実行する。実施形態によれば、ブロックという用語は、予測ブロック、符号化ブロック又は符号化ユニット、すなわち、CUとして解釈されてもよい。
【0065】
図10は、以下に更に説明するように、ネットワーク構造1003及びいくつかの畳み込みニューラルネットワーク1003の計算グラフ又は他の表現のいずれか1つ以上を解析することを含んでもよい解析ステップS1001と、出力を提供するステップS1002とが存在する例示的な
図1000を示す。
【0066】
例えば、ニューラルネットワークベースの符号化の状況において、例えばVVC及びAVS3において、ネットワーク構造1003は、様々なニューラルネットワークベースの方法、特に、ニューラルネットワークベースのフィルタを含んでもよい。ネットワーク構造1003は、いくつかの畳み込み層を含むニューラルネットワークベースのフィルタを表しており、一例として、カーネルサイズは3*3*Mである。これは、各チャネルについて、畳み込みカーネルサイズが3*3であり、出力層の数がMであることを意味する。ネットワーク構造1003と同様に、畳み込み層と非線形活性化関数(例えば、ReLU)とを組み合わせることにより、全体のプロセスが復元のための非線形フィルタとして見ることが可能になり、フィルタリングプロセスの後に、品質が改善できる。実施形態によれば、図示のネットワーク構造1002は、簡略化されたブロック図でもよく、ニューラルネットワークベースの符号化方法の複雑さを考慮すると、通常のコーデックは、フィルタリングプロセスを実行できない可能性があり、したがって、本明細書の例示的な実施形態に従って現在のCVSがニューラルネットワークベースのツールを使用するか否かを示すために、SEI内のいくつかの識別子が追加されてもよい。その他に、ネットワークの詳細も示されてもよい。したがって、デコーダがニューラルネットワークベースのフィルタを処理できない場合、ニューラルネットワークに関連する情報は破棄されてもよく、処理は別法でスキップされてもよい。
【0067】
以下に更に説明するように、例示的な実施形態は、ニューラルネットワークモデル情報の伝達に関して少なくとも2つのメカニズムを提供する。第1のものは、VSEIで定義された特定のシンタックスエレメントで訓練された対応するパラメータと、1つ以上のトポロジ情報とを明示的に伝達するものであり、他のものは、対応するトポロジ情報及びネットワークパラメータがどこに存在するかを示す外部リンク情報を提供するものである。
【0068】
ネットワークトポロジ及びパラメータの伝達のために、ネットワークの表現のために開発された既存のフォーマットを参照することが、例示的な実施形態に従って使用されてもよく、その例は、Khronosによって開発された一般化されたニューラルネットワーク交換フォーマットであるニューラルネットワーク交換フォーマット(NNEF, Neural Network Exchange Format)を含んでもよい。他の可能な例は、ニューラルネットワークの符号化表現のためのフォーマットであるオープンニューラルネットワーク交換(ONNX, Open Neural Network Exchange)及びMPEG NNRを含むもののような実施形態を含む。
【0069】
理想的には、如何なるニューラルネットワークモデルもNNEF又は他のフォーマットにエクスポートでき、ネットワークアクセラレータ及びライブラリはネットワークフレームワークとの互換性の問題なく、フォーマットのデータを利用できる。実用的な方法として、実施形態は、URI情報を有する外部ファイル又はビットストリームを直接参照してもよい。しかし、ネットワークモデルの一般的表現は圧縮ビデオフォーマットに使用されるには大きすぎる可能性があるので、VVC又はHEVC拡張のためのビデオ符号化に特有のネットワークを、新規のニューラルネットワークベースのビデオ符号化ツールで表現するための軽量のシンタックス設計も望まれる。ビデオ圧縮のために主に使用されるネットワークモデルは、畳み込みニューラルネットワーク(CNN, convolutional neural network)に基づいているので、SEIメッセージ内でCNNのコンパクトな表現を有することは、合計ビットレートを低減し、また、例示的な実施形態に従ってネットワークモデルデータへの容易なアクセスを可能にするために有用であると想定される。
【0070】
本明細書の実施形態は、計算グラフによって表されることができるニューラルネットワークモデルを表してもよく、これは、図示の畳み込みニューラルネットワーク1003のような複数のノードを有する有向グラフであり、ノードは、テンソルのようなオペレーションノード(operation node)及びデータから構成されてもよい。例示的な実施形態によれば、様々なネットワークトポロジが設計されて使用されるが、ビデオ処理のためのポスト/インループフィルタリングのために、CNNベースの簡単なモデルが採用されてもよい。このような場合、CNNのような簡単な多層フィードフォワードネットワークは、入力データから始まる線形グラフによって表されることができ、層内の各オペレーションノードは、中間で処理されたデータを生成する。最後に、出力データは複数の層を通じて生成されてもよく、その表現がS1002で出力されてもよい。
【0071】
例えば、畳み込みニューラルネットワーク1003は、入力テンソルデータがオペレーションノードに供給されると、オペレーションノードが予め訓練された定数及び/又は変数で入力データを処理し、中間テンソルデータを出力するような、CNNの線形計算グラフの例で示される。オペレーションノードが実行されると、実際のデータはオペレーションノードによって利用される。通常、CNNでは、訓練された定数及び/又は更新された変数との入力データの加重和が各オペレーションノードの出力である。
【0072】
このようなネットワークグラフの仕様に関して、特定のオペレーションノードが単一のステップとして指定されると、同じオペレーションノードが繰り返し使用できる。したがって、本明細書における実施形態は、有利には、S1002においてSEIメッセージ内のシンタックスエレメントによってネットワークトポロジの記述を表す。より複雑なモデル設計が必要とされ得る場合、S1002においてNNEF又はONNXのような外部フォーマットが使用されてもよい。
【0073】
ネットワークパラメータを配信するために、通常では、訓練されたネットワークパラメータのビットサイズは、SEIメッセージに含まれるには大きすぎる。データサイズを低減するために、MPEG-NNRフォーマットがパラメータを圧縮するために使用でき、S1002において複数のデータチャンクに分割できる。圧縮されたパラメータの各チャンクは、SEIメッセージ又は別個のデータファイルに含まれるようにすることができ、これは、潜在的に同じビットストリームで配信されるか、或いは、リモートサーバに記憶される。例示的な実施形態によれば、復号されると、ニューラルネットワークの表現のためのSEIメッセージ内の全ての連結されたチャンクデータは、ニューラルネットワークライブラリ又はデコーダによって繋ぎ合わされて利用されてもよい。
【0074】
図10に関するこのような実施形態について、少なくとも
図11~
図18を用いて更に以下に説明する。
【0075】
例えば、本明細書の実施形態は、ポストフィルタリングニューラルネットワーク(NN, neural network)情報の搬送のためのSEIメッセージの生成及び使用を含む。
図11は、NNベースのポストフィルタリングメッセージの態様及びそのシンタックスに関する例示的なフローチャート1100を表す。
【0076】
このようなシンタックスは、以下の表1に示されるものでもよい。
【0077】
【表1-1】
【表1-2】
【表1-3】
【表1-4】
0に等しいnn_partition_flagは、ネットワークトポロジ及び訓練されたパラメータを表す全てのデータがSEIメッセージに含まれることを指定し、1に等しいnn_partition_flagは、ネットワークトポロジ及び訓練されたパラメータを表すデータが複数のSEIメッセージに分割されることを指定する。
【0078】
0に等しいnn_output_pic_format_present_flagは、出力ピクチャフォーマットを示すシンタックスエレメントがSEIメッセージに存在せず、ニューラルネットワーク推論プロセスの出力ピクチャフォーマットがデコーダの出力ピクチャフォーマットと同じであることを指定し、1に等しいnn_output_pic_format_present_flagは、出力ピクチャフォーマットを示すシンタックスエレメントがSEIメッセージに存在することを指定する。
【0079】
nn_postfilter_type_idcは、以下の表2(NNポストフィルタタイプ)で指定されるように、SEIメッセージで表されるニューラルネットワークのポストフィルタタイプを指定する。
【0080】
【表2】
num_nn_input_ref_picは、入力参照ピクチャの数を指定する。0に等しいnum_nn_input_ref_picは、デコーダの現在の出力ピクチャがニューラルネットワークの唯一の入力データであることを指定し、0よりも大きいnum_nn_input_ref_picは、ニューラルネットワークの入力データとして使用される参照ピクチャの数がnum_nn_input_ref_pic-1であることを指定する。
【0081】
num_partitioned_nn_sei_messagesは、対応するパラメータで全体のニューラルネットワークトポロジを表すための、ニューラルネットワークベースのポストフィルタリングSEIメッセージの数を指定し、存在しない場合、num_partitioned_nn_sei_messagesの値は1に等しいと推定される。
【0082】
nn_sei_message_idxは、SEIメッセージで搬送される部分的なニューラルネットワークデータのインデックスを指定し、存在しない場合、nn_sei_message_idxの値は0に等しいと推定される。
【0083】
上記のシンタックスに鑑みて、フローチャート1100は、S1101におけるポストフィルタの初期化及びデータの生成又は取得S1102が存在してもよく、その結果、S1103において、network_topology_info_external_present_flagのような情報フラグが存在するか否かが決定されてもよい。存在する場合、S1104におけるexternal_nn_topology_info_format_idc、S1105におけるnum_bytes_external_network_topology_uri_info、S1106におけるexternal_nn_topology_uri_info、又はS1107におけるnetwork_topology_info(input)を受信するためのチェックを含むデータが取得されてもよい。
【0084】
すなわち、例示的な実施形態によれば、0に等しいnn_topology_info_external_present_flagは、ニューラルネットワークトポロジ表現のデータがSEIメッセージに含まれることを指定し、1に等しいnn_topology_info_external_present_flagは、ニューラルネットワークトポロジ表現のデータが外部に存在してもよく、SEIメッセージが外部リンク情報のみを含むことを指定する。
【0085】
S1104のようなexternal_nn_topology_info_format_idcは、以下の表3(外部NNトポロジ情報フォーマット識別子)で指定されるように、ニューラルネットワークトポロジ表現の外部記憶フォーマットを指定してもよい。
【0086】
【表3】
S1105のようなnum_bytes_external_network_topology_uri_infoは、シンタックスエレメントexternal_network_topology_uri_infoのバイト数を指定する。
【0087】
S1106のようなexternal_nn_topology_uri_infoは、外部ニューラルネットワークトポロジ情報のURI情報を指定する。シンタックスエレメントの長さは、Ceil(Log2(num_bytes_external_nn_topology_uri_info))バイトでもよい。
【0088】
S1107のようなnetwork_topology_info(input)は、以下の表4によるプロセスを含んでもよい。
【0089】
【表4-1】
【表4-2】
例えば、
図14の例示的なフローチャート1400を参照すると、S1401において、S1007と同様に、network_topology_info(input)に従って処理されるべきであるという決定が存在し、その後、S1402におけるnn_topology_storage_format_idc、S1403におけるnn_topology_compression_format_idc、S1404におけるnum_bytes_topology_dataの生成又は取得、及びS1405におけるnn_top_format_idc>0が存在するか否かについての決定の1つ以上に進んでもよい。S1405においてyesと決定された場合、S1406においてnn_topology_data_byte[I]が取得される。
【0090】
S1402のようなnn_topology_storage_format_idcは、以下の表5(NNトポロジ記憶フォーマット識別子)で指定されるように、ニューラルネットワークトポロジ表現の記憶フォーマットを指定する。
【0091】
【表5】
S1403のようなnn_topology_compression_format_idcは、以下の表6(NNトポロジ圧縮フォーマット識別子)で指定されるように、ニューラルネットワークトポロジの圧縮フォーマットを指定する。
【0092】
【表6】
S1404のようなnum_bytes_topology_dataは、このSEIメッセージに含まれるニューラルネットワークトポロジのペイロードのバイト数を指定する。
【0093】
S1406のようなnn_topology_data_byte[I]は、ニューラルネットワークトポロジのペイロードの第iのバイトを指定する。
【0094】
S1408のようなnum_variablesは、このSEIメッセージで指定されたニューラルネットワーク内のオペレーションノードの実行に使用され得る変数の数を指定する。
【0095】
S1409のようなnum_node_typesは、このSEIメッセージで指定されたニューラルネットワーク内のオペレーティングノードの実行に使用され得るオペレーションノードタイプの数を指定する。
【0096】
S1410のようなnum_operation_node_executionsは、このSEIメッセージで指定されたニューラルネットワークによる入力変数でのオペレーションノードの実行回数を指定する。
【0097】
図11のフローチャート1110に戻り、S1108において、network_parameter_info_external_present_flagが存在するか否かが決定され、存在する場合、S1109におけるexternal_network_parameter_info_format_idc、S1110におけるnum_bytes_external_network_parameter_uri_info及びS111におけるexternal_nn_parameter_uri_infoが生成又は取得されてもよく、そうでない場合、S1112において、network_parameter_info(input)が取得又は生成されてもよい。
【0098】
0に等しいS1108のようなnetwork_parameter_info_external_present_flagは、ニューラルネットワークパラメータのデータがSEIメッセージに含まれることを指定し、1に等しいこのようなnetwork_parameter_info_external_present_flagは、ニューラルネットワークパラメータのデータが外部に存在してもよく、SEIメッセージが外部リンク情報のみを含むことを指定する。
【0099】
S1109におけるexternal_network_parameter_info_format_idcは、以下の表7(外部ニューラルネットワークパラメータ記憶フォーマット識別子)で指定されるような、ニューラルネットワークパラメータの外部記憶フォーマットを指定する。
【0100】
【表7】
S1110におけるnum_bytes_external_network_parameter_uri_infoは、シンタックスエレメントexternal_network_parameter_uri_infoのバイト数を指定する。
【0101】
S1111におけるexternal_nn_parameter_uri_infoは、外部ニューラルネットワークパラメータのURI情報を指定する。シンタックスエレメントの長さはCeil(Log2(num_bytes_external_network_parameteruri_info))バイトである。
【0102】
S1112のようなnetwork_parameter_info(input)は、表8の以下のプロセスを表す。
【0103】
【表8】
図17におけるフローチャート1700と同様に、
図11における1112をも表すS1701のようなnetwork_parameter_info(input)の決定は、S1702におけるnn_parameter_type_idc、S1703におけるnn_parameter_storage_format_idc、S1704におけるnn_parameter_compression_format_idc、S1705におけるnn_bytes_parameter_data及びS1706におけるnn_parameter_data_byteを取得又は生成することを含む。
【0104】
S1702のようなnn_parameter_type_idcは、以下の表9(NNパラメータペイロードタイプ)で指定されるように、ニューラルネットワークパラメータのデータペイロードタイプを指定する。
【0105】
【表9】
S1703のようなnn_parameter_storage_format_idcは、以下の表10(NNパラメータ記憶フォーマット識別子)で指定されるように、ニューラルネットワークパラメータの記憶フォーマットを指定する。
【0106】
【表10】
S1704のようなnn_parameter_compression_format_idcは、以下の表11(NNトポロジ圧縮フォーマット識別子)で指定されるように、ニューラルネットワークパラメータの圧縮フォーマットを指定する。
【0107】
【表11】
S1705のようなnum_bytes_parameter_dataは、このSEIメッセージに含まれるニューラルネットワークパラメータのペイロードのバイト数を指定する。
【0108】
S1706のようなnn_parameter_data_byteは、ニューラルネットワークパラメータの
ペイロードの第iのバイトを指定する。
【0109】
図11に戻り、S1113において、プロセスは、
図12のフローチャート1200のS1201等に進んでもよく、ここで、network_input_pic_format_present_flagが存在するか否かが決定されてもよい。存在する場合、S1202におけるnn_input_chroma_format_idc、S1203におけるnn_input_bitdepth_minus8、1204におけるnn_input_pic_width、S1205におけるnn_input_pic_heightの生成又は取得、及びS1206におけるnn_patch_size_present_flagが存在するか否かに関する決定が決定されてもよい。存在する場合、S1207におけるnn_input_patch_width、S1208におけるnn_input_patch_height及びS1209におけるnn_boundary_padding_idcの取得又は生成が存在する。
【0110】
0に等しいS1201のようなnetwork_input_pic_format_present_flagは、入力ピクチャフォーマットを示すシンタックスエレメントがSEIメッセージに存在せず、ニューラルネットワーク推論プロセスの入力ピクチャフォーマットがデコーダの出力ピクチャフォーマットと同じであることを指定する。1に等しいnn_input_pic_format_present_flagは、入力ピクチャフォーマットを示すシンタックスエレメントがSEIメッセージに存在することを指定する。
【0111】
S1202におけるnn_input_chroma_format_idcは、以下の表12(クロマフォーマット識別子)に従ってルマサンプリングに対するクロマサンプリングを指定してもよい。
【0112】
【表12】
S1203のようなnn_input_bitdepth_minus8(又は8を加えた値)は、ニューラルネットワークの入力ピクチャ内のルマサンプル及びクロマサンプルのビット深度を指定する。
【0113】
S1204のようなnn_input_pic_widthは、入力ピクチャの幅を指定する。
【0114】
S1205のようなnn_input_pic_heightは、入力ピクチャの高さを指定する。
【0115】
0に等しいS1206のようなnn_patch_size_present_flagは、パッチサイズが入力ピクチャサイズと等しいことを指定する。1に等しいnn_patch_size_present_flagは、パッチサイズが明示的に伝達されることを指定する。
【0116】
S1207のようなnn_input_patch_widthは、ニューラルネットワーク推論プロセスのためのパッチの幅を指定する。
【0117】
S1208のようなnn_input_patch_heightは、ニューラルネットワーク推論プロセスのためのパッチの高さを指定する。
【0118】
S1209のようなnn_boundary_padding_idcは、以下の表13(境界パディング識別子)のように、パッチサイズが入力画像サイズと異なる場合にパッチの境界に適用されるパディング方法を指定する。
【0119】
【表13】
図11に戻り、S1113において、プロセスはまた、
図13のフローチャート1300において
図12のフローチャート1200と並列又は直列に進行してもよく、S1301において、num_network_input_ref_pic>0が存在するか否かが決定されてもよい。存在する場合、S1302におけるnum_fwd_ref_pics_as_inputの取得又は生成、S1303におけるNumFwdRefPics>0の指示が存在するか否かの決定、及びS1306におけるNumBwdRefPics>0の指示が存在するか否かの決定が存在してもよい。さらに、S1303において存在する場合、S1304におけるnearest_fwd_ref_pics_as_input及びS1305におけるpoc_dist_fwd_ref_pic[i]に関する決定が存在してもよい。さらに、S1303において存在する場合、S1307におけるnearest_bwd_ref_pics_as_input及びS1308におけるpoc_dist_bwd_ref_pic[i]に関する決定が存在してもよい。
【0120】
S1302のようなnum_fwd_ref_pics_as_inputは、ニューラルネットワークの入力データとして使用される順方向参照画像の数を指定し、例えば、(num_nn_input_ref_pic>0)である場合、(NumFwdRefPics=num_fwd_ref_pics_as_input)であり、そうでない場合、(NumFwdRefPics=0)である。
【0121】
S1304のようなnearest_fwd_ref_pics_as_inputは、カレントピクチャからの最小のピクチャオーダカウントを有する最も近い順方向参照ピクチャがニューラルネットワークの入力データとして使用されることを指定する。
【0122】
S1305のようなpoc_dist_fwd_ref_pic[i]は、ニューラルネットワークの入力データとして使用される第iの順方向参照ピクチャのピクチャオーダカウント値を指定する。第iの順方向参照ピクチャのピクチャオーダカウント値は、カレントピクチャのピクチャオーダカウント値からpoc_dist_fwd_ref_pic[i]を引いた値に等しい。
【0123】
S1307のようなnearest_bwd_ref_pics_as_inputは、ニューラルネットワークの入力データとして使用される逆方向参照ピクチャの数を指定し、(num_nn_input_ref_pic>0)である場合、(NumBwdRefPics=num_bwd_ref_pics_as_input)であり、そうでない場合、(NumBwdRefPics=0)である。
【0124】
S1308のようなpoc_dist_bwd_ref_pic[i]は、ニューラルネットワークの入力データとして使用される第iの逆方向参照ピクチャのピクチャオーダカウント値を指定する。第iの逆方向参照ピクチャのピクチャオーダカウント値は、カレントピクチャのピクチャオーダカウント値にpoc_dist_bwd_ref_pic[i]を加えた値に等しい。
【0125】
また、注記として、上記の表1のように、nearest_bwd_ref_pics_used_flagは、カレントピクチャからの最も小さいピクチャオーダカウントを有する最も近い逆方向参照ピクチャがニューラルネットワークの入力データとして使用されることを指定する。
【0126】
更なる動作は、
図15のフローチャート1500のように実装されてもよく、S1501においてdefine_operation_node(i)が存在し、そこで、S1502におけるnn_operation_class_idc[i]、S1503におけるnn_operation_function_idc[i]、S1504におけるnum_input_variables[i]及びS1505におけるnum_output_variables[i]を反復して定義する動作が存在する。
【0127】
S1502のようなoperation_class_idc[i]は、以下の表14(NNオペレーション関数)で指定されるように、第iのオペレーションノードのクラスを指定する。
【0128】
【表14】
S1503のようなnn_operation_function_idc[i]は、以下の表15(NNオペレーション関数、例示的な表15の7に等しいnn_operation_class_idc(活性化関数))で指定されるような、第iのオペレーションノードの関数を指定する。
【0129】
【表15】
S1504のようなnum_input_variables[i]は、第iのオペレーションノードの入力変数の数を指定する。
【0130】
S1505のようなnum_output_variables[i]は、第iのオペレーションノードの出力変数の数を指定する。
【0131】
図15に関するシンタックスは、以下の表16によって表されてもよい。
【0132】
【表16】
更なる動作は、
図16のフローチャート1600のように実装されてもよく、S1601においてoperation_node_execution(i)が存在し、そこで、S1602におけるnn_op_node_idx[i]、S1603におけるnn_input_variable_idx[i][j]及びS1604におけるnn_output_variable_idx[i][j]を反復して定義する動作が存在する。
【0133】
S1602のようなnn_op_node_idx[i]は、第iのオペレーションノードの実行のためのオペレーションノードのインデックスを指定する。この実行のために、第nn_op_node_idx[i]のオペレーションノードが使用される。
【0134】
S1603のようなnn_input_variable_idx[i][j]は、第iのオペレーションノードの実行の第jの入力変数の変数インデックスを指定する。
【0135】
S1604のようなnn_output_variable_idx[i][j]は、第iのオペレーションノードの実行の第jの出力変数の変数インデックスを指定する。
【0136】
図16に関するシンタックスは、以下の表17によって表されてもよい。
【0137】
【表17】
更なるプロセスは、
図15のように、表18の以下のシンタックスに従って、変数(i)を反復して定義することを含んでもよい。
【0138】
【表18】
表16を参照すると、nn_variable_class_idc[i]は、以下の表19(NN変数クラス)で指定されるように、ニューラルネットワーク内の第iの変数の変数クラスを指定する。
【0139】
【表19】
例示的な実施形態によれば、nn_variable_class_idcが1に等しい場合、変数はニューラルネットワークの入力データであり、nn_variable_class_idcが2に等しい場合、変数はニューラルネットワークの出力データであり、nn_variable_class_idcが3に等しい場合、変数はオペレーションノードの間の中間データであり、nn_variable_class_idcが4に等しい場合、変数は予め訓練された定数データ又は予め定義された定数データであると決定されてもよい。
【0140】
表16を更に参照すると、nn_variable_type_idc[I]は、以下の表20(NN変数タイプ)で指定されるように、ニューラルネットワーク内の第iの変数の変数タイプを指定する。
【0141】
【表20】
例示的な実施形態によれば、表16のnn_variable_dimensions[I]は、第iの変数の次元の数を指定し、さらに、Nn_variable_dimension_size[I][j]は、第iの変数の第jの次元のサイズを指定する。例示的な実施形態による注記として、第iの変数が、色成分の数、幅及び高さがそれぞれ3、1920及び1080である入力データである場合、それぞれ、nn_variable_class_idc[i]は1に等しく、nn_variable_dimensions[I]は3に等しく、nn_variable_dimension_size[I][0]は3に等しく、nn_variable_dimension_size[I][1]は1920に等しく、nn_variable_dimension_size[I][2]は1080に等しい。
【0142】
上記の技術は、コンピュータ読み取り可能命令を使用してコンピュータソフトウェアとして実装され、1つ以上のコンピュータ読み取り可能媒体に物理的に記憶されてもよく、或いは、特に構成された1つ以上のハードウェアプロセッサにより実装されてもよい。例えば、
図18は、開示の対象物の特定の実施形態を実装するのに適したコンピュータシステム1800を示す。
【0143】
コンピュータソフトウェアは、いずれかの適切な機械コード又はコンピュータ言語を使用して符号化されてもよく、当該機械コード又はコンピュータ言語は、命令を含むコードを生成するために、アセンブリ、コンパイル、リンク又は類似のメカニズムを受けてもよく、当該命令は、コンピュータ中央処理装置(CPU, central processing unit)、グラフィックス処理ユニット(GPU, Graphics Processing Unit)等によって、直接的に或いはインタープリタ、マイクロコード実行等を通じて実行されてもよい。
【0144】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットのデバイス等を含む様々なタイプのコンピュータ又はその構成要素上で実行されてもよい。
【0145】
コンピュータシステム1800について
図18に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能に関する如何なる限定も示唆することを意図するものではない。また、構成要素の構成も、コンピュータシステム1800の例示的な実施形態に示される構成要素のいずれか1つ又は組み合わせに関する如何なる依存性又は要件も有するものとして解釈されるべきではない。
【0146】
コンピュータシステム1800は、特定のヒューマンインタフェース入力デバイスを含んでもよい。このようなヒューマンインタフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動き等)、オーディオ入力(音声、拍手等)、視覚入力(ジェスチャ等)、嗅覚入力(図示せず)を通じて、1人以上の人間のユーザによる入力に応答してもよい。また、ヒューマンインタフェースデバイスは、オーディオ(例えば、会話、音楽、周辺音)、画像(スキャンされた画像、静止画カメラから取得された写真画像等)、ビデオ(2次元ビデオ、立体ピクチャを含む3次元ビデオ等)のような、人間による意識的入力に必ずしも直接関連しない特定のメディアをキャプチャするために使用されてもよい。
【0147】
入力ヒューマンインタフェースデバイスは、キーボード1801、マウス1802、トラックパッド1803、タッチ画面1810、ジョイスティック1805、マイクロフォン1806、スキャナ1808、カメラ1807のうち1つ以上を含んでもよい。
【0148】
また、コンピュータシステム1800は、特定のヒューマンインタフェース出力デバイスを含んでもよい。このようなヒューマンインタフェース出力デバイスは、例えば、触覚出力、音、光及び嗅覚/味覚を通じて、1人以上の人間のユーザの感覚を刺激してもよい。このようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えば、タッチ画面1810又はジョイスティック1805による触覚フィードバック、ただし、入力デバイスとして機能しない触覚フィードバックデバイスが存在してもよい)と、オーディオ出力デバイス(スピーカ1809、ヘッドフォン(図示せず)等)と、視覚出力デバイス(それぞれがタッチ画面入力機能を有しても有さなくてもよく、それぞれが触覚フィードバック機能を有しても有さなくてもよく、いくつかが2次元視覚出力又は立体出力のような手段を通じた3次元以上の出力を出力可能でもよいCRT画面、LCD画面、プラズマ画面、OLED画面を含む画面1810、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず))と、プリンタ(図示せず)とを含んでもよい。
【0149】
また、コンピュータシステム1800は、CD/DVD1811又は同様の媒体を有するCD/DVD ROM/RW1820を含む光媒体のような人間がアクセス可能な記憶デバイス及び関連する媒体、サムドライブ1822、取り外し可能ハードドライブ又はソリッドステートドライブ1823、テープ及びフロッピーディスク(図示せず)のようなレガシー磁気媒体、セキュリティドングル(図示せず)のような特殊なROM/ASIC/PLDに基づくデバイス等を含んでもよい。
【0150】
また、当業者は、ここに開示の対象物に関連して使用される用語「コンピュータ読み取り可能媒体」が伝送媒体、搬送波又は他の非一時的な信号を含まないことを理解すべきである。
【0151】
また、コンピュータシステム1800は、1つ以上の通信ネットワーク1898へのインタフェース1899を含んでもよい。ネットワーク1898は、例えば、無線、有線、光でもよい。ネットワーク1898は、ローカル、広域、メトロポリタン、車両及び産業、リアルタイム、遅延耐性等でもよい。ネットワーク1898の例は、イーサネット、無線LAN、セルラネットワーク(GSM、3G、4G、5G、LTE等を含む)、TV有線又は無線広域デジタルネットワーク(ケーブルTV、衛星TV、及び地上放送TVを含む)、車両及び産業(CANBusを含む)等を含む。特定のネットワーク1898は、一般的に、特定の汎用データポート又は周辺バス(1850及び1851)に取り付けられる外部ネットワークインタフェースアダプタ(例えば、コンピュータシステム1800のUSBポート等)を必要とし、他のネットワークインタフェースアダプタは、一般的に、以下に説明するシステムバス(例えば、PCコンピュータシステムへのイーサネットインタフェース又はスマートフォンコンピュータシステムへのセルラネットワーク)に取り付けられることによって、コンピュータシステム1800のコアに統合される。これらのネットワーク1898のいずれかを使用して、コンピュータシステム1800は、他のエンティティと通信することができる。このような通信は、一方向の受信のみ(例えば、放送TV)、一方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)でもよく、或いは、例えば、ローカル又は広域デジタルネットワークを使用する他のコンピュータシステムへの双方向でもよい。特定のプロトコル及びプロトコルスタックは、上記のようなネットワーク及びネットワークインタフェースのそれぞれにおいて使用されてもよい。
【0152】
上記のヒューマンインタフェースデバイス、人間がアクセス可能な記憶デバイス及びネットワークインタフェースは、コンピュータシステム1800のコア1840に取り付けられてもよい。
【0153】
コア1840は、1つ以上の中央処理装置(CPU)1841、グラフィックス処理ユニット(GPU)1842、グラフィックスアダプタ1817、フィールドプログラマブルゲートアレイ(FPGA, Field Programmable Gate Area)1843の形式の特殊なプログラム可能処理ユニット、特定のタスク用のハードウェアアクセラレータ1844等を含んでもよい。これらのデバイスは、読み取り専用メモリ(ROM)1845、ランダムアクセスメモリ1846、内部大容量記憶装置(内部のユーザアクセス不可能なハードドライブ、SSD等)1847と共に、システムバス1848を通じて接続されてもよい。いくつかのコンピュータシステムでは、システムバス1848は、更なるCPU、GPU等による拡張を可能にするために、1つ以上の物理プラグの形式でアクセス可能でもよい。周辺デバイスは、コアのシステムバス1848に直接取り付けられてもよく、或いは、周辺バス1851を通じて取り付けられてもよい。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0154】
CPU1841、GPU1842、FPGA1843及びアクセラレータ1844は特定の命令を実行してもよく、当該特定の命令は、組み合わせによって上記のコンピュータコードを構成してもよい。当該コンピュータコードは、ROM1845又はRAM1846に記憶されてもよい。また、一時的なデータは、RAM1846に記憶されてもよいが、永続的なデータは、例えば、内部大容量記憶装置1847に記憶されてもよい。1つ以上のCPU1841、GPU1842、大容量記憶装置1847、ROM1845、RAM1846等と密接に関連してもよいキャッシュメモリを使用することによって、メモリデバイスのいずれかへの高速記憶及び検索が可能になってもよい。
【0155】
コンピュータ読み取り可能媒体は、様々なコンピュータに実装された動作を実行するためのコンピュータコードを有してもよい。媒体及びコンピュータコードは、本開示の目的のために特に設計及び構築されたものでよく、或いは、コンピュータソフトウェア分野における当業者に周知で入手可能なようなものでもよい。
【0156】
限定ではなく一例として、アーキテクチャ1800、具体的には、コア1840を有するコンピュータシステムは、1つ以上の有形のコンピュータ読み取り可能媒体に具現されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)の結果として機能を提供できる。このようなコンピュータ読み取り可能媒体は、コア内部の大容量記憶装置1847又はROM1845のような非一時的な性質のコア1840の特定の記憶装置と同様に、上記のようなユーザがアクセス可能な大容量記憶装置に関連する媒体でもよい。本開示の様々な実施形態を実装するソフトウェアは、このようなデバイスに記憶されてコア1840によって実行されてもよい。コンピュータ読み取り可能媒体は、特定のニーズに従って、1つ以上のメモリデバイス又はチップを含んでもよい。ソフトウェアは、コア1840、具体的には、その中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM1846に記憶されたデータ構造を定義し、ソフトウェアによって定義された処理に従ってこのようなデータ構造を修正することを含む、本明細書に記載の特定の処理又は特定の処理の特定の部分を実行させてもよい。さらに或いは代替として、コンピュータシステムは、回路(例えば、アクセラレータ1844)内に配線されたロジック又は他の方法で具現されたロジックの結果として、機能を提供してもよく、当該回路は、本明細書に記載の特定の処理又は特定の処理の特定の部分を実行するために、ソフトウェアの代わりに或いはソフトウェアと共に動作してもよい。ソフトウェアへの言及は、ロジックを含み、必要に応じて、その逆も可能である。コンピュータ読み取り可能媒体への言及は、必要に応じて、実行するためのソフトウェアを記憶する回路(集積回路(IC)等)、実行するためのロジックを具現する回路又はこれらの双方を含んでもよい。本開示は、ハードウェア及びソフトウェアのいずれかの適切な組み合わせを含む。
【0157】
本開示は、いくつかの例示的な実施形態を記載しているが、本開示の範囲内に入る変更、置換及び様々な代替の等価物が存在する。したがって、当業者は、本明細書に明示的に図示又は記載されていないが、本開示の原理を具現し、したがって、本開示の真意及び範囲内にある多数のシステム及び方法を考案することができることが認識される。