登录

需要订阅 JoVE 才能查看此. 登录或开始免费试用。

本文内容

  • 摘要
  • 摘要
  • 引言
  • 研究方案
  • 结果
  • 讨论
  • 披露声明
  • 致谢
  • 材料
  • 参考文献
  • 转载和许可

摘要

该协议的目的是利用预构建的卷积神经网络来自动执行行为跟踪并执行详细的行为分析。行为跟踪可应用于任何视频数据或图像序列,并可通用跟踪任何用户定义的对象。

摘要

理解行为是真正理解大脑中驱动行为的神经机制的第一步。传统的行为分析方法通常不能捕捉自然行为固有的丰富性。在这里,我们提供详细的分步说明,以及我们最近的方法"DeepBehavior"的可视化效果。DeepBehavior 工具箱使用使用卷积神经网络构建的深度学习框架来快速处理和分析行为视频。该协议演示了三种不同的单对象检测、多对象检测和三维(3D)人关节姿势跟踪框架。这些框架返回行为视频每一帧的感兴趣对象的点菜坐标。从 DeepBehavior 工具箱收集的数据包含比传统行为分析方法更多的详细信息,并提供了对行为动态的详细见解。深度行为以稳健、自动化和精确的方式量化行为任务。在识别行为之后,提供后处理代码,以便从行为视频中提取信息和可视化效果。

引言

对行为的详细分析是理解大脑和行为关系的关键。在记录和操纵具有高时间分辨率的神经元群体的方法上有许多令人振奋的进展,然而,行为分析方法没有以相同的速度发展,并且仅限于间接测量和减少方法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 体系结构的安装,演示如何创建训练数据集、如何训练网络、如何在培训网络上处理新视频、如何从新视频上的网络中提取数据以及如何后处理输出数据,使其可用于进一步分析。

研究方案

1. GPU 和 Python 设置

  1. GPU 软件
    首次为深度学习应用程序设置计算机时,应安装适合 GPU 的软件和驱动程序,可在 GPU 各自的网站上找到。(参见本研究中使用的材料表)。
  2. Python 2.7 安装
    在计算机上打开命令行提示符。
    命令行: sudo apt-get 安装 python-pip python-dev python-virtualenv

2. 张力盒

  1. 张力框设置
    1. 为张力框创建虚拟环境
      命令行:cd |
      命令行:虚拟-系统站点包 +/张力流
      注:"+/张量"是环境的名称,是任意的
    2. 激活环境
      命令行:源 =/张量流/bin/激活
  2. 张力盒安装
    我们将使用 GitHub 从http://github.com/aarac/TensorBox克隆 TensorBox 并将其安装到我们的计算机上,以及安装其他依赖项。
    命令行:cd |
    命令行:git克隆http://github.com/aarac/TensorBox
    命令行:cd张力盒
    命令行:pip安装 -r 要求.txt
  3. 标签数据
    1. 创建行为图像文件夹
      ffmpeg 等开源工具有助于将视频转换为单个帧。我们建议从广泛分布的行为帧中标记至少 600 个图像以进行训练。将这些图像放在文件夹中。
    2. 启动标签图形用户界面
      命令行:python make_json.py <图像文件夹的路径 > 标签.json
      要标记图像,请先单击感兴趣对象的左上角(即爪子),然后单击感兴趣对象的右下角(图 4)。检查边界框捕获整个感兴趣对象。按"撤消"以重新标记同一图像,或按"下一步"移动到下一帧。
  4. 训练张力盒
    1. 将训练图像链接到网络超参数文件
      在"张条"文件夹中,在文本编辑器中打开以下文件夹:
      /TensorBox/炒作/overfeat_rezoom.json.导航到名为train_idl下的属性,并将文件路径从./data/洗脑/train_boxes.json替换为labels.json文件路径。将更改保存到文件。
    2. 开始培训脚本
      命令行:cd +/TensorBox
      命令行:python train.py -- 炒作/overfeat_rezoom.json --gpu 0 -- logdir 输出
      然后,网络将开始培训 600,000 次迭代。在输出文件夹中,将生成卷积神经网络的已训练权重。
  5. 预测新图像
    对于图像标注:
    命令行: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
  6. 用于张力盒的 MATLAB 后处理
    提供了其他 MATLAB 代码,用于从模型中提取运动学和坐标可视化效果。
    运行"Process_files_3Dreaching_mouse.m"脚本,对单个食物颗粒到达任务进行 3D 运动学分析。

