見出し画像

DeepLabCutの結果をKineAnalyzerに取り込んだら、それほど手間をかけずに動作解析できた。

前回、OpenPoseの結果をKineAnalyzerで取り込んで、解析する方法を紹介しました。

その記事を見た方から、DeepLabCutのデータでもやってみてほしいというご要望をいただきました!
そこで今回は、DeepLabCutのデータをKineAnalyzerに取り込んで解析してみました。
(文 : 開発担当者 A)

【取り込む手順】

一連の流れ

■DeepLabCutとは

DeepLabCut は、AIの深層学習によって実験動物の動画像から関節位置などを推定して追跡するために、研究分野で広く使われているツールです。

【公式サイト】
DeepLabCut — The Mathis Lab of Adaptive Motor Control (mackenziemathislab.org)

■DeepLabCutを使って3次元のcsvファイルを取得する

DeepLabCutの具体的な使い方については、公式HPの他にも様々な紹介サイトがあるので今回も割愛します。

今回は、DeepLabCutのGitHubのexampleに掲載されているGoogle Colaboratoryで実行するサンプルを利用します。
DeepLabCutの実行には、GPUを搭載した高性能のPCが必要になりますが、Google Colaboratoryを使うと(制限はありますが)非力なPCでもDeepLabCutを使うことが可能になります。

下記のサイトにアクセスして
DeepLabCut/examples at master · DeepLabCut/DeepLabCut (github.com)

「Demo 3: DeepLabCut training and analysis on Google Colaboratory (with Google's GPUs!):」
にある「Open in Colab」ボタンをクリックします。
すると、Google Colaboratoryの「Colab_DEMO_mouse_openfield.ipynb」というノートブックが起動します。

画像11

表示されたノートブックのコマンドを上から順番に実行していきます。

まず、サンプルのフォルダをGitHubからクローンしています。

# Clon
e the entire deeplabcut repo so we can use the demo data:
!git clone -l -s git://github.com/DeepLabCut/DeepLabCut.git cloned-DLC-repo

「examples/openfield-Pranav-2018-10-30/videos」フォルダにこのノートブックのサンプルで追跡する動画が入っています。左から右に流れるベルトの上を、マウスが右から左に歩いている動画です。

この動画から次の4つの特徴点を検出しています。(config.yamlファイルで確認できます。)
● snout   - 頭
● leftear  - 左耳
● rightear  - 右耳
● tailbase  - 尾

DeepLabCutでは、まずは学習用にラベリング(動画からいくつかのフレームをピックアップして、特徴点の正しい位置を指定する作業)を行う必要があります。
ただし、サンプルでは既にこの動画に対してのラベリング作業は終わった状態のためこの作業を行っておりません。(labeled-dataフォルダ)

deeplabcut.train_networkコマンドを実行すると学習を開始します。
サンプルなので、30分くらいで学習が終わる程度の設定になっていますが、このパラメータを変更することで学習精度を上げることもできます。

deeplabcut.train_network(path_config_file, shuffle=1, displayiters=100,saveiters=500, maxiters=10000)

deeplabcut.analyze_videosコマンドで、学習した結果を動画に適用して特徴点を推定します。
このとき、パラメータ「save_as_csv=True」を追加することで、推定した特徴点の座標がcsvファイルとして出力することができます。
あとでKineAnalyzerに座標を取り込むので、このパラメータは忘れずに追加してください。

videofile_path = 
['/content/cloned-DLC-repo/examples/openfield-Pranav-2018-10-30/videos/m3v1mp4.mp4'] 
#Enter the list of videos to analyze.
deeplabcut.analyze_videos(path_config_file,videofile_path, videotype='.mp4', save_as_csv=True)

あとは、ノートブックの残りのコマンドを実行していきます。

全てのコマンドを実行すると、videosフォルダに結果が出力されます。
その中の、次の2つのファイルを自分のPCにダウンロードしましょう。

① m3v1mp4.mp4 :動画ファイル
② m3v1mp4DLC_resnet50_openfieldOct30shuffle1_10000.csv :追跡結果のCSVファイル

※このあと、KineAnalyzerというソフトとで動画を取り込み、3DCalculatorというソフトでCSVファイルを取り込みます。3DCalculatorでは扱える動画の解像度と時間に制限があり、フルHD(1920×1080)の動画の場合6分程度が制限になります。動画が長い場合は、事前に動画の解像度を落としてください。DeepLabCutも解像度を落とした動画で処理してください。

Video出力

■KineAnalyzerへの取り込み

まず準備として、KineAnalyzerに付属するMarkerMasterEditor2というツールで、今回追跡した特徴点を定義したマーカマスタを作ります。

画像11

次に、KineAnlayzerの新規データウィザードの「動画取り込み」ボタンから①の動画ファイルを取り込みます。

取り込んだデータに対して3DCalculatorというマーカを追跡するソフトを使って②のcsvファイルを読み込みます。このとき、先ほど作成したマーカマスタを指定します。
すると、座標データが読み込まれ、動画上に特徴点がオーバーレイ表示されます。

画像11

ここでは取り込み方の詳細は割愛しますが、詳しい手順をお聞きになりたい方は、弊社ホームページの窓口までお問い合わせください。

■KineAnalyzerでの解析

csvファイルを取り込むと、KineAnalyzerで様々な解析が行えるようになります。

画像10

それでは、簡単な解析をしてみましょう。

例えば、ベルトの流れる方向をy軸として、マウスの頭と尾を結ぶ線がy軸となす角度を求めてみます。

図3

KineAnalyzerでは下図のように定義します。

角度の定義

グラフに表示すると、グラフのプラスとマイナスが、マウスのy軸に対する向きと一致していることが分かると思います。

画像9
画像10

■まとめ

いかがでしょうか。
DeepLabCutで推定した特徴点の結果を、それほど手間をかけずにKineAnalyzerに取り込んで解析することができました。
動画だけでも簡単な動作解析ができることを分かってもらえたと思います。
今回は、例として1匹のマウスの体の向きを解析しましたが、例えば2匹のマウスが映った動画では、2匹のマウス間の距離関係なども解析できます。

弊社システムである、動物用三次元動作解析システムKinemaTracer for Animalではマウスに小さなマーカを貼付して、より細かな歩行因子(歩幅や歩行周期など)や、足関節の角度変化、軌跡の変化などの、マウスの動作を3次元的に詳細に解析できます。
今後は
・動画だけでも簡易に解析できるDeepLabCut + KineAnalyzer
・より詳細に解析するときはKinemaTracer for Animal
とどちらも共存しながら研究にお役立ちさせていただけるよう精進してまいります。

このほかこんなことやってみてほしい!できるの?というようなことございましたら是非ご連絡ください。

■今回計測に使ったシステム

動物用三次元動作解析システム KinemaTracer for Animal
https://www.kicnet.co.jp/solutions/biosignal/animals/kinematracer-for-animal/

データ統合解析プログラム KineAnalyzer
https://www.kicnet.co.jp/solutions/biosignal/humans/biosignal/kineanalyzer/

※ 製品・ブログ等に関するお問い合わせは、上記リンクページ下部の「お問い合わせ」よりご連絡ください。

いいなと思ったら応援しよう!