7. 機械学習

imageの章のほとんどの検出器は、特定のターゲット向けに手作業でコーディングされていました――ブロブ追跡のための手調整されたカラー範囲、エッジフィルタのための手導出された重みパターン、線・円ファインダーのための固定された幾何学的前提です。各アルゴリズムは1種類のタスクを担い、新しいターゲットを追加することは新しいアルゴリズムを書くことを意味しました。機械学習はこのワークフローを変えます。ターゲットごとに1つのアルゴリズムを用意する代わりに、アプリケーションは訓練済みモデル――多数の例画像を用いてデスクトップ上のオフボードで生成された重みのスタック――を読み込み、それをカメラ上で実行します。顔検出器を実行するのと同じエンジンが、手のポーズ推定器、体のポーズトラッカー、物体分類器、その他モデルが訓練された何であれを実行します。

ml モジュールはそのツールキットです。すべての操作は単一の Model オブジェクトの上に構築されます。このオブジェクトはフラッシュからモデルファイルを読み込み、量子化された入力テンソルと出力テンソルを管理し、各推論をカメラ上の適切なエンジンにディスパッチし、得られたテンソルをオプションのポストプロセッサを通じてルーティングして、アプリケーションが行動を起こせる結果形式――ボックス、キーポイント、クラス、その他モデルの用途に応じたもの――に戻します。

まとめ