3. 约洛夫3

  1. 安装 YOLOv3
    命令行:cd |
    命令行:git克隆 cd暗网
    对于 GPU 使用情况,打开"制作文件"并更改以下行:GPU=1;CUDNN=1.
    命令行:使
  2. 使用Yolo_mark标记训练数据
    命令行:cd |
    命令行:git克隆 cd _/Yolo_Mark
    命令行:cmake .
    命令行:使
    将培训图像放在+/Yolo_mark/数据/obj文件夹中
    命令行: chmod _x ./linux_mark.sh
    命令行: ./linux_mark.sh
    在图形用户界面中逐个标记图像 (图5)。建议的图像量约为 200。
  3. 培训 YOLOv3
    1. 设置配置文件
      命令行:cd +/Yolo_mark
      命令行: scp -r ./数据 +/暗网
      命令行:cd =/暗网/cfg
      指挥线:cp yolov3.cfg yolo-obj.cfg
    2. 修改配置文件
      打开 yolo-obj.cfg 文件夹并修改以下行:batch_64、细分 =8、类=(要检测的类*),以及对于 yolo 图层更改筛选器之前的每个卷积层(类=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 暗网53.conv.74
    5. YOLOv3 评估
      根据一组迭代次数(迭代次数)完成培训后,您可以通过以下形式查看
      命令行:./暗网探测器测试数据/obj.data cfg/yolo-obj.cfg 备份/yolo-obj_ITERATIONNUMBER.权重 .jpg
  4. 预测新视频并获得坐标
    可以运行此命令以获取新视频中标签的坐标:
    命令行: ./暗网探测器演示数据/obj.data cfg/yolo-obj.cfg 备份/yolo-obj_ITERATIONNUMBER.savideo.avi -ext_output FILENAME.txt
  5. 约洛夫3 MATLAB 的后处理
    将 FILENAME.txt 文件带到 MATLAB,并为两个小鼠社交交互测试运行"Process_socialtest_mini.m"脚本。参见图2中的结果

4. 开放式

OpenPose 是跟踪人体主体中多个身体部位的理想选择。设置和安装过程与前两个框架非常相似。但是,由于网络已经接受过人类数据的培训,因此没有培训步骤。

  1. 开放式安装
    导航到https://github.com/aarac/openpose并按照安装说明进行操作。
  2. 处理视频
    ./构建/示例/开/开/开/开-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句柄。
  3. 开置后处理
    在 MATLAB 文件夹中,请在添加包含摄像机 1 和 2 中的 json 文件以及校准文件的适当文件夹后,使用"process_files_human3D.m"脚本运行代码。这将创建一个"单元格"文件,包含关节的所有 3D 姿势。它还将制作一部 3D 骨骼视图的电影。有关摄像机校准,请按照以下链接的说明进行:http://www.vision.caltech.edu/bouguetj/calib_doc/

结果

遵循协议时,每个网络体系结构的数据应类似于以下内容。对于 TensorBox,它输出一个边界框围绕感兴趣的对象。在我们的示例中,我们使用来自食物颗粒到达任务的视频,并标记正确的爪子来跟踪它们的运动。如图1所示,右爪可以在前视图和侧视图摄像机的不同位置被检测到。通过相机校准后进行后处理后,可以获得覆盖的3D轨迹(...

讨论

在这里,我们为实施DeepBehavior提供分步指南,我们最近开发的基于深度学习的工具箱用于动物和人类行为成像数据分析2。我们为每个网络架构的框架安装的每个步骤提供详细说明,并提供用于安装开源要求的链接,以便能够运行这些框架。我们演示如何安装它们,如何创建训练数据,如何训练网络,以及如何在培训的网络上处理新的视频文件。我们还提供后处理代码,以提取进...

披露声明

作者没有什么可透露的。

致谢

我们要感谢赵平平和佩曼·戈尔沙尼为原始论文2中使用的双小鼠社会互动测试提供了原始数据。这项研究得到了NIH NS109315和NVIDIA GPU资助(AA)的支持。

材料

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. , (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, 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. , (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. , (2017).
  16. Wei, S. E., Ramakrishna, V., Kanade, T., Sheikh, Y. Convolutional Pose Machines. arXiv. , (2016).

转载和许可

请求许可使用此 JoVE 文章的文本或图形

请求许可

探索更多文章

156 3D

This article has been published

Video Coming Soon

JoVE Logo

政策

使用条款

隐私

科研

教育

关于 JoVE

版权所属 © 2025 MyJoVE 公司版权所有,本公司不涉及任何医疗业务和医疗服务。