Tensorflow.js 学習済みモデルを使って人物検出(人数)を行う
TensorFlow.jsの学習済みモデルを使って人物検出を行い、画像に人物が何人いるかを判定する方法を紹介します。
今回はBodyPixというライブラリ(学習済みモデル)を使用します。
BodyPixは、人数判定だけでなく、検出した人物にフィルターをかけたり、人物の頭、腕など、細かく分類したり、とても高機能なライブラリです。
https://github.com/tensorflow/tfjs-models/tree/master/body-pix
パッケージのインストール
以下のコマンドで必要なパッケージをインストールします。
$ npm install @tensorflow-models/body-pix予測
以下のように、予測を行います。
const bodyPix = require('@tensorflow-models/body-pix');
async function predict() {
// モデルの読み込み
const model = await bodyPix.load();
// 判定する画像要素を取得
const img = document.getElementById('img');
// 予測
const segmentation = await model.segmentMultiPerson(img);
// 人数を表示
console.log(segmentation.length);
}segmentMultiPersonメソッドの引数には、画像(img要素)だけでなく、キャンバス(canvas要素)を指定することも可能です。
取得結果segmentationには検出した座標などの様々な情報を人物ごとに配列で格納されています。
今回は単純に人数を取得するため、配列の長さを取得しています。