
概要 📖 – AIによる顔検出と顔向き・ランドマーク取得
Face Track CHOPは、TOP 画像から AI で顔を検出し、Bounding Box・向き・ランドマーク・Mesh Transform を CHOP チャンネルとして出力する CHOPです。Nvidia 製 AI モデルを内蔵し、検出した顔の位置・向き・特徴点をリアルタイムでチャンネル化します。
主な用途 🎯
- TOP 入力画像からの顔検出と Bounding Box 出力
- 顔の向き(rx, ry, rz)のリアルタイム取得
- 顔ランドマーク(68点 / 126点)の uv 座標出力
- 3D Morphable Mesh の Translate / Rotate / Scale 取得
- 顔検出と各ランドマークの信頼度(Confidence)モニタリング
データフロー 🔄
入力: TOP 画像
↓
AI モデル(Config/Models)による顔検出
↓
Bounding Box / Rotations / Landmarks / Mesh Transform 抽出
↓
出力: 顔特徴チャンネル群
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
FaceTrack Page 📋
顔検出の有効化 🎛️
Active .active ✅
– 顔検出機能のオン / オフを切り替えるトグル
– オフのときは AI モデルへの推論コストが発生せず、出力チャンネルも更新されない
AI モデル / 入力ソース 🧠
Model Folder .modelfolder 📁
– 顔検出用 AI モデルファイルの格納フォルダ
– デフォルトは Config/Models フォルダ
Mesh File .meshfile 🗂️
– Mesh Fitting に使用する 3D Morphable Mesh ファイル(Nvidia nvf 形式)
– 指定すると Face Track SOP 側で Fitted Mesh を取り出せる
TOP .top 🖼️
– 顔検出を行う対象の画像を供給する TOP オペレータへのパス
– Video Device In TOP / Movie File In TOP / Render TOP 等を指定
Bounding Box 関連 📦
Bounding Boxes .bbox 📐
– 検出された顔の Bounding Box を表すチャンネルを出力
– 出力は中心位置の u, v と box の幅・高さ(入力画像左下原点の正規化座標)
Bounding Box Confidence .bboxconfidence 📊
– AI モデルが顔を検出した確信度を表すチャンネルを出力
– 値が高いほど顔である可能性が高い
顔の向き出力 🔄
Rotations .rotations 🧭
– 画像内での顔の向き(rx, ry, rz)を出力
– (0, 0, 0) はカメラに正対した状態。値域は ±180 度
Landmarks(顔ランドマーク) .landmarks 📍
出力する顔ランドマーク点数を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
ランドマーク点を出力しない |
| 68 (Multi-PIE Mark-ups) | .num68 |
AI 研究分野で標準的な 68 点のランドマーク(顎・眉・鼻 等) |
| 126 | .num126 |
より詳細な 126 点の拡張ランドマーク |
| Landmark Confidence | .landmarkconfidence |
各ランドマーク点ごとの信頼度チャンネルを追加出力。値が高いほどその点の検出精度が高い。 |
Mesh Fitting / UV 補正 🧬
Mesh Transform .meshtransform 🔧
– Fitted Mesh の Translate / Rotate / Scale チャンネルを出力
– Face Track SOP の Pre-Transform をオフにし、これらの値で手動変換すると速度・制御性が向上
Aspect Correct UVs .aspectcorrectuv 📏
– 出力 u, v 値を入力画像のアスペクト比に合わせて再スケール
– uv を画像座標ではなく 3D 座標として扱う場合に有効
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: Web カメラの顔向きでカメラ視点を制御 🎥
Video Device In TOP → Face Track CHOP (Rotations) → Camera COMP rotation
- Video Device In TOP で Web カメラ映像を取得
- Face Track CHOP の TOP パラメータに上記 TOP のパスを指定
- Active と Rotations をオンにし rx, ry, rz チャンネルを出力
- Camera COMP の rotation パラメータに Rotations 出力を export し、頭の向きで仮想カメラを動かす
Example 2: Bounding Box でリアルタイム自動クロップ 🖼️
Movie File In TOP → Face Track CHOP (Bounding Boxes) → Crop TOP
- Movie File In TOP で動画ソースを供給
- Bounding Boxes をオンにして u, v, width, height を取得
- Crop TOP のパラメータに Face Track 出力を export し、顔領域だけを切り抜き
- オンライン会議や配信用のオートフレーミング処理として活用
Example 3: 68 点ランドマークでフェイスフィルター生成 😀
Camera Image → Face Track CHOP (Landmarks: 68) → Render TOP overlay
- Number of Landmarks を「68 (Multi-PIE Mark-ups)」に設定
- Landmark Confidence をオンにして信頼度の低い点を除外
- ランドマークの uv 値を SOP / インスタンシングに渡してエフェクトを配置
- 目・鼻・口に対するメイクアップやマスクのリアルタイム合成を実現
関連オペレータ 🔗
類似機能OP 🔍
- Kinect CHOP — Kinect センサーから人物の骨格・顔データを CHOP で出力
組み合わせ推奨OP 🔄
- Face Track SOP — Face Track CHOP と組み合わせ Fitted 3D Mesh ジオメトリを取得
- Video Device In TOP — Web カメラ映像を Face Track CHOP の TOP 入力に供給
- Filter CHOP — 出力チャンネルのジッター除去・スムージング
- Math CHOP — Bounding Box / Rotations の値域変換・スケーリング
- Trigger CHOP — Bounding Box Confidence の閾値超えでイベント発火
- CHOP to TOP — ランドマーク座標を GPU シェーダ uniform に渡す
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Face Track CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 顔が検出されない / 出力チャンネルがゼロのまま
✅ Solution:
Activeがオンになっているか確認TOPパラメータが有効な画像 TOP を指しているか確認Model Folderのパスが正しく、AI モデルファイルが配置されているか確認
❌ Problem: ランドマーク・Bounding Box の値がジッターする
✅ Solution:
- 後段に Filter CHOP を入れて時間方向にスムージング
Bounding Box Confidence/Landmark Confidenceをオンにして低信頼の値を除外- 入力画像の解像度・照明を改善し AI モデルの推論精度を高める
❌ Problem: Mesh Transform が機能しない / Fitted Mesh が動かない
✅ Solution:
Mesh Fileに有効な Nvidianvf形式の 3D Morphable Mesh が指定されているか確認Mesh Transformをオンにして translate / rotate / scale チャンネルを出力させる- Face Track SOP 側の Pre-Transform をオフにし CHOP の出力で手動制御する
❌ Problem: uv 座標を 3D 座標として使うと縦横比が歪む
✅ Solution:
Aspect Correct UVsをオンにして入力画像のアスペクト比に合わせ再スケール- 後段で Math CHOP の Range 変換を使い目的の座標系へマッピング
- 入力 TOP の解像度が極端に長方形でないか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

