Summary
该协议的目的是利用预构建的卷积神经网络来自动执行行为跟踪并执行详细的行为分析。行为跟踪可应用于任何视频数据或图像序列,并可通用跟踪任何用户定义的对象。
Abstract
理解行为是真正理解大脑中驱动行为的神经机制的第一步。传统的行为分析方法通常不能捕捉自然行为固有的丰富性。在这里,我们提供详细的分步说明,以及我们最近的方法"DeepBehavior"的可视化效果。DeepBehavior 工具箱使用使用卷积神经网络构建的深度学习框架来快速处理和分析行为视频。该协议演示了三种不同的单对象检测、多对象检测和三维(3D)人关节姿势跟踪框架。这些框架返回行为视频每一帧的感兴趣对象的点菜坐标。从 DeepBehavior 工具箱收集的数据包含比传统行为分析方法更多的详细信息,并提供了对行为动态的详细见解。深度行为以稳健、自动化和精确的方式量化行为任务。在识别行为之后,提供后处理代码,以便从行为视频中提取信息和可视化效果。
Introduction
对行为的详细分析是理解大脑和行为关系的关键。在记录和操纵具有高时间分辨率的神经元群体的方法上有许多令人振奋的进展,然而,行为分析方法没有以相同的速度发展,并且仅限于间接测量和减少方法1。最近,已经开发出了基于深度学习的方法,以执行自动和详细的行为分析2,3,4,5。此协议为 DeepBehavior 工具箱提供了分步实现指南。
传统的行为分析方法通常包括由多个评估者手动标记数据,导致实验者定义行为6的方式存在差异。手动标记数据需要时间和资源,而时间和资源的增加与收集的数据量不成比例。此外,手动标记数据会将行为结果简化为分类测量,这些测量不能捕获行为的丰富性,并且会更加主观。因此,目前的传统方法在捕捉自然行为的细节时可能受到限制。
DeepBehavior 工具箱提供了一个精确、详细、高度时空和自动化的解决方案,使用深度学习进行行为分析。借助开源工具和软件包,所有人都能快速获得深度学习。卷积神经网络(CNN)被证明是非常有效的对象识别和跟踪任务7,8。使用现代CNN和高性能图形处理单元(GPU),大图像和视频数据集可以快速处理,高精度7,9,10,11。在深度行为中,有三种不同的卷积神经网络架构,TensorBox、YOLOv3 和 OpenPose2。
第一个框架,Tensorbox,是一个多功能的框架,它包含许多不同的CNN架构,用于对象检测12。TensorBox 最适合检测每个图像的一个对象类。生成的输出是目标对象的边界框(图 1)和边界框的点菜坐标。
第二个CNN框架是YOLOv3,它代表"你只看一次"13。当有多个感兴趣的对象必须单独跟踪时,YOLOv3 是有利的。此网络的输出包括带有关联对象标签类的边界框以及视频帧中对象的边界框点菜坐标(图 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 的软件和驱动程序,可在 GPU 各自的网站上找到。(参见本研究中使用的材料表)。 -
Python 2.7 安装
在计算机上打开命令行提示符。
命令行: sudo apt-get 安装 python-pip python-dev python-virtualenv
2. 张力盒
-
张力框设置
-
为张力框创建虚拟环境
命令行:cd |
命令行:虚拟-系统站点包 +/张力流
注:"+/张量"是环境的名称,是任意的 -
激活环境
命令行:源 =/张量流/bin/激活
-
为张力框创建虚拟环境
-
张力盒安装
我们将使用 GitHub 从http://github.com/aarac/TensorBox克隆 TensorBox 并将其安装到我们的计算机上,以及安装其他依赖项。
命令行:cd |
命令行:git克隆http://github.com/aarac/TensorBox
命令行:cd张力盒
命令行:pip安装 -r 要求.txt -
标签数据
-
创建行为图像文件夹
ffmpeg 等开源工具有助于将视频转换为单个帧。我们建议从广泛分布的行为帧中标记至少 600 个图像以进行训练。将这些图像放在文件夹中。 -
启动标签图形用户界面
命令行:python make_json.py <图像文件夹的路径 > 标签.json
要标记图像,请先单击感兴趣对象的左上角(即爪子),然后单击感兴趣对象的右下角(图 4)。检查边界框捕获整个感兴趣对象。按"撤消"以重新标记同一图像,或按"下一步"移动到下一帧。
-
创建行为图像文件夹
-
训练张力盒
-
将训练图像链接到网络超参数文件
在"张条"文件夹中,在文本编辑器中打开以下文件夹:
/TensorBox/炒作/overfeat_rezoom.json.导航到名为train_idl下的属性,并将文件路径从./data/洗脑/train_boxes.json替换为labels.json文件路径。将更改保存到文件。 -
开始培训脚本
命令行:cd +/TensorBox
命令行:python train.py -- 炒作/overfeat_rezoom.json --gpu 0 -- logdir 输出
然后,网络将开始培训 600,000 次迭代。在输出文件夹中,将生成卷积神经网络的已训练权重。
-
将训练图像链接到网络超参数文件
-
预测新图像
对于图像标注:
命令行:cd +/TensorBox
命令行:python label_images.py -- 文件夹 <路径到图像文件夹 > -权重输出/overfeat_rezoom_<时间戳>/save.ckpt-60000 -- hypes /hypes/overfeat_rezoom.json --gpu 0
要获取边界框的坐标,
命令行:cd +/TensorBox
命令行:python predict_images_to_json.py -- 文件夹 <图像文件夹的路径 > --权重
输出/overfeat_rezoom_<时间戳>/save.ckpt-600000 -- hypes
/hypes/overfeat_rezoom.json --gpu 0 -
用于张力盒的 MATLAB 后处理
提供了其他 MATLAB 代码,用于从模型中提取运动学和坐标可视化效果。
运行"Process_files_3Dreaching_mouse.m"脚本,对单个食物颗粒到达任务进行 3D 运动学分析。
3. 约洛夫3
-
安装 YOLOv3
命令行:cd |
命令行:git克隆 cd暗网
对于 GPU 使用情况,打开"制作文件"并更改以下行:GPU=1;CUDNN=1.
命令行:使 -
使用Yolo_mark标记训练数据
命令行:cd |
命令行:git克隆 cd _/Yolo_Mark
命令行:cmake .
命令行:使
将培训图像放在+/Yolo_mark/数据/obj文件夹中
命令行: chmod _x ./linux_mark.sh
命令行: ./linux_mark.sh
在图形用户界面中逐个标记图像 (图5)。建议的图像量约为 200。 -
培训 YOLOv3
-
设置配置文件
命令行:cd +/Yolo_mark
命令行: scp -r ./数据 +/暗网
命令行:cd =/暗网/cfg
指挥线:cp yolov3.cfg yolo-obj.cfg -
修改配置文件
打开 yolo-obj.cfg 文件夹并修改以下行:batch_64、细分 =8、类=(要检测的类*),以及对于 yolo 图层更改筛选器之前的每个卷积层(类=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 暗网53.conv.74 -
YOLOv3 评估
根据一组迭代次数(迭代次数)完成培训后,您可以通过以下形式查看
命令行:./暗网探测器测试数据/obj.data cfg/yolo-obj.cfg 备份/yolo-obj_ITERATIONNUMBER.权重.jpg
-
设置配置文件
-
预测新视频并获得坐标
可以运行此命令以获取新视频中标签的坐标:
命令行: ./暗网探测器演示数据/obj.data cfg/yolo-obj.cfg 备份/yolo-obj_ITERATIONNUMBER.savideo.avi -ext_outputFILENAME.txt -
约洛夫3 MATLAB 的后处理
将 FILENAME.txt 文件带到 MATLAB,并为两个小鼠社交交互测试运行"Process_socialtest_mini.m"脚本。参见图2中的结果
4. 开放式
OpenPose 是跟踪人体主体中多个身体部位的理想选择。设置和安装过程与前两个框架非常相似。但是,由于网络已经接受过人类数据的培训,因此没有培训步骤。
-
开放式安装
导航到https://github.com/aarac/openpose并按照安装说明进行操作。 -
处理视频
./构建/示例/开/开/开/开-bin --视频 VIDEONAME.avi --net_resolution"1312x736" -- scale_number 4 -- scale_gap 0.25 -- 手 -- hand_scale_number 6 -- hand_scale_range 0.4 -- write_json JSONFOLDERNAME -- write_video结果视频
在这里,如果不需要高精度检测(这将减少处理时间),则可以省略 --net_resolution、scale_number、scale_gap、hand_scale_number和 -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:在两个小鼠社交互动测试(原始图像,B分析图像)期间,在视频帧中感兴趣的区域看到的 Yolov3 边界框。(改编自Arac等人2019年)。请点击此处查看此图的较大版本。
图 3:在两个摄像机视图 (A) 和 3D 模型中使用 OpenPose 进行人工姿势检测,这些模型由这两个图像 (B) 创建。(改编自Arac等人2019年)。请点击此处查看此图的较大版本。
图 4:TensorBox 的make_json GUI 用于标记训练数据。请点击此处查看此图的较大版本。
图 5:Yolo_Mark的 GUI,以 Yolov3 可接受的格式标记图像。请点击此处查看此图的较大版本。
Subscription Required. Please recommend JoVE to your librarian.
Discussion
在这里,我们为实施DeepBehavior提供分步指南,我们最近开发的基于深度学习的工具箱用于动物和人类行为成像数据分析2。我们为每个网络架构的框架安装的每个步骤提供详细说明,并提供用于安装开源要求的链接,以便能够运行这些框架。我们演示如何安装它们,如何创建训练数据,如何训练网络,以及如何在培训的网络上处理新的视频文件。我们还提供后处理代码,以提取进一步分析所需的基本必要信息。
对于单个对象检测,我们建议使用 TensorBox。如果目标是同时跟踪多个对象,我们建议使用 YOLOv3。最后,为了获得人类运动学数据,我们建议使用OpenPose。在此协议中,我们展示了深度学习方法能够处理数十万帧,同时以高精度跟踪对象。使用提供的后处理代码,我们可以得出有意义的方法来分析跟踪的感兴趣行为。这提供了更详细的捕获行为的方法。它还提供了一种自动化、可靠的定义行为方法,该行为可概括为许多不同类型的行为任务。
从从 Internet 下载的新虚拟环境或代码开始时,获取"ModuleNotFoundError"是很常见的。如果发生这种情况,请打开终端,激活源环境并键入"pip 安装 <缺少模块名称 >"。"如果问题仍然存在,则需要检查 python 版本以及其他依赖项包。
此技术的限制包括技术故障排除,以正确设置与开放源代码兼容的 GPU 处理单元。在 linux 环境中拥有过去的编程经验,以正确设置与计算机硬件兼容的必要项目依赖项和环境是有利的。
我们演示了在 linux 环境中的 DeepBehavior 工具箱的安装和处理,但是,通过遵循 github 上的相应安装指南,此工具箱也可以在具有 GPU 的 Windows 和 Mac 计算机上运行。
使用深度学习方法进行成像数据分析是自动执行行为分析的一种非常有效的方法。与传统的行为分析方法相比,DeepBehavior 捕获更多信息,以便以更精确和更详细的方式量化、自动化和评估行为。随着深度学习领域的进一步发展,该技术在行为分析中的应用和应用程度可能会继续提高。DeepBehavior 的应用可以扩展到演示的到达任务之外,以识别任何行为图像中感兴趣的对象。在此协议中,我们提供了实现三个神经网络进行行为分析的详细说明。有了这种自动化、公正的行为分析方法,希望神经科学领域能够做更详细的行为分析。
Subscription Required. Please recommend JoVE to your librarian.
Disclosures
作者没有什么可透露的。
Acknowledgments
我们要感谢赵平平和佩曼·戈尔沙尼为原始论文2中使用的双小鼠社会互动测试提供了原始数据。这项研究得到了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).