IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

特許7489466ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム
<>
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図1A
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図1B
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図1C
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図1D
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図2
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図3
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図4
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図5
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図6
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図7
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図8
  • 特許-ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-15
(45)【発行日】2024-05-23
(54)【発明の名称】ニューラルネットワークベースのビデオコーディングのためのプルーニング方法、装置およびコンピュータプログラム
(51)【国際特許分類】
   H04N 19/46 20140101AFI20240516BHJP
   H04N 19/132 20140101ALI20240516BHJP
   H04N 19/134 20140101ALI20240516BHJP
   H04N 19/176 20140101ALI20240516BHJP
   H04N 19/196 20140101ALI20240516BHJP
【FI】
H04N19/46
H04N19/132
H04N19/134
H04N19/176
H04N19/196
【請求項の数】 15
(21)【出願番号】P 2022537382
(86)(22)【出願日】2021-08-06
(65)【公表番号】
(43)【公表日】2023-03-14
(86)【国際出願番号】 US2021044904
(87)【国際公開番号】W WO2022076071
(87)【国際公開日】2022-04-14
【審査請求日】2022-07-14
(31)【優先権主張番号】63/089,481
(32)【優先日】2020-10-08
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/362,184
(32)【優先日】2021-06-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シュー,シャオジョン
(72)【発明者】
【氏名】ジャン,ウェイ
(72)【発明者】
【氏名】リウ,シャン
(72)【発明者】
【氏名】ワン,ウェイ
【審査官】田部井 和彦
(56)【参考文献】
【文献】国際公開第2019/088657(WO,A1)
【文献】米国特許出願公開第2019/0130271(US,A1)
【文献】国際公開第2016/199330(WO,A1)
【文献】米国特許出願公開第2020/0351509(US,A1)
【文献】米国特許出願公開第2014/0016708(US,A1)
【文献】Hujun Yin et al.,AHG9: Adaptive convolutional neural network loop filter [online],JVET-M0566,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/13_Marrakech/wg11/JVET-M0566-v3 .zip>,2019年01月13日
【文献】Philipp Helle et al.,Intra Picture Prediction for Video Coding with Neural Networks [online],Published in: 2019 Data Compression Conference (DCC),2019年05月13日,pp.448-457,DOI: 10.1109/DCC.2019.00053
【文献】Pavlo Molchanov et al.,Importance Estimation for Neural Network Pruning [online],Published in: 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR),2020年01月09日,pp.11256-11264,インターネット <URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8953464>,DOI: 10.1109/CVPR.2019.01152
【文献】Benjamin Bross et al.,Versatile Video Coding (Draft 3) [online],JVET-L1001-v9,インターネット <URL: https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L1001-v13.zip>,2019年01月08日,pp.46-48,JVET-L1001-v9.docx
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/46
H04N 19/132
H04N 19/134
H04N 19/176
H04N 19/196
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される、ビデオシーケンスのピクチャの現在のブロックのニューラルネットワークベースのビデオコーディングのためのプルーニング方法であって、
ニューラルネットワークのパラメータをグループに分類するステップと、
前記グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、前記グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定するステップと、
前記グループのうちの前記第1グループの第1優先度と、前記グループのうちの前記第2グループの第2優先度とを設定するステップであって、前記第2優先度は、前記第1優先度よりも低いステップと、
前記設定された第1インデックス、前記設定された第2インデックス、前記設定された第1優先度、前記設定された第2優先度、およびプルーニングされるべき前記ニューラルネットワークの前記パラメータの割合をデコーダに送信するステップと、を含み、
ここで、前記送信された第1インデックスおよび前記送信された第2インデックスに基づいて、前記現在のブロックは、前記グループのうちの前記第1グループをプルーニングするためのパラメータを使用して処理される
ことを特徴とするプルーニング方法。
【請求項2】
前記現在のブロックは、前記グループのうちの前記第2優先度を有する前記第2グループから開始し、続いて、前記グループのうちの前記第1優先度を有する前記第1グループに対して、前記割合に達するまで、前記割合をプルーニングするためのパラメータを使用して処理される、
ことを特徴とする請求項1に記載のプルーニング方法。
【請求項3】
前記ピクチャがBまたはPスライスまたはピクチャであることに基づいて、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合は、より大きくなり、
前記ピクチャがIスライスまたはピクチャであることに基づいて、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合は、より小さくなる、
ことを特徴とする請求項2に記載のプルーニング方法。
【請求項4】
コーディングされたビットストリームでプルーニングが実行されるかどうかを示すシーケンスパラメータセット(SPS)フラグを設定するステップと、
前記コーディングされたビットストリームで前記プルーニングが実行されることを示すように前記SPSフラグが設定されていることに基づいて、前記ニューラルネットワークの前記パラメータのうちの1つまたは複数のパラメータがプルーニングされるべきかどうかを示す、ピクチャパラメータセット(PPS)フラグ、および/または、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合を示すピクチャレベル情報を設定するステップと、をさらに含む、
ことを特徴とする請求項1に記載のプルーニング方法。
【請求項5】
前記設定されたPPSフラグおよび前記設定されたピクチャレベル情報を前記デコーダに送信するステップを、さらに含み、
ここで、前記1つまたは複数のパラメータがプルーニングされるべきことを示す前記送信されたPPSフラグと、前記送信されたピクチャレベル情報とに基づいて、前記現在のブロックは、前記割合に達するまで、前記割合をプルーニングするためのパラメータを使用して処理される、
ことを特徴とする請求項4に記載のプルーニング方法。
【請求項6】
前記設定された第1インデックスおよび前記設定された第2インデックスは、補足強化情報(SEI)メッセージを介して前記デコーダに送信される、
ことを特徴とする請求項1に記載のプルーニング方法。
【請求項7】
前記ニューラルネットワークの前記パラメータは、2次元(2D)アレイに配置され、
前記ニューラルネットワークの前記パラメータが分類される前記グループは、前記2Dアレイの行、列、および位置のうちの任意の1つまたは任意の組み合わせを含み、
前記第1インデックスおよび前記第2インデックスは、バイナリマスクに含まれるバイナリインジケータである、
ことを特徴とする請求項1に記載のプルーニング方法。
【請求項8】
ビデオシーケンスのピクチャの現在のブロックのニューラルネットワークベースのビデオコーディングのためのプルーニング装置であって、
コンピュータプログラムコードを記憶するように構成される少なくとも1つのメモリと、
前記少なくとも1つのメモリにアクセスして、前記コンピュータプログラムコードに従って動作するように構成される少なくとも1つのプロセッサと、を含み、前記コンピュータプログラムコードは、
前記少なくとも1つのプロセッサに、ニューラルネットワークのパラメータをグループに分類させるように構成される分類コードと、
前記少なくとも1つのプロセッサに、前記グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、前記グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定させるように構成される第1設定コードと、
前記少なくとも1つのプロセッサに、前記グループのうちの前記第1グループの第1優先度と、前記グループのうちの前記第2グループの第2優先度とを設定させるように構成される第2設定コードであって、前記第2優先度は、前記第1優先度よりも低い第2設定コードと、
前記少なくとも1つのプロセッサに、前記設定された第1インデックス、前記設定された第2インデックス、前記設定された第1優先度、前記設定された第2優先度、およびプルーニングされるべき前記ニューラルネットワークの前記パラメータの割合をデコーダに送信させるように構成される第1送信コードと、
を含み、
ここで、前記送信された第1インデックスおよび前記送信された第2インデックスに基づいて、前記現在のブロックは、前記グループのうちの第1グループをプルーニングするためのパラメータを使用して処理される、
ことを特徴とするプルーニング装置。
【請求項9】
前記現在のブロックは、前記グループのうちの前記第2優先度を有する前記第2グループから開始し、続いて、前記グループのうちの前記第1優先度を有する前記第1グループに対して、前記割合に達するまで、前記割合をプルーニングするためのパラメータを使用して処理される、
ことを特徴とする請求項8に記載のプルーニング装置。
【請求項10】
前記ピクチャがBまたはPスライスまたはピクチャであることに基づいて、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合は、より大きくなり、
前記ピクチャがIスライスまたはピクチャであることに基づいて、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合は、より小さくなる、
ことを特徴とする請求項9に記載のプルーニング装置。
【請求項11】
前記コンピュータプログラムコードは、さらに、前記少なくとも1つのプロセッサに、
コーディングされたビットストリームでプルーニングが実行されるかどうかを示すシーケンスパラメータセット(SPS)フラグを設定させ、
前記コーディングされたビットストリームで前記プルーニングが実行されることを示すように前記SPSフラグが設定されていることに基づいて、前記ニューラルネットワークの前記パラメータのうちの1つまたは複数のパラメータがプルーニングされるべきかどうかを示す、ピクチャパラメータセット(PPS)フラグ、および/または、プルーニングされるべき前記ニューラルネットワークの前記パラメータの割合を示すピクチャレベル情報を設定させるように構成される第2設定コード、を含む、
ことを特徴とする請求項8に記載のプルーニング装置。
【請求項12】
前記コンピュータプログラムコードは、さらに、
前記少なくとも1つのプロセッサに、前記設定されたPPSフラグおよび前記設定されたピクチャレベル情報を前記デコーダに送信させるように構成される第2送信コード、を含み、
ここで、前記1つまたは複数のパラメータがプルーニングされるべきことを示す前記送信されたPPSフラグと、前記送信されたピクチャレベル情報とに基づいて、前記現在のブロックは、前記割合に達するまで、前記割合をプルーニングするためのパラメータを使用して処理される、
ことを特徴とする請求項11に記載のプルーニング装置。
【請求項13】
前記設定された第1インデックスおよび前記設定された第2インデックスは、補足強化情報(SEI)メッセージを介して前記デコーダに送信される、
ことを特徴とする請求項8に記載のプルーニング装置。
【請求項14】
前記ニューラルネットワークの前記パラメータは、2次元(2D)アレイに配置され、
前記ニューラルネットワークの前記パラメータが分類される前記グループは、前記2Dアレイの行、列、および位置のうちの任意の1つまたは任意の組み合わせを含み、
前記第1インデックスおよび前記第2インデックスは、バイナリマスクに含まれるバイナリインジケータである、
ことを特徴とする請求項8に記載のプルーニング装置。
【請求項15】
コンピュータプログラムであって、請求項1~7のいずれか1項に記載の方法を、ビデオコーディングのためのデバイスに実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本出願は、2020年10月8日に出願された米国仮特許出願第63/089,481号、および2021年6月29日に出願された米国特許出願第17/362,184号からの優先権を主張しており、その全体は、参照により本明細書に組み込まれる。
【0002】
[技術分野]
実施形態と一致する方法および装置は、ビデオコーディングに関し、特に、ニューラルネットワークベースのビデオコーディングのためのプルーニング(pruning)方法および装置に関する。
【背景技術】
【0003】
ITU-T VCEG(Q6/16)およびISO/IEC MPEG(JTC 1/SC 29/WG 11)は、2013年(バージョン1)、2014年(バージョン2)、2015年(バージョン3)および2016年(バージョン4)に、H.265/HEVC(High Efficiency Video Coding、高効率ビデオコーディング)規格を公開した。それ以来、彼らは、HEVC規格(その拡張を含む)の圧縮能力を大幅に超える圧縮能力を有する将来のビデオコーディング技術の標準化のための潜在的なニーズを研究してきた。2017年10月に、HEVCを超える機能を有するビデオ圧縮に関する共同提案募集(CfP:Call for Proposal)を発表した。2018年2月15日までに、標準ダイナミックレンジ(SDR:standard dynamic range)に関するCfP応答22件、ハイダイナミックレンジ(HDR:high dynamic range)に関するCfP応答12件、360個のビデオカテゴリーに関するCfP応答12件がそれぞれ提出された。2018年4月に、第122回のMPEG/第10回のJVET(Joint Video Exploration Team - Joint Video Expert Team)会議で、受信されたすべてのCfP応答が評価された。慎重な評価により、JVETは、HEVCを超える次世代ビデオコーディングの標準化、つまりいわゆる汎用ビデオコーディング(VVC:VersatileVideo Coding)を正式に開始した。一方、中国のオーディオビデオコーディング規格(AVS:Audio Video coding Standard)も進行中である。
【発明の概要】
【0004】
実施形態によると、ビデオシーケンスのピクチャの現在のブロックのニューラルネットワークベースのビデオコーディングのためのプルーニング方法は、少なくとも1つのプロセッサによって実行され、ニューラルネットワークのパラメータをグループに分類するステップと、グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定するステップと、設定された第1インデックスおよび設定された第2インデックスをデコーダに送信するステップと、を含む。送信された第1インデックスおよび送信された第2インデックスに基づいて、現在のブロックは、グループのうちの第1グループがプルーニングされるパラメータを使用して処理される。
【0005】
実施形態によると、ビデオシーケンスのピクチャの現在のブロックのニューラルネットワークベースのビデオコーディングのためのプルーニング装置は、コンピュータプログラムコードを記憶するように構成される少なくとも1つのメモリと、少なくとも1つのメモリにアクセスして、コンピュータプログラムコードに従って動作するように構成される少なくとも1つのプロセッサと、を含む。コンピュータプログラムコードは、少なくとも1つのプロセッサに、ニューラルネットワークのパラメータをグループに分類させるように構成される分類コードと、少なくとも1つのプロセッサに、グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定させるように構成される第1設定コードと、少なくとも1つのプロセッサに、設定された第1インデックスおよび設定された第2インデックスをデコーダに送信させるように構成される第1送信コードと、を含む。送信された第1インデックスおよび送信された第2インデックスに基づいて、現在のブロックは、グループのうちの第1グループがプルーニングされるパラメータを使用して処理される。
【0006】
実施形態によると、命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体において、命令は、ビデオシーケンスのピクチャの現在のブロックのニューラルネットワークベースのビデオコーディングでプルーニングを行うための少なくとも1つのプロセッサによって実行されるとき、少なくとも1つのプロセッサに、ニューラルネットワークのパラメータをグループに分類するステップと、グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定するステップと、設定された第1インデックスおよび設定された第2インデックスをデコーダに送信するステップと、を実行させる。送信された第1インデックスおよび送信された第2インデックスに基づいて、現在のブロックは、グループのうちの第1グループがプルーニングされるパラメータを使用して処理される。
【図面の簡単な説明】
【0007】
図1A】ニューラルネットワークベースのフィルタのブロック図である。
【0008】
図1B】高密度残差畳み込みニューラルネットワークベースのループ内フィルタ(DRNNLF:dense residual convolutional neural network based in-loop filter)のブロック図である。
【0009】
図1C図1BのDRNNLFの高密度残差ユニット(DRU:dense residual unit)のブロック図である。
【0010】
図1D】2次元(2D)アレイのプルーニングを示す図である。
【0011】
図2】実施形態による通信システムの簡略化されたブロック図である。
【0012】
図3】実施形態による、ストリーミング環境におけるビデオエンコーダとビデオデコーダの配置の図である。
【0013】
図4】実施形態による、ビデオデコーダの機能的なブロック図である。
【0014】
図5】実施形態による、ビデオエンコーダの機能的なブロック図である。
【0015】
図6】実施形態による、ニューラルネットワークベースのビデオコーディングのためのプルーニング方法を示すフローチャートである。
【0016】
図7】実施形態による、ニューラルネットワークベースのビデオコーディングのためのプルーニング方法を示すフローチャートである。
【0017】
図8】実施形態による、ニューラルネットワークベースのビデオコーディングのためのプルーニング装置の簡略化されたブロック図である。
【0018】
図9】実施形態を実現することに適したコンピュータシステムの図である。
【発明を実施するための形態】
【0019】
本開示は、HEVCを超えたビデオコーディング技術、例えば、VVCまたはAVSを説明する。より具体的には、いくつかの補足強化情報は、ニューラルネットワークベースのピクチャおよびビデオコーディングのために使用されている。
【0020】
VVCとAVS3では、ニューラルネットワークベースの方法および装置、特に、ニューラルネットワークベースのフィルタが提案された。以下は、ニューラルネットワークベースのフィルタの構造の例の1つである。
【0021】
図1Aは、ニューラルネットワークベースのフィルタ(100A)のブロック図である。
【0022】
ニューラルネットワークベースのフィルタ(100A)には、畳み込み層(CONV)が含まれる。一例として、カーネルサイズが3×3×Mである場合、これは、各チャネルについて、畳み込みカーネルサイズが3×3であり、出力層の数がMであり得る、ということを意味する。
【0023】
畳み込み層と非線形活性化関数(ReLU:Non-linear activation functions)の組み合わせにより、再構築用の非線形フィルタと見なされ得るプロセス全体が作成される。フィルタリングプロセスの後、品質を向上させることができる。
【0024】
図1Bは、DRNNLF(100B)のブロック図である。
【0025】
JVET-O0101からのDRNNLF(100B)は、デブロッキングフィルタとサンプルアダプティブオフセット(SAO:sample-adaptive offset)の間の追加フィルタである。それは、デブロッキングフィルタ、SAO、アダプティブループフィルタ(ALF:adaptive loop filter)、およびクロスコンポーネントALF(CCALF:cross-component ALF)と連携して動作することで、コーディング効率を向上させる。
【0026】
図1Bは、DRNNLF(100B)のネットワーク構造を示し、ここで、NおよびMは、それぞれ、高密度残差ユニット(DRU)および畳み込みカーネルの数を示す。例えば、計算効率とパフォーマンスとの間のトレードオフのために、Nは4に設定され得、Mは32に設定され得る。正規化された量子化パラメータ(QP:quantization parameter)マップは、再構築されたフレームと連結されて、DRNNLF(100B)への入力とする。
【0027】
DRNNLFの本体には、一連のDRUが含まれる。DRUの構造は、図1Cに示される。
【0028】
図1Cは、図1BのDRNNLF(100B)のDRU(100C)のブロック図である。
【0029】
DRU(100C)は、ショートカットを介してその入力を後続のユニットに直接に伝播する。計算コストをさらに削減するために、DRU(100C)に3x3の深さ方向分離可能畳み込み(DSC:depth-wise separable convolutional)層が適用される。
【0030】
最後に、ニューラルネットワークの出力には、色Y、Cb、Crにそれぞれ対応する3つのチャネルがある。DRNNLF(100B)は、イントラピクチャとインターピクチャの両方に適用される。追加フラグは、ピクチャレベルおよびコーディングツリーユニット(CTU:coding tree unit)レベルでDRNNLF(100B)のオン/オフを示すために信号で通知される。
【0031】
DRNNLF(100B)を使用することを例として、畳み込みニューラルネットワークの計算は、ニューラルネットワークの各畳み込み層における4次元(4D)重みテンソルW[n][m][h][w]のサイズに関連し、ここで、nは、出力フィルタ(1または複数)の数であり、mは、入力チャネル(1または複数)の数であり、また、h×wは、2D畳み込みカーネルのサイズである。畳み込み層の計算は、Wにおける一部の係数をゼロ化することで減少され得、したがって、積和演算の数は減少され得る。Wにおける係数をゼロ化するこの方法は、ニューラルネットワーク圧縮におけるプルーニングとして知られている。前もって、DRNNLF(100B)における出力フィルタの数などのニューラルネットワークパラメータは、プルーニング(0に設定)され得る。
【0032】
図1Dは、2Dアレイのプルーニングを示す図である。
【0033】
図1Dの部分(A)に示すように、4D重みテンソルWは、2Dアレイとして展開され得、2Dアレイ内の各要素は、h×wの2D畳み込みカーネルのシリアル化されたフィルタ係数を含む1Dアレイである。図1Dの部分(A)において、2Dアレイの列は、入力チャネルに対応し、また、2Dアレイの行は、出力フィルタに対応する。
【0034】
図1Dの部分(B)に示されるように、Wにおける係数は、フィルタプルーニング(110)によってプルーニングされるか、または特定の行をゼロ化することによってプルーニングされる(シャドウによって示されるように)。したがって、積和の回数とニューラルネットワークパラメータのサイズとの両方が減少され得る。他のアプローチでは、同様のプルーニングは、積和の回数を減少させるように、行ごと、列ごと、1Dアレイにおける位置ごとに実行され得、または、どのパラメータをゼロに設定するかについての任意の他の適切な指示もなされ得る。例えば、図1Dの部分(B)に示されるように、フィルタ形状プルーニング(120)は、1Dまたは2Dアレイの列のプルーニングを含んでよく、また、チャネルプルーニング(130)は、1Dまたは2Dアレイのチャネルのプルーニングを含む。より多くのパラメータがプルーニングされるほど、必要な計算が少なくなる。
【0035】
図2は、実施形態による通信システム(200)の簡略化されたブロック図である。通信システム(200)は、ネットワーク(250)を介して相互接続された、少なくとも2つの端末(210~220)を含むことができる。データの単方向伝送の場合、第1端末(210)は、ネットワーク(250)を介して他の端末(220)に送信するために、ローカルの場所でビデオデータをコーディングすることができる。第2端末(220)は、ネットワーク(250)から他の端末のコーディングされたビデオデータを受信し、コーディングされたデータを復号して、また、復元されたビデオデータを表示することができる。単方向データ伝送は、メディアサービングアプリケーションなどにおいて一般的であり得る。
【0036】
図2は、例えば、ビデオ会議中に発生する可能性がある、コーディングされたビデオの双方向伝送をサポートする第2ペアの端末(230、240)を示す。データの双方向伝送の場合、各端末(230、240)は、ネットワーク(250)を介して他の端末に送信するために、ローカルの場所でキャプチャされたビデオデータをコーディングすることができる。各端末(230、240)は、他の端末によって送信された、コーディングされたビデオデータを受信することもでき、コーディングされたデータを復号することができ、また、復元されたビデオデータをローカルの表示デバイスに表示することもできる。
【0037】
図2において、端末(210~240)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示されてもよいが、実施形態の原理は、それほど限定されていない。実施形態では、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤおよび/または専用のビデオ会議機器を使用する用途が見つけられる。ネットワーク(250)は、コーディングされたビデオデータを端末(210~240)の間で伝えるための任意の数のネットワークを表し、例えば、有線および/または無線の通信ネットワークを含む。通信ネットワーク(250)は、回線交換および/またはパケット交換のチャネルでデータを交換することができる。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはインターネットを含む。本明細書で説明する目的のために、ネットワーク(250)のアーキテクチャおよびトポロジは、以下に本明細書で説明されない限り、実施形態の動作にとって重要ではない場合がある。
【0038】
図3は、実施形態による、ストリーミング環境におけるビデオエンコーダとビデオデコーダの配置の図である。開示された主題は、例えば、CD、DVD、メモリスティックなどを含むデジタルメディアへの圧縮されたビデオの記憶、ビデオ会議、デジタルTVなどを含む、他のビデオ対応アプリケーションにも同等に適用可能である。
【0039】
ストリーミングシステムは、キャプチャサブシステム(313)を含むことができ、このキャプチャサブシステムが、例えばデジタルカメラなどのビデオソース(301)を含むことができ、例えば圧縮されていないビデオサンプルストリーム(302)を作成する。符号化されたビデオビットストリームと比較する際に、高いデータボリュームを強調するために太い線で描かれたサンプルストリーム(302)は、カメラ(301)に結合されたエンコーダ(303)によって処理され得る。エンコーダ(303)は、以下で詳細に説明するように、開示された主題の各態様を可能にするかまたは実現するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。サンプルストリームと比較する際に、より低いデータボリュームを強調するために細い線で描かれた、符号化されたビデオビットストリーム(304)は、将来の使用のために、ストリーミングサーバ(305)に記憶され得る。1つ以上のストリーミングクライアント(306、308)は、ストリーミングサーバ(305)にアクセスして、符号化されたビデオビットストリーム(304)のコピー(307、309)を検索することができる。クライアント(306)は、ビデオデコーダ(310)を含むことができ、このビデオデコーダ(310)は、符号化されたビデオビットストリームの入方向のコピー(307)を復号して、出方向のビデオサンプルストリーム(311)を作成することができ、このビデオサンプルストリーム(311)は、ディスプレイ(312)または他のレンダリングデバイス(図示せず)にレンダリングされ得る。一部のストリーミングシステムでは、ビデオビットストリーム(304、307、309)は、特定のビデオコーディング/圧縮規格に従って符号化され得る。それらの規格の例には、ITU-T推奨のH.265が含まれている。開発されているのは、VVC(Versatile VideoCoding)として非公式に知られているビデオコーディング規格である。開示された主題は、VVCのコンテキストで使用され得る。
【0040】
図4は、実施形態による、ビデオデコーダ(310)の機能ブロック図である。
【0041】
受信機(410)は、ビデオデコーダ(310)によって復号される1つ以上のコーディングされたビデオシーケンスを受信することができ、同じまたは別の実施形態では、一度に1つのコーディングされたビデオシーケンス(CVS)を受信することができ、ここで、各コーディングされたビデオシーケンスの復号は、他のコーディングされたビデオシーケンスとは独立している。コーディングされたビデオシーケンスは、チャネル(412)から受信され得、このチャネルは、符号化されたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアのリンクであり得る。受信機(410)は、それらの各自の使用するエンティティ(図示せず)に転送され得る、例えばコーディングされたオーディオデータおよび/または補助データストリームなどの他のデータとともに、符号化されたビデオデータを受信することができる。受信機(410)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタを防止するために、バッファメモリ(415)は、受信機(410)とエントロピーデコーダ/解析器(Parser)(420)(以後、「解析器」)との間に結合され得る。受信機(410)が十分な帯域幅および制御可能性を有するストア/転送デバイスから、または等同期ネットワークからデータを受信する場合、バッファメモリ(415)は、必要ではないかまたは小さくでもよい。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(415)が必要になる場合があり、比較的大きくすることができ、有利には適応サイズであることができる。
【0042】
ビデオデコーダ(310)は、エントロピーコーディングされたビデオシーケンスからシンボル(421)を再構築するための解析器(420)を含むことができる。これらのシンボルのカテゴリは、ビデオデコーダ(310)の動作を管理するために使用される情報を含み、かつ、デコーダの不可欠な部分ではないが、図4に示すように、そのデコーダに結合され得る、ディスプレイ(312)などのレンダリングデバイスを制御するための情報を潜在的に含む。レンダリングデバイスのための制御情報は、補足強化情報(SEI:Supplemental Enhancement Information)メッセージまたはビデオユーザビリティ情報(VUI:Video Usability Information)パラメータセットフラグメント(図示せず)の形式であってもよい。解析器(420)は、受信された、コーディングされたビデオシーケンスに対して解析/エントロピー復号を行うことができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または標準に従うことができ、また、当業者に知られている原理に従うことができ、可変長コーディング、ハフマンコーディング(Huffman coding)、コンテキスト感度を有するかまたは有しない算術コーディングなどを含む。解析器(420)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから、ビデオデコーダにおける画素のサブグループのうちの少なくとも1つのためのサブグループパラメータのセットを抽出することができる。サブグループは、ピクチャ群(GOP:Group of Pictures)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU:Coding Unit)、ブロック、変換ユニット(TU:Trans form Unit)、予測ユニット(PU:Prection Unit)などを含むことができる。エントロピーデコーダ/解析器は、変換係数、量子化パラメータ(QP:quantizer parameter)値、動きベクトルなどの情報を、コーディングされたビデオシーケンスから抽出することもできる。
【0043】
解析器(420)は、シンボル(421)を作成するために、バッファメモリ(415)から受信されたビデオシーケンスに対してエントロピー復号/解析動作を実行することができる。解析器(420)は、符号化されたデータを受信し、特定のシンボル(421)を選択的に復号することができる。さらに、解析器(420)は、特定のシンボル(421)が動き補償予測ユニット(453)、スケーラ/逆変換ユニット(451)、イントラ予測ユニット(452)またはループフィルタユニット(454)に提供されるかどうかを決定することができる。
【0044】
シンボル(421)の再構築は、コーディングされたビデオピクチャまたはその一部(例えば、インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロック)のタイプ、および他の要因に応じて、複数の異なるユニットに関連することができる。どのユニットが、どのように関連するかは、解析器(420)によって、コーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御され得る。明確にするために、解析器(420)と以下の複数のユニットとの間のこのようなサブグループ制御情報のフローは説明されていない。
【0045】
既に言及された機能ブロックに加えて、ビデオデコーダ310は、以下に説明するように、いくつかの機能ユニットに概念的に細分され得る。商業的制約で動作する実際の実装では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的には互いに統合され得る。しかしながら、開示された主題を説明する目的のために、以下の機能ユニットへの概念的な細分が適切である。
【0046】
第1ユニットは、スケーラ/逆変換ユニット(451)である。スケーラ/逆変換ユニット(451)は、量子化された変換係数と、どのような変換を使用するか、ブロックサイズ、量子化因子、量子化スケーリング行列などを含む制御情報とを、解析器(420)からシンボル(421)として受信する。スケーラ/逆変換ユニット(451)は、アグリゲータ(455)に入力できるサンプル値を含むブロックを出力することができる。
【0047】
いくつかの場合では、スケーラ/逆変換ユニット(451)の出力サンプルは、イントラコーディングされたブロック、即ち、以前に再構築されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構築された部分からの予測情報を使用できるブロックに関係することができる。このような予測情報は、イントラピクチャ予測ユニット(452)によって提供されてもよい。いくつかの場合では、イントラピクチャ予測ユニット(452)は、現在の(部分的に再構築された)ピクチャ(456)から抽出された、周囲の既に再構築された情報を使用して、再構築中のブロックと同じサイズおよび形状のブロックを生成する。アグリゲータ(455)は、いくつかの場合では、サンプルごとに、イントラピクチャ予測ユニット(452)によって生成された予測情報を、スケーラ/逆変換ユニット(451)によって提供される出力サンプル情報に追加する。
【0048】
他の場合では、スケーラ/逆変換ユニット(451)の出力サンプルは、インターコーディングされ、かつ潜在的に動き補償されたブロックに関係することができる。このような場合、動き補償予測ユニット(453)は、参照ピクチャメモリ(457)にアクセスすることで、予測に用いられるサンプルを抽出することができる。抽出されたサンプルが、ブロックに関連するシンボル(421)に従って動き補償された後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(455)によってスケーラ/逆変換ユニットの出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加され得る。動き補償ユニットが予測サンプルをそこから抽出する参照ピクチャメモリ内のアドレスは、例えば、X、Yおよび参照ピクチャ成分を有することができるシンボル(421)の形式で、動き補償ユニットに利用可能な動きベクトルによって制御され得る。動き補償は、サブサンプルの正確な運動ベクトルが使用されている場合、参照ピクチャメモリから抽出されたサンプル値の補間、動きベクトル予測メカニズムなどを含むこともできる。
【0049】
アグリゲータ(455)の出力サンプルは、ループフィルタユニット(454)において様々なループフィルタリング技術によって採用され得る。ビデオ圧縮技術は、コーディングされたビデオビットストリームに含まれ、解析器(420)からのシンボル(421)としてループフィルタユニット(454)に利用可能にされるパラメータによって制御されるループ内フィルタ技術を含むことができ、また、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(復号順序で)前の部分を復号する期間に得られたメタ情報に応答し、かつ、以前に再構築されてループフィルタされたサンプル値に応答することもできる。
【0050】
ループフィルタユニット(454)の出力は、レンダリングデバイス(312)に出力することができ、かつ、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(457)に記憶することができる、サンプルストリームとすることができる。
【0051】
特定のコーディングされたピクチャは、一旦完全に再構築されると、将来の予測のための参照ピクチャとして使用され得る。例えば、コーディングされたピクチャが一旦完全に再構築され、かつ、コーディングされたピクチャが(例えば、解析器(420)によって)参照ピクチャとして識別されると、現在のピクチャ(456)は、参照ピクチャバッファ(457)の一部となることができ、また、後続のコーディングされたピクチャの再構築を開始する前に、新しい現在のピクチャメモリを再割り当てすることができる。
【0052】
ビデオデコーダ(310)は、例えばITU-T推奨のH.265などの規格でドキュメント化され得る所定のビデオ圧縮技術に従って復号動作を実行することができる。コーディングされたビデオシーケンスは、ビデオ圧縮技術ドキュメントまたは規格において、特に、それらのプロファイルドキュメントにおいて指定された、ビデオ圧縮技術または規格の構文に従うという意味で、使用されているビデオ圧縮技術または規格によって指定された構文に従うことができる。コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることも、遵守に必要なものである。いくつかの場合では、レベルは、最大ピクチャサイズ、最大フレームレート、(例えば、1秒あたりのメガ(mega)サンプルを単位として測定された)最大再構築サンプルレート、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、いくつかの場合では、さらに、仮想参照デコーダ(HRD:Hypthetical Reference Decoder)仕様と、コーディングされたビデオシーケンスにおいて信号で通知されたHRDバッファ管理のためのメタデータとによって限定され得る。
【0053】
実施形態では、受信機(410)は、符号化されたビデオとともに付加(冗長)的なデータを受信することができる。付加的なデータは、コーディングされたビデオシーケンスの一部として含まれ得る。付加的なデータは、データを適切に復号し、および/または、元のビデオデータをより正確に再構築するために、ビデオデコーダ(310)によって使用され得る。付加的なデータは、例えば、時間的、空間的、または信号対雑音比(SNR:signal noise ratio)拡張層、冗長スライス、冗長ピクチャ、前方向誤り訂正符号などの形式にすることができる。
【0054】
図5は、実施形態によるビデオエンコーダ(303)の機能ブロック図である。
【0055】
エンコーダ(303)は、エンコーダ(303)によってコーディングされるビデオ画像をキャプチャすることができるビデオソース(301)(エンコーダの一部ではない)から、ビデオサンプルを受信することができる。
【0056】
ビデオソース(301)は、エンコーダ(303)によってコーディングされるソースビデオシーケンスを、デジタルビデオサンプルストリームの形式で提供することができ、該デジタルビデオサンプルストリームは、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB...)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)を有することができる。ビデオ会議システムでは、ビデオソース(301)は、ローカル画像情報をビデオシーケンスとしてキャプチャするカメラであり得る。ビデオデータは、順番に見られるときに動きを与える複数の個別のピクチャとして提供され得る。ピクチャ自体は、画素の空間アレイとして構成されてもよく、ここで、各画素は、使用中のサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことができる。当業者は、画素とサンプルとの間の関係を容易に理解することができる。以下の説明は、サンプルに焦点を当てる。
【0057】
実施形態によれば、エンコーダ(303)は、リアルタイムで、またはアプリケーションによって要求される任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングして圧縮し、コーディングされたビデオシーケンス(543)にすることができる。適切なコーディング速度を実施することは、コントローラ(550)の1つの機能である。コントローラは、以下で説明するように他の機能ユニットを制御し、これらのユニットに機能的に結合される。明瞭にするために、この結合は図示されていない。コントローラによって設定されたパラメータは、レート制御関連パラメータ(例えば、ピクチャスキップ、量子化器、レート歪み最適化技術のλ(ラムダ)値)、ピクチャサイズ、ピクチャ群(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。当業者は、コントローラ(550)の他の機能を容易に識別することができるが、これらの機能が、特定のシステム設計のために最適化されたビデオエンコーダ(303)に関係するからである。
【0058】
いくつかのビデオエンコーダは、当業者が容易に認識する「コーディングループ」で動作する。過度に簡略化された説明として、コーディングループは、エンコーダ(530)(以下、「ソースコーダ」)(コーディングされる入力ピクチャと、参照ピクチャとに基づいてシンボルを作成することを担当する)の符号化部分と、エンコーダ(303)に埋め込まれた(ローカル)デコーダ(533)とによって構成されることができ、当該デコーダ(533)は、シンボルを再構築することで、(リモート)デコーダでも作成されるサンプルデータを作成する(開示された主題で考慮されているビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮が無損失であるため)。再構築されたサンプルストリームは、参照ピクチャメモリ(534)に入力される。シンボルストリームの復号により、デコーダの場所(ローカルまたはリモート)に関係なくビット正確な結果が得られるため、参照ピクチャバッファのコンテンツは、ローカルエンコーダとリモートエンコーダとの間でもビット正確である。言い換えれば、エンコーダの予測部分が「見る」参照ピクチャサンプルは、デコーダが復号期間に予測を使用する際に「見る」サンプル値と全く同じである。この参照ピクチャの同期性の基本原理(および、例えばチャネル誤差の原因で同期性を維持できない場合に生じるドリフト)は、当業者によく知られている。
【0059】
「ローカル」デコーダ(533)の動作は、既に図4に関連して上記で詳細に説明された、「リモート」デコーダ(310)の動作と同じであってもよい。しかし、図4をさらに簡単に参照すると、シンボルが利用可能であり、かつ、エントロピーコーダ(545)および解析器(420)によってコーディングされたビデオシーケンスへのシンボルの符号化/復号が無損失であり得るため、チャネル(412)、受信機(410)、バッファメモリ(415)および解析器(420)を含む、デコーダ(310)のエントロピー復号部分は、ローカルデコーダ(533)で完全に実現されていない可能性がある。
【0060】
この時点で、デコーダに存在する解析/エントロピー復号以外のいかなるデコーダ技術も、対応するエンコーダにおいて、実質的に同一の機能形式で必ず存在する必要がある、ということが観察されている。エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるため、省略され得る。特定の領域だけ、より詳細な説明が必要であり、以下で提供される。
【0061】
その動作の一部として、ソースコーダ(530)は、動き補償予測コーディングを実行することができ、当該動き補償予測コーディングは、ビデオシーケンスから「参照フレーム」として指定された1つ以上の以前にコーディングされたフレームを参照して、入力フレームを予測的にコーディングする。このようにして、コーディングエンジン(532)は、入力フレームの画素ブロックと、入力フレームに対する予測参照として選択され得る参照フレームの画素ブロックとの間の差分をコーディングする。
【0062】
ローカルビデオデコーダ(533)は、ソースコーダ(530)によって作成されたシンボルに基づいて、参照フレームとして指定され得るフレームのコーディングされたビデオデータを復号することができる。コーディングエンジン(532)の動作は、有利には損失性のプロセスであってもよい。コーディングされたビデオデータがビデオデコーダ(図4に示されない)で復号され得る場合、再構築されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスのレプリカであってもよい。ローカルビデオデコーダ(533)は、参照フレームに対してビデオデコーダによって実行され得る復号プロセスを複製して、再構築された参照フレームを参照ピクチャキャッシュ(534)に記憶させることができる。このようにして、エンコーダ(303)は、遠端ビデオデコーダによって得られる(伝送誤差が存在しない)再構築された参照フレームと共通のコンテンツを有する、再構築された参照フレームのコピーを、ローカルに記憶することができる。
【0063】
予測器(535)は、コーディングエンジン(532)に対して予測検索を実行することができる。すなわち、コーディングされる新しいフレームについて、予測器(535)は、新しいピクチャのための適切な予測参照として機能するサンプルデータ(候補参照画素ブロックとして)または特定のメタデータ、例えば参照ピクチャの動きベクトル、ブロック形状などについて、参照ピクチャメモリ(534)を検索することができる。予測器(535)は、適切な予測参照を見つけるために、サンプル・ブロック/画素ブロックごとに(on a sample block-by-pixel block basis)動作することができる。いくつかの場合では、予測器(535)によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(534)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
【0064】
コントローラ(550)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ビデオコーダ(530)のコーディング動作を管理することができる。
【0065】
上述のすべての機能ユニットの出力は、エントロピーコーダ(545)においてエントロピーコーディングされ得る。エントロピーコーダは、ハフマンコーディング、可変長コーディング、算術コーディングなどのような、当業者に知られている技術に従って、シンボルを無損失で圧縮することにより、様々な機能ユニットによって生成されたシンボルを、コーディングされたビデオシーケンスに変換する。
【0066】
送信機(540)は、符号化されたビデオデータを記憶することができる記憶デバイスへのハードウェア/ソフトウェアリンクであり得る通信チャネル(560)を介した送信に備えるために、エントロピーコーダ(545)によって作成された、コーディングされたビデオシーケンスをバッファリングすることができる。送信機(540)は、ビデオコーダ(530)からのコーディングされたビデオデータを、送信される他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージすることができる。
【0067】
コントローラ(550)は、エンコーダ(303)の動作を管理することができる。コーディングする期間、コントローラ(550)は、各コーディングされたピクチャに、特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用できるコーディング技術に影響を与える可能性がある。例えば、ピクチャは、多くの場合、以下のフレームタイプのいずれかとして割り当てられ得る。
【0068】
イントラピクチャ(Iピクチャ)は、シーケンス内の任意の他のフレームを予測ソースとして使用せずに、コーディングおよび復号され得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(IDR:Independent Decoder Refresh)ピクチャなどの異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャの変種およびそれらのそれぞれの用途および特徴を理解している。
【0069】
予測ピクチャ(Pピクチャ)は、多くとも1つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するイントラ予測またはインター予測を使用して、コーディングおよび復号され得るものであり得る。
【0070】
双方向予測ピクチャ(Bピクチャ)は、多くとも2つの動きベクトルおよび参照インデックスを使用して各ブロックのサンプル値を予測するイントラ予測またはインター予測を使用して、コーディングおよび復号され得るものであり得る。同様に、複数の予測ピクチャは、単一のブロックの再構築のために、3つ以上の参照ピクチャおよび関連付けられたメタデータを使用することができる。
【0071】
ソースピクチャは、一般的に、複数のサンプルデータブロック(例えば、それぞれ4x4、8x8、4x8、または16x16個のサンプルのブロック)に空間的に細分され、ブロックごとにコーディングされ得る。ブロックは、当該ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよく、またはそれらが同じピクチャの既にコーディングされたブロックを参照して予測的に(空間予測またはイントラ予測)コーディングされてもよい。Pピクチャの画素ブロックは、非予測的にコーディングされてもよく、または1つ前にコーディングされた参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコーディングされてもよい。Bピクチャのブロックは、非予測的にコーディングされてもよく、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測または時間予測を介して予測的にコーディングされてもよい。
【0072】
ビデオコーダ(303)は、例えばITU-T推奨のH.265またはVVC H.266などのような所定のビデオコーディング技術または規格に従って、コーディング動作を実行することができる。その動作において、ビデオコーダ(303)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行することができる。したがって、コーディングされたビデオデータは、使用されるビデオコーディング技術または標準によって指定された構文に従うことができる。
【0073】
実施形態では、送信機(540)は、符号化されたビデオとともに、付加的なデータを送信することができる。ビデオコーダ(530)は、そのようなデータを、コーディングされたビデオシーケンスの一部として含むことができる。付加的なデータは、時間的、空間的、および/またはSNR拡張層、冗長ピクチャやスライスなどの他の形式の冗長データ、SEIメッセージ、視覚ユーザビリティ情報(VUI:Visual Usability Information)パラメータセットフラグメントなどを含むことができる。
【0074】
本明細書で説明される実施形態には、ニューラルネットワークベースのビデオコーディングシステムでのプルーニングのための方法および装置が含まれる。潜在的な「プルーニングされる」パラメータは、ニューラルネットワーク(NN)パラメータセットと呼ばれる。
【0075】
実施形態では、バイナリマスクを使用して、NNパラメータセットのどの部分がプルーニングされるかを示すことができる。マスクにおける各要素は、0または1のバイナリインジケータとして、フィルタ係数グループにおける特定の行、列、または位置、またはパラメータグループの別の事前定義された1つの個別のパラメータが0に設定されるかどうかを意味する。このマスクは、デコーダ側に信号で通知される。
【0076】
実施形態では、グループ化メカニズムは、エンコーダとデコーダの両方によって合意され得る。NNパラメータセットの全体は、1D係数のセット(図1Dの部分(b)を参照)における行ごと、列ごと、および位置ごとなどのようなグループに分類され得る。プルーニングの最小限の操作は、既存のグループに基づくものである。つまり、プルーニングされた場合、グループ全体のパラメータは0に設定される。エンコーダ側では、選択されたグループのインデックスが送信され、これにより、該グループにおけるパラメータがプルーニングされることが示される。実施形態では、インデックスは、1つの単一インデックスであり得、それは、すべての可能なグループの範囲内にある。別の実施形態では、NNパラメータセットが複数の次元を有すると仮定すると、インデックスは、いくつかのインデックスの組み合わせの形式で、信号で通知され得る。各インデックスは、1つの次元における位置を信号で通知するために使用され得る。別の実施形態では、エンコーダ/デコーダには、そのNNパラメータセットに対してプルーニングを使用するかどうかという簡略化された選択がある。プルーニングが選択された場合、インデックスを指示として使用せずに、NNパラメータのデフォルトのサブセットがプルーニングされる。
【0077】
上記の実施形態と同様に、NNパラメータセットの全体は、1D係数のセット(図1Dの部分(b)を参照)における行ごと、列ごと、および位置ごとなどのようなグループに分類され得る。NNパラメータセットにおけるそれらのプルーニングされるグループの重要度は、例えば、重要度の最も低いグループから重要度の最も高いグループへ優先順位が付けられている。プルーニングが必要な場合、プルーニングされるパラメータの割合などの指示がデコーダに送信される。このような情報を取得することにより、デコーダは、その割合に達するまで、デコーダによって知られる重要度の最も低いグループからプルーニングを実行することができる。実施形態では、送信された指示は、ピクチャタイプまたはスライスタイプに依存し得る。例えば、パラメータの特定の部分は、BまたはPスライス/ピクチャをコーディングする場合よりも、Iスライス/ピクチャをコーディングする場合に、より重要になる場合がある。別の例では、Iスライス/ピクチャをコーディングする場合よりも、BまたはPスライス/ピクチャをコーディングする場合に、より大きな割合のパラメータがプルーニングされ得る。
【0078】
実施形態では、異なるモジュールのための複数のパラメータセットがあるように、複数のセットのNNパラメータがビデオコーディングシステムに存在する場合、異なるセットのパラメータにわたるプルーニングには、プルーニング操作を適切に信号で通知することが必要になる場合がある。実施形態では、いくつかのNNパラメータセットが、まず、信号で通知される。各NNパラメータセットについて、特定のNNパラメータセット内のグループのためのプルーニングインデックス(複数のインデックス)が後に信号で通知される。
【0079】
実施形態では、プルーニング選択は、ビデオコーディングシステムにおける様々なレベルで、例えば、シーケンスレベル(シーケンスパラメータセット(SPS)フラグ)、ピクチャレベル(ピクチャパラメータセット(PPS)フラグ、またはピクチャヘッダ)、スライスレベル(スライスレベルセットフラグ)などで操作され得る。実施形態では、シーケンスレベルフラグは、プルーニングがコーディングされたビットストリームで使用され得るということを示すために設定される。このSPSフラグが真である場合、各ピクチャに対して、ピクチャレベルフラグは、現在のピクチャにおけるNNパラメータセットをプルーニングする必要があるかどうかを示すために設定される。プルーニングする必要がある場合、上記の方法が適用され得る。別の実施形態では、シーケンスレベルフラグは、プルーニングがコーディングされたビットストリームで使用され得るということを示すために設定される。このSPSフラグが真である場合、各ピクチャに対して、ピクチャレベル情報は、現在のピクチャにおけるNNパラメータセットの割合をプルーニングする必要があることを示すために設定される。この値が非ゼロである場合、上記の方法が適用され得る。
【0080】
実施形態では、上記のプルーニングオプションおよび制御パラメータ(例えば、操作ポイント(どのピクチャなど)、選択インデックス、プルーニングされる割合)は、NNパラメータセットのオプションのプルーニング部分を示すために、SEIメッセージを介して送信される。これは、特に画像コーディングに適しており、また、NNパラメータセットは、画像コーディングシステムにおける再構築後の段階に適用される。この場合、デコーダは、プルーニングの程度、または自身の選択をプルーニングするかどうかを選択することができる。SEIメッセージは、デコードされた画像の品質および複雑さを最適化するためのオプションの情報として機能する。
【0081】
図6は、実施形態によるニューラルネットワークベースのビデオコーディングのためのプルーニング方法(600)を示すフローチャートである。いくつかの実装形態では、図6の1つまたは複数のプロセスブロックは、デコーダ(310)によって実行され得る。いくつかの実装形態では、図6の1つまたは複数のプロセスブロックは、例えばエンコーダ(303)のような、デコーダ(310)とは分離されるかまたはそれを含む別のデバイスまたはデバイスグループによって実行され得る。
【0082】
図6を参照すると、第1ブロック(610)では、方法(600)は、ニューラルネットワークのパラメータをグループに分類するステップ、を含む。
【0083】
第2ブロック(620)では、方法(600)は、グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定するステップ、を含む。
【0084】
第3ブロック(630)では、方法(600)は、設定された第1インデックスおよび設定された第2インデックスをデコーダに送信するステップ、を含む。送信された第1インデックスおよび送信された第2インデックスに基づいて、現在のブロックは、グループのうちの第1グループがプルーニングされるパラメータを使用して処理される。例えば、フィルタリング操作は、グループのうちの第1グループがプルーニングされるパラメータを使用して、現在のブロックに対して実行され得る。
【0085】
方法(600)は、さらに、プルーニングがコーディングされたビットストリームで実行されるかどうかを示すシーケンスパラメータセット(SPS)フラグを設定するステップと、プルーニングがコーディングされたビットストリームで実行されることを示すようにSPSフラグが設定されていることに基づいて、ニューラルネットワークの1つまたは複数のパラメータがプルーニングされるかどうかを示すピクチャパラメータセット(PPS)フラグ、および/または、プルーニングされるニューラルネットワークのパラメータの割合を示すピクチャレベル情報を設定するステップと、を含み得る。
【0086】
方法(600)は、さらに、設定されたPPSフラグおよび設定されたピクチャレベル情報をデコーダに送信するステップ、を含み得る。1つまたは複数のパラメータがプルーニングされることを示す送信されたPPSフラグと、送信されたピクチャレベル情報とに基づいて、現在のブロックは、当該割合に達するまで、当該割合がプルーニングされるパラメータを使用してフィルタリングされ得る。
【0087】
設定された第1インデックスおよび設定された第2インデックスは、補足強化情報(SEI)メッセージを介してデコーダに送信され得る。
【0088】
ニューラルネットワークのパラメータは、2次元(2D)アレイに配置され得、ニューラルネットワークのパラメータが分類されるグループは、2Dアレイの行、列、および位置の任意の1つまたは任意の組み合わせを含み得、第1インデックスおよび第2インデックスは、バイナリマスクに含まれるバイナリインジケータであり得る。
【0089】
図7は、実施形態による、ニューラルネットワークベースのビデオコーディングのためのプルーニング方法(700)を示すフローチャートである。いくつかの実装形態では、図7の1つまたは複数のプロセスブロックは、デコーダ(310)によって実行され得る。いくつかの実装形態では、図7の1つまたは複数のプロセスブロックは、例えばエンコーダ(303)のような、デコーダ(310)とは分離されるかまたはそれを含む別のデバイスまたはデバイスグループによって実行され得る。
【0090】
図7を参照すると、第1ブロック(710)では、方法(700)は、ニューラルネットワークのパラメータをグループに分類するステップ、を含む。
【0091】
第2ブロック(720)では、方法(700)は、グループのうちの第1グループの第1優先度と、グループのうちの第2グループの第2優先度とを設定するステップ、を含み、第2優先度は、第1優先度よりも低い。
【0092】
第3ブロック(730)では、方法(700)は、設定された第1優先度、設定された第2優先度、およびプルーニングされるニューラルネットワークのパラメータの割合をデコーダに送信するステップ、を含む。現在のブロックは、グループのうちの、第2優先度を有する第2グループから開始し、続いて、グループのうちの、第1優先度を有する第1グループに対して、当該割合に達するまで、当該割合がプルーニングされるパラメータを使用して処理される。
【0093】
ピクチャがBまたはPスライスまたはピクチャであることに基づいて、プルーニングされるニューラルネットワークのパラメータの割合は、大きくなる可能性があり、ピクチャがIスライスまたはピクチャであることに基づいて、プルーニングされるニューラルネットワークのパラメータの割合は、小さくなる可能性がある。
【0094】
図7は、方法(700)の例示的なブロックを示すが、いくつかの実装形態では、方法(700)は、図7に示されるものよりも追加のブロック、より少ないブロック、異なるブロック、または異なるように配置されたブロックを含み得る。追加的にまたは代替的には、方法(700)の2つ以上のブロックは、並行して実行され得る。
【0095】
図8は、実施形態による、ニューラルネットワークベースのビデオコーディングのためのプルーニング装置(800)の簡略化されたブロック図である。
【0096】
図8を参照すると、装置(800)は、分類コード(810)、第1設定コード(820)、第1送信コード(830)、第2設定コード(840)、第2送信コード(850)を含む。
【0097】
分類コード(810)は、少なくとも1つのプロセッサに、ニューラルネットワークのパラメータをグループに分類させるように構成される。
【0098】
第1設定コード(820)は、少なくとも1つのプロセッサに、グループのうちの第1グループがプルーニングされることを示すように第1インデックスを設定し、グループのうちの第2グループがプルーニングされないことを示すように第2インデックスを設定させるように構成される。
【0099】
第1送信コード(830)は、少なくとも1つのプロセッサに、設定された第1インデックスおよび設定された第2インデックスをデコーダに送信させるように構成される。送信された第1インデックスおよび送信された第2インデックスに基づいて、現在のブロックは、グループのうちの第1グループがプルーニングされるパラメータを使用して処理される。
【0100】
第2設定コード(840)は、少なくとも1つのプロセッサに、グループのうちの第1グループの第1優先度と、グループのうちの第2グループの第2優先度とを設定させるように構成され、第2優先度は、第1優先度よりも低い。第2送信コード(850)は、少なくとも1つのプロセッサに、設定された第1優先度、設定された第2優先度、およびプルーニングされるニューラルネットワークのパラメータの割合をデコーダに送信させるように構成される。現在のブロックは、グループのうちの、第2優先度を有する第2グループから開始し、続いて、グループのうちの、第1優先度を有する第1グループに対して、当該割合に達するまで、当該割合がプルーニングされるパラメータを使用して処理される。
【0101】
ピクチャがBまたはPスライスまたはピクチャであることに基づいて、プルーニングされるニューラルネットワークのパラメータの割合は、より大きくなる可能性があり、ピクチャがIスライスまたはピクチャであることに基づいて、プルーニングされるニューラルネットワークのパラメータの割合は、より小さくなる可能性がある。
【0102】
第2設定コード(840)は、少なくとも1つのプロセッサに、プルーニングがコーディングされたビットストリームで実行されるかどうかを示すシーケンスパラメータセット(SPS)フラグを設定させ、また、プルーニングがコーディングされたビットストリームで実行されることを示すようにSPSフラグが設定されていることに基づいて、ニューラルネットワークの1つまたは複数のパラメータがプルーニングされるかどうかを示すピクチャパラメータセット(PPS)フラグ、および/または、プルーニングされるニューラルネットワークのパラメータの割合を示すピクチャレベル情報を設定させるように構成される。
【0103】
第2送信コード(850)は、少なくとも1つのプロセッサに、設定されたPPSフラグおよび設定されたピクチャレベル情報をデコーダに送信させるように構成され得る。1つまたは複数のパラメータがプルーニングされることを示す送信されたPPSフラグと、送信されたピクチャレベル情報とに基づいて、現在のブロックは、当該割合に達するまで、当該割合がプルーニングされるパラメータを使用して、処理および/またはフィルタリングされ得る。
【0104】
設定された第1インデックスおよび設定された第2インデックスは、補足強化情報(SEI)メッセージを介してデコーダに送信され得る。
【0105】
ニューラルネットワークのパラメータは、2次元(2D)アレイに配置され得、ニューラルネットワークのパラメータが分類されるグループは、2Dアレイの行、列、および位置の任意の1つまたは任意の組み合わせを含み得、第1インデックスと第2インデックスは、バイナリマスクに含まれるバイナリインジケータである。
【0106】
図9は、実施形態を実現することに適したコンピュータシステム(900)の図である。
【0107】
コンピュータソフトウェアは、任意の適切なマシンコードまたはコンピュータ言語を使用してコーディングされてもよく、アセンブリ、コンパイル、リンクなどのメカニズムによって命令を含むコードを作成してもよいし、この命令は、コンピュータ中央処理ユニット(CPU:computer central processing unit)、グラフィクス処理ユニット(GPU:Graphics Processing Unit)などによって直接的に実行されてもよく、または解釈、マイクロコードなどによって実行されてもよい。
【0108】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、IoTデバイス(internet of things devices)などを含む、様々なタイプのコンピュータまたはそのコンポーネントで実行されてもよい。
【0109】
図9に示されるコンピュータシステム(900)のコンポーネントは、本質的に例示的なものであり、実施形態を実現するコンピュータソフトウェアの使用範囲または機能に関するいかなる制限も示唆することが意図されていない。コンポーネントの構成は、コンピュータシステム(900)の実施形態に示されているコンポーネントのいずれかまたは組み合わせに関連する任意の依存性または要件を有すると解釈されるべきではない。
【0110】
コンピュータシステム(900)は、いくつかのヒューマンインターフェース入力デバイスを含むことができる。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、オーディオ入力(例えば、音声、拍手など)、視覚入力(例えば、ジェスチャーなど)、嗅覚入力(図示せず)によって、1人以上のユーザによる入力に応答することができる。ヒューマンインターフェース入力デバイスは、例えばオーディオ(例えば、音声、音楽、環境音など)、画像(例えば、スキャンされた画像、静止画像カメラから得られた写真画像など)、ビデオ(例えば、2次元ビデオ、立体映像を含む3次元ビデオなど)などの、人間による意識的な入力に必ずしも直接関連しているとは限らない、特定のメディアをキャプチャするために使用され得る。
【0111】
入力ヒューマンインターフェースデバイスは、キーボード(901)、マウス(902)、トラックパッド(903)、タッチスクリーン(910)、データグローブ、ジョイスティック(905)、マイクロフォン(906)、スキャナ(907)、カメラ(908)のうちの1つまたは複数(そのうちの1つだけが図示された)を含み得る。
【0112】
コンピュータシステム(900)はまた、いくつかのヒューマンインターフェース出力デバイスを含むことができる。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および嗅覚/味覚によって、1人以上のユーザの感覚を刺激することができる。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(910)、データグローブ、ジョイスティック(905)による触覚フィードバックであるが、入力デバイスとして作用しない触覚フィードバックデバイスであってもよい)、オーディオ出力デバイス(例えば、スピーカ(909)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、ブラウン管(CRT:cathode ray tube)スクリーン、液晶ディスプレイ(LCD:liquid-crystal display)スクリーン、プラズマスクリーン、有機発光ダイオード(OLED:organic light-emitting diode)スクリーンを含むスクリーン(910)であり、各々は、タッチスクリーン入力機能を備えてもよく、あるいは備えていなくてもよく、各々は、触覚フィードバック機能を備えてもよく、あるいは備えていなくてもよいし、これらのいくつかは、ステレオグラフィック出力、仮想現実メガネ(図示せず)、ホログラフィックディスプレイとスモークタンク(図示せず)、およびプリンタ(図示せず)などによって、2次元の視覚出力または3次元以上の視覚出力を出力することができる。グラフィックアダプター(950)は、画像を生成し、またタッチスクリーン(910)に出力する。
【0113】
コンピュータシステム(900)は、例えば、CD/DVDを有するCD/DVD ROM/RW(920)を含む光学媒体または類似の媒体(921)、サムドライブ(922)、リムーバブルハードドライブまたはソリッドステートドライブ(923)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの特殊なROM/ASIC/PLDベースのデバイスなどのような、人間がアクセス可能な記憶デバイスおよびそれらに関連する媒体を含むことができる。
【0114】
当業者はまた、ここで開示されている主題に関連して使用される「コンピュータ読み取り可能な媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解すべきである。
【0115】
コンピュータシステム(900)はまた、1つ以上の通信ネットワーク(955)へのインターフェース(複数)を含むことができる。ネットワーク(955)は、例えば、無線、有線、光学的あってもよい。ネットワーク(955)はさらに、ローカルネットワーク、広域ネットワーク、大都市圏ネットワーク、車両用ネットワークおよび産業用ネットワーク、リアルタイムネットワーク、遅延耐性ネットワークなどであってもよい。ネットワーク(955)の例は、イーサネット(登録商標)、無線LAN、セルラーネットワーク(モバイル通信グローバルシステム(GSM)、第3世代(3G)、第4世代(4G)、第5世代(5G)、ロングタームエボリューション(LTE)などを含む)などのローカルエリアネットワーク、テレビケーブルまたは無線広域デジタルネットワーク(有線テレビ、衛星テレビ、地上放送テレビを含む)、車両用ネットワークおよび産業用ネットワーク(CANBusを含む)などを含む。いくつかのネットワーク(955)は、一般に、いくつかの汎用データポートまたは周辺バス(949)(例えば、コンピュータシステム(900)のユニバーサルシリアルバス(USB:universal serial bus)ポート)に接続された外部ネットワークインターフェース(954)が必要であり、他のシステムは、通常、以下に説明するようにシステムバスに接続することによって、コンピュータシステム(900)のコアに統合される(例えば、イーサネットインターフェースからPCコンピュータシステムへ、またはセルラーネットワークインターフェースからスマートフォンコンピュータシステムへ)。これらのネットワーク(955)のいずれかを使用して、コンピュータシステム(900)は、他のエンティティと通信することができる。このような通信は、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、CANバスから特定のCANバスデバイスへ)、あるいは、双方向の、例えばローカルまたは広域デジタルネットワークを使用して他のコンピュータシステムへの通信であってもよい。上記のように、特定のプロトコルおよびプロトコルスタックは、それらのネットワーク(955)およびネットワークインターフェース(954)のそれぞれで使用されることができる。
【0116】
上記のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインターフェース(954)は、コンピュータシステム(900)のコア(940)に接続されることができる。
【0117】
コア(940)は、1つ以上の中央処理ユニット(CPU)(941)、グラフィクス処理ユニット(GPU)(942)、フィールドプログラマブルゲートアレイ(FPGA)(943)の形式の専用プログラマブル処理ユニット、特定のタスクのためのハードウェア加速器(944)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM:Read-only memory)(945)、ランダムアクセスメモリ(RAM:Random-access memory)(946)、例えば内部の非ユーザアクセスハードドライブ、ソリッドステートドライブ(SSD:solid-state drive)などの内部大容量ストレージ(947)などとともに、システムバス(948)を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(948)は、付加的なCPU、GPUなどによって拡張を可能にするために、1つ以上の物理的プラグの形でアクセスすることができる。周辺デバイスは、コアのシステムバス(948)に直接に接続されてもよく、または周辺バス(949)を介して接続されてもよい。周辺バスのアーキテクチャは、周辺コンポーネント相互接続(PCI:peripheral component interconnect)、汎用シリアルバス(USB)などを含む。
【0118】
CPU(941)、GPU(942)、FPGA(943)、および加速器(944)は、いくつかの命令を実行することができ、これらの命令を組み合わせて上記のコンピュータコードを構成することができる。そのコンピュータコードは、ROM(945)またはRAM(946)に記憶されることができる。また、一時的なデータは、RAM(946)に記憶されることができる一方、永久的なデータは、例えば内部大容量ストレージ(947)に記憶されることができる。1つ以上のCPU(941)、GPU(942)、大容量ストレージ(947)、ROM(945)、RAM(946)などと密接に関連することができる、高速ストレージを使用することにより、任意のメモリデバイスに対する高速記憶および検索が可能になる。
【0119】
コンピュータ読み取り可能な媒体は、様々なコンピュータ実行される動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、実施形態の目的のために特別に設計および構成されるものであってもよく、またはコンピュータソフトウェア分野の技術者によって知られ、利用可能な媒体およびコードであってもよい。
【0120】
限定ではなく例として、アーキテクチャ(900)、特にコア(940)を有するコンピュータシステムは、1つ以上の有形な、コンピュータ読み取り可能な媒体に具体化されたソフトウェアを実行する、(CPU、GPU、FPGA、加速器などを含む)プロセッサの結果として機能を提供することができる。このようなコンピュータ読み取り可能な媒体は、上述したようにユーザがアクセス可能な大容量ストレージに関連する媒体であり、コア内部大容量ストレージ(947)またはROM(945)などの、不揮発性コア(940)を有する特定のストレージであってもよい。本開示の様々な実施形態を実現するソフトウェアは、そのようなデバイスに記憶され、コア(940)によって実行されてもよい。コンピュータ読み取り可能な媒体は、特定のニーズに応じて、1つ以上のメモリデバイスまたはチップを含むことができる。このソフトウェアは、コア(940)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(946)に記憶されているデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を変更することとを含む、ここで説明された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えてまたは代替として、コンピュータシステムは、ロジックハードワイヤまたは他の方式で回路(例えば、加速器(944))によって具体化された結果としての機能を提供することができ、この回路は、ソフトウェアの代わりに動作しまたはソフトウェアと一緒に動作して、ここで説明された特定のプロセスまたは特定のプロセスの特定の部分を実行してもよい。適切な場合には、ソフトウェアへの参照はロジックを含むことができ、逆もまた然りである。適切な場合には、コンピュータ読み取り可能な媒体への参照は、実行のためにソフトウェアを記憶する回路(例えば、集積回路(IC)など)、実行のためにロジックを具体化する回路、またはその両方を兼ね備えることができる。実施形態は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
【0121】
本開示は、いくつかの例示的な実施形態について説明したが、本開示の範囲内にある変更、置換、および様々な均等置換が存在している。したがって、当業者は、本明細書では明示的に示されていないか、または説明されていないが、本開示の原則を具体化しているので本開示の精神および範囲内ある、様々なシステムおよび方法を設計することができる、ということを理解されたい。
図1A
図1B
図1C
図1D
図2
図3
図4
図5
図6
図7
図8
図9