(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023015654
(43)【公開日】2023-02-01
(54)【発明の名称】画像処理システム、方法、及びプログラム
(51)【国際特許分類】
G06T 15/00 20110101AFI20230125BHJP
G06F 9/50 20060101ALI20230125BHJP
G06N 3/08 20230101ALI20230125BHJP
【FI】
G06T15/00
G06F9/50 120A
G06N3/08
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021119564
(22)【出願日】2021-07-20
【新規性喪失の例外の表示】特許法第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)(イ)のウェブサイトにおいては、添付資料をダウンロードできるようにリンクした。
(71)【出願人】
【識別番号】300025583
【氏名又は名称】シリコンスタジオ株式会社
(74)【代理人】
【識別番号】100092783
【弁理士】
【氏名又は名称】小林 浩
(74)【代理人】
【識別番号】100136744
【弁理士】
【氏名又は名称】中村 佳正
(72)【発明者】
【氏名】フレドリック・オット・マックス・フォルケ・ヘルツベルユ
【テーマコード(参考)】
5B080
【Fターム(参考)】
5B080AA13
5B080AA14
5B080CA01
5B080FA02
5B080GA06
5B080GA11
5B080GA22
(57)【要約】
【課題】 AIでリアルタイムに不自然さのないレンダリングを行う。
【解決手段】 画面フレーム中のメッシュ情報及びライティング情報をニューラルネットワークに適応できるように構造化された入力フォーマットに変換するための変換ステップと、タイル毎に学習させた前記ニューラルネットワークを使い分けるためのハッシュ分業を行わせるステップとを含み、前記ハッシュ分業には、前記画面フレーム中のピクセル値をハッシュ化してハッシュ値を計算する工程と、前記ハッシュ値をキーとして使用し、ルックアップテーブルから対応するタイルの前記ニューラルネットワークにおける重みを選択して読み込む工程とが含まれ、前記ハッシュ分業による出力は、前記画面フレーム中のタイルに対応する前記ニューラルネットワークの重みによって推定される推定値であることを特徴とする。
【選択図】
図6
【特許請求の範囲】
【請求項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】
【特許文献1】特開2020-102195号公報
【特許文献2】特開2020-109620号公報
【特許文献3】特開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において実施可能であるが、少なくともその一部を情報処理装置等に実施させることもできる。
【実施例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を参照して後述する。
一実施形態において、このラスタライズ処理では、従来の多くのラスタライズの手法を採用することができる。各ピクセルの中間状態は、G-Bufferのようなバッファに保存される。ラスタライズの出力内容は、一例として、表面の2次元位置(UV)、表面の種類のID(分類ID)、各種類の光の量(光度)である。
ステップS605では、ピクセルごとのUV、分類ID(いずれも世界規模)に対するハッシュ計算処理が行われる。なお、本ステップでは、ピクセルごとのUV、分類IDが取り上げられているが、本発明はこれに限定されるものではなく、光度情報(世界規模)に対するハッシュ計算処理がなされてもよい。
ここでのハッシュ計算については、任意のハッシュ計算式を採用することができるが、重要なことは、タイルサイズの表面領域が十分に類似した特性(例えばUV)を持っている場合には、同じハッシュ値が得られるという性質が維持されていることである。本発明の一実施形態においては、ビットフィールドを用いたアプローチが採用される。また、UとVは、個々にセクションに分けて管理される。一実施形態において、1つのビットが各セクションを表す。
ここで、タイルがセクション内のいずれかのピクセルを含む場合、対応するビットは1に設定され、そうでなければ、ビットは0のまま維持される。なお、画素情報はレジスタに読み込まれて、レジスタなどに保持されていることが望ましい。
ステップS606では、前ステップで計算されたタイルごとのハッシュ値(タイル規模)に対し、ルックアップテーブルから取り出された値を適用してタイルごとのニューラルネットワークの重みが生成される(タイル規模)。
ここで、ルックアップテーブル検索については、メモリの読み出しとなるため、すべてのメモリリードはパフォーマンスを低下させる要因となる。したがって、ある時点でニューラルネットワークの重みをGPUの命令スケジューラ(複数の命令スケジューラが組み合わされることもある)のローカル・オンチップメモリに読み込む必要があるが、本ステップにおいてこの読み込みが実施されても良い。現在のタイルの内容を完全に表すハッシュ値はすでに計算されているので、そのハッシュ値を使って、この種の内容を扱うように厳密に訓練されたニューラルネットワークを選択することができる。
ハッシュ値に基づいてデータを取得する方法は、種々考えられるが、本発明の一実施形態においては、本フローで生成されるハッシュをオフチップ・メモリの配列へのキーとして利用することができる。
ステップS607では、前ステップで生成されたニューラルネットワークの重みと、ステップS603で処理されたタイルごとのUV、光度情報(いずれも世界規模)とが入力とされて、ニューラルネットワークモデルに基づく演算処理が行われる。
ここで、本発明の一実施形態において、ニューラルネットワークを実行するロジックとしては、UV、分類ID、光度を入力とし、ピクセルカラーを出力とする処理系が挙げられる。また、ニューラルネットワークに色ではなく光を出力させることで、複数のニューラルネットワークの出力を低コストで正しく組み合わせることも可能である。また、ここでのロジックには、種々の最適化を適用することができる。