見出し画像

DeepLabCutの結果をKineAnalyzerに取り込んで3次元で解析してみた(行動解析編)

以前、DeepLabCut(動物の行動を分析するための深層学習ツール)の結果を弊社解析ソフトのKineAnalyzerに取り込んで、2次元で解析する方法を紹介しました。
今回は、複数のカメラで撮影した動画をDeepLabCutで特徴点を抽出し、その結果をKineAnalyzerに取り込んで、3次元化する方法を紹介します。
(文:開発担当A)

*前回記事


■ 概要

今回は「ケージ内の2匹のマウスの行動」を解析する想定でデータを作ってみます。(おもちゃのマウスを使って、ケージに見立てた箱の中でのマウスの動きを3次元化してみます)

撮影環境は上図のとおりです。箱の中でおもちゃのマウスを動かして、カメラ1~カメラ3の3台のカメラで撮影します。

3次元化は、[カメラ1] と [カメラ2] の2つの動画を使って行われます。

残る [カメラ3] は真上から撮影するカメラです。2次元で解析する場合はこのカメラを使いますが、今回の記事ではこの動画は使いません。

また、各カメラで各辺の長さが分かっているオブジェクトを撮影します。
この画像は後ほど三次元化する際に撮影空間をキャリブレーションするために必要になります。

取り込む手順は以下の通りです。


■ 使用するソフト

使用するのは次のソフトです。
・DeepLabCut
・KineAnalyzer

・その他(KineAnalyzerに付属するソフト)
  ・3DCalculator:三次元化するソフト
  ・MarkerMasterEditor2:マーカの定義を行うソフト

◆ DeepLabCutとは

DeepLabCut は、AIの深層学習によって実験動物の動画像から関節位置などを推定して追跡するために研究分野で広く使われているツールです。動物の行動解析などにもにも広く利用されています。
【公式サイト】
DeepLabCut — The Mathis Lab of Adaptive Motor Control 

◆ KineAnalyzerとは

弊社のデータ統合解析プログラムです。各種モーションキャプチャシステムの3次元データや、動画、筋電計などのアナログデータを取り込んで統合的に解析することができます。
今回は、KineAnalyzerに付属の3DCalculatorを使って3次元化します。

■ 機材要件

DeepLabCutを始めとする便利な仕組みは単体でも十分に便利なものですが、最大限に活かすためには機材の構成が重要です。
このあたりは各々の目的にあった構成が大切なので、興味があれば弊社までお気軽にご相談ください。

◆ PCについて

DeepLabCutを使用したい場合、AIの深層学習を行うためにGPUを搭載した高性能なPCとそれに伴うセッティングが必要になります。

◆ カメラについて

今回の実験では、複数のカメラを使用して動きの三次元化を行います。そのために、カメラ間のタイミングの同期が重要です。動画素材間のタイミングがわずかにズレるだけでも、精度が低下してしまう可能性があります。


■ DeepLabCutで特徴点を抽出する

まず、カメラ1、カメラ2 それぞれの動画を処理して特徴点を検出します。
DeepLabCutは3.0.0rc6のGUI版を使いました。Engineにはtensorflowを指定しました。
DeepLabCutの具体的な使い方については、公式HPの他にも様々な紹介サイトがあるので今回も割愛します。

通常DeepLabCutで処理する場合にはマーカを貼る必要はないのですが、今回はDeeplabCutでのアノテーション作業を簡単にするために、特徴点に小さなカラーマーカ(m1~m5)を貼っています。

アノテーション:AI学習用のデータ作成作業のこと

各カメラで30枚の画像でアノテーション作業を行い、動画から特徴点を抽出してCSVファイルとして保存しました。


■ KineAnalyzerへの取込み

最終的にこれらのファイルをKineAnalyzerに取り込みます
① Cam_{n}.mp4:動画ファイル
② Cam_{n}.csv:特徴点を抽出したCSVファイル
③ Cal_Cam_{n}.bmp:キャリブレーション用のオブジェクトを撮影した画像ファイル

◆ マーカマスタの設定

まず準備として、KineAnalyzerに付属するMarkerMasterEditor2というツールで、マウスの特徴点を定義したマーカマスタを作ります。一つのマスタの中に2匹分の定義を作ります。

KineAnlayzerを起動して新規データウィザードから①の動画ファイルと③のキャリブレーション画像を取り込みます。カメラ1とカメラ2の動画を取り込みます。

◆ 3次元化

次に、KineAnalyzerに取り込んだデータを、3DCalculatorというマーカを追跡するソフトで開きます。先ほど作成したマーカマスタを指定してから、DeepLabCutで処理した②のCSVファイルを読み込みます。座標データが正しく読み込めると、動画上に特徴点がオーバーレイ表示されます。
同様にしてもう一方のカメラのCSVファイルも取り込みます。

キャリブレーション画像上でオブジェクトの既知の座標のポイントを指定すると、おもちゃのマウスの座標が3次元化されます。

これで、DeepLabCutで処理した特徴点の座標が3次元座標として計算されました。
KineAnalyzerでデータを開くと下図のように表示されます。

■ KineAnalyzerでの解析

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

◆ 解析例① 2匹のマウスの距離

KineAnalyzerで2匹のマウスのm1マーカ間の距離を定義します。
グラフにすると2匹のマウスの距離に応じてグラフが変化していることが分かると思います。
例えば、ストレス負荷を与えたマウス自閉症スペクトラム障害(ASD)モデルマウスなどで、他のマウスとの干渉をためらう様子を数値化することができます。

◆ 解析例② エリアの滞在時間

次にゲージを上から見た視点で4つのエリアに分けて、ゲージのどのエリアにどの程度滞在したかを計算してみます。
マウスの位置が座標値として計算できているので、KineAnalyzerの区間選択機能でエリアごとの滞在時間を求めることができます。

例として、施行1と施行2で、マウスごとエリアごとの滞在時間、2匹のマウスが同じエリアに滞在した時間をExcelで棒グラフにしてみました。

例えば、うつのモデルマウスで不安レベルを評価したり特定の匂いのするエリアでの滞在時間を評価したりする場合などでの活用が考えられます。

◆ 解析例③ マウスの立ち上がり

最後に、今回3次元で解析したことによるメリットの例を示します。
解析例①と解析例②は、真上からのXY平面(2次元)での解析でも同じことができますが、3次元化することでZ軸の座標を活かした解析が行えます。
おもちゃのマウスはケージの端で立ち上がったような状態になります。それをグラフ化してみましょう。

立ち上がった状態を数値化するために、マーカマスタの変更画面からZ軸との角度を定義します。

グラフとして表示すると、各マウスが立ち上がっている様子が数値化されていることが分かると思います。

例えば、マウスの探索行動を数値化する場合などでの利用が考えられます。

■ まとめ

いかがでしょうか
DeepLabCutでの解析というと、2次元での解析をイメージすると思いますが、KineAnalyzerを使うことで3次元でも解析できることを分かってもらえたと思います。
また、機材選定も重要な要素となりますのでお気軽にご相談ください。

こんなことやってみてほしい!できるの?というようなご意見もお待ちしております!

■ 今回ご紹介したシステム

データ統合解析プログラム KineAnalyzer

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


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