JoVE Logo

サインイン

このコンテンツを視聴するには、JoVE 購読が必要です。 サインイン又は無料トライアルを申し込む。

この記事について

  • 要約
  • 要約
  • 概要
  • プロトコル
  • 結果
  • ディスカッション
  • 開示事項
  • 謝辞
  • 資料
  • 参考文献
  • 転載および許可

要約

このプロトコルの目的は、事前に構築された畳み込みニューラルネットを利用して行動追跡を自動化し、詳細な行動分析を行うことである。行動追跡は、任意のビデオデータまたは画像のシーケンスに適用することができ、任意のユーザー定義オブジェクトを追跡するために一般化可能です。

要約

行動を理解することは、それを駆動する脳内の神経メカニズムを真に理解するための最初のステップです。従来の行動分析法では、自然な行動に固有の豊かさを捉えないことがよくあります。ここでは、最近の方法論 DeepBehavior の視覚化を使用して、詳細な手順を説明します。DeepBehaviorツールボックスは、畳み込みニューラルネットワークで構築されたディープラーニングフレームワークを使用して、行動ビデオを迅速に処理および分析します。このプロトコルは、単一オブジェクト検出、複数オブジェクト検出、および 3 次元 (3D) の人間のジョイント ポーズトラッキングのための 3 つの異なるフレームワークを示します。これらのフレームワークは、動作ビデオの各フレームについて、対象となるオブジェクトのデカルト座標を返します。DeepBehaviorツールボックスから収集されたデータは、従来の動作分析方法よりもはるかに詳細に含まれ、行動のダイナミクスに関する詳細な洞察を提供します。DeepBehaviorは、堅牢で自動化された正確な方法で行動タスクを定量化します。動作の識別に続いて、行動ビデオから情報と視覚化を抽出する後処理コードが提供されます。

概要

行動の詳細な分析は、脳と行動の関係を理解するための鍵です。神経集団を高い時間分解能で記録・操作する方法論は多くの刺激的な進歩を遂げてきましたが、行動解析法は同じ速度で発達しておらず、間接的な測定と還元論的アプローチ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 アーキテクチャのインストール、トレーニング データセットの作成方法、ネットワークのトレーニング方法、トレーニング済みネットワーク上で新しいビデオを処理する方法、新しいビデオでネットワークからデータを抽出する方法、および方法を説明します。出力データを後処理して、さらなる分析に役立ちます。

Access restricted. Please log in or start a trial to view this content.

プロトコル

1. GPU と Python のセットアップ

  1. GPUソフトウェア
    コンピューターがディープラーニングアプリケーション用に最初にセットアップされるとき、GPUの対応するソフトウェアとドライバをインストールする必要があります。(この研究で使用されるもののための材料の表を参照してください)。
  2. Python 2.7 のインストール
    コンピュータでコマンド ライン プロンプトを開きます。
    コマンドライン: sudo apt-get インストール python-pip python-dev python-virtualenv

