(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-04
(45)【発行日】2023-08-15
(54)【発明の名称】画像処理システム、方法、及びプログラム
(51)【国際特許分類】
G06T 15/00 20110101AFI20230807BHJP
G06F 9/50 20060101ALI20230807BHJP
G06N 3/08 20230101ALI20230807BHJP
【FI】
G06T15/00
G06F9/50 120A
G06N3/08
(21)【出願番号】P 2021119564
(22)【出願日】2021-07-20
【審査請求日】2023-01-30
【新規性喪失の例外の表示】特許法第30条第2項適用 1.公開事実 (1)ウェブサイトの掲載日 令和2年9月4日((2)(ア))、令和9月17日((2)(イ)) (2)ウェブサイトのアドレス (ア)https://cedec.cesa.or.jp/2020/session/detail/s5e8329edf1425.html (イ)https://www.siliconstudio.co.jp/rd/ (3)公開者 株式会社シリコンスタジオ (4)公開された発明の内容 添付資料のとおり。(2)(ア)のウェブサイトにおいては、添付資料を使ってオンラインセッションを実施した。また、(2)(イ)のウェブサイトにおいては、添付資料をダウンロードできるようにリンクした。
【早期審査対象出願】
(73)【特許権者】
【識別番号】300025583
【氏名又は名称】シリコンスタジオ株式会社
(74)【代理人】
【識別番号】100092783
【氏名又は名称】小林 浩
(74)【代理人】
【識別番号】100136744
【氏名又は名称】中村 佳正
(72)【発明者】
【氏名】フレドリック・オット・マックス・フォルケ・ヘルツベルユ
【審査官】中田 剛史
(56)【参考文献】
【文献】国際公開第2020/172043(WO,A2)
【文献】特表2020-537271(JP,A)
【文献】特許第6833150(JP,B1)
【文献】国際公開第2020/231005(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
G06F 9/50
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
画面フレーム中のメッシュ情報及びライティング情報をニューラルネットワークに適応できるように構造化された入力フォーマットに変換するための変換ステップと、
タイル毎に学習させた前記ニューラルネットワークを使い分けるためのハッシュ分業を行わせるステップとを含み、
前記ハッシュ分業には、
前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算する工程と、
前記ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルの前記ニューラルネットワークにおける重みを選択して読み込む工程とが含まれ、
前記ハッシュ分業による出力は、前記画面フレーム中のタイルに対応する前記ニューラルネットワークの重みによって推定される推定値である
ことを特徴とするコンピュータによる画像処理方法。
【請求項2】
前記コンピュータは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、前記同期グループが共有できるオンチップメモリとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの重みを前記オンチップメモリ上に読み込む
請求項1に記載の方法。
【請求項3】
前記コンピュータは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、レジスタとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの中間レイヤーの出力を前記レジスタに格納する
請求項1に記載の方法。
【請求項4】
前記タイル毎のニューラルネットワークを学習させる工程において、前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算し、前記ハッシュ値に対応するタイルの教師データのみを使い、前記ハッシュ値専用のニューラルネットワークの重みを学習させる
請求項1に記載の方法。
【請求項5】
前記ハッシュ値に対応する前記タイルの前記教師データは、前記ハッシュ値によって、入力領域として近い他の複数のタイルの教師データを含む
請求項4に記載の方法。
【請求項6】
CPUとGPUとを備え、ニューラルネットワークを使ってレンダリング処理を行う画像処理システムであって、
画面フレーム中のメッシュ情報及びライティング情報をニューラルネットワークに適応できるように構造化された入力フォーマットに変換するための変換部と、
タイル毎に学習させた前記ニューラルネットワークを使い分けるためのハッシュ分業を行わせる処理部とを含み、
前記ハッシュ分業には、
前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算する計算部と、
前記ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルの前記ニューラルネットワークにおける重みを選択して読み込む読み込み部とが含まれ、
前記ハッシュ分業による出力は、前記画面フレーム中のタイルに対応する前記ニューラルネットワークの重みによって推定される推定値である
ことを特徴とする画像処理システム。
【請求項7】
前記
画像処理システムは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、前記同期グループが共有できるオンチップメモリとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの重みを前記オンチップメモリ上に読み込む
請求項6に記載のシステム。
【請求項8】
前記
画像処理システムは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、レジスタとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの中間レイヤーの出力を前記レジスタに格納する
請求項6に記載のシステム。
【請求項9】
前記タイル毎のニューラルネットワークを学習させる工程において、前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算し、前記ハッシュ値に対応するタイルの教師データのみを使い、前記ハッシュ値専用のニューラルネットワークの重みを学習させる
請求項6に記載のシステム。
【請求項10】
CPUとGPUとを備え、ニューラルネットワークを使ってレンダリング処理を行う画像処理システム上で実行されるプログラムであって、前記システムで実行されたとき、
前記CPUまたは前記GPUに、
画面フレーム中のメッシュ情報及びライティング情報をニューラルネットワークに適応できるように構造化された入力フォーマットに変換させるステップと、
タイル毎に学習させた前記ニューラルネットワークを使い分けるためのハッシュ分業を行わせるステップとを含み、
前記ハッシュ分業には、
前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算させるステップと、
前記ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルの前記ニューラルネットワークにおける重みを選択して読み込ませるステップとが含まれるものであって、
前記ハッシュ分業による出力は、前記画面フレーム中のタイルに対応する前記ニューラルネットワークの重みによって推定される推定値である
ことを特徴とするプログラム。
【請求項11】
前記システムは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、前記同期グループが共有できるオンチップメモリとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの重みを前記オンチップメモリ上に読み込むステップを含む
請求項10に記載のプログラム。
【請求項12】
前記システムは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(以下、「同期グループ」という。)と、レジスタとを有しており、
前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの中間レイヤーの出力を前記レジスタに格納するステップを含む
請求項10に記載のプログラム。
【請求項13】
前記タイル毎のニューラルネットワークを学習させる工程において、前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算し、前記ハッシュ値に対応するタイルの教師データのみを使い、前記ハッシュ値専用のニューラルネットワークの重みを学習させる
請求項10に記載のプログラム。
【請求項14】
前記ハッシュ値に対応する前記タイルの前記教師データは、前記ハッシュ値によって、入力領域として近い他の複数のタイルの教師データを含む
請求項13に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、広く画像処理を行うためのシステム等に関し、より具体的には、ニューラルネットワークモデルを使ってレンダリング等のグラフィック処理を効率的に行うためのシステム等に関する。
【背景技術】
【0002】
近年、AIによって高品質な画像や映像を生成することができるようになり、人間の顔なども不自然さを感じさせない表現をすることができるようになった。例えば、非リアルタイムのアプリケーションでは、本物の写真との見分けがつかない画像を生成できる水準を有する。また、グラフィック処理においてAI技術を適用しようとする試みもある。
【0003】
例えば、グラフィックスフレームの効率的な分散型ノイズ除去を実行する技術が提案されている(特許文献1)。
【0004】
すなわち、特許文献1には、レイトレーシングオペレーションを実行する複数のノードと、前記複数のノードにグラフィックスワークをディスパッチするディスパッチャノードであって、各ノードは、前記グラフィックスワークにより特定される画像フレームの領域をレンダリングするようにレイトレーシングを実行する、ディスパッチャノードと、前記複数のノードのうちの少なくとも第1のノードであって、前記画像フレームの第1の領域をレンダリングするようにレイトレーシングを実行するレイトレーシングレンダラと、前記第1の領域に関連付けられるデータと、前記第1の領域の外側の領域に関連付けられるデータとの組み合わせを用いて前記第1の領域のノイズ除去を実行するデノイザであって、前記第1の領域の外側の前記領域に関連付けられる前記データの少なくともいくつかは、少なくとも1つの他のノードから取り込まれる、デノイザと を有する少なくとも第1のノードとを備えるシステムが開示されている。
【0005】
また、クラウドに基づくリアルタイム・レンダリング技術であって、より効率的な光線追跡演算を実行する技術も提案されている(特許文献2)。
【0006】
すなわち、特許文献2には、システムであって、第1グラフィック処理演算セットを実行してグラフィックシーンをレンダリングする第1グラフィック処理ノードであって、前記第1グラフィック処理演算セットは、光線追跡独立演算を含む、第1グラフィック処理ノードと、前記第1グラフィック処理ノードを第2グラフィック処理ノードに結合する相互接続又はネットワークインタフェースと、を含み、前記第2グラフィック処理ノードは、前記第1グラフィック処理ノードのユーザの現在視野の指示を受信し、視野独立光線トラバース及び交差演算により生成される視野独立表面を受信し又は構成し、前記第2グラフィック処理ノードは、応答して、前記視野独立表面の視野依存変換を、前記ユーザの前記現在視野に基づき実行して、視野依存表面を生成し、及び前記視野依存表面を前記第1グラフィック処理ノードに提供し、前記第1グラフィック処理ノードは、第2グラフィック処理演算セットを実行して、前記視野依存表面を用いて前記グラフィックシーンのレンダリングを完了する、システムが開示されている。
【0007】
また、レンダリング処理において機械学習を採用し、著しいアーチファクトの発生を軽減させる技術も提案されている(特許文献3)。
【0008】
すなわち、特許文献3には、ボリュームデータから画像を生成するための画像処理装置であって、ボリュームデータセットを取得し、前記ボリュームデータセットに基づいた非均一性マップを取得し、前記非均一性マップを使用して非周期サンプリングポイントのセットの位置を決定し、前記ボリュームデータセットから、前記非周期サンプリングポイントの前記決定された位置に基づいてサンプルされたデータ値のセットを生成し、前記サンプルされたデータ値のセットから画像データポイントのセットを生成するために、集約処理を実行することで画像データセットを生成するように構成された処理回路を具備する画像処理装置が開示されている。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2020-102195号公報
【文献】特開2020-109620号公報
【文献】特開2020-191061号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、リアルタイム・レンダリングについては、高品質な画像や映像を生成するために多大な計算が必要となるため、リアルタイムにAIで画像や映像を生成することは、依然として困難である。また、本願の出願時点における画像や映像に関するAI研究は、「品質向上」に主眼が置かれており、リアルタイム・レンダリングへのAI適用には、いまだ改善の余地がある。すなわち、リアルタイム・レンダリングへのAI適用を試みる場合には、新しいアーキテクチャの導入の余地がある。
【0011】
具体例を交えて現状の課題を示す。AIでリアルタイムに高品質な画像や映像を生成する際には、GPUにニューラルネットワークが実装されることがある。従来のニューラルネットワークは多数のレイヤーで構成されるが、これらのレイヤー間にはデータ依存性があるため、レイヤーごとの同期処理が必要とされる。また、あるレイヤーによって出力されたデータはメモリに出力されるが、この出力データは、次のレイヤーに入力するために再びメモリから読み込む必要がある。そして、各レイヤーは、分岐のない多数のチャンネルを持っており、不要なチャンネルを含め、すべての入力チャンネルの処理を行う必要がある。したがって、冗長な計算処理やメモリの大量消費を発生させてしまう。
【0012】
また、既存のニューラルネットワークモデルは、リアルタイム描画に対しては十分な性能を発揮できない。例えば、上述の理由により実行速度が遅いだけでなく、顔の形や方向、ライティングなどを直接指定できないからである。従って、既存のレンダリング手法をそのままAIに置き換えても高い効果は期待できない。
【0013】
本発明は、上述したような非効率な処理を解消することにより、AIでリアルタイムに不自然さのない人間の顔の画像やリアルタイム映像をレンダリング可能とすることを目的とする。
【課題を解決するための手段】
【0014】
そこで、本発明の一実施形態にかかる画像処理システムは、CPUとGPUとを備え、ニューラルネットワークを使ってレンダリング処理を行う画像処理システムであって、画面フレーム中のメッシュ情報及びライティング情報をニューラルネットワークに適応できるように構造化された入力フォーマットに変換するための変換部と、タイル毎に学習させた前記ニューラルネットワークを使い分けるためのハッシュ分業を行わせる処理部とを含み、前記ハッシュ分業には、前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算する計算部と、前記ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルの前記ニューラルネットワークにおける重みを選択して読み込む読み込み部とが含まれ、前記ハッシュ分業による出力は、前記画面フレーム中のタイルに対応する前記ニューラルネットワークの重みによって推定される推定値であることを特徴とする。
【0015】
また、前記コンピュータは、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(同期グループ、またはSM。以下、単に「同期グループ」ともいう。)と、前記同期グループが共有できるオンチップメモリとを有しており、前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの重みを前記オンチップメモリ上に読み込むことを特徴とする。
【0016】
また、前記コンピュータは、前記同期グループと、レジスタ(命令スケジューラのオンチップメモリ)とを有しており、前記ハッシュ分業は、前記画面フレーム中のタイル毎に、前記同期グループを割り当て、前記ニューラルネットワークの中間レイヤーの出力を前記レジスタに格納することを特徴とする。
【発明の効果】
【0017】
本発明の一実施形態にかかる画像処理システム等によれば、リアルタイム・レンダリングへの新しいAI適用を実現し、不自然さのない人間の顔の画像や映像のレンダリングを可能にするという特段の効果を奏する。
【図面の簡単な説明】
【0018】
【
図1】本発明の一実施形態にかかる画像処理システムの全体構成例を説明する説明図である。
【
図2】本発明の一実施形態にかかる画像処理システムにおける情報処理サーバ構成のバリエーションを説明する説明図である。
【
図3】本発明の一実施形態にかかる画像処理システムにおける情報処理装置の外観構成を説明する説明図である。
【
図4】本発明の一実施形態にかかる画像処理システムにおける情報処理装置の機能ブロックを説明する説明図である。
【
図5】本発明の一実施形態にかかる画像処理システム等の動作概要を説明するフローチャートである。
【
図6】本発明の一実施形態にかかる画像処理システム等の動作の詳細を説明するフローチャートである。
【
図7】本発明の一実施形態にかかる画像処理システム等の動作において前提となるデータ構成例を説明する説明図である。
【
図8A】本発明の一実施形態にかかる画像処理システム等の動作において前提となるデータ構成例を説明する説明図である。
【
図8B】本発明の一実施形態にかかる画像処理システム等において採用されるハッシュ関数例を説明する説明図である。
【
図9】本発明の一実施形態にかかる画像処理システム等の詳細な動作を説明するフローチャートである。
【
図10】本発明の一実施形態にかかる画像処理システム等の詳細な動作(トレーニングの前処理)を説明するフローチャートである。
【
図11】本発明の一実施形態にかかる画像処理システム等の詳細な動作(トレーニングの前処理)を説明するフローチャートである。
【
図12】本発明の一実施形態にかかる画像処理システム等の詳細な動作(トレーニングの前処理)を説明するフローチャートである。
【
図13】本発明の一実施形態にかかる画像処理システム等の動作の具体例を説明する説明図である。
【
図14】本発明の一実施形態にかかる画像処理システム等の動作の具体例を説明する説明図である。
【
図15】本発明の一実施形態にかかる画像処理システム等の動作の具体例を説明する説明図である。
【
図16】本発明の一実施形態にかかる画像処理システム等の動作の具体例を説明する説明図である。
【
図17】従来の画像処理システム等における動作例を説明する説明図である。
【
図18】従来の画像処理システム等における動作例を説明する説明図である。
【発明を実施するための形態】
【0019】
(用語の定義)
はじめに、本実施例で使用される用語の定義を行う。
[ラスタライズ]
一般的には、画像処理においてラスタ形式以外のデータ(例えば、ベクタ形式のデータなど)をラスタ形式に変換して画像化することをいうが、3次元コンピュータグラフィックスにおいては、ポリゴン等の形状データをピクセルデータ(フラグメントとも呼ばれる)に変換する処理をいう。本実施例においては、3次元コンピュータグラフィックスの処理に関し、各ピクセルの中間状態をG-Bufferのようなバッファに保存することをいう。本発明はこれらに限定されるものではないが、本発明の一実施形態におけるラスタライズの出力例は、ピクセルごとの物体表面の2次元位置(または、UV)、同表面の種類のID(分類ID)、同表面の光の量(光度)である。なお、UVは、テクスチャ毎の座標系(UV座標系)における値(UV値)である。
[タイル]
1画素(1ピクセル)をある程度まとめて取り扱う場合の単位である。一例として、16×16ピクセルを1タイルとすることができる。また、それぞれのピクセルは、UV値、分類ID、光度量といったデータセットで構成されることができる。
[世界規模]
ワールド(グローバル)座標系のスケールでのスコープをいう。
[タイル規模]
ローカル座標系(その1)のスケールでのスコープをいう。ここでのローカル座標系は、ピクセル規模へ落とし込む余地を残したローカル座標である。
[ピクセル規模]
ローカル座標系(その2)のスケールでのスコープをいう。ここでのローカル座標系は、本実施形態のおける最小のローカル座標である。
[SM(Streaming Multiprocessor)]
GPUのプロセッサ単位である。一例として、エヌビディアコーポレイション(NVIDIA Corporation)のGPUアーキテクチャについて、[https://images.nvidia.com/aem-dam/en-zz/Solutions/geforce/ampere/pdf/NVIDIA-ampere-GA102-GPU-Architecture-Whitepaper-V1.pdf]を参照されたい。
【0020】
本発明はこれに限定されるものではないが、1つのSMの中には、4つの独立した命令スケジューラ(これを「部分プロセッサ」という。)があり、1つの命令スケジューラには、それぞれレジスタ(一例として、64KB)が備わる。複数(一例として、4つ)の部分プロセッサ(これを一実施形態における「同期グループ」ということもできる。)がSMを構成する。従って、一実施形態において、「処理ユニットにおいて互いに効率的に同期できる」というのは、1つのSM内の部分プロセッサ同士が効率的に同期できるという意味である。
【0021】
また、一実施形態において、処理ユニットにおいては、1つのSM内において、同期グループが共有できるオンチップメモリが備えられる(一例として、128KB)。
【0022】
本発明はこれに限定されるものではないが、一実施形態において、次のような構成のSMを利用することを想定することができる。まず、GPU中のSMの数は数十から100以上である。また、1つのSM当たり4つの命令スケジューラが実装され、1命令スケジューラあたり64KBのレジスタを備えている。 本発明の一実施形態においては、これらのSM群は、ラスタライズされ、タイルに分割された入力画像(入力タイル)を並列処理し、一例として、1つのスケジューラに1つのタイルを処理させることができる。これらの処理の出力は出力タイルであり、入力タイルと出力タイルは、画像において互いに対応する位置を占める。
[ハッシュ分業]
本発明で採用される新規のアーキテクチャである。このアプローチによって、従来のニューラルネットワークを使ったCG処理における非効率を軽減または解消させることができる。ハッシュ分業は、概略的に、画面フレーム中のタイルごとにその内容(数値)をハッシュ化する(ハッシュ値を計算する)工程と、ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルのニューラルネットワーク(モデル)における重みを選択して読み込む工程とを含む。ハッシュ分業は、ニューラルネットワークのサブドメインを切り離して実行する処理ということができる。
【0023】
また、ハッシュ分業による出力は、画面フレーム中のタイルに対応するニューラルネットワークの重みによって推定される推定値である。
(本発明の特徴)
次に、本発明の特徴を説明する。本発明の新規な特徴は、ニューラルネットワークを使って、CGのリアルタイム描画処理を直接描画するように構成したことにある。
【0024】
一般に、AIのよる画像処理の成果は、スクリーンショットを比較して行われることが多いが、本発明の一実施形態における成果は、測定結果のみによってではなく、基本原理から正しいアプローチであることが論理的に導き出せるものである。
【0025】
また、本発明は、取り扱うデータの依存性や依存性の拡大に着目している。従って、本発明が効果を奏する条件の一つとして、大域的なデータ依存の存在が挙げられる。例えば、本発明が想定するリアルタイム描画では、データ入力は、内容が不明である写真などではなく、カメラやメッシュなどのバイナリーデータから生成されている。そのため、ピクセルに入れる情報は自由であり、必要であれば追加も可能である。このことは、本発明が提唱するような革新的手法の適用余地があることを意味している。
(本発明の基本概念)
本発明の基本概念は、リアルタイム描画に特化した非効率さを解決するためのプロセス群である。一例として、本発明の一実施形態においては、メッシュ情報及び/またはライティング情報をニューラルネットワークに適応できるように、メッシュ情報及び/またはライティング情報は、高度に構造化した入力フォーマットに変換される。
【0026】
また、本発明の一実施形態においては、特定の描画に特化したニューラルネットワークを多数学習させ、タイルごとにハッシュによって使い分けるハッシュ分業が行われる。
【0027】
換言すると、本発明は、次のような基本処理群に支えられている。
(1)メッシュ情報及び/またはライティング情報は、ニューラルネットワークのために高度に構造化した入力フォーマットに変換される。
(2)特定の描画に特化したニューラルネットワークを多数学習させ、タイルごとにハッシュによって使い分けるハッシュ分業プロセスが採用される。
【0028】
なお、上記(1)及び(2)におけるニューラルネットワークは、ハードウェア性能の制約に収まるように設計される。
(本発明の適用場面例 ~人の顔を描画する場合)
次に、本発明の理解の容易のために、本発明の適用場面の一例を挙げる。一般に、人間は、顔については非常に高い感受性をもって認知することができる。例えば、人間は、同じ人の表情が少しでも不自然だとそのことにすぐに気づくことができる。この事実は、もし、コンピュータが人間の顔の微妙な変化を正しく描画することができれば、人間にとっての映像の魅力を大きく増大させることができるということを意味する。近年、ハードウェアによるリアルタイム・レイトレーシングが実現されつつあり、例えば、物体の鏡面反射などは正確に計算できるようになってきているが、人間の肌の表面化散乱などを正確に計算することは未だに困難である。
【0029】
一方、人間の顔の実写映像については、大量に手に入れることが比較的容易であるため、大量に入手可能な人間の顔画像データを教師データとして用い、AIによって描画を行うことは有望と考えられる。本発明はこれに限定されるものではないが、本発明の一実施形態においては、人間の顔画像のリアルタイム描画に関して有意な効果を奏する。
【0030】
本発明の一実施形態にかかる画像処理システム、方法、及びプログラムについて、図面を参照しながら詳細に説明する。
【0031】
図1に、本発明の一実施形態にかかる画像処理システムの全体構成例を示す。本発明は、特に制限されないが、PC等のコンピュータ上でスタンドアロン作動させることもできるし、
図1に示されるようなネットワーク構成における情報処理サーバ群において実施されることもできる。また、
図1に示されるようなネットワーク構成であっても、他の情報処理サーバや、PC・タブレット端末等の情報処理装置において少なくとも一部または全部の処理ルーチンが実施されてもよい。以下、本発明の理解の容易のために、
図1を参照して、本発明の一実施形態を説明する。
【0032】
図1に示されるように、画像処理システム10は、一実施形態として、情報処理サーバ群11と、ユーザが使用する各種情報処理装置(図において、例示的に、PC12及び13、携帯電話14、スマートフォン、携帯情報端末またはタブレット端末15が示されている。以下、総称して「各種端末」、「ユーザ端末」、あるいは、単に「端末」とも言うこともある)とで構成され、情報処理サーバ群11及び各種端末間は、
図1に示されるように専用回線やインターネット等の公衆回線(
図1には、有線の回線例として16~19が示されている)により相互に通信可能に接続されている。また、回線は有線であっても無線であってもよい。回線が無線の場合、携帯電話14及び端末15は、図示しない基地局や無線ルータ等を介してインターネット19に乗り入れ、更に回線18を介して情報処理サーバ群11と相互に通信可能に接続される。
【0033】
なお、本願の出願時点での携帯電話14やスマートフォン、携帯情報端末あるいはタブレット15は、パーソナルコンピュータ(PC)と同等の処理能力(通信処理速度や画像処理能力等)を備えているものも多く、小型のコンピュータとも言うべきものである。
【0034】
また、本発明の実施に必要なプログラムあるいはソフトウェアは、通常、情報処理サーバ群における記憶部、さらには必要に応じてPCや携帯情報端末の記憶部におけるHDD(Hard Disk Drive)あるいはSSD(Solid State Drive)等にインストールあるいは記憶され、プログラムあるいはソフトウェアの実行時には、必要に応じて記憶部内のメモリにその全部又は一部のソフトウェアモジュールとして読み出され、CPU等において演算実行される。
【0035】
なお、演算実行は、必ずしもCPU等の中央処理部のみで行われる必要はなく、図示しないグラフィカルプロセッシングユニット(GPU)やディジタルシグナルプロセッサ(DSP)等のプロセッサを用いることもできる。
【0036】
さらに、情報処理サーバ群11のハードウェア構成も、基本的にはPCを採用することができる。なお、本発明はこれに限定されるものではないが、情報処理サーバ群11は、必要に応じてそのハードウェアスペックを上げるにあたり、複数のPC(一例として、数十台~数万台)を並列的に作動させることによって大規模データの処理に適した構成をとることもできる。また、本願の出願時において利用可能なクラウド構成を採用することもできる。
【0037】
以上、
図1を参照して本発明の一実施形態にかかる画像処理システム10を説明したが、本発明の構成は必ずしもこれに制限されるものではなく、例えば、本発明にかかる特徴的な構成を実施するハードウェアが情報処理サーバ群11に集約されている場合には、情報処理サーバ群11を本発明の他の実施形態としての画像処理システムとしてもよい(以下、同様)。
【0038】
また、既に説明したように、本発明の他の実施形態にかかる画像処理システムにおいては、ネットワーク構成をとらず、サーバ単独あるいは端末単体を主体としたスタンドアロン構成を採用することもできる。
【0039】
図2に、本発明の一実施形態にかかる画像処理システムにおける情報処理サーバ構成のバリエーションを示す。情報処理サーバ群11の動作は、以下に説明するハードウェアの個々の動作、及びソフトウェアとこれらハードウェアとの連携動作によって実現されている。
【0040】
図2において、ユーザ端末15a~15cからアクセスされる情報処理サーバ群11は、例示的に、複数のサーバシステムを連携させ一つのシステムとして稼働させるように、クラスタシステムとして構成される。このようなクラスタ構成とすることで、例えば一つのサーバに障害が発生しても他のサーバに処理を継続させることができるほか、特定のサーバ(群)に処理が集中したような場合においても、他のサーバ(群)に処理を分散させることができ、システム全体の安定性を向上させることができる。このようなクラスタ構成は、特にリアルタイム・マルチゲームプレイシステムを構築する場合には、有利な構成の一つである。
【0041】
本発明は、これに制限されるものではないが、本発明の理解の容易のために、以下、情報処理サーバ群11は、リアルタイム・レンダリングを含むリアルタイムマルチプレイゲームを提供するサーバ群であるものとする。
【0042】
図2において、情報処理サーバ群11は、大別すると、リアルタイムクラスタ(群)111と、ロードバランサ112(群)と、APIサーバ23とを有する。また、本発明の他の実施形態においては、図示しないキャッシュクラスタ(群)を有するように構成されてもよい。
【0043】
本発明の一実施形態において、リアルタイムクラスタ(群)111は、Lobbyクラスタ(群)とGameクラスタ(群)とを含む。
【0044】
また、本発明の一実施形態において、ロードバランサ(群)112は、Lobbyロードバランサ(群)と、Gameロードバランサ(群)とを含む。
【0045】
一実施形態において、Lobbyクラスタ(群)は、リアルタイムマルチプレイゲームを成立させるためのロビーでのユーザマッチング処理を担当するよう構成することができる。また、Gameクラスタ(群)は、リアルタイムマルチゲームを進行させる上でアクション部分におけるリアルタイム通信処理等を担当させるよう構成することができる。
【0046】
一実施形態において、ロードバランサ(群)112においては、Lobbyクラスタ(群)のロードバランシング及びオートスケーリングを担当するLobbyロードバランサと、Gameクラスタ(群)のロードバランシング及びオートスケーリングを担当するGameロードバランサとを併存させて、プロセス監視などの調整を互いに行いながら作動させることができる。
【0047】
図3に、本発明の一実施形態にかかる画像処理システムにおける情報処理装置としてのタブレット端末の外観構成を示す。
図3において、情報処理装置(タブレット端末)15は、筐体部151とディスプレイ152と筐体151の下部中央部に設けられたハードウェアボタン153とからなる。ディスプレイ152は典型的には液晶ディスプレイ(LCD)等で構成され、文字や静止画像や動画など様々な情報を表示することができる。また、ディスプレイ152にメニューボタンやソフトウェアキーボードを表示させ、これを指ないしタッチペン(不図示)等で触れることによりタブレット端末15への指示(コマンド)とすることができる。この点で上記ハードウェアボタン153は必須の構成要素ではないが、本発明の説明の便宜上、一定の機能を担うボタンとして実装されている。もちろん、ハードウェアボタン153を、ディスプレイ152の一部に表示させたメニューボタンで代替させることも可能である。
【0048】
また、ディスプレイ152には、マルチタッチ入力パネルが含まれており、タッチ入力パネル上でのタッチ入力位置座標が入力デバイスインタフェース(不図示)を介してタブレット端末15の処理系(CPU)へ送信され処理される。そして、このマルチタッチ入力パネルは、パネルに対する複数の接触点を同時に感知することができるよう構成されている。この検出(センサ)については様々な方法で実現することができ、必ずしも接触センサに限られず、例えば、光学式のセンサを利用してパネルに対する指示点を抽出することも可能である。さらに、センサには、接触式のセンサや光学式のセンサのほか、人の肌の接触を感知する静電容量方式のセンサを用いることも可能である。
【0049】
また、
図3には現れていないが、タブレット端末15は、マイクやスピーカを備えることもできる。この場合にはマイクから拾ったユーザの声などを判別して入力コマンドとすることも可能である。さらに、
図3には現れていないが、タブレット端末15の背面等には、CMOS等のカメラデバイスが実装されている。
【0050】
図4に、本発明の一実施形態にかかるタブレット端末15を構成するハードウェアの機能ブロック図を例示する。タブレット端末15の動作は、以下に説明するハードウェアの個々の動作、及びソフトウェアとこれらハードウェアとの連携動作によって実現されている。
【0051】
図4において、ハードウェアブロック全体としてのタブレット端末400は、大別すると、
図3におけるハードウェアボタン153、ディスプレイ152に設けられたマルチタッチ入力パネル、マイク等で構成される入力部401と、プログラムやデータ等を記憶するためのハードディスク、RAM及び/又はROM等で構成される記憶部402と、プログラムにより様々な数値計算や論理演算を行うCPUによって構成される中央処理部403と、ディスプレイ152等で構成される表示部404と、チップや電気系統等の制御を行うための制御部405と、インターネットにアクセスするためのスロットや光通信を行うためのポート、及び通信インタフェースから構成される通信インタフェース部406と、スピーカやバイブレーション等の出力部407と、時刻等を計時するための計時部408と、CMOS等のイメージセンサからなるセンサ部409と、装置内の各モジュールに電源を供給するための電源部410とからなり、これらのモジュールは必要に応じて適宜通信バスや給電線等の配線によって接続されている(
図4においては、ひとまとめに結線411で表わされている)。
【0052】
なお、センサ部409には、タブレット端末400(15)の位置を特定するためのGPSセンサモジュールを含めることとしても良い。また、センサ部409を構成するCMOS等のイメージセンサによって検知された信号は、入力部401において入力情報として処理することができる。
【0053】
また、本発明の実施に必要なプログラムあるいはソフトウェアは、通常、記憶部402を構成するハードディスク等にインストールあるいは記憶され、プログラムあるいはソフトウェアの実行時には、必要に応じて記憶部402内のメモリにその全部又は一部のソフトウェアモジュールとして読み出され、CPU403において演算実行される。
【0054】
なお、演算実行は、必ずしもCPU等の中央処理部のみで行われる必要はなく、ゲーミングタブレットにおいては、図示しないグラフィカルプロセッシングユニット(GPU)やディジタルシグナルプロセッサ(DSP)等のプロセッサを用いることもできる。
【0055】
次に、
図5~
図6の動作フローないしフローチャートを用いて、本発明にかかる一実施形態における画像処理システムないし画像処理プログラムの動作の概略を説明する。
【0056】
既に述べたように、本発明の特徴的な動作は、主として情報処理サーバ群11において実施可能であるが、少なくともその一部を情報処理装置等に実施させることもできる。
【実施例1】
【0057】
図5に、本発明の一実施形態にかかる画像処理システム等の動作概要を説明するフローチャートを示す。
図5のフローチャートには、本発明の一実施形態にかかる画像処理システムの基本動作が、画像データに対する3つの処理、すなわち、(1)ラスタライズ、(2)ハッシュ分業、(3)ニューラルネットワークモデルに基づく実行処理から構成されることが示されている。
【0058】
図5のステップS501において処理を開始すると、ステップS502へ進み、ラスタライズ処理が行われる。次に、ステップS503へ進み、ハッシュ分業処理が行われ、ステップS504では、ニューラルネットワークモデルに基づく演算処理が行われる。
【0059】
そして、ステップS505では、前ステップでの出力結果に基づいてフレームバッファへの出力が行われ、ステップS506では、ユーザ端末等のディスプレイ等に出力されるべき画像データが出力される。次に、ステップS507へ進み、説明上の本フローとしては、処理を終了する。
【0060】
なお、
図5においては、発明の理解の容易のために、「ラスタライズ」及び「ハッシュ分業」という手段を用いたが、本発明はこれらのみに制限されるものではない。特に、ラスタライズについては、構造化されたデータを使う具体例として述べられたものであって、本発明は、ラスタライズに替えて、種々の「構造化データ」を採用することができる。
【0061】
次に、データ構造化の一例としてのラスタライズ、ハッシュ分業、及びニューラルネットワークモデルに基づく実行処理のそれぞれについての詳細を説明する。
(1)ラスタライズ
一実施形態において、ラスタライズ処理は、APIサーバ23で稼働しているAPIからのリクエストによって開始される。このラスタライズ処理の入力は、3Dグラフィックスデータの原型であり、一実施形態において、三角形メッシュ等のポリゴン情報(世界規模)、景色内の光源(世界規模)、カメラ情報(世界規模)が挙げられる。
【0062】
本発明の一実施形態におけるラスタライズ処理の内容は、ポリゴン情報におけるメッシュをラスタライズしてバッファメモリに書き込むというものである。ラスタライズ方式には、3Dコンピュータグラフィックスのレンダリング方法における種々の方式を採用することができる。
【0063】
本発明の一実施形態におけるラスタライズ処理においては、テクスチャ用UVやメッシュ分類IDや照射される光線の光度などを保持するように処理される。一方で、本発明の一実施形態におけるラスタライズ処理においては、色情報を保持する必要はない。
【0064】
本発明の一実施形態におけるラスタライズ処理における出力は、UV(ピクセル当たり)、分類情報(ピクセル当たり)、光度情報(ピクセル当たり)である。
(2)ハッシュ分業
一実施形態において、ハッシュ分業における入力は、UV(ピクセル当たり)、分類情報(ピクセル当たり)、及び世界規模における回路重み配列である。
【0065】
本発明の一実施形態におけるハッシュ分業の内容は、画面フレーム中の領域をタイルに分割したり、分割したそれぞれのタイルの処理をGPUの命令スケジューラに預けたりすることである。本発明の一実施形態においては、タイル内のデータ依存性はないので、複数のSMごとに並列して処理を進めることができる。
【0066】
次に、タイルピクセルの内容がハッシュ値に変換される。変換されたハッシュ値は、ニューラルネットワークにおける重みの配列キーとして採用され、これらの値はオンチップメモリに書き込まれる。
【0067】
本発明の一実施形態におけるハッシュ分業による出力は、画面フレーム中のタイル当たりのニューラルネットワークの重み(以下、「重み情報」ともいう)によって推定される結果(推定値)である。
【0068】
また、本発明はこれに制限されるものではないが、一実施形態においてGPUを利用してハッシュ分業を実施するにあたっては、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(同期グループ、またはSM)と、前記同期グループが共有できるオンチップメモリとを有する処理ユニットを採用することができる。この場合、ハッシュ分業は、画面フレーム中のタイル毎に前記同期グループを割り当てて、ニューラルネットワークの重みを上記共有可能なオンチップメモリ上に読み込む。タイル毎のニューラルネットワークは十分に小さいため、上記共有可能なオンチップメモリに全て読み込むことができる。タイル外の重みは不要なため前記同期グループの外部との同期も不要となり、同じニューラルネットワークを利用する複数ピクセルを同時に処理できる。このため、一層効率化することができる。
【0069】
さらに、本発明はこれに制限されるものではないが、一実施形態においてGPUを利用してハッシュ分業を実施するにあたっては、処理ユニットにおいて互いに効率的に同期できる複数の部分プロセッサ(同期グループ、またはSM)と、レジスタとを有する処理ユニットを採用することができる。この場合、ハッシュ分業は、画面フレーム中のタイル毎に前記同期グループを割り当てて、ニューラルネットワークの中間レイヤーの出力を上記レジスタに格納することで、レイヤー毎にGPU上のRAMやキャッシュといった、いわゆる「遅いメモリ」への出力との同期を行うことなく各レイヤーに対する処理を実行することができ、処理を一層効率化することができる。
(3)ニューラルネットワークの実行処理
一実施形態において、ニューラルネットワークの実行処理おける入力は、UV(ピクセル当たり)、光度情報(ピクセル当たり)、重み情報(画面フレーム中のタイル当たり)である。
【0070】
本発明の一実施形態におけるニューラルネットワークの実行処理の内容は、オンチップメモリ上に書き込まれた重み情報を読み出し、ニューラルネットワークの出力神経までの計算を実行することである。画面フレーム中のタイルごとの計算を行うので入力ドメイン(入力領域)は広くならず、神経チャネルの数も低減させることができる。そのため、計算の途中結果を都度キャッシュメモリ等に送信する必要がなくなるという利点がある。
【0071】
なお、同じタイルにおける神経対神経のデータ依存性については、同じタイルに対する同じ命令スケジューラにより計算が実行されるため、然したる問題とはならない。
【0072】
本発明の一実施形態におけるニューラルネットワークの実行処理における出力は、RGBAデータ(ピクセル当たり)である。このRGBAデータが画面出力用データとして取り扱われる。
(トレーニング工程及び前処理工程)
なお、
図5に示した処理を実行する前に、本発明の一実施形態においても、ニューラルネットワークのトレーニング工程を有する。本発明の一実施形態においては、このトレーニング工程の前処理として種々の最適化を行うことも特徴の一つとなっている。これらの前処理工程については、
図10~
図12を参照して後述する。
【実施例2】
【0073】
図6に、本発明の一実施形態にかかる画像処理システム等の動作の詳細を説明するフローチャートを示す。
図6に示された動作フローは、
図5に示された動作フローと同様に、ラスタライズ処理からピクセルごとの色情報出力までが示されているが、
図5に示されたフローよりも具体的に説明されている。また、
図5において説明した動作と重複する動作については、適宜説明を割愛している。つまり、
図6に示された動作フローは、
図5を参照して説明した内容を採用することができるが、
図5には示されなかったバリエーションを含むものである。
【0074】
図6のステップS601において処理を開始すると、ステップS602へ進み、画面フレームごとのメッシュ情報、光源情報、カメラ情報(いずれも世界規模)に対するラスタライズ処理が行われる。
【0075】
一実施形態において、このラスタライズ処理では、従来の多くのラスタライズの手法を採用することができる。各ピクセルの中間状態は、G-Bufferのようなバッファに保存される。ラスタライズの出力内容は、一例として、表面の2次元位置(UV)、表面の種類のID(分類ID)、各種類の光の量(光度)である。
【0076】
ステップS603では、ピクセルごとのUV、分類ID、光度情報(いずれも世界規模)に対する分割処理が行われる。
【0077】
ステップS605では、ピクセルごとのUV、分類ID(いずれも世界規模)に対するハッシュ計算処理が行われる。なお、本ステップでは、ピクセルごとのUV、分類IDが取り上げられているが、本発明はこれに限定されるものではなく、光度情報(世界規模)に対するハッシュ計算処理がなされてもよい。
【0078】
ここでのハッシュ計算については、任意のハッシュ計算式を採用することができるが、重要なことは、タイルサイズの表面領域が十分に類似した特性(例えばUV)を持っている場合には、同じハッシュ値が得られるという性質が維持されていることである。本発明の一実施形態においては、ビットフィールドを用いたアプローチが採用される。また、UとVは、個々にセクションに分けて管理される。一実施形態において、1つのビットが各セクションを表す。
【0079】
ここで、タイルがセクション内のいずれかのピクセルを含む場合、対応するビットは1に設定され、そうでなければ、ビットは0のまま維持される。なお、画素情報はレジスタに読み込まれて、レジスタなどに保持されていることが望ましい。
【0080】
ステップS606では、前ステップで計算されたタイルごとのハッシュ値(タイル規模)に対し、ルックアップテーブルから取り出された値を適用してタイルごとのニューラルネットワークの重みが生成される(タイル規模)。
【0081】
ここで、ルックアップテーブル検索については、メモリの読み出しとなるため、すべてのメモリリードはパフォーマンスを低下させる要因となる。したがって、ある時点でニューラルネットワークの重みをGPUの命令スケジューラ(複数の命令スケジューラが組み合わされることもある)のローカル・オンチップメモリに読み込む必要があるが、本ステップにおいてこの読み込みが実施されても良い。現在のタイルの内容を完全に表すハッシュ値はすでに計算されているので、そのハッシュ値を使って、この種の内容を扱うように厳密に訓練されたニューラルネットワークを選択することができる。
【0082】
ハッシュ値に基づいてデータを取得する方法は、種々考えられるが、本発明の一実施形態においては、本フローで生成されるハッシュをオフチップ・メモリの配列へのキーとして利用することができる。
【0083】
ステップS607では、前ステップで生成されたニューラルネットワークの重みと、ステップS603で処理されたタイルごとのUV、光度情報(いずれも世界規模)とが入力とされて、ニューラルネットワークモデルに基づく演算処理が行われる。
【0084】
ここで、本発明の一実施形態において、ニューラルネットワークを実行するロジックとしては、UV、分類ID、光度を入力とし、ピクセルカラーを出力とする処理系が挙げられる。また、ニューラルネットワークに色ではなく光を出力させることで、複数のニューラルネットワークの出力を低コストで正しく組み合わせることも可能である。また、ここでのロジックには、種々の最適化を適用することができる。
【0085】
ステップS608では、色情報が出力される(ピクセル規模)。
【0086】
そして、ステップ609へ進み、本フローとしては処理を終了する。
【実施例3】
【0087】
次に、
図7~
図12を参照して、本発明にかかる一実施形態における画像処理システムまたは画像処理プログラムの詳細な動作を説明する。ここでの説明は、
図5~6を参照して説明した部分と重複する部分もあるが、ハッシュ化についてのより詳細な説明及びバリエーションが加えられている。
【0088】
なお、既に述べたように、本発明の特徴的な動作は、主として情報処理サーバ群11において実施可能であるが、少なくともその一部を情報処理装置等に実施させることもできる。
【0089】
図7及び
図8Aに、本発明の一実施形態にかかる画像処理システム等の動作において前提となるデータ構造例が示されている。
【0090】
また、
図7示された画面フレーム70において、タイル情報は、UV空間に投影されている。UV空間では、タイルは、見た目ではなく、それが何であるかを反映した場所および形状で表される。したがって、この形状を2つの隣接するビットフィールドで近似することにより、適切に専門化されたニューラルネットに関連付けることができる。
【0091】
図7には、横軸をUハッシュ列(00000111)とされ、かつ、縦軸をVハッシュ列(00011110)とされたUV空間が表されており、
図7に示されたUV座標系におけるタイル71は、
図8Aに示された画面フレーム80(縦横8個、計64個のタイルが並んでいる)においては、タイル81となって表れている様子が分かる。なお、一実施形態において、各タイルは、16×16のピクセルで構成される。
【0092】
また、
図7及び
図8Aを参照して説明したタイルのUV空間への投影を踏まえ、本発明の一実施形態においては、
図8Bに定義されるハッシュ関数が使用される。なお、本発明はこれに制限されるものではなく、特定の条件(以下の(A)及び(B)、ならびに、望ましくは(C))を満たす限り、どのようなハッシュ関数を用いても差し支えない。
(A)同じハッシュ値を持つタイルは、全体として取得されるすべてのタイプのタイルよりも狭い入力ドメイン(入力領域)を構成すること。
【0093】
なお、本発明の一実施形態においては、入力ドメインは、狭めるほど良好な結果が得られる。現実的には、実質的にリアルタイムに処理が行える範囲で十分に高速化できるように、この入力ドメインは狭く構成される。
(B)ハッシュ値の計算は、高速であること(本出願時点におけるコンピュータのハードウェアスペックは十分にこれを満たす)。
(C)本発明はこれに限定されるものではないが、ハッシュ分業においては、ターゲットタイルのみが入力として使用されること。
【0094】
図9~
図12に、本発明の一実施形態にかかる画像処理システム等の詳細な動作を説明するフローチャートが示されている。より詳細には、
図9には、
図7及び
図8Aを参照して説明した前提を踏まえたハッシュ化フローの全体像が示されている。
図9は、
図6において示されたフローを前提としてさらに詳細に記載したものでもある。なお、
図9に示された動作フローの前提として、本発明の一実施形態にかかる画像処理システム等が取り扱うシーンデータは、フレームバッファ上でラスタライズされているものとする。
【0095】
また、
図10~
図12には、ニューラルネットワークのトレーニングのための処理フロー例が示されている。
図12におけるステップS1210に示されたトレーニングに向けて、最適化の観点から種々の前処理が行われている。
【0096】
図10には、教師データのバイナリファイルを生成するステージが示されており、ピクセルバッファに対するタイル分割及び各タイルへのハッシュ値割り当て、ならびに、ハッシュマップへのハッシュ値の追加を含むフローが示されている。また、
図11には、コンテンツのバイナリファイルへの出力を含むフローが示されており、
図12には、バイナリファイル内容のメモリ空間へのマッピングを含むフローが示されている。
【0097】
図9のステップS901において処理を開始すると、ステップS902へ進み、画面フレームバッファから、UV、メッシュID、及び照度情報を含むデータが読み込まれる。
【0098】
ステップS903では、画面フレームバッファ上のデータが16×16ピクセルのタイルに分割される。
【0099】
ステップS905では、タイルにおける全てのUVを使ってハッシュ値の計算が行われる。また、必要に応じて分類IDが使用されてもよい。
【0100】
ステップS906では、前ステップで計算されたハッシュ値をキーとして使用し、ルックアップテーブルからニューラルネットワークの重みが読み出される。
【0101】
ステップS908では、ステップS906において読み出された重みと、ステップS903で処理されたタイルごとのUV、光度情報とが入力とされて、ニューラルネットワークインタフェース用データが出力される。この出力データは、一実施形態においてRGBデータである。
【0102】
そして、ステップ909へ進み、本フローとしては処理を終了する。
【実施例4】
【0103】
(トレーニング前処理工程)
図10~
図12に示されるフローでは、
図6や
図9を参照して説明した処理を実行するためのニューラルネットワークのトレーニングのための前処理とトレーニングのフローが示されている。
【0104】
タイル毎のニューラルネットワークを学習させる工程において、画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算し、このハッシュ値に対応するタイルの教師データのみを使い、このハッシュ値専用のニューラルネットワークの重みを学習させることができる。
【0105】
本フローにおけるアバター生成器は、人工的に人の顔メッシュを生成するアプリケーションである。本発明の一実施形態においては、顔画像のサンプルを実写映像から収集するのではなく、CG生成によって収集する趣旨である。
【0106】
また、メッシュは、レイトレーシングによって描写され、hash_map.txtには、教師データの中に出現するハッシュ値が一覧として保存される。
【0107】
本発明は、これに制限されるものではないが、一実施形態として、デジタルコンテンツ作成アプリケーション間の相互運用性を提供するために使用されているfbxファイルが使用される(以下、同様)。fbxファイルは、3Dデータ転送用のオープンフレームワークである。
【0108】
そして、
図10のステップS1001において処理を開始すると、ステップS1002へ進み、アバター生成器の出力ファイルが入力される。次に、S1003へ進み、メモリに記憶されている全処理対象のfbxファイルが読み出され、リスト化される。
【0109】
ステップS1004では、読み出されたfbxファイルリストのうち、処理すべきfbxファイルが残っているかどうかが判断され、Yesの場合はS1005へ進むが、Noの場合はS1010へ進む。
【0110】
ステップS1005では、リストとして読み出されたfbxファイルから、今回のルーチンで処理すべきfbxファイルが読み込まれ、ステップS1006では、ピクセルバッファに対してメッシュがレンダリングされる。
【0111】
次に、S1007へ進み、ピクセルバッファはタイルに分割され、各タイルへハッシュ値が割り当てられる。
【0112】
ステップS1008では、ハッシュ値は現在のメモリ上のハッシュマップに存在するかどうかが判断され、存在する場合(ステップS1008においてYes)は、ステップS1004へ復帰し、存在しない場合(ステップS1008においてNo)は、ステップS1009へ進む。
【0113】
ステップS1009では、前ステップで判断されたハッシュ値がメモリ上のハッシュマップへ追加される。
【0114】
また、ステップS1010では、処理すべきfbxファイルは全て処理し終えたので、メモリ上のハッシュマップにおけるハッシュ値は、ハッシュマップファイル(hash_map.txt)へ出力される。
【0115】
そして、ステップS1011へ進み、本フローとしては処理を終了する。
【0116】
図11は、教師データのバイナリファイルを生成するステージである。
図10に示されたフローに続く一実施形態として、デジタルコンテンツ作成アプリケーション間の相互運用性を提供するために使用されているfbxファイルが使用される。
【0117】
本フローにおいて、タイルデータは、ハッシュ値によって区分される必要があるが、全てを同時にRAM等のメモリに格納することは困難である。そのため、本発明の一実施形態においては、バイナリファイルを段階的に書き出し続ける。この処置は、オペレーティングシステム及びSSDの構成によっては、速度の面で有意な効果を奏する。
【0118】
また、本発明の一実施形態における教師データタイルのデータセットとして、ピクセル当たりの入力(U,V,光度,分類ID)及び出力(R,G,B,α)が採用されうる。本発明は、これに制限されるものではないが、RAMの問題点を考慮した場合には、AOS(Array of structs:構造体の配列)のように書き出される。後のトレーニング工程では、SOA(Struct of arrays;配列の構造体)が必要になる。異なるハッシュ値は異なるバイナリファイルに保存される。
【0119】
本発明はこれに限定されるものではないが、一実施形態において、hash_map.txtには、入っているハッシュ値のタイル情報のみが格納される。レンダリングは、リアルタイム用のグラフィックスAPIによって実行される
そして、
図11のステップS1101において処理を開始すると、ステップS1102へ進み、アバター生成器の出力ファイルが入力される。次に、S1103へ進み、メモリに記憶されている全処理対象のfbxファイルが読み出され、リスト化される。
【0120】
ステップS1104では、
図10のステップS1010においてハッシュ値が出力された先のハッシュマップファイル(hash_map.txt)を読み込む。
【0121】
次に、ステップS1105では、各配列におけるハッシュマップファイル(hash_map.txt)からのハッシュ値でメモリ上のハッシュマップを埋める。
【0122】
ステップS1106では、ステップS1104で読み出されたfbxファイルリストのうち、処理すべきfbxファイルが残っているかどうかが判断され、Yesの場合はS1107へ進むが、Noの場合はS1114へ進む。
【0123】
ステップS1107では、リストとして読み出されたfbxファイルから、今回のルーチンで処理すべきfbxファイルが読み込まれ、ステップS1108では、ピクセルバッファに対してメッシュがレンダリングされる。
【0124】
ステップS1109では、一実施形態においてターゲットファイルとなるpngファイルが読み込まれる。
【0125】
次に、S1110へ進み、ピクセルバッファはタイルに分割され、各タイルへハッシュ値が割り当てられる。ステップS1111では、そのハッシュ値に関連する配列へ各タイルが加えられる。
【0126】
次に、ステップS1112では、ハッシュマップ配列のコンテンツが適切なバイナリファイルへ出力され、ステップS1113では、ハッシュマップにおける配列からコンテンツが消去される。
【0127】
ステップS1114では、ハッシュマップ配列のコンテンツが適切なバイナリファイルへ出力される。
【0128】
そして、ステップS1115へ進み、本フローとしては処理を終了する。
【0129】
図12は、実際に1つのハッシュ値のニューラルネットワークをトレーニングするステージであり、
図11に示されたフローに続く一実施形態として、バイナリファイル内容がメモリ空間へマッピングされる工程フローが示されている。
【0130】
本フローにおいては、配列のストライドだけを合わせれば、バイナリファイルのデータをそのままで利用できるようになっている。そのため、一般的なケースと異なり、読み込んだ教師データをトレーニングの入力と出力に適した形式に変換する処理が必要ない(例えば、画像のフォーマットをint8型からfloat32型に変換したり、コンテンツを修正したりするなど)。
【0131】
図12における最後の工程はニューラルネットワークのトレーニングである(このトレーニングそれ自体には、従前の手法を採用できるため、本発明に特有の事項を除き、詳細の説明を割愛している)。
【0132】
本発明の一実施形態において、ニューラルネットワークのトレーニング・フレームワーク(PyTorch)は、Python言語のGUIを介して利用されることができる。余談であるが、Python言語は、計算処理の遅い言語であるため、データを実際に読み込まないほうが好ましい。本発明の一実施形態においては、オペレーティングシステムとCPUの構成により、ファイル内容は、仮想記憶のポインタを介して直接指定できる。また、ファイル内変数を指すポインタとファイル内配列のストライドをNumpy配列のフォーマットでPyTorchのGUIに送れば、そのまま教師データをPCIe外側のGPUに速く転送することができる。Numpyは、他のPython言語ライブラリである。
【0133】
本発明は、これに制限されるものではないが、一実施形態において、ニューラルネットワークのアーキテクチャは、Gao Huang他の”Densely Connected Convolutional Networks”(https://arxiv.org/pdf/1608.06993v5.pdf)に基づいて実装されることができる。
【0134】
また、
図12に示されたフローにおいては、3×3の畳み込みカーネルに替えて、1×1の畳み込みカーネルを使用することができる。
【0135】
図12のステップS1201において処理を開始すると、ステップS1202へ進み、
図11に示されたフローまでに生成されたハッシュ値が入力される。次に、ステップS1203へ進み、バイナリファイルのリストであるfile_list={}が確保される。
【0136】
ステップS1204では、確保されたバイナリファイルのリストのうち、処理すべきバイナリファイルが残っているかどうかが判断され、Yesの場合はS1205へ進むが、Noの場合はS1209へ進む。
【0137】
次に、ステップS1206へ進み、
(binary_file.name.u & hash.u)>0
であるかどうかが判断され、Yesの場合はステップS1207へ進み、Noの場合はステップS1204へ復帰する。
【0138】
次に、ステップS1207へ進み、
(binary_file.name.v & hash.v)>0
であるかどうかが判断され、Yesの場合はステップS1208へ進み、Noの場合はステップS1204へ復帰する。
【0139】
ステップS1208では、バイナリファイルがfile_listへ追加される。
【0140】
ステップS1209では、file_list内のファイルごとに1回、ファイルの内容がpytorchテンソル仮想メモリ空間に直接マップされる。
【0141】
ステップS1210では、このハッシュに対するニューラルネットワークがトレーニングされる。
【0142】
そして、ステップS1211へ進み、本フローとしては処理を終了する。
【0143】
なお、本発明の一実施形態においては、ハッシュ値に対応するタイルの教師データは、ハッシュ値によって、入力領域として近い他の複数のタイルの教師データを含ませることができる。これにより、タイルの境界部分をより自然な結果となるように学習させることができる。
【0144】
バイナリファイルは、入力領域を指定するハッシュ値によって区分されている。ニューラルネットワークのトレーニングは、自身のハッシュ値や、自身のハッシュ値と近似しているハッシュ値を利用して行われる。ハッシュ値は、元々UV空間の領域を表すビットフィールドなので、ビット単位のAND演算(論理積)により、値と値の類似を推計することができる。
【実施例5】
【0145】
図13に、本発明の一実施形態にかかる画像処理システム等の動作の具体例のうち、1×1の畳み込みカーネルを採用したことによる動作原理を示す。
【0146】
以下、従来の画像処理システム等における畳み込みカーネルの計算処理例(
図17~
図18)と対比しながら、本発明の一実施形態にかかる画像処理システム等における畳み込みカーネルの計算処理について説明する。
【0147】
まず、
図13に示される本発明の一実施形態にかかる1×1の畳み込みカーネルでは、入力画像領域1310に入力画像の少なくとも一部が示されており、入力画像領域1310内の畳み込みカーネル対象領域1311には、情報(1)が埋められているものとする。また、
図13に示された畳み込みカーネル1320には、情報(0)が埋められているものとする。
【0148】
そして、畳み込みカーネル対象領域1311と畳み込みカーネル1320との演算による出力層1330上の出力は、畳み込みカーネル対象領域1311及び畳み込みカーネル1320中の各要素の積(及び和)によって、以下のように求められる。
【0149】
(1×0)=0
本発明はこれに制限されるものではないが、本発明の一実施形態にかかる画像処理システム等においては、上述したような1×1の畳み込みカーネルが採用されることで、データ依存性の問題を一層解決することができる。また、本発明の他の実施形態においては、1×1の畳み込みカーネル以外の簡素な構成の畳み込みカーネルによっても、同様の効果を奏することができる。
【0150】
次に、1×1の畳み込みカーネルとの比較のために、従来の畳み込みカーネルの計算コストを説明した後、本発明の一実施形態におけるもう一つの特徴であるハッシュ分業について説明する。
(従来の畳み込みニューラルネットワーク)
従来の畳み込みニューラルネットワークの設計方法は、本願の出願時点において最新のGPUに実装した場合には、ハードウェアの利用効率が低下してしまうという問題がある。一方で、リアルタイム・レンダリングという特殊なケースでは、通常とは異なる有利なデータ依存特性により、これらの非効率性を改善できることは上述したとおりであり、そのためのアルゴリズムが「ハッシュ分業」である(「ハッシュ分業」の具体例については、
図14~
図16を参照してさらに詳細に説明する)。
【0151】
図17~
図18に、従来の画像処理システム等における畳み込みカーネルの計算処理例が示されている。より具体的には、
図17には、畳み込みカーネルが生成する計算の様子が示されており、
図18には、
図17に示される計算が入力チャンネル数に応じてどのように変化するかが示されている。
【0152】
なお、チャンネルの数は、ニューラルネットワークに表現力を持たせるために多数用意される。一例として、512チャンネルなどである(それ以上でも差し支えない)。一般に、画像の品質や表現力を向上させるためにはチェンネル数を増大させる必要がある。しかしながら、各ピクセルにおいては、ほとんどのチャンネルが無関係になっていることが多く、非効率である。つまり、チャンネル数による非効率は、スケーラビリティのボトルネックとなる。
【0153】
図17には、入力画像領域1710に入力画像の少なくとも一部が示されており、入力画像領域1710内の畳み込みカーネル対象領域1711には、左上から順に、(0,0,0,0,1,1,0,1,2)の情報が詰められているものとする。また、
図17に示された畳み込みカーネル1720には、左上から順に、(4,0,0,0,0,0,0,0,-4)の情報が詰められている。
【0154】
そして、畳み込みカーネル対象領域1711と畳み込みカーネル1720との演算による出力層1730上の出力は、畳み込みカーネル対象領域1711及び畳み込みカーネル1720中の各要素の積及び和によって、以下のように求められる。
【0155】
(0×4)+(0×0)+(0×0)+
(0×0)+(1×0)+(1×0)+
(0×0)+(1×0)+(2×(-4))
=-8
図18には、
図17に示される計算が入力チャンネル数に応じてどのように変化するかが示されており、チャンネル数が3であった場合の計算例である。
図18に示されるように、入力画像領域1810a~1810c内の畳み込みカーネル対象領域1811a~1811cと、畳み込みカーネル1820a~1820cとの演算による出力層1830上の出力は、以下のように求められる。
【0156】
(0×1)+(0×0)+(0×4)+
(0×1)+(0×0)+(0×0)+
(1×0)+(0×4)+(0×0)+
(1×0)+(0×0)+(0×0)+
(1×0)+(1×1)+(1×0)+
(2×1)+(1×1)+(1×0)+
(0×0)+(0×0)+(0×0)+
(0×0)+(1×0)+(1×0)+
(0×1)+(0×0)+(2×(-4))
=-4
このように、
図17及び
図18に示される、コンボリューショナルカーネルの計算コストは、入力ピクセル数と出力チャンネル数を掛け合わせて算出される。
【0157】
この計算コストを、GPUの使用率から考えると、次の(A)~(C)のような問題が考えらえる。
(A)レイヤー数が多くなり、各レイヤーが複数のシェーダの呼び出しで構成されるようになると、小さなシェーダを大量に起動して終了させることによるオーバーヘッドが増大する。
(B)適度なチャンネル数の畳み込みニューラルネットワークは、メモリ命令に対する演算命令の不足が問題となる場合がある。チャンネル数が多ければ、特定の演算ではバランスは良くなるものの、最終的にはランタイムが長くなる。ニューラルネットワークは、ハードウェア利用の観点からは効率的といえるが、リアルタイム性の観点からは、従来のやり方では不十分なものとなる。したがって、チャンネル数が増えても、一部の演算は不均衡なままとなる。
(C)レイヤー内の演算及びレイヤー間の演算は、データに依存するシェーダ呼び出しとして実装されているため、中間出力をオフチップ・メモリに書き込んでから、別のシェーダ呼び出しに含まれる次の演算の入力として再読込する必要があるという改善すべき冗長性がある。
【0158】
次に、上記の問題(A)~(C)に対する解決の糸口を考察すると、まず(A)に関して、なぜニューラルネットワークを細かく分割して、それぞれのシェーダを呼び出すのかを検討すると、それは、演算間のデータ依存性と要素/ピクセル間のデータ依存性の組み合わせによるものであると考えられる。もし、操作間の依存性がなければ、レイヤーを並行して実行できることが示唆される。また、要素間の依存性がなければ、出力ピクセルを並列に実行できることが示唆される。いずれにしても、1回のシェーダ呼び出しでニューラルネットワークを解決できることを意味する。
【0159】
(B)に関しては、問題は、ニューラルネットワーク全体の計算命令が不足しているのではなく、各シェーダの呼び出しに含まれる演算命令の数が少な過ぎることにある可能性が示唆される。つまり、各スレッドは、最初のメモリ読み込みが完了するのを待つ間、半固定の起動時間があるため、アイドル・クロックサイクルの割合が高くなり、GPU利用率が低下する。
【0160】
(C)に関しては、小さなシェーダ呼び出しが大量にあることが問題と考えられる。中間出力の再書き込みと再読み込みを繰り返すと、大量のメモリトラフィックが発生し、レイテンシも発生することになる。シェーダの呼び出し回数が少なくするためには、データ依存性の問題を解決する必要がある。
【0161】
以上の検討や考察を踏まえると、コンピュータグラフィックスの世界では、要素間のデータの依存関係を事前に解決することができれば、これまでに指摘した問題を解決できることがわかる。
【0162】
そして、その解決策が、
図13を参照して説明した本発明の一実施形態における1×1の畳み込みカーネルの採用、及び/または、次に述べる「ハッシュ分業」の採用である(1×1の畳み込みカーネルについては、状況によっては、他の簡素な構成の畳み込みカーネルによっても本発明の効果を奏することができる)。以下、本発明の一実施形態におけるハッシュ分業の具体例について、図面を参照して説明する。
【実施例6】
【0163】
図14~
図16に、本発明の一実施形態にかかる画像処理システム等の動作の具体例のうち、ハッシュ分業を採用したことによる動作原理を示す。
【0164】
本発明の一実施形態にかかるハッシュ分業が実施されるにあたっては、画面フレーム中のタイルは、個々のGPUスケジューラに割り当てられる。そして、各タイルの内容に基づいてハッシュ値をGPUに計算させることで、専用のニューラルネットワークをオンチップメモリ上でローカルに実行させることができる。これにより、より小さなニューラルネットワークに特化することに成功し、また、中間データやデータの依存関係を同じスケジューラ内に保つことができるので、理論的に処理効率は向上する。
【0165】
そのハッシュ分業の処理フロー例については、
図6等を参照してすでに説明している。
【0166】
図14~
図16に例示されるハッシュ分業では、タイルのピクセル内容からハッシュ値を計算する過程が示されており、一実施形態において、以下の疑似コードが採用される。
【0167】
for(pixel in tile){hash_u|=(1<<pixel.u)}
for(pixel in tile){hash_v|=(1<<pixel.v)}
3DモデルのもつテクスチャUVは、本発明の一実施形態におけるハッシュ分業を適用するには理想的であり、基本的には、初期ビットが0であるものを出力ビットとして1を立てる。また、望ましくは、さらに8倍するなどのスケーリングが採用される。
【0168】
このような構成により、「配列キー=ハッシュ値」という関係で、重みを効率的にロードすることができる。
【0169】
図14におけるハッシュ分業では、上述の前提に基づき、入力画像領域1410のピクセル1411内の値0.8が、以下の式に基づいて出力されている様子が示されている。
【0170】
出力|=
1<<((static_cast<int>(0.8f*8.0f))%8)
また、
図15におけるハッシュ分業では、入力画像領域1510のピクセル1511内の値0.2が、以下の式に基づいて出力されている様子が示されている。
【0171】
出力|=
1<<((static_cast<int>(0.2f*8.0f))%8)
また、
図16におけるハッシュ分業では、入力画像領域1610のピクセル1611内の値1.0が、以下の式に基づいて出力されている様子が示されている。
【0172】
出力|=
1<<((static_cast<int>(1.0f*8.0f))%8)
以下、同様に、入力画像領域内のピクセル内の値に対して、次々とハッシュ分業処理が実施されていくことになる。
[理論的効果]
以上述べた実施例から導かれる本発明の一実施形態における理論的効果は、次のとおりである。
(理論的効果1:ニューロン数の低減)
制約の多い入力領域では、より少ない数のニューロンで十分なパフォーマンスが得られる。このことは、パフォーマンス面にも顕著に反映される。さらに、理論的には、本発明が取り扱う十分に小さいニューラルネットワークは、1つの命令スケジューラ(またはスケジューラのクラスタ)のレジスタ内で、そのライフタイムの間生存することができるため、このことによる効果も期待できる(後述の理論的効果2~4を参照)。
(理論的効果2:シェーダの使用回数の低減)
すべてのニューラルネットワークを1回のシェーダ呼び出しで同時に解決することができるため、プラットフォームに起因する無数のオーバーヘッドを回避することができる。
(理論的効果3:ALUの使用率向上)
入力及び出力の両方がレジスタに格納されているため、ALUはメモリ依存によるレイテンシの制約を受けることがない。ALUを自身のペースで動作させることは、あらゆる面での性能向上につながる。
(理論的効果4:メモリトラフィックの削減)
外部メモリとの間で中間値を書き込んだり、それを読み返したりする必要がないため、メモリトラフィックは減少する。これにより、メモリサブシステムの負担が軽減され、パフォーマンスが向上する。
(理論的効果5:大容量システムのスケーラビリティ向上)
ニューラルネットワークが生成するレンダリング出力の幅や質が向上すると、ニューラルネットワークのサイズも大きくなり、ニューラルネットワークのサイズが大きくなると、パフォーマンスが低下する。本発明の一実施形態におけるハッシュ分業は、構造化されたサブドメインの切り離しにより、この問題を回避することができる。
(理論的効果6:ストリーミング・フレンドリー・アセット)
アートアセットとして展開する場合、ニューラルネットワークはSSDからリアルタイムにストリーミングされる必要がある。そこで、各ニューラルネットワークを小さくし、構造化された方法でラベル付けすることで、現在のスクリーンコンテンツに基づいて、必要に応じてメモリに出し入れすることができる。
(理論的効果7:制御性と安定性の向上)
メモリの依存関係が制限されることで、特定の結論に到達するために使用された入力を推測することが容易になる。これにより、ニューラルネットワークが、十分に異なる状況下で失敗してしまうリスクを低減させることができる。
(理論的効果8:ラスタ耐性のあるズーミング)
低解像度の出力に必要なロジックは、高解像度の出力に必要なロジックとは大きく異なる場合があり、本発明を適用しない場合には、入力ドメインのズームレベルが広いほどラスタアーティファクトが発生する。そこで、本発明の一実施形態にかかるハッシュアルゴリズムを採用したことで、ズームレベルに応じて異なるニューラルネットワークが学習され、このプロセスが自動的に行われるという利点がある。
(理論的効果9:レンダーエンジンの互換性)
本発明の一実施形態にかかるハッシュ分業は、他のエンジンと同じ3Dモデル、アニメーション、光源を使用しており、いくつかの(またはすべての)シーンオブジェクトのシェーダとして追加されることもできる。
(理論的効果10:ニューラルネットワークの画質)
オフラインでのGANベースのニューラルネットワークは、すでに現在のリアルタイムレンダリングシステムよりも高品質な出力を実現している。これを迅速かつ安定的に行うことにより、多くの種類のリアルタイムエンジンや製品にとって魅力的な選択肢を与えることができる。
(理論的効果11:資産形成)
ニューラルネットワークのトレーニングは、静的なアセットの3Dスキャンや、シェーダで使用されるPBR定数よりも、多くの点で寛容的である。シーン全体で一貫してフォトリアリスティックな品質レベルを維持するための現実的な選択肢を提供することができる。
【0173】
以上、具体例に基づき、画像処理システム及び画像処理プログラム等の実施形態を説明したが、本発明の実施形態としては、システム又は装置を実施するための方法又はプログラムの他、プログラムが記録された記憶媒体(一例として、光ディスク、光磁気ディスク、CD-ROM、CD-R、CD-RW、磁気テープ、ハードディスク、メモリカード)等としての実施態様をとることも可能である。
【0174】
また、プログラムの実装形態としては、コンパイラによってコンパイルされるオブジェクトコード、インタプリタにより実行されるプログラムコード等のアプリケーションプログラムに限定されることはなく、オペレーティングシステムに組み込まれるプログラムモジュール等の形態であっても良い。
【0175】
さらに、プログラムは、必ずしも制御基板上のCPUにおいてのみ、全ての処理が実施される必要はなく、必要に応じて基板に付加された拡張ボードや拡張ユニットに実装された別の処理ユニット(DSP等)によってその一部又は全部が実施される構成とすることもできる。
【0176】
本明細書(特許請求の範囲、要約、及び図面を含む)に記載された構成要件の全て及び/又は開示された全ての方法又は処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。
【0177】
また、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一又は均等となる特徴の一例にすぎない。
【0178】
さらに、本発明は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本発明は、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された全ての新規な特徴又はそれらの組合せ、あるいは記載された全ての新規な方法又は処理のステップ、又はそれらの組合せに拡張することができる。
【符号の説明】
【0179】
10 画像処理システム
11 情報処理サーバ群
111 リアルタイムクラスタ
112 ロードバランサ
12、13 PC(情報処理装置の一形態)
14 携帯電話(情報処理装置の一形態)
15、15a~15c タブレット端末(情報処理装置の一形態)
19 公衆回線(専用線、インターネット等)
23 APIサーバ