技術情報
弊社では、お客さまのご要望に合わせ、個別の用途や使用予定のソフトウェアに合わせて、最適なPCソリューションをご提案しております。
理工学・医学・生物学・心理学など様々な分野のお客様よりご指定いただく機会の多いソフトウェアのひとつに、DeepLabCut (動物の行動分析のための動画学習ツール)があります。
このツールは学習用のサンプル動画としてネズミの動画が提供されており、実際に学習を試すことができます。
もちろん、ネズミ以外の幅広い生物に対して、機械学習による行動・姿勢の分析ができます。
本記事では、人間がキーボードを指で押す動画を機械学習させ、動きを追跡を試してみました。
DeepLabCut
動物の行動を分析するためのオープンソースのディープラーニングツール。動画から動物の特定の身体部位を識別しマーカーレスでの追跡が可能で、精度の高い動きの分析を提供する。
検証に使用したハードウェアのスペックは以下の通りです。
CPU | Intel Core i9 9900K (3.60GHz 8コア 16スレッド) |
---|---|
RAM | 16GB |
GPU | NVIDIA RTX 2080 Ti |
キーボードを左手の人差し指で押す動画を撮影しました。
学習させる点は、下記の4点です。学習する点は設定ファイル config.yaml に記載します。
人差し指の指先 | 人差し指の付け根 | キーボードの左上 | キーボードの右下 |
---|---|---|---|
finger_top | finger_root | keyboard_upperleft | keyboard_lowerright |
学習させるにあたり画像にラベル付けをしていきます。
デフォルト設定では、学習元の動画から19枚のフレームが抜き出されます。
抜き出されたフレームの画像1枚1枚に対し、1点1点手動でラベル付けを行います。
ラベル付けが終わりましたら、GUI上で学習処理を行います。
今回は下記のパラメータで実行し、計算に要した時間は4時間程度です。
前述の通り、RTX 2080Ti を利用した場合の学習時間です。GPUをRTX4090 とした場合は、学習時間は半分以下になります。
Train処理の実行条件、パラメータ
Maximum Iterations は学習の繰り返し回数です。大きいほど時間がかかりますが、学習結果の精度が上がります。
Network: resnet_50
Augumentation Method: imgaug
Maximum Iterations: 50,000
学習が終わりましたら、Evalute タブ上に行き、学習したモデルで実際に推論ができているかを確認します。
無事学習ができていることが確認できましたので、Analyze videos タブで、ラベル付け処理をしたい動画を指定し、推論させます。
下記4つの動画に推論処理、ラベル付けを行った様子を比較しました。
[1]学習に使った動画
[2]同一人物のほぼ同じ構成の別の動画 (左手)
[3] 同一人物で左手ではなく右手にした動画
[4] 別の人間の動画
これらの結果を比較すると、[1][2][4] は正常にラベリングができていますが、[3] 同一人物で左手ではなく右手にした動画では
・ラベリングができていない
・人差し指の付け根としてラベリングしてほしい点が中指に移っている
などラベル付けの精度が低い場面が見受けられます。
学習に用いた元動画に対する解析は高い精度での推論ができていましたが、撮影条件が少し変わると推論結果の精度が下がる様子が確認されました。この精度差は、学習パラメータの変更やより多くの画像・様々な環境での画像を学習させることによって改善する可能性が考えられますので、今後の記事での検証を予定しています。
おまけ
タイピング全体ですべての指にラベルを付けてみました。