2. テンソルボックス

  1. テンソルボックスのセットアップ
    1. テンソルボックスの仮想環境の作成
      コマンドライン: cd ~
      コマンド ライン: virtualenv --システム サイト パッケージ ~/テンソルフロー
      注: '~/tensorflow' は環境の名前であり、任意です。
    2. 環境のアクティブ化
      コマンドライン:ソース ~/テンソルフロー/ビン/アクティブ化
  2. テンソルボックスのインストール
    GitHub を使用して、http://github.com/aarac/TensorBoxから TensorBox を複製し、そのファイルをマシンにインストールし、追加の依存関係をインストールします。
    コマンドライン: cd ~
    コマンドライン: git クローンhttp://github.com/aarac/TensorBox
    コマンド ライン: cd テンソルボックス
    コマンド ライン:ピップ インストール -r 要件.txt
  3. ラベルデータ
    1. 動作のイメージのフォルダーを作成します。
      ffmpeg などのオープン ソース ツールは、ビデオを個々のフレームに変換する場合に役立ちます トレーニング用の動作フレームの広い分布から少なくとも 600 枚の画像にラベルを付けることをお勧めします。これらの画像をフォルダに配置します。
    2. グラフィカル ユーザー インターフェイスのラベル付けを起動する
      コマンド ライン: python make_json.py <イメージ フォルダーへのパス> ラベル.json
      画像にラベルを付けるには、まず対象オブジェクトの左上隅(つまり、paw)をクリックし、次に対象オブジェクトの右下隅をクリックします(図4)。境界ボックスが対象のオブジェクト全体をキャプチャすることを確認します。[元に戻す] を押して同じ画像にラベルを付けるか、[次へ] を押して次のフレームに移動します。
  4. 列車テンソルボックス
    1. トレーニング イメージをネットワーク ハイパーパラメーター ファイルにリンクする
      tensorbox フォルダ内で、テキスト エディタで次のフォルダを開きます。
      /テンソルボックス/誇大宣伝/overfeat_rezoom.json.train_idlという名前のデータの下の属性に移動し、./data/brainwash/train_boxes.jsonからlabels.jsonファイルパスへのファイルパスを置き換えます。変更をファイルに保存します。
    2. トレーニング スクリプトの開始
      コマンド ライン: cd ~/テンソルボックス
      コマンドライン: python train.py --誇大宣伝/overfeat_rezoom.json --gpu 0 --logdir 出力
      その後、ネットワークは 600,000 回の反復のトレーニングを開始します。出力フォルダでは、結果として生じる畳み込みニューラルネットワークの重みが生成されます。
  5. 新しい画像を予測する
    イメージのラベル付けの場合:
    コマンド ライン: 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
  6. テンソルボックスのMATLAB後処理
    モデルから得られた JSON 座標ファイルを使用して、運動学と座標の視覚化を抽出するために追加の MATLAB コードが提供されました
    単一の食品ペレットの 3D 運動学的解析がタスクに到達する場合は、"Process_files_3Dreaching_mouse.m" スクリプトを実行します。

