(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024145685
(43)【公開日】2024-10-15
(54)【発明の名称】計算機システム及びデータの圧縮方法
(51)【国際特許分類】
H04N 19/20 20140101AFI20241004BHJP
H04N 19/115 20140101ALI20241004BHJP
H04N 19/167 20140101ALI20241004BHJP
【FI】
H04N19/20
H04N19/115
H04N19/167
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023058140
(22)【出願日】2023-03-31
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】成子 貴洋
(72)【発明者】
【氏名】圷 弘明
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MB02
5C159TA60
5C159TB18
5C159TC34
5C159TD13
(57)【要約】
【課題】送信先との間で互換性が確保された圧縮データを効率的に生成する。
【解決手段】計算機システムは、多次元データの領域毎の重要度を示す推論データを出力するモデルと、推論データに基づいて、多次元データの領域毎のデータ量を決定するためのパラメタを含む圧縮レベル情報を生成する圧縮レベル情報生成部と、圧縮レベル情報を用いた非可逆圧縮により、圧縮データの送信先との間で互換性が確保されたデータフォーマットの圧縮データを生成する圧縮器と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
計算機システムであって、
プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるインタフェースを有する、少なくとも一つの計算機を備え、
多次元データの領域毎の重要度を示す推論データを出力するモデルと、
前記推論データに基づいて、前記多次元データの領域毎のデータ量を決定するためのパラメタを含む圧縮レベル情報を生成する圧縮レベル情報生成部と、
前記圧縮レベル情報を用いた非可逆圧縮により、圧縮データの送信先との間で互換性が確保されたデータフォーマットの前記圧縮データを生成する圧縮器と、を備えることを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記圧縮レベル情報生成部は、前記推論データに基づいて、重要な領域のデータ量が多く、かつ、重要ではない領域のデータ量が少ない前記圧縮データを生成するための前記圧縮レベル情報を生成することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記モデルの計算コストが削減されるように前記多次元データを加工する前処理を実行する前処理部を有し、
前記モデルには、前記前処理部によって加工された前記多次元データが入力されることを特徴とする計算機システム。
【請求項4】
請求項3に記載の計算機システムであって、
前記多次元データを取得する取得元と、前記前処理を制御するための前処理パラメタとを対応づけたデータを管理する前処理パラメタ管理情報を保持し、
前記前処理部は、前記多次元データの前記取得元に基づいて、前記前処理パラメタ管理情報を参照して、前記前処理パラメタを取得し、
取得された前記前処理パラメタを用いて前記前処理を実行することを特徴とする計算機システム。
【請求項5】
請求項4に記載の計算機システムであって、
前記多次元データは動画像であり、
前記前処理は、前記多次元データの解像度を下げる処理であることを特徴とする計算機システム。
【請求項6】
請求項2に記載の計算機システムであって、
前記モデルは、検出対象の重要オブジェクトを指定する、画像及びアノテーションデータの組み、検出対象の重要オブジェクトを指定する自然言語、及びこれらの少なくともいずれかを変換して得たデータの少なくともいずれかから構成される重要オブジェクト記述情報を入力とし、Few-shot学習によって生成されたモデルであり、
前記多次元データの領域毎に、前記重要オブジェクトが含まれる確率を出力することを特徴とする計算機システム。
【請求項7】
請求項6に記載の計算機システムであって、
前記多次元データを取得する取得元、着目する重要オブジェクトの種別、及び、前記重要オブジェクト記述情報を関連付けた重要オブジェクト指定データを管理するための重要オブジェクト指定情報を保持し、
前記多次元データの前記取得元に対応する前記重要オブジェクト指定データに含まれる前記重要オブジェクト記述情報が、前記モデルに入力されることを特徴とする計算機システム。
【請求項8】
請求項6に記載の計算機システムであって、
前記多次元データを取得する取得元、及び着目する重要オブジェクトの種別の関連を管理するための第1の情報と、重要オブジェクトの種別、及び、前記重要オブジェクト記述情報の関連付けを管理するための第2の情報とを保持し、
前記多次元データの前記取得元に対応する前記重要オブジェクトの種別を前記第1の情報から取得し、
取得した前記重要オブジェクトの種別に対応する前記重要オブジェクト記述情報を前記第2の情報から取得し、
取得した前記重要オブジェクト記述情報が、前記モデルに入力されることを特徴とする計算機システム。
【請求項9】
請求項8に記載の計算機システムであって、
前記第1の情報を設定するためのインタフェースと、
前記第2の情報を設定するためのインタフェースと、を提供することを特徴とする計算機システム。
【請求項10】
請求項9に記載の計算機システムであって、
前記重要オブジェクト記述情報の検証を指示するためのインタフェースと、
前記重要オブジェクト記述情報を取得するためのインタフェースと、を提供することを特徴とする計算機システム。
【請求項11】
請求項5に記載の計算機システムであって、
前記圧縮レベル情報は、前記圧縮器の圧縮単位毎に、圧縮の程度を表すパラメタを含むことを特徴とする計算機システム。
【請求項12】
計算機システムが実行するデータの圧縮方法であって、
前記計算機システムは、
プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるインタフェースを有する、少なくとも一つの計算機を有し、
多次元データの領域毎の重要度を示す推論データを出力するモデルを保持し、
前記データの圧縮方法は、
前記計算機システムが、前記多次元データを前記モデルに入力することによって前記推論データを取得するステップと、
前記計算機システムが、前記推論データに基づいて、前記多次元データの領域毎のデータ量を決定するためのパラメタを含む圧縮レベル情報を生成するステップと、
前記計算機システムが、前記圧縮レベル情報を用いた非可逆圧縮により、圧縮データの送信先との間で互換性が確保されたデータフォーマットの前記圧縮データを生成するステップと、を含むデータの圧縮方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの容量を削減するための圧縮技術に関するものである。
【背景技術】
【0002】
データの蓄積及び転送に要するコスト削減の観点から、圧縮率の高い非可逆圧縮技術が求められる。さらに、これらの非可逆圧縮技術は、高圧縮率であることに加え、圧縮に要する計算コストの抑制の観点から、高効率性が求められる。また、非可逆圧縮技術によって生成される圧縮データは、互換性の観点から、一般的に普及したデータフォーマットに準拠していることが望ましい。
【0003】
非可逆圧縮技術の例として、動画データにおいては、標準化された圧縮技術である、Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)、Versatile Video Coding(VVC)等が知られている。
【0004】
また、オートエンコーダ等のDeep Neural Network(DNN)を用いることで、多次元データの領域毎の重要度に基づいて、ビット割当量を領域毎に制御し、圧縮データを生成する技術が知られている(特許文献1の段落0169から段落0178)。
【0005】
産業用途のデータにおいては、データに含まれる全ての情報を、圧縮伸長後に高い忠実度で再現する必要ない場合がある。例えば、ドローンが撮影した動画データを用いて、送電鉄塔を点検するケースでは、送電鉄塔が写る領域は高い画質が求められる一方、背景の草木等の領域は画質劣化が許容できる。特許文献1によれば、送電鉄塔等の重要なオブジェクトが存在する領域は高画質にし、その他の領域を高圧縮するようにビット割当量を制御することによって、用途に適合し、かつ、圧縮率が高いデータの生成を実現できる。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1が開示する技術は、高い圧縮率が期待できる。しかし、DNNがどのようなビット列を圧縮データとして生成するかは、学習により決定されるため、特許文献1が開示する非可逆圧縮技術によって生成される圧縮データは、AVC等の一般に普及したデータフォーマットとの互換性がないという課題(課題1)がある。
【課題を解決するための手段】
【0008】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、計算機システムであって、プロセッサ、前記プロセッサに接続される記憶装置、及び前記プロセッサに接続されるインタフェースを有する、少なくとも一つの計算機を備え、多次元データの領域毎の重要度を示す推論データを出力するモデルと、前記推論データに基づいて、前記多次元データの領域毎のデータ量を決定するためのパラメタを含む圧縮レベル情報を生成する圧縮レベル情報生成部と、前記圧縮レベル情報を用いた非可逆圧縮により、圧縮データの送信先との間で互換性が確保されたデータフォーマットの前記圧縮データを生成する圧縮器とを備える。
【発明の効果】
【0009】
本発明によれば、送信先との間で互換性が確保された圧縮データを効率的に生成することができる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】実施例1のシステムの概要を説明する図である。
【
図2】実施例1のシステムの構成の一例を示す図である。
【
図3】実施例1の前処理パラメタ管理情報のデータ構造の一例を示す図である。
【
図4】実施例1の重要オブジェクト指定情報のデータ構造の一例を示す図である。
【
図5】実施例1の圧縮部が実行する重要オブジェクト指定データの登録処理の一例を説明するフローチャートである。
【
図6】実施例1の圧縮部が提供する重要オブジェクト指定インタフェースの一例を示す図である。
【
図7】実施例1の圧縮部が実行する圧縮処理の一例を説明するフローチャートである。
【
図8】実施例1の圧縮部が実行する前処理の一例を説明するフローチャートである。
【
図9】実施例1の圧縮部が実行する圧縮レベル情報生成処理の一例を説明するフローチャートである。
【
図10】実施例2の重要オブジェクト指定情報のデータ構造の一例を示す図である。
【
図11】実施例2の圧縮部が提供する重要オブジェクト指定インタフェースの一例を示す図である。
【
図12A】実施例2の重要オブジェクト指定情報のデータ構造の別の一例を示す図である。
【
図12B】実施例2の重要オブジェクト指定情報のデータ構造の別の一例を示す図である。
【
図13A】実施例2の圧縮部が提供する重要オブジェクト指定インタフェースの別の一例を示す図である。
【
図13B】実施例2の圧縮部が提供する重要オブジェクト指定インタフェースの別の一例を示す図である。
【発明を実施するための形態】
【0011】
なお、特許文献1に記載の技術では、前述した課題の他に、次のような課題がある。(課題2)重要オブジェクトの定義及び領域毎のビット割当量は、DNNの学習パラメタとしてハードコードされているため、重要オブジェクトの定義を変更する場合、重要オブジェクトを示す教師データを含む学習データが大量に必要となり、また、再学習に時間がかかる。(課題3)DNNは、高解像度な元データの入力を受け付け、ビット割当量の決定及び圧縮データの生成を実行するため、圧縮速度が遅い。例えば、DNNとして畳み込みニューラルネットワークを用いる場合、一般に、その計算量は、入力の解像度に比例して増加する。したがって、Full-HD及び4K等の高解像度なデータを処理するためには多くの時間を要する。
【0012】
以下、3つの課題を解決する、本発明の実施例を図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0013】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【実施例0014】
まず、実施例1のシステムの概要について、
図1を用いて説明する。
図1は、実施例1のシステムの概要を説明する図である。
【0015】
実施例1のシステムは、データ生成源100、重要オブジェクト指定インタフェース101、及び圧縮部102から構成される。
【0016】
データ生成源100は、圧縮対象のデータを生成する主体であり、例えば、動画データを生成するイメージセンサである。本実施例では、データ生成源100が動画データを生成するイメージセンサである場合を例に説明する。
【0017】
なお、データ生成源100及び生成されるデータは、これに限定されるものではなく、例えば、静止画データを生成するイメージセンサ、1次元の時系列データを生成する振動センサ等であってもよい。また、データ生成源100は、センサに限られるものではなく、動画データ及び静止画データを生成する、Computer Graphics等のソフトウェアであってもよい。また、データ生成源100のデータは、例えば、動画データの各フレームに対してSemantic Segmentationの機械学習モデルを適用して得られるSegmentation Mapのように、センサ及びソフトウェア等が生成したデータを加工して得られるデータであってもよい。また、データ生成源100のデータは、記録デバイスに格納された、動画ファイル等であってもよい。また、データ生成源100は複数あってもよい。
【0018】
圧縮部102は、データ生成源100が生成したデータを圧縮するモジュールである。圧縮部102は、動画のフレーム毎に圧縮データ103を生成してもよいし、所定の数のフレーム毎に圧縮データ103を生成してもよい。圧縮部102は、動画データ前処理部120、重要オブジェクト検出器121、圧縮レベル情報生成部122、及びエンコーダ123を含む。
【0019】
圧縮部102は、圧縮対象の動画データを取得した場合、当該データのフレーム(以下、元フレーム)を動画データ前処理部120に入力する。動画データ前処理部120は、入力された元フレームに対して、ダウンスケール等の前処理を実行し、解像度等が変更された加工フレームを生成する。
【0020】
重要オブジェクト検出器121は、重要オブジェクト指定情報232(
図4を参照)に格納される重要オブジェクト指定データと、動画データ前処理部120によって生成された加工フレームとを入力として、加工フレーム内の各ピクセルについて、ピクセルが重要オブジェクトである確率を算出する。
【0021】
重要オブジェクト検出器121は、例えば、Few-shot学習、又は、Zero-shot学習の技術を用いた、Semantic Segmentationの機械学習モデルである。
【0022】
圧縮レベル情報生成部122は、重要オブジェクト検出器121の処理結果に基づいて、エンコーダ123の圧縮単位毎に、圧縮レベル情報を計算する。
【0023】
エンコーダ123は、圧縮レベル情報生成部122によって生成された圧縮レベル情報に基づいて元フレームを圧縮し、圧縮データ103を生成する。エンコーダ123は、例えば、AVC等の標準化された動画コーデックのエンコーダである。なお、エンコーダ123は、前述したソフトウェアエンコーダに限定されず、HEVCのエンコーダであってもよいし、ハードウェアエンコーダであってもよい。
【0024】
ここで、圧縮レベル情報は、領域毎のビット割当量を制御するエンコーダ123のパラメタである。エンコーダ123がAVCに準拠したエンコーダである場合、エンコーダ123の圧縮単位はマクロブロックであり、圧縮レベル情報は、マクロブロック毎のQuantization Parameterの値(QP値)、マクロブロック毎のQP値の差分情報、マクロブロック毎の画質の強調度合いを指定する情報等である。この場合、圧縮レベル情報生成部122は、例えば、重要オブジェクト検出器121の出力に対して、マクロブロック毎に確率の最大値を計算し、最大値が所定の閾値よりも大きいマクロブロックに対して所定のQP値を割り当て、その他のマクロブロックに対して相対的に大きい所定のQP値を割り当てたQP値の空間分布情報を、圧縮レベル情報として生成する。なお、前述の圧縮レベル情報は一例であって、これらに限定されるものではない。
【0025】
重要オブジェクト指定情報232は、データ生成源100及び重要オブジェクトの種類の組合せ毎に、重要オブジェクトを含む画像及びアノテーションデータのペアを管理する情報である。
図1に示す重要オブジェクト指定情報232には、送電鉄塔がデータ生成源Aの重要オブジェクトとして指定された重要オブジェクト指定データが格納されている。当該重要オブジェクト指定データには、データ生成源Aの識別子及びユーザが指定した送電鉄塔の種別を示す識別子に対して、送電鉄塔が写る画像と、当該画像内の送電鉄塔が存在する領域を表すアノテーションデータと対応づけられている。1つのデータ生成源100に対して複数の重要オブジェクトが指定されていてもよいし、1つの重要オブジェクトを定義する複数の重要オブジェクト指定データが登録されてもよい。重要オブジェクト指定データは、重要オブジェクト指定インタフェース101を介して、ユーザが設定する。
【0026】
図2を用いて実施例1のシステムの構成を説明する。
図2は、実施例1のシステムの構成の一例を示す図である。
【0027】
計算機200は、圧縮部102を実現するハードウェアであり、例えば、演算装置210、スイッチ211、メモリ212、フロントエンドインタフェース213、バックエンドインタフェース214を備える。
【0028】
フロントエンドインタフェース213は、データ生成源100及び管理端末201と接続するためのインタフェースである。バックエンドインタフェース214は、ストレージ装置202及びネットワーク203と接続するためのインタフェースである。
【0029】
演算装置210は、計算機200全体を制御する装置であり、例えば、CPU (Central Processing Unit)のような汎用演算装置、GPU(Graphical Processing Unit)及びFPGA (Field Programmable Gate Array)等のようなアクセラレータ、又はHEVC等の標準コーデックのハードウェアエンコーダ/デコーダであり、前述したものを組み合わせもよい。演算装置210は、スイッチ211を介して、メモリ212等と接続する。
【0030】
メモリ212は、演算装置210が実行するプログラム及びプログラムが使用する情報を格納する。また、メモリ212はワークエリアとしても用いられる。実施例1のメモリ212には、圧縮部102を実現する圧縮プログラム230、前処理パラメタ管理情報231、及び重要オブジェクト指定情報232を格納する。なお、メモリ212には、OS(Operating System)等のプログラム及び情報が格納されてもよい。
【0031】
ストレージ装置202は、Hard Disk Drive (HDD)及びSolid State Drive (SSD)により構成されたブロックデバイスでもよいし、ファイルストレージでもよいし、コンテンツストレージでもよいし、ストレージシステム上に構築されたボリュームでもよいし、その他、データを蓄積する任意の方法で実現されてもよい。また、圧縮データを格納する必要がない場合、ストレージ装置202は無くてもよい。
【0032】
ネットワーク203は、Local Area Network (LAN)及びインターネット等の通信網である。圧縮部102は、圧縮データ103を、ネットワーク106を介して他の装置に送信できる。なお、圧縮データ103を他の装置に送信する必要がない場合、ネットワーク203は無くてもよい。
【0033】
なお、IC(Integrated Circuit)等のハードウェアを相互に接続したハードウェアを用いて圧縮部102を実現してもよいし、圧縮部102の機能のいくつかが、ASIC (Application Specific Integrated Circuit)及びFPGAとして、1つの半導体素子を用いて実現してもよい。また、仮想化技術によって実現されるVM(Virtual Machine)を用いて圧縮部102を実現してもよい。また、ここに示した以外の構成要素が追加されてもよい。
【0034】
なお、データ生成源100、管理端末201、計算機200、及びストレージ装置202は、異なるハードウェア装置あってもよいし、同一のコンピュータで動作するVMであってもよいし、同一のOS(Operating System)上で動作する異なるコンテナであってもよいし、同一のOS上で動作するアプリケーションであってもよい。また、複数の実装形態を組み合わせであってもよい。例えば、データ生成源100はイメージセンサであり、圧縮部102はイメージセンサに接続され、演算装置210を含むエッジデバイスであり、管理端末201はユーザが操作可能な端末であり、ストレージ装置202はHDDである。
【0035】
図3は、実施例1の前処理パラメタ管理情報231のデータ構造の一例を示す図である。
【0036】
前処理パラメタ管理情報231は、例えば、テーブル形式のデータであり、データ生成源301、ダウンスケール係数302、及びダウンスケールアルゴリズム303を含むエントリを格納する。なお、エントリに含まれるフィールドは一例であってこれに限定されない。
【0037】
データ生成源301は、データ生成源100の識別子を格納するフィールドである。データ生成源100の識別子は、例えば、ユーザによって命名された文字列、データ生成源100に割り当てられたMedia Access Control(MAC)アドレス若しくはInternet Protocol(IP)アドレス、又は、データ生成源100を識別可能な任意の符号である。なお、データ生成源100が自明である場合、エントリにはデータ生成源301が含まれなくてもよい。
【0038】
ダウンスケール係数302及びダウンスケールアルゴリズム303は、元フレームの変換を制御するためのパラメタを格納するフィールドである。
【0039】
図3に示す前処理パラメタ管理情報231には、Bilinearアルゴリズムを用いて、データ生成源Aの元フレームの縦横の長さを1/16に縮小する前処理を定義するエントリが設定されている。
【0040】
なお、前処理パラメタ管理情報231は、管理端末201を介して、ユーザが設定してもよいし、圧縮部102の起動時又は新たなデータ生成源100の追加時に、演算装置210が自動的に設定してもよいし、その他の方法で設定してもよい。例えば、データ生成源100の追加時に、演算装置210が、エンコーダ123のコーデックを確認し、確認結果に基づいて、ダウンスケール係数を決定することができる。例えば、エンコーダ123のコーデックがAVCであり、16ピクセル×16ピクセルのマクロブロック単位で、圧縮レベル情報をQP値により指定できる場合、エンコーダ123がAVCのエンコーダであるという情報をもとに、演算装置210はダウンスケール係数302に1/16を設定することができる。
【0041】
なお、ダウンスケール係数は、大きいほど、処理時間が増加するが、重要オブジェクト検出器121の精度は改善するというトレードオフが存在するため、マクロブロックの一片の長さの逆数とは異なる値を設定してもよい。また、ダウンスケール係数は、定数である必要はなく、フレーム毎に動的に変更してもよい。例えば、まずはダウンスケール係数が1(つまり、解像度は変更しない)で処理を行い、重要オブジェクト検出器121で検出された重要オブジェクトの面積が大きければ、重要オブジェクトは比較的大きいサイズで写っており、ダウンスケールしても検出に大きな影響がないと判定して、次のフレームではダウンスケール係数を1/2に減少させる、といった方法で、最小でマクロブロックの一片の長さの逆数になるまで、ダウンスケール係数を動的に調整してもよい。また、前記の調整処理を、所定のフレーム間隔で再実施してもよい。また、動的に調整する際の値のレンジを、前処理パラメタ管理情報231で管理してもよい。
【0042】
なお、前処理パラメタ管理情報231の各種フィールドの設定方法はこれに限られるものではない。
【0043】
なお、前処理パラメタ管理情報231は、フレームの変換に関わるパラメタを管理できるデータ構造であればよく、XML(Extensible Markup Language)、YAML(YAML Ain’t a Markup Language)、ハッシュテーブル、及び木構造等、テーブル以外のデータ構造でもよい。
【0044】
図4は、実施例1の重要オブジェクト指定情報232のデータ構造の一例を示す図である。
【0045】
重要オブジェクト指定情報232は、例えば、テーブル形式のデータであり、データ生成源401、オブジェクト種類402、画像403、及びアノテーション404を含むエントリを格納する。なお、エントリに含まれるフィールドは一例であってこれに限定されない。
【0046】
データ生成源401は、データ生成源100の識別子を格納するフィールドであり、データ生成源301と同一のものである。
【0047】
オブジェクト種類402は、重要オブジェクトの種類を表す識別子を格納するフィールドである。識別子は、例えば、ユーザが命名した文字列であるが、これに限られるものではない。また、1種類の重要オブジェクトに対して、1つの重要オブジェクト指定データを設定する場合、エントリにオブジェクト種類402が含まれなくてもよい。
【0048】
画像403及びアノテーション404は、重要オブジェクトを指定するための画像及びアノテーションデータを格納するフィールドである。例えば、画像403には、重要オブジェクトが含まれる画像が格納され、アノテーション404には、画像の中の重要オブジェクトが存在する領域を示すモノクロ画像(アノテーションデータ)が格納される。なお、アノテーションデータは前述したものに限定されない。例えば、重要オブジェクトが存在する領域を表すBounding Boxの座標及びサイズを格納したXMLデータであってもよいし、その他任意のデータフォーマットのデータでもよい。
【0049】
ここで、重要オブジェクト指定情報232に格納される情報の具体例を
図4を用いて説明する。
図4に示す重要オブジェクト指定情報232には、識別子「A」が割り当てられたデータ生成源100に対して、2種類の重要オブジェクト「obj1」、「obj2」に関する重要オブジェクト指定データが格納される。識別子「obj1」が割り当てられた重要オブジェクトは、送電鉄塔であり、2つの重要オブジェクト指定データ411、412が設定される。重要オブジェクト指定データ411、412の画像403には、送電鉄塔が含まれる画像が格納され、アノテーション404には、画像の中の送電鉄塔が存在する領域を表すモノクロ画像が格納される。識別子「obj2」が割り当てられた重要オブジェクトは、風力発電機であり、1つの重要オブジェクト指定データ413が設定される。重要オブジェクト指定データ413の画像403には風力発電機を含む画像が格納され、アノテーション404には画像の中の風力発電機が存在する領域を表すモノクロ画像が格納される。
【0050】
なお、重要オブジェクト指定情報232のデータ構造は、テーブル形式のデータに限定されず、XML、YAML、ハッシュテーブル、及び木構造等、テーブル以外のデータ構造でもよい。
【0051】
なお、重要オブジェクト指定情報232は、データ生成源及びオブジェクト種類の対応付けを管理する情報と、オブジェクト種類と、画像及びアノテーションデータとの対応付けを管理する情報とに分けてもよい。このように管理することによって、重要オブジェクトの定義情報を、複数のデータ生成源100で共有することができる。
【0052】
次に、
図5から
図9を用いて圧縮部102が実行する処理を説明する。
【0053】
図5は、実施例1の圧縮部102が実行する重要オブジェクト指定データの登録処理の一例を説明するフローチャートである。
図6は、実施例1の圧縮部102が提供する重要オブジェクト指定インタフェース101の一例を示す図である。
【0054】
圧縮部102として機能する演算装置210は、フロントエンドインタフェース213を介して、管理端末201からリクエストを受信した場合、以下で説明する処理を開始する。なお、処理の実行契機は、前述したものに限定されず、計算機200の起動等でもよい。
【0055】
演算装置210は、フロントエンドインタフェース213を介して、管理端末201に、重要オブジェクト指定データを設定するための重要オブジェクト指定インタフェース101を提供する(ステップS501)。ここで、
図6を用いて重要オブジェクト指定インタフェース101について説明する。
【0056】
重要オブジェクト指定インタフェース101は、管理端末201の表示装置(図示省略)に表示される。ユーザは、管理端末201の入力装置(図示省略)を用いて、重要オブジェクト指定インタフェース101を操作する。
【0057】
重要オブジェクト指定インタフェース101にはテーブル600が表示される。テーブル600は、データ生成源611、オブジェクト種類612、画像613、及びアノテーション614を含むエントリ(重要オブジェクト指定データ)の確認及び登録を行うためのテーブルである。データ生成源611、オブジェクト種類612、画像613、及びアノテーション614は、データ生成源401、オブジェクト種類402、画像403、及びアノテーション404と同一のフィールドである。
【0058】
なお、テーブル600には、重要オブジェクト指定情報232に登録されている重要オブジェクト指定データが表示されてもよい。
図6のエントリ621、622、623は、重要オブジェクト指定情報232に登録されている重要オブジェクト指定データである。
【0059】
削除ボタン601は、テーブル600からエントリを削除するための操作ボタンである。ユーザが削除ボタン601を操作した場合、重要オブジェクト指定情報232から、当該エントリに対応する重要オブジェクト指定データが削除される。なお、重要オブジェクト指定データの削除は、削除ボタン601の操作以外の操作によって削除されてよい。
【0060】
追加ボタン602は、テーブル600にエントリを追加するための操作ボタンである。なお、末尾のエントリに値が設定された後、自動的にエントリが追加されるようにしてもよい。この場合、追加ボタン602は不要である。
【0061】
エントリ624は、追加ボタン602を操作することによって追加されたエントリである。重要オブジェクトの識別子は、ユーザが直接入力してもよいし、ドロップダウンリストを表示し、ユーザが選択できるようにしてもよい。ドロップダウンリストには、既存のオブジェクト種類の識別子と「新規」とが含まれる。「新規」が選択された場合、演算装置210が自動的に識別子を生成し、割り当てる。画像は、ユーザが直接ファイルパスを入力してもよいし、ユーザにフィールドに表示されるBrowsボタン等の操作ボタンを操作させ、選択させてもよい。アノテーションデータは、ユーザが予め生成したアノテーションデータを直接入力してもよいし、ユーザにフィールドに表示されるBrowsボタン等の操作ボタンを操作させ、選択させてもよい。また、アノテーション614がクリックされた場合に、管理端末201がアノテーションデータの描写画面を表示し、当該画面上で、重要オブジェクトが存在する領域を表すアノテーションデータをユーザに描写させてもよい。
【0062】
設定ボタン603は、テーブル600の内容を重要オブジェクト指定情報232に登録するための操作ボタンである。ユーザが設定ボタン603を操作した場合、管理端末201は、テーブル600を含む登録要求を圧縮部102に送信する。圧縮部102は、フロントエンドインタフェース213を介して登録要求を受信し、テーブル600の内容にしたがって重要オブジェクト指定情報232を更新する。
【0063】
検証ボタン604は、テーブル600の内容を検証するための操作ボタンである。ユーザが検証ボタン604を操作した場合、管理端末201は、テーブル600の検証要求を圧縮部102に送信する。圧縮部102は、フロントエンドインタフェース213を介して検証要求を受信し、テーブル600の内容を検証し、結果を管理端末201に応答する。管理端末201は、結果をフィールド605に表示する。例えば、圧縮部102は、画像613を重要オブジェクト検出器121で推論し、その結果の、アノテーション614に対する誤差を評価することで、テーブル600の内容が十分であるかを検証し、結果をOK又はNGの2値で応答することができる。ただし、検証処理の具体的内容はこれに限られるものではない。また、検証処理は管理端末201で実行されてもよい。また、検証結果はOK又はNGの2値に限られるものではなく、画像613を重要オブジェクト検出器121で推論した結果を可視化した画像をフィールド605に表示してもよいし、その他任意の情報であってよい。
【0064】
以上が重要オブジェクト指定インタフェース101の説明である。なお、重要オブジェクト指定インタフェース101は、
図6に示すものに限定されず。図示しない他の情報が表示されてもよいし、異なる操作方法でもよいし、デザインが異なってもよい。
図5の説明に戻る。
【0065】
演算装置210は、重要オブジェクト指定インタフェース101を介して入力された重要オブジェクト指定データを取得し(ステップS502)、当該データに基づいて重要オブジェクト指定情報232を更新する(ステップS503)。その後、演算装置210は重要オブジェクト指定データの登録処理を終了する。
【0066】
図7は、実施例1の圧縮部102が実行する圧縮処理の一例を説明するフローチャートである。
【0067】
圧縮部102として機能する演算装置210は、例えば、フロントエンドインタフェース213を介して、新たな元フレームを受信した場合、以下で説明する圧縮処理を開始する。
【0068】
演算装置210は、取得した元フレームに対して前処理を実行する(ステップS701)。前処理の詳細は
図8を用いて説明する。前処理では、例えば、ダウンスケール等の前処理を実行することによって加工フレームが生成される。
【0069】
演算装置210は、重要オブジェクト指定情報232から、元フレームのデータ生成源100に関連する重要オブジェクト指定データを抽出する(ステップS702)。
【0070】
例えば、
図4に示すデータ構造の重要オブジェクト指定情報232の場合、演算装置210は、データ生成源401に、元フレームのデータ生成源100の識別子が格納されるエントリ(重要オブジェクト指定データ)を抽出する。データ生成源100の識別子が「A」である場合、エントリ411、412、413が抽出される。
【0071】
演算装置210は、重要オブジェクトのループ処理を開始する(ステップS703)。具体的には、演算装置210は、ステップS702で抽出された重要オブジェクト指定データに基づいて、重要オブジェクトの種類を特定し、特定された重要オブジェクトの種類の中から一つの種類のオブジェクトを選択する。例えば、ステップS702において、エントリ411、412、413が抽出された場合、演算装置210は、「obj1」及び「obj2」の中から1種類を選択する。この場合、2回のループ処理が実行される。
【0072】
演算装置210は、選択された重要オブジェクトの種別に関連する重要オブジェクト指定データから画像及びアノテーションデータを取得する(ステップS704)。「obj1」のループ処理の場合、演算装置210は、エントリ411、412の各々から画像及びアノテーションデータを取得する。
【0073】
演算装置210は、取得した画像及びアノテーションデータの組みをサポートセットとし、加工フレームをクエリとして重要オブジェクト検出器121の推論を実行する(ステップS705)。
【0074】
重要オブジェクト検出器121は、Few-shot学習の技術を活用したSemantic Segmentationの深層学習モデルである場合、クエリ画像とサポートセットを入力として、クエリ画像の各領域について、サポートセットにより指定された重要オブジェクトが存在する確率を表す2次元テンソルを出力する。サポートセットには、画像及びアノテーションデータの組みが一つ以上含まれる。サポートセットに含まれる画像及びアノテーションデータの組みの数が多い場合、検出精度が高い。
【0075】
なお、重要オブジェクト検出器121はこれに限定させるものではなく、例えば、Few-shot学習の技術を活用した、Object detectionの深層学習モデルでもよい。
【0076】
また、重要オブジェクト検出器121の全体若しくは一部、又は、重要オブジェクト検出器121に追加した処理に対して、Fine-tuning等の再学習処理を行ってもよい。例えば、推論処理(ステップS705)の直前のステップや、重要オブジェクト指定データの登録処理などにおいて、サポートセットを教師データとして重要オブジェクト検出器121のパラメタを再学習することができる。なお、Few-shot学習の技術を活用したSemantic Segmentationの深層学習モデルを再学習することで、かかる再学習処理と、サポートセットによる指定とを組み合わせてもよい。また、再学習したパラメタを重要オブジェクト指定データとして管理してもよい。
【0077】
ステップS706では、特定された全ての種類の重要オブジェクトについて処理が完了したか否かが判定される。特定された全ての種類の重要オブジェクトについて処理が完了していない場合、演算装置210はステップS703に戻り、同様の処理を実行する。
【0078】
特定された全ての種類の重要オブジェクトについて処理が完了した場合、演算装置210は、各種重要オブジェクトの推論結果を用いて、圧縮レベル情報生成処理を実行する(ステップS707)。圧縮レベル情報生成処理の詳細は
図9を用いて説明する。
【0079】
演算装置210は、元フレーム及び圧縮レベル情報に基づいて圧縮データを生成する(ステップS708)。その後、演算装置210は、バックエンドインタフェース214を介して、ストレージ装置202又はネットワーク203を介して接続される装置に送信し、処理を終了する。
【0080】
図8は、実施例1の圧縮部102が実行する前処理の一例を説明するフローチャートである。
【0081】
演算装置210は、前処理パラメタ管理情報231から、受信した元フレームのデータ生成源100に対応するエントリに格納されるパラメタを取得する(ステップS801)。
【0082】
演算装置210は、取得したパラメタに基づいて、元フレームを加工フレームに変換し(ステップS802)、前処理を終了する。
【0083】
例えば、
図4に示す前処理パラメタ管理情報231の場合、データ生成源Aから受信したフレームは、Bilinearアルゴリズムに基づいて、縦横の長さが1/16に縮小される。
【0084】
図9は、実施例1の圧縮部102が実行する圧縮レベル情報生成処理の一例を説明するフローチャートである。
【0085】
演算装置210は、重要オブジェクト検出器121による各種重要オブジェクトの推論結果に対して、要素毎に最大値を計算する(ステップS901)。
【0086】
例えば、
図3に示す前処理パラメタ管理情報231と、
図4に示す重要オブジェクト指定情報232の場合、重要オブジェクト検出器121は、各領域が重要オブジェクトである確率を表す2次元テンソルを、元フレームに対して縦横の長さが1/16となる解像度で出力する。確率の2次元テンソルは、「obj1」及び 「obj2」それぞれについて算出されるため、ステップS901では、これらの要素毎の最大値をとることで、2次元テンソルの各要素が表す領域について、それが1以上の重要オブジェクトのいずれかである確率を求める。なお、複数のオブジェクトに対する確率の2次元テンソルを、1つの2次元テンソルに集約するための演算は、最大値の計算に限られるものではなく、加算等であってもよい。
【0087】
演算装置210は、エンコーダ123の圧縮単位毎に、2次元テンソルの最大値を算出し、新たな2次元テンソルを算出する(ステップS902)。
【0088】
例えば、
図3に示す前処理パラメタ管理情報231、
図4に示す重要オブジェクト指定情報232、エンコーダ123がマクロブロックサイズ16×16のAVCである場合、ステップS901で算出した2次元テンソルは、元フレームにおける、AVCのマクロブロックの個数に1対1対応する解像度となっているため、ステップS902では単なる恒等変換となる。例えば、前処理パラメタ管理情報231のダウンスケール係数302が1/4である場合、演算装置210は、4×4のタイル毎に、ステップS901で算出した2次元テンソルに対して、Max poolingを適用することで、2次元テンソルの各要素が、圧縮単位であるマクロブロックに1対1対応するように変換する。なお、ステップS902における集約処理は、最大値の計算に限られるものではなく、平均値の計算等であってもよい。
【0089】
演算装置210は、ステップS902で算出した2次元テンソルに基づいて、エンコーダ123の圧縮レベル情報を生成する(ステップS903)。
【0090】
例えば、エンコーダ123がAVCのエンコーダである場合、演算装置210は、2次元テンソルの各要素について、その値が所定の閾値(例えば、2次元テンソルの各要素値域が0-1の場合、0.5を閾値とする)を下回る場合、その要素に対応するマクロブロックのQP値として所定の値を割り当て、閾値以上である場合、その要素に対応するマクロブロックのQP値として相対的に小さい所定の値を割り当てた、QP値のマップを生成する。なお、閾値及び割り当てるQP値は、管理端末201を介して、ユーザが指定してもよいし、圧縮レベル情報生成部122に予め設定されてもよいし、ユーザが指定した目標の画質及びビットレートとなるように、演算装置210が調整した値を用いてもよい。また、これらの値は、データ生成源100及びオブジェクト毎に異なる値でもよい。
【0091】
なお、ステップS902で算出した2次元テンソルを圧縮レベル情報に変換する方法は、これに限られるものではない。例えば、重要オブジェクトが存在する領域の画質に関する、レート歪み性能が改善するように、圧縮単位毎にQP値及び閾値を制御してもよい。以下に、かかる制御を二例を説明する。
【0092】
まず、第1の例を説明する。まず、マクロブロック毎にQP値を変えた場合のレート歪み曲線を得る。これは、実際にマクロブロック毎にQP値を振って、レートと歪みを評価することで得てもよいし、深層学習等を用いて、予測した値であってもよい。次に、第1の閾値(例えば0.5)により、ステップS902で算出した2次元テンソルをもとに、各マクロブロックを重要オブジェクトに含まれるものと、それ以外に分類する。重要オブジェクトと判定されなかったマクロブロックのうち、レート歪み性能が平均よりも高く、かつ、ステップS902で算出した2次元テンソルの値が、第1の閾値よりも小さい第2の閾値(例えば、0.2)よりも大きいマクロブロックについては、重要オブジェクトに含まれるマクロブロックとして再判定する。つまり、レート歪み特性が良く、画質を上げることによるレートの増加が小さいマクロブロックは、より緩い条件で重要オブジェクトに含まれると判定する。この判定の結果、重要オブジェクトに含まれないと判定されたマクロブロックについては、所定のQP値を設定する。このQP値は、固定値であってもよいし、Constant Rate Factor及びConstant Bit Rate等の設定値に基づいて、エンコーダ123がマクロブロック毎に異なる値を割り当ててもよい。重要オブジェクトに含まれると判定されたマクロブロックについては、まず、重要領域と判定されなかったマクロブロックに割り当てた値よりも小さい、所定のQP値を割り当てる。このQPを割り当てた結果、所定の歪みの目標値よりも、歪みが大きく、かつ、レート歪み性能が良いマクロブロックについては、QP値をさらに小さくすることにより、歪みを目標以下に減少させる。一方、このQPを割り当てた際に、所定の歪みの目標値よりも、歪みが小さく、かつ、レート歪み性能が悪いマクロブロックについては、QP値を大きくすることにより、歪みを目標以下に抑えつつ、レートを改善する。これらの制御により、レート歪みが良いマクロブロックにおいて、わずかなレートの増加で歪みを削減しつつ、レート歪みが悪いマクロブロックにおいて、過剰に小さくなっていた歪みを目標以下の範囲で増やして、レートの削減を実現できる。結果として、動画データ全体では、重要オブジェクトの画質に関するレート歪み性能を改善できる。
【0093】
次に、第2の例を説明する。第2の例では、圧縮対象の動画データの一部のフレームを画像613として利用する場合を仮定する。まず、ステップS902で算出した2次元テンソルの各要素について、その値が所定の閾値より大きい場合に、その要素に対応するマクロブロックに割り当てるQP値を振って、当該動画データを圧縮する。次に、圧縮された動画データについて、アノテーション614で示された、オブジェクトの領域の画質を評価する。次に、圧縮された当該動画データのレートを評価する。このようにして得た、各QP値における、レートとオブジェクトの領域の画質をもとに、レート歪み性能が最もよくなるQP値を選択する。
【0094】
なお、圧縮レベル情報生成処理の具体例を説明したが、処理内容はこれらに限定されるものではなく、各種重要オブジェクトの重要オブジェクト検出器121の推論結果を用いて、圧縮レベル情報を生成できる処理であれば、どのような処理であってもよい。
【0095】
以上のように、実施例1によれば、標準的なコーデックを用いているため互換性がある圧縮データを高速に生成できる。Few-shot学習で生成した検出器(モデル)を用いることによって、重要オブジェクトの定義の変更に伴う学習データの準備及び再学習が必要なくなる。また、重要オブジェクト検出器121は、重要オブジェクトの検出のみを行うため、従来技術のDNNより高速に学習ができる。また、解像度を下げる等の前処理を実行した加工フレームを重要オブジェクト検出器121に入力することによって、処理の高速化が可能となる。
実施例1では、画像とアノテーションデータの組みをオブジェクト指定データとしていたが、実施例2では、単語又は文書等の自然言語をオブジェクト指定データとする。以下、実施例1との差異を中心に実施例2について説明する。
実施例2のシステムの構成は実施例1と同一である。実施例2の圧縮部102の機能構成は実施例1と同一である。実施例2の圧縮部102を実現するハードウェア構成は実施例1と同一である。実施例2の前処理パラメタ管理情報231は実施例1と同一である。
実施例2では、ユーザが、管理端末201に対して提供される重要オブジェクト指定インタフェース101を用いて、自然言語で重要オブジェクトを指定する。例えば、送電鉄塔を重要オブジェクトとして指定する場合、ユーザは文字列「送電鉄塔」を入力する。これによって、圧縮部102は、送電鉄塔を重要オブジェクトとして元フレームを圧縮する。
なお、重要オブジェクトの指定方法としては、「送電鉄塔」のように1つの単語を入力してもよいし、「錆びた送電鉄塔」のように、2つ以上の単語からなる文章を入力してもよい。また、ユーザが入力する自然言語は、英語及び日本語、どのような言語であってもよい。
重要オブジェクト指定情報232は、例えば、テーブル形式のデータであり、データ生成源1001及び重要オブジェクト1002を含むエントリを格納する。なお、エントリに含まれるフィールドは一例であってこれに限定されない。
データ生成源1001は、データ生成源100の識別子を格納するフィールドであり、データ生成源301と同一のものである。重要オブジェクト1002は、重要オブジェクトを指定する自然言語を格納するフィールドである。
実施例2の重要オブジェクト指定情報232のエントリは、オブジェクト種類のフィールドが省略されている。これは、1つ以上の画像とアノテーションデータの組でオブジェクト指定データを構成する実施例1と異なり、自然言語でオブジェクトを指定する実施例2では、1種類のオブジェクトに対して、2つ以上のオブジェクト指定データは不要であるという考えに基づく。なお、本発明はこれに限定されるものではなく、実施例1と同様に、1種類のオブジェクトに対して、異なる自然言語を含む2つ以上のオブジェクト指定データを登録してもよい。
実施例2の重要オブジェクト指定インタフェース101は、実施例1と同様に、重要オブジェクト指定データの確認/登録を行うためのテーブル1100が表示される。テーブル1100は、データ生成源1111及び重要オブジェクト1112を含むエントリ(重要オブジェクト指定データ)を格納する。
データ生成源1111はデータ生成源611と同一のフィールドである。重要オブジェクト1112は、重要オブジェクトを指定するための自然言語を格納するフィールドである。
削除ボタン1101、追加ボタン1102、設定ボタン1103、及び検証ボタン1104は、削除ボタン601、追加ボタン602、設定ボタン603、及び検証ボタン604と同一の操作ボタンである。
実施例2の圧縮処理の流れは実施例1と同一であるが、一部の処理内容が異なる。ステップS705では、演算装置210は、重要オブジェクト指定データに含まれる自然言語を重要オブジェクト検出器121の入力として、推論を行う。
この場合の重要オブジェクト検出器121として、例えば、テキストにより対象のオブジェクトを指定できる、Semantic Segmentationタスクのニューラルネットワークモデルを用いることができる。そのようなニューラルネットワークモデルの中には、例えば、カンマ区切りで複数の単語を入力することにより、複数種類のオブジェクトのSemantic Segmentationを一度の推論で実行できるものがある。このような場合、ステップS703-ステップS706において、オブジェクト毎にループせずに、元フレームのデータ生成源に紐づくオブジェクトを、例えばカンマ区切りで連接した文字列を生成し、当該文字列と加工フレームを、かかる重要オブジェクト検出器121の入力としてもよい。また、ステップS705はこれに限られるものではなく、例えば、Text-to-Image Translationの深層学習モデルにより、自然言語で説明された画像とそのアノテーションデータを生成し、それをサポートセットとして、実施例1に記載のような、Few-shot学習を用いたSemantic Segmentationの深層学習モデルに入力することで、重要オブジェクトを指定してもよい。また、テキストにより対象のオブジェクトを指定できる、Semantic Segmentationタスクのニューラルネットワークモデルを、圧縮対象の動画の一部のフレームを入力として推論し、その結果をアノテーションデータ、当該フレームを画像とするサポートセットを、実施例1に記載のような、Few-shot学習を用いたSemantic Segmentationの深層学習モデルに入力することで、重要オブジェクトを指定してもよい。
なお、実施例1と実施例2を組み合わせてもよい。つまり、重要オブジェクト指定インタフェース101を介して、ユーザが、画像及びアノテーションデータの組、又は、自然言語を含む重要オブジェクト指定データを登録してもよい。この場合、ステップS705では、重要オブジェクト指定情報232に格納された重要オブジェクト指定データの種類に応じて、深層学習モデルが使い分けられる。また、画像及びアノテーションデータの組、自然言語、又はその両方を変換したデータを、重要オブジェクト指定情報232として管理してもよい。例えば、かかる変換データは、Few-shot学習を用いたSemantic segmentationモデルにおいて、サポートセットに対して行われる処理を予め実行して得たテンソルデータである。以下、画像及びアノテーションデータの組、自然言語、かかる変換データなどの、オブジェクトを記述する情報を、重要オブジェクト記述情報と呼ぶ。
第1の情報1200は、データ生成源1201及びオブジェクト種類1202を含むエントリを格納する。第2の情報1210は、オブジェクト種類1211及び重要オブジェクト記述情報1212を含むエントリを格納する。重要オブジェクト記述情報1212は、サポートセット1221、自然言語1222、及び変換データ1223を含む。このように管理することによって、重要オブジェクトの定義情報を、複数のデータ生成源100で共有することができる。
第1のインタフェース1300は、データ生成源1311及びオブジェクト種類1312を入力するテーブル1301を含む。削除ボタン1302、追加ボタン1303、及び設定ボタン1304は、削除ボタン601、追加ボタン602、及び設定ボタン603と同一の操作ボタンである。第1のインタフェース1300は、圧縮部102がデータ生成源100からデータを受信するインタフェースに含めてもよい。つまり、データ生成源100から圧縮部102へのデータの圧縮要求に、その生成データに対応するオブジェクト種類の情報を含めてもよい。
第2のインタフェース1330は、オブジェクト種類1341、画像1342、アノテーション1343、及び自然言語1344を入力するテーブル1331を含む。削除ボタン1332、追加ボタン1333、設定ボタン1334、及び検証ボタン1335は、削除ボタン601、追加ボタン602、設定ボタン603、及び検証ボタン604と同一の操作ボタンである。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。