Summary
このプロトコルの目的は、事前に構築された畳み込みニューラルネットを利用して行動追跡を自動化し、詳細な行動分析を行うことである。行動追跡は、任意のビデオデータまたは画像のシーケンスに適用することができ、任意のユーザー定義オブジェクトを追跡するために一般化可能です。
Abstract
行動を理解することは、それを駆動する脳内の神経メカニズムを真に理解するための最初のステップです。従来の行動分析法では、自然な行動に固有の豊かさを捉えないことがよくあります。ここでは、最近の方法論 DeepBehavior の視覚化を使用して、詳細な手順を説明します。DeepBehaviorツールボックスは、畳み込みニューラルネットワークで構築されたディープラーニングフレームワークを使用して、行動ビデオを迅速に処理および分析します。このプロトコルは、単一オブジェクト検出、複数オブジェクト検出、および 3 次元 (3D) の人間のジョイント ポーズトラッキングのための 3 つの異なるフレームワークを示します。これらのフレームワークは、動作ビデオの各フレームについて、対象となるオブジェクトのデカルト座標を返します。DeepBehaviorツールボックスから収集されたデータは、従来の動作分析方法よりもはるかに詳細に含まれ、行動のダイナミクスに関する詳細な洞察を提供します。DeepBehaviorは、堅牢で自動化された正確な方法で行動タスクを定量化します。動作の識別に続いて、行動ビデオから情報と視覚化を抽出する後処理コードが提供されます。
Introduction
行動の詳細な分析は、脳と行動の関係を理解するための鍵です。神経集団を高い時間分解能で記録・操作する方法論は多くの刺激的な進歩を遂げてきましたが、行動解析法は同じ速度で発達しておらず、間接的な測定と還元論的アプローチ1に限定されています。近年、ディープラーニングベースの方法は、自動および詳細な行動分析2、3、4、5を実行するために開発されています。このプロトコルは、DeepBehavior ツールボックスの実装ガイドを段階的に提供します。
従来の行動分析方法には、複数のエバリュエーターによるデータの手動によるラベル付けが含まれるので、実験者が行動を定義する方法が異なることがあります。データの手動ラベル付けには、収集されるデータ量に対して不均衡に増加する時間とリソースが必要です。さらに、手動でラベル付けされたデータは、行動の豊かさを捉えないカテゴリ測定値に行動結果を減らし、より主観的になります。したがって、現在の伝統的な方法は、自然な行動の細部をキャプチャする際に制限され得る。
DeepBehaviorツールボックスは、行動分析のためにディープラーニングを使用して、正確で詳細で、非常に時間的で自動化されたソリューションを提供します。ディープラーニングは、オープンソースのツールとパッケージを使用して、すべての人がすばやくアクセスできるようになります。畳み込みニューラルネットワーク(CNN)は、オブジェクト認識およびトラッキングタスク7、8において非常に効果的であることが証明されています。現代のCnnsと高性能グラフィックス処理ユニット(GPU)を使用すると、大きな画像およびビデオデータセットを高精度7,9,10,11で素早く処理できます。DeepBehaviorには、3つの異なる畳み込みニューラルネットアーキテクチャ、テンソルボックス、YOLOv3、およびOpenPose2があります。
最初のフレームワーク、Tensorboxは、オブジェクト検出12のための多くの異なるCNNアーキテクチャを組み込んだ汎用性の高いフレームワークです。テンソルボックスは、画像ごとに1つのオブジェクトクラスのみを検出するのに最適です。結果として得られる出力は、対象オブジェクトの境界ボックス (図 1) と境界ボックスのデカルト座標です。
2番目のCNNフレームワークはYOLOv3で、「あなたは一度だけ見る」13の略です。YOLOv3は、個別に追跡しなければならない複数の対象オブジェクトがある場合に有利です。このネットワークの出力には、関連付けられたオブジェクト ラベル クラスを持つ境界ボックスと、ビデオ フレーム内のオブジェクトの境界ボックスデカルト座標が含まれます (図 2)。
前の2つのフレームワークは、動物被験者の標準的な実験室実験から収集された一般化された行動データに有利である。最後のCNNフレームワークは、人間の関節ポーズ推定に使用されるOpenPose14、15、16です。OpenPose は、画像上の人体、手、顔、足のキーポイントを検出します。フレームワークの出力には、人間の被写体の画像と、身体の25個のキーポイントと各手の21のキーポイントの座標がラベル付けされています(図3)。
最近開発したオープンソースのDeepBehaviorツールボックスの実装に関するこの詳細なステップバイステップガイドは、動物の行動(例えば足の動き)または人間の行動(例えばタスクに到達する)を追跡するために最先端の畳み込みニューラルネットを採用しています。行動を追跡することで、位置、速度、加速度などの行動から有用なキネマティクスを導き出すことができます。プロトコルでは、各 CNN アーキテクチャのインストール、トレーニング データセットの作成方法、ネットワークのトレーニング方法、トレーニング済みネットワーク上で新しいビデオを処理する方法、新しいビデオでネットワークからデータを抽出する方法、および方法を説明します。出力データを後処理して、さらなる分析に役立ちます。
Subscription Required. Please recommend JoVE to your librarian.
Protocol
1. GPU と Python のセットアップ
-
GPUソフトウェア
コンピューターがディープラーニングアプリケーション用に最初にセットアップされるとき、GPUの対応するソフトウェアとドライバをインストールする必要があります。(この研究で使用されるもののための材料の表を参照してください)。 -
Python 2.7 のインストール
コンピュータでコマンド ライン プロンプトを開きます。
コマンドライン: sudo apt-get インストール python-pip python-dev python-virtualenv
2. テンソルボックス
-
テンソルボックスのセットアップ
-
テンソルボックスの仮想環境の作成
コマンドライン: cd ~
コマンド ライン: virtualenv --システム サイト パッケージ ~/テンソルフロー
注: '~/tensorflow' は環境の名前であり、任意です。 -
環境のアクティブ化
コマンドライン:ソース ~/テンソルフロー/ビン/アクティブ化
-
テンソルボックスの仮想環境の作成
-
テンソルボックスのインストール
GitHub を使用して、http://github.com/aarac/TensorBoxから TensorBox を複製し、そのファイルをマシンにインストールし、追加の依存関係をインストールします。
コマンドライン: cd ~
コマンドライン: git クローンhttp://github.com/aarac/TensorBox
コマンド ライン: cd テンソルボックス
コマンド ライン:ピップ インストール -r 要件.txt -
ラベルデータ
-
動作のイメージのフォルダーを作成します。
ffmpeg などのオープン ソース ツールは、ビデオを個々のフレームに変換する場合に役立ちます トレーニング用の動作フレームの広い分布から少なくとも 600 枚の画像にラベルを付けることをお勧めします。これらの画像をフォルダに配置します。 -
グラフィカル ユーザー インターフェイスのラベル付けを起動する
コマンド ライン: python make_json.py <イメージ フォルダーへのパス> ラベル.json
画像にラベルを付けるには、まず対象オブジェクトの左上隅(つまり、paw)をクリックし、次に対象オブジェクトの右下隅をクリックします(図4)。境界ボックスが対象のオブジェクト全体をキャプチャすることを確認します。[元に戻す] を押して同じ画像にラベルを付けるか、[次へ] を押して次のフレームに移動します。
-
動作のイメージのフォルダーを作成します。
-
列車テンソルボックス
-
トレーニング イメージをネットワーク ハイパーパラメーター ファイルにリンクする
tensorbox フォルダ内で、テキスト エディタで次のフォルダを開きます。
/テンソルボックス/誇大宣伝/overfeat_rezoom.json.train_idlという名前のデータの下の属性に移動し、./data/brainwash/train_boxes.jsonからlabels.jsonファイルパスへのファイルパスを置き換えます。変更をファイルに保存します。 -
トレーニング スクリプトの開始
コマンド ライン: cd ~/テンソルボックス
コマンドライン: python train.py --誇大宣伝/overfeat_rezoom.json --gpu 0 --logdir 出力
その後、ネットワークは 600,000 回の反復のトレーニングを開始します。出力フォルダでは、結果として生じる畳み込みニューラルネットワークの重みが生成されます。
-
トレーニング イメージをネットワーク ハイパーパラメーター ファイルにリンクする
-
新しい画像を予測する
イメージのラベル付けの場合:
コマンド ライン: cd ~/テンソルボックス
コマンド ライン: python label_images.py --フォルダー <イメージ フォルダーへのパス > --出力/overfeat_rezoom_<タイムスタンプ>/save.ckpt-600000 --誇大宣伝 /hypes/overfeat_rezoom.json --gpu 0
境界ボックスの座標を取得するには:
コマンド ライン: cd ~/テンソルボックス
コマンド ライン: python predict_images_to_json.py --フォルダー <イメージ フォルダーへのパス > --weights
出力/overfeat_rezoom_<タイムスタンプ>/save.ckpt-600000 --hypes
/誇大宣伝/overfeat_rezoom.json --gpu 0 -
テンソルボックスのMATLAB後処理
モデルから得られた JSON 座標ファイルを使用して、運動学と座標の視覚化を抽出するために追加の MATLAB コードが提供されました
単一の食品ペレットの 3D 運動学的解析がタスクに到達する場合は、"Process_files_3Dreaching_mouse.m" スクリプトを実行します。
3. ヨロブ3
-
YOLOv3 をインストールする
コマンドライン: cd ~
コマンドライン: gitクローンCDダークネット
GPU を使用する場合は、'Makefile' を開き、次の行を変更します。1.
コマンド ライン: make -
Yolo_markを使用したトレーニングデータのラベリング
コマンドライン: cd ~
コマンドライン: git クローン cd ~/Yolo_Mark
コマンド ライン: cmake .
コマンド ライン: make
トレーニング画像を~/Yolo_mark/data/objフォルダに配置します。
コマンド ライン: chmod +x ./linux_mark.sh
コマンド ライン: ./linux_mark.sh
グラフィカル ユーザー インターフェイスでイメージに 1 つずつラベルを付けます (図 5)。推奨される画像量は約200です。 -
トレーニング YOLOv3
-
セットアップ構成ファイル
コマンド ライン: cd ~/Yolo_mark
コマンド ライン: scp -r ./データ ~/ダークネット
コマンド ライン: cd ~/ダークネット/cfg
コマンド ライン: cp yolov3.cfg yolo-obj.cfg -
構成ファイルを変更する
yolo-obj.cfg フォルダを開き、次の行を変更します: バッチ = 64、サブディビジョン = 8、class=(検出するクラスの#)、および yolo レイヤーが filter=(class+5)x3 を変更する前の各畳み込み層に対して。これらの変更の詳細については、https://github.com/aarac/darknet/blob/master/README.md -
ネットワークの重みをダウンロードする
ネットワークの重みをhttps://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0からダウンロードする
ダウンロードしたウェイト ファイルを~/ダークネット/ビルド/ダークネット/x64に配置します。 -
トレーニングアルゴリズムの実行
コマンド ライン: cd ~/ダークネット
コマンド ライン: ./ダークネット検出器トレーニングデータ/obj.data cfg/yolo-obj.cfg darknet53.conv.74 -
ヨルバ3評価
トレーニングが、設定された反復回数(ITERATIONNUMBER) に基づいて完了したら、
コマンド ライン: ./ダークネット検出器テストデータ/obj.data cfg/yolo-obj.cfgバックアップ/yolo-obj_ITERATIONNUMBER.weights.jpg
-
セットアップ構成ファイル
-
新しい動画を予測し、座標を取得する
このコマンドを実行すると、新しいビデオのラベルの座標を取得できます。
コマンド ライン: ./ダークネット検出器デモ データ/obj.data cfg/yolo-obj.cfg バックアップ/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_outputFILENAME.txt -
マットラボでのYOLOv3後処理
ファイル名.txt ファイルを MATLAB に取り込み、2 つのマウスのソーシャルインタラクション テストに対して Process_socialtest_mini.m スクリプトを実行します。図 2の結果を参照してください。
4. オープンポーズ
OpenPoseは、人間の被写体の複数の身体部分を追跡するのに理想的です。セットアップとインストールのプロセスは、前の 2 つのフレームワークとよく似ています。しかし、ネットワークはすでに人間のデータに関するトレーニングを受けているため、トレーニングステップはありません。
-
オープンポーズインストール
https://github.com/aarac/openposeに移動し、インストール手順に従います。 -
プロセスビデオ
scale_number 4 --scale_gap 0.25 --hand_scale_number 6 --hand_scale_range 0.4 --write_json JSONFOLDERNAME --write_videoビルド/例/例/オープンポーズ/オープンポーズ.bin --ビデオビデオ名.avi --ビデオビデオ名.avi net_resolution --scale_number 4 --scale_gap 0.25 --手 -- write_video結果ビデオ名.avi
ここで、hand_scale_number scale_gap scale_number net_resolution 高精度の検出が必要でない場合は、hand_scale_range ハンドルを省略できます (処理時間が短縮されます)。 -
オープンポーズ後処理
MATLAB フォルダで、カメラ 1 と 2 の json ファイルを含む適切なフォルダと、校正ファイルを追加した後に'process_files_human3D.m' スクリプトを使用してコードを実行してください。これにより、ジョイントのすべての 3D ポーズを含む「セル」ファイルが作成されます。また、3D骨格ビューの映画を作ります。カメラのキャリブレーションについては、このリンクの指示に従ってください: http://www.vision.caltech.edu/bouguetj/calib_doc/
Subscription Required. Please recommend JoVE to your librarian.
Representative Results
プロトコルに従う場合、各ネットワーク アーキテクチャのデータは次のようになります。TensorBox の場合、対象のオブジェクトの周りに境界ボックスが出力されます。この例では、食品ペレットのビデオをタスクに到達させ、右足にラベルを付けて動きを追跡しました。図 1に示すように、正面図と側面図カメラの両方で、右足を異なる位置で検出できます。カメラキャリブレーションで後処理した後、到達の3D軌道が得られます(図1B)。
Yolov3 では、複数のオブジェクトが存在するので、出力も複数の境界ボックスになります。図 2Bに示すように、対象となるオブジェクトの周囲には複数の境界ボックスがあります。これらは、体の一部であることができます。
OpenPose では、図 3Aに示すように、ネットワークはジョイント位置を検出します。カメラキャリブレーションで後処理した後、被写体の3Dモデルを作成できます(図3B)。
結論として、これらの代表的な結果は、DeepBehaviorツールボックスを使用してキャプチャできる動作の豊富な詳細を示しています。
図 1: マウスでの到達タスク中にビデオ フレームの足に表示される TensorBox を持つ境界ボックス(Aracら2019から適応)。この図の大きなバージョンを表示するには、ここをクリックしてください。
図2:2つのマウスの社会的相互作用テスト中にビデオフレームに関心のある領域に見られるYolov3を持つバウンディングボックス(A raw画像、B分析画像)。(Aracら2019から適応)。この図の大きなバージョンを表示するには、ここをクリックしてください。
図 3: 2 つのカメラ ビューでの OpenPose による人のポーズ検出 (A) と、これら 2 つのイメージから作成された 3D モデル (B)(Aracら2019から適応)。この図の大きなバージョンを表示するには、ここをクリックしてください。
図 4: トレーニング データにラベルを付けるために使用する tensorBox のmake_json GUIこの図の大きなバージョンを表示するには、ここをクリックしてください。
図5:Yolov3で許容される形式で画像にラベルを付Yolo_MarkのGUI。この図の大きなバージョンを表示するには、ここをクリックしてください。
Subscription Required. Please recommend JoVE to your librarian.
Discussion
ここでは、最近開発されたディープラーニングベースのディープラーニングベースの動物および人間の行動イメージングデータ分析2の実装に関するステップバイステップガイドを提供します。各ネットワークアーキテクチャのフレームワークをインストールするための各ステップの詳細な説明を提供し、これらのフレームワークを実行するためのオープンソース要件のインストールのためのリンクを提供します。これらのファイルをインストールする方法、トレーニング データを作成する方法、ネットワークをトレーニングする方法、およびトレーニング済みネットワーク上で新しいビデオ ファイルを処理する方法を示します。さらに、さらなる分析に必要な基本的な情報を抽出する後処理コードも提供しています。
単一オブジェクトの検出には、TensorBox を使用することをお勧めします。一度に複数のオブジェクトを追跡することが目的の場合は、YOLOv3 を使用することをお勧めします。最後に、ヒト運動学的データを取得するために、OpenPoseを使用することを推奨します。このプロトコルでは、ディープラーニングの方法は、精度の高いオブジェクトを追跡しながら、数十万のフレームを処理できることを示しました。提供された後処理コードを使用して、対象となる追跡された動作を分析する意味のある方法を導き出すことができます。これにより、動作をキャプチャする方法が詳細になります。また、さまざまな種類の動作タスクに対して一般化できる、動作を定義する自動化された堅牢な方法も提供します。
インターネットからダウンロードされた新しい仮想環境またはコードで始めるときは、'ModuleNotFoundError'を取得することは非常に一般的です。この場合は、ターミナルを開き、ソース環境をアクティブにして、「pip install <不足しているモジュール名>」と入力します。問題が解決しない場合は、Python のバージョンと他の依存関係パッケージを確認する必要があります。
この手法の制限には、オープンソースコードと互換性のあるGPU処理ユニットを適切に設定するための技術的なトラブルシューティングが含まれます。Linux 環境内で過去のプログラミング経験を持ち、コンピュータのハードウェアと互換性のある必要なプロジェクトの依存関係と環境を適切に設定することは、有利です。
Linux 環境での DeepBehavior ツールボックスのインストールと処理をデモンストレーションしますが、このツールボックスは、Github のそれぞれのインストール ガイドに従って、GPU を搭載した Windows および Mac マシンでも実行できます。
データ分析のイメージングにディープラーニングを使用すると、動作解析を自動化する非常に効率的な方法になります。DeepBehaviorは、従来の動作解析方法と比較して、より詳細な方法で、より詳細な方法で動作を定量化、自動化、評価するための情報を多く取り込みます。深層学習の進展に伴い、行動分析におけるこの技術の活用と程度は今後も改善し続ける可能性が高い。DeepBehaviorのアプリケーションは、実証された到達タスクを超えて拡張して、あらゆる動作イメージに関心のあるオブジェクトを識別できます。このプロトコルでは、行動分析のための3つのニューラルネットワークを実装するための詳細な指示を提供します。この種の自動化された偏りのない行動分析方法により、神経科学分野がより詳細な行動分析を行うことができるでしょう。
Subscription Required. Please recommend JoVE to your librarian.
Disclosures
著者たちは開示するものは何もない。
Acknowledgments
元の論文2で使用された2マウスの社会的相互作用テストの生データを提供してくれたPingping ZhaoとPeyman Golshaniに感謝したいと思います。この研究は、NIH NS109315およびNVIDIA GPU助成金(AA)によってサポートされました。
Materials
Name | Company | Catalog Number | Comments |
CUDA v8.0.61 | NVIDIA | n/a | GPU Software |
MATLAB R2016b | Mathworks | n/a | Matlab |
Python 2.7 | Python | n/a | Python Version |
Quadro P6000 | NVIDIA | n/a | GPU Processor |
Ubuntu v16.04 | Ubuntu | n/a | Operating System |
References
- Krakauer, J. W., Ghazanfar, A. A., Gomez-Marin, A., MacIver, M. A., Poeppel, D. Neuroscience Needs Behavior: Correcting a Reductionist Bias. Neuron. 93 (3), 480-490 (2017).
- Arac, A., Zhao, P., Dobkin, B. H., Carmichael, S. T., Golshani, P. DeepBehavior: A Deep Learning Toolbox for Automated Analysis of Animal and Human Behavior Imaging Data. Front Syst Neurosci. 13, 20 (2019).
- Pereira, T. D., Aldarondo, D. E., Willmore, L., Kislin, M., Wang, S. S., Murthy, M., et al. Fast animal pose estimation using deep neural networks. Nat Methods. 16 (1), 117-125 (2019).
- Mathis, A., Mamidanna, P., Cury, K. M., Abe, T., Murthy, V. N., Mathis, M. W., et al. DeepLabCut: markerless pose estimation of user-defined body parts with deep learning. Nat Neurosci. 21 (9), 1281-1289 (2018).
- Stern, U., He, R., Yang, C. H. Analyzing animal behavior via classifying each video frame using convolutional neural networks. Sci Rep. 5, 14351 (2015).
- Tinbergen, N. On aims and methods of ethology. Zeitschrift für Tierpsychologie. 20, 410-433 (1963).
- LeCun, Y., Bengio, Y., Hinton, G. Deep Learning. Nature. 521 (7553), 436-444 (2015).
- Zhao, Z., Zheng, P., Xu, S., Wu, X. Object Detection With Deep Learning: A Review. IEEE Transactions on Neural Networks and Learning Systems. , 1-21 (2019).
- He, K., Zhang, X., Ren, S., Deep Sun, J. Residual Learning for Image Recognition. arXiv. , eprint (2015).
- Krizhevsky, A., Sutskever, I., Hinton, G. E. ImageNet classification with deep convolutional neural networks. Proceedings of the 25th International Conference on Neural Information Processing Systems. 1, Curran Associates Inc. Lake Tahoe, Nevada. 1097-1105 (2012).
- Szegedy, C., Wei, L., Yangqing, J., Sermanet, P., Reed, S., Anguelov, D., et al. Going deeper with convolutions. 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). , 7-12 (2015).
- Stewart, R., Andriluka, M., Ng, A. Y. End-to-End People Detection in Crowded Scenes. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). , 27-30 (2016).
- Redmon, J., Farhadi, A. YOLOv3: An Incremental Improvement. arXiv. , eprint (2018).
- Cao, Z., Simon, T., Wei, S. E., Sheikh, Y. Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields. arXiv. , (2017).
- Simon, T., Joo, H., Matthews, I., Sheikh, Y. Hand Keypoint Detection in Single Images using Multiview Bootstrapping. arXiv. , eprint (2017).
- Wei, S. E., Ramakrishna, V., Kanade, T., Sheikh, Y. Convolutional Pose Machines. arXiv. , eprint (2016).