3. ヨロブ3

  1. YOLOv3 をインストールする
    コマンドライン: cd ~
    コマンドライン: gitクローンCDダークネット
    GPU を使用する場合は、'Makefile' を開き、次の行を変更します。1.
    コマンド ライン: make
  2. Yolo_markを使用したトレーニングデータのラベリング
    コマンドライン: cd ~
    コマンドライン: git クローン cd ~/Yolo_Mark
    コマンド ライン: cmake .
    コマンド ライン: make
    トレーニング画像を~/Yolo_mark/data/objフォルダに配置します。
    コマンド ライン: chmod +x ./linux_mark.sh
    コマンド ライン: ./linux_mark.sh
    グラフィカル ユーザー インターフェイスでイメージに 1 つずつラベルを付けます (図 5)。推奨される画像量は約200です。
  3. トレーニング YOLOv3
    1. セットアップ構成ファイル
      コマンド ライン: cd ~/Yolo_mark
      コマンド ライン: scp -r ./データ ~/ダークネット
      コマンド ライン: cd ~/ダークネット/cfg
      コマンド ライン: cp yolov3.cfg yolo-obj.cfg
    2. 構成ファイルを変更する
      yolo-obj.cfg フォルダを開き、次の行を変更します: バッチ = 64、サブディビジョン = 8、class=(検出するクラスの#)、および yolo レイヤーが filter=(class+5)x3 を変更する前の各畳み込み層に対して。これらの変更の詳細については、https://github.com/aarac/darknet/blob/master/README.md
    3. ネットワークの重みをダウンロードする
      ネットワークの重みをhttps://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0からダウンロードする
      ダウンロードしたウェイト ファイルを~/ダークネット/ビルド/ダークネット/x64に配置します。
    4. トレーニングアルゴリズムの実行
      コマンド ライン: cd ~/ダークネット
      コマンド ライン: ./ダークネット検出器トレーニングデータ/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. ヨルバ3評価
      トレーニングが、設定された反復回数(ITERATIONNUMBER) に基づいて完了したら、
      コマンド ライン: ./ダークネット検出器テストデータ/obj.data cfg/yolo-obj.cfgバックアップ/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. 新しい動画を予測し、座標を取得する
    このコマンドを実行すると、新しいビデオのラベルの座標を取得できます。
    コマンド ライン: ./ダークネット検出器デモ データ/obj.data cfg/yolo-obj.cfg バックアップ/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. マットラボでのYOLOv3後処理
    ファイル名.txt ファイルを MATLAB に取り込み、2 つのマウスのソーシャルインタラクション テストに対して Process_socialtest_mini.m スクリプトを実行します。図 2の結果を参照してください。

4. オープンポーズ

OpenPoseは、人間の被写体の複数の身体部分を追跡するのに理想的です。セットアップとインストールのプロセスは、前の 2 つのフレームワークとよく似ています。しかし、ネットワークはすでに人間のデータに関するトレーニングを受けているため、トレーニングステップはありません。

  1. オープンポーズインストール
    https://github.com/aarac/openposeに移動し、インストール手順に従います。
  2. プロセスビデオ
    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 ハンドルを省略できます (処理時間が短縮されます)。
  3. オープンポーズ後処理
    MATLAB フォルダで、カメラ 1 と 2 の json ファイルを含む適切なフォルダと、校正ファイルを追加した後に'process_files_human3D.m' スクリプトを使用してコードを実行してください。これにより、ジョイントのすべての 3D ポーズを含む「セル」ファイルが作成されます。また、3D骨格ビューの映画を作ります。カメラのキャリブレーションについては、このリンクの指示に従ってください: http://www.vision.caltech.edu/bouguetj/calib_doc/

Access restricted. Please log in or start a trial to view this content.

結果

プロトコルに従う場合、各ネットワーク アーキテクチャのデータは次のようになります。TensorBox の場合、対象のオブジェクトの周りに境界ボックスが出力されます。この例では、食品ペレットのビデオをタスクに到達させ、右足にラベルを付けて動きを追跡しました。図 1に示すように、正面図と側面図カメラの両方で、右足を異なる位置で検...

Access restricted. Please log in or start a trial to view this content.

ディスカッション

ここでは、最近開発されたディープラーニングベースのディープラーニングベースの動物および人間の行動イメージングデータ分析2の実装に関するステップバイステップガイドを提供します。各ネットワークアーキテクチャのフレームワークをインストールするための各ステップの詳細な説明を提供し、これらのフレームワークを実行するためのオープンソース要件のイン...

Access restricted. Please log in or start a trial to view this content.

開示事項

著者たちは開示するものは何もない。

謝辞

元の論文2で使用された2マウスの社会的相互作用テストの生データを提供してくれたPingping ZhaoとPeyman Golshaniに感謝したいと思います。この研究は、NIH NS109315およびNVIDIA GPU助成金(AA)によってサポートされました。

Access restricted. Please log in or start a trial to view this content.

資料

NameCompanyCatalog NumberComments
CUDA v8.0.61NVIDIAn/aGPU Software
MATLAB R2016bMathworksn/aMatlab
Python 2.7Pythonn/aPython Version
Quadro P6000NVIDIAn/aGPU Processor
Ubuntu v16.04Ubuntun/aOperating System

参考文献

  1. 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).
  2. 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).
  3. 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).
  4. 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).
  5. Stern, U., He, R., Yang, C. H. Analyzing animal behavior via classifying each video frame using convolutional neural networks. Sci Rep. 5, 14351(2015).
  6. Tinbergen, N. On aims and methods of ethology. Zeitschrift für Tierpsychologie. 20, 410-433 (1963).
  7. LeCun, Y., Bengio, Y., Hinton, G. Deep Learning. Nature. 521 (7553), 436-444 (2015).
  8. 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).
  9. He, K., Zhang, X., Ren, S., Deep Sun, J. Residual Learning for Image Recognition. arXiv. , eprint (2015).
  10. 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).
  11. 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).
  12. 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).
  13. Redmon, J., Farhadi, A. YOLOv3: An Incremental Improvement. arXiv. , eprint (2018).
  14. Cao, Z., Simon, T., Wei, S. E., Sheikh, Y. Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields. arXiv. , (2017).
  15. Simon, T., Joo, H., Matthews, I., Sheikh, Y. Hand Keypoint Detection in Single Images using Multiview Bootstrapping. arXiv. , eprint (2017).
  16. Wei, S. E., Ramakrishna, V., Kanade, T., Sheikh, Y. Convolutional Pose Machines. arXiv. , eprint (2016).

Access restricted. Please log in or start a trial to view this content.

転載および許可

このJoVE論文のテキスト又は図を再利用するための許可を申請します

許可を申請

さらに記事を探す

1563D

This article has been published

Video Coming Soon

JoVE Logo

個人情報保護方針

利用規約

一般データ保護規則

研究

教育

JoVEについて

Copyright © 2023 MyJoVE Corporation. All rights reserved