On this page |
サンプルベースのMLノードは、Houdini内で生成される合成データセットのMLトレーニングを容易にします。 また、外部データセットを取り込むことも可能で、サンプルベースのMLノードをデータセットの拡張と前処理(トレーニング前)に使用することができます。
サンプルベースのMLノードは、幅広いMLセットアップを作成することができます。 多くのMLセットアップは、コード(トレーニングスクリプトなど)を記述することなく、ノードを配置してパラメータを設定するだけで作成することができます。 サンプルベースのMLノードは、ランダム入力サンプルの生成、ターゲットの計算、前処理、ニューラルネットワークのトレーニング、トレーニング済みモデルの未知入力への適用(推論)をサポートしています。

ML Regression Train TOPは、指定した関数を効率良く近似化するニューラルネットワークをトレーニングすることができます。
このタイプのMLアプリケーションは、 回帰(Regression) と呼ばれる教師ありML(Supervised ML)のカテゴリに分類されます。
Regression MLは、遅い処理を高速化することができます。 例えば、比較的遅いプロシージャルパイプライン(例えば、キャラクタ変形、シミュレーション)から始めて、MLモデル(ニューラルネットワーク)を使用してそのプロシージャルパイプラインを近似化することができます。 この考えは、MLモデルがそのプロシージャルパイプラインと同様の結果を生成するのに、それが高速であるというものです。 そのプロシージャルパイプラインが スーパーバイザー の役割を果たします。
既存の外部データセットを取り込んだり、Houdiniでプロシージャルネットワークを使用してデータセットを合成することもできます。
データセットの各データポイントは、入力コンポーネント
とターゲットコンポーネント
で構成された ラベル付きサンプル となります。
各入力コンポーネント
は、いくつかのPointアトリビュートとボリュームプリミティブの組み合わせとしてジオメトリ上に保存しなければなりません。
それと同時に、各ターゲットコンポーネント
は、Pointアトリビュートとボリュームプリミティブの組み合わせに削減されます。
Pointアトリビュートとボリューム寄与を含むこれら2つのコンポーネントは、Rawデータセットファイルとして書き出されます。
ML Regression Trainを使用することで、順伝播型ニューラルネットワーク(Feed-forward Neural Network)をトレーニングすることができます。
サンプルベースのMLノードは、近似したいプロシージャルパイプラインを与えると、回帰MLの以下のワークフローを容易にします:
-
ラベルなしのサンプルの役割を果たす、たいていの場合はランダムな入力セットを生成します。
-
各入力をプロシージャルパイプラインに送信して、それに呼応するターゲットを取得します。
-
各入力-ターゲットのペアは、 ラベル付きサンプル の形式でまとめられ、ラベル付きサンプルのデータセットになります。
-
該当すれば、前処理(例えば、PCA)をそのラベル付きサンプルに適用します。
-
前処理されたラベル付きサンプルをRawトレーニングデータとしてディスクに書き出します。
-
そのRawトレーニングデータに基づいてMLモデルをトレーニングします。
-
トレーニング済みMLモデルを未知入力に適用します(推論)。
ML Deformer H20.5のコンテンツライブラリのサンプルは、この回帰MLワークフローに準拠しています。 これは、皮下組織シミュレーションを適用して、各ランダム入力ポーズを変形されたスキン(ターゲット)にマップします。 このゴールは、このマップを近似化するMLモデル(ニューラルネットワーク)をトレーニングすることです。 このMLモデルは、トレーニングに使用されたデータセットがまったく含まれていない未知入力ポーズに対してシミュレーションが何を行なうのかを効率良く予測する必要があります。 ML Deformer H20.5のコンテンツライブラリのサンプルの詳細は、事例から学ぶ: ML Deformer H20.5を参照してください。
前処理 ¶
ML Example Output SOPは、トレーニングに使用されるトレーニングデータをディスクに書き出す役割を担います。
このノードは、すべてのトレーニングデータが(各埋込ジオメトリ上で)Pointアトリビュートとボリュームの形式で表現されていると想定します。
サンプルベースのワークフローの前処理ステージでは、各サンプルをPointアトリビュートとボリュームのリストへの変換は、可逆または非可逆のどちらにもなり得ます。
ML Deformerのサンプルでは、ML Pose Serializeを使用して、リグポーズの向きを浮動小数点Pointアトリビュートに変換していますが、これは情報の損失はありません。
ML Deformerで非可逆が発生する例としては、
Principal Component Analysisを使用して静止空間のスキン変形をウェイトのタプルに変換する時です。
これらのウェイトをPCAの基底と一緒に使用することで、元のスキン変形を近似して復元することができますが、正確な復元ではありません。
この非可逆な削減のメリットは、ターゲットの次元が大幅に削減され、必要となるニューラルネットワークのサイズが小さくなり、トレーニングのコストが下がることです。
トレーニング ¶
前処理済みのデータセットが更新されたら、ML Example Output SOPを使用して、そのデータセットをRaw形式でディスクに書き出すことができます。
その後、
ML Regression Train TOPは、そのRawデータセットファイルを読み込んで、そのファイルに基づいてトレーニングを実行することができます。
このトレーニングが完了した後に、
ML Regression Inference SOPを使用して、その結果のMLモデルを新しい入力に適用することができます。
このモデルに送信される各入力は、Pointアトリビュートとボリュームの組み合わせで表現されていなければなりません。
この組み合わせは、データセットの作成に使用された(場合によっては前処理された)入力と同じでなければなりません。
モデルの出力もPointアトリビュートとボリュームの形式で出力され、これを再構築で直接使用したり、再構築のベースとして使用することができます。
このML Deformerの場合では、モデルの結果は、PCAウェイトを含んだ浮動小数点Pointアトリビュートで構成されています。
これらのウェイトをPCAの基底と組み合わせることで、線形ブレンドスキニングの前にスキンメッシュの静止形状に適用可能なディスプレイスメントを構築することができます。
ディープラーニングの代替 ¶
ML Regression Train TOPと
ML Regression Inference TOPのMLノードは、ディープラーニングのカテゴリに分類され、
それぞれ隠れ層(Hidden Layer)を持つニューラルネットワークがトレーニングされ、それが推論に使用されています。
ニューラルネットワークをトレーニングせずにラベル付きサンプルで構成されたデータセットを使用する代替のML手法があります。
これらの手法の1つは、入力空間内の近接度に基づいています。
そこでは、ラベル付きサンプルのセットから、照会入力に最も近い入力コンポーネントを持つラベル付きサンプルを検索します。
そして、ML Regression Proximityを使用して、そのラベル付きサンプルに呼応するターゲットを出力としてレポートします。
このノードの1番目の入力には回帰データセット、2番目の入力には照会入力が必要です。
以前にディスクに書き出された回帰データセットは、
ML Example Import SOPを使用して読み込むことができ、そして、その出力を
ML Regression Proximity SOPの1番目の入力に接続します。
ML Regression Proximity SOPは、入力の次元が低いディープラーニングの便利な代替手段になります。
ML Regression Proximity SOPは、データセットの整合性を検証するトラブル対応のツールとしても役に立ちます。