JoVE Logo

S'identifier

Un abonnement à JoVE est nécessaire pour voir ce contenu. Connectez-vous ou commencez votre essai gratuit.

Dans cet article

  • Résumé
  • Résumé
  • Introduction
  • Protocole
  • Résultats
  • Discussion
  • Déclarations de divulgation
  • Remerciements
  • matériels
  • Références
  • Réimpressions et Autorisations

Résumé

Le but de ce protocole est d’utiliser des filets neuronaux convolutionnels préconstruits pour automatiser le suivi du comportement et effectuer une analyse détaillée du comportement. Le suivi du comportement peut être appliqué à toutes les données vidéo ou séquences d’images et est généralisable pour suivre n’importe quel objet défini par l’utilisateur.

Résumé

Comprendre le comportement est la première étape pour vraiment comprendre les mécanismes neuronaux dans le cerveau qui le conduisent. Les méthodes traditionnelles d’analyse comportementale ne saisissent souvent pas la richesse inhérente au comportement naturel. Ici, nous fournissons des instructions détaillées étape par étape avec des visualisations de notre méthodologie récente, DeepBehavior. La boîte à outils DeepBehavior utilise des cadres d’apprentissage profond construits avec des réseaux neuronaux convolutionnels pour traiter et analyser rapidement les vidéos comportementales. Ce protocole démontre trois cadres différents pour la détection d’objets uniques, la détection d’objets multiples et le suivi tridimensionnel (3D) des articulations humaines. Ces cadres renvoient les coordonnées cartésiennes de l’objet d’intérêt pour chaque image de la vidéo comportementale. Les données recueillies à partir de la boîte à outils DeepBehavior contiennent beaucoup plus de détails que les méthodes traditionnelles d’analyse du comportement et fournissent des informations détaillées sur la dynamique du comportement. DeepBehavior quantifie les tâches de comportement d’une manière robuste, automatisée et précise. Après l’identification du comportement, le code de post-traitement est fourni pour extraire des informations et des visualisations des vidéos comportementales.

Introduction

Une analyse détaillée du comportement est essentielle pour comprendre les relations cérébrales et comportementales. Il ya eu de nombreux progrès passionnants dans les méthodologies pour l’enregistrement et la manipulation des populations neuronales avec une résolution temporelle élevée, cependant, les méthodes d’analyse du comportement n’ont pas développé au même rythme et sont limités à des mesures indirectes et une approche réductionniste1. Récemment, des méthodes basées sur l’apprentissage profond ont été développées pour effectuer une analyse de comportement automatisée et détaillée2,3,4,5. Ce protocole fournit un guide d’implémentation étape par étape pour la boîte à outils DeepBehavior.

Les méthodes traditionnelles d’analyse comportementale comprennent souvent l’étiquetage manuel des données par plusieurs évaluateurs, ce qui entraîne une variance dans la façon dont les expérimentateurs définissent un comportement6. L’étiquetage manuel des données exige du temps et des ressources qui augmentent de façon disproportionnée par rapport à la quantité de données recueillies. En outre, les données étiquetées manuellement réduisent les résultats de comportement en mesures catégoriques qui ne capturent pas la richesse du comportement, et seront plus subjectives. Ainsi, les méthodes traditionnelles actuelles peuvent être limitées dans la capture des détails dans les comportements naturels.

La boîte à outils DeepBehavior présente une solution précise, détaillée, hautement temporelle et automatisée utilisant l’apprentissage profond pour l’analyse comportementale. L’apprentissage profond est rapidement devenu accessible à tous grâce à des outils et des forfaits open source. Les réseaux neuronaux convolutionnels (CNN) se sont avérés très efficaces dans la reconnaissance d’objets et les tâches de suivi7,8. À l’aide de CNN modernes et d’unités de traitement graphique haute performance (GPU), les grands ensembles de données d’image et de vidéo peuvent être traités rapidement avec une grande précision7,9,10,11. Dans DeepBehavior, il existe trois différentes architectures neuronales convergentes, TensorBox, YOLOv3, et OpenPose2.

Le premier cadre, Tensorbox, est un cadre polyvalent qui intègre de nombreuses architectures CNN différentes pour la détection d’objets12. TensorBox est le mieux adapté pour détecter une seule classe d’objets par image. Les extrants qui en résultent sont des boîtes délimitées de l’objet d’intérêt (figure 1) et les coordonnées cartésiennes de la boîte de délimitation.

Le deuxième cadre CNN est YOLOv3, qui signifie "You Only Look Once"13. YOLOv3 est avantageux lorsqu’il existe plusieurs objets d’intérêt qui doivent être suivis séparément. La sortie de ce réseau comprend la boîte de délimitation avec la classe d’étiquette d’objet associée ainsi que les coordonnées cartésiennes de la boîte de délimitation de l’objet dans le cadre vidéo (Figure 2).

Les deux cadres précédents sont avantageux pour les données comportementales généralisées recueillies à partir d’expériences de laboratoire standard chez des sujets animaux. Le dernier cadre de CNN est OpenPose14,15,16 qui est utilisé pour l’estimation de pose conjointe humaine. OpenPose détecte les points clés du corps, de la main, du visage et du pied sur les images. Les sorties du cadre sont étiquetées images du sujet humain ainsi que les coordonnées de tous les 25 points clés dans le corps et 21 points clés de chaque main (Figure 3).

Ce guide détaillé étape par étape pour la mise en œuvre de notre boîte à outils DeepBehavior open-source récemment développée utilise des filets neuronaux convolutionnels de pointe pour suivre le comportement des animaux (par exemple le mouvement d’une patte) ou le comportement humain (par exemple, atteindre les tâches). En suivant le comportement, la cinématique utile peut être dérivée du comportement tel que la position, la vitesse et l’accélération. Le protocole explique l’installation de chaque architecture CNN, montre comment créer des jeux de données de formation, comment former les réseaux, comment traiter de nouvelles vidéos sur le réseau formé, comment extraire les données du réseau sur les nouvelles vidéos, et comment après le traitement des données de sortie pour les rendre utiles pour une analyse plus approfondie.

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

Protocole

1. Configuration GPU et Python

  1. Logiciel GPU
    Lorsque l’ordinateur est d’abord mis en place pour les applications d’apprentissage en profondeur, gPU-approprié logiciel et les pilotes doivent être installés qui peuvent être trouvés sur le site Web respectif du GPU. (voir le Tableau des matériaux pour ceux utilisés dans cette étude).
  2. Python 2.7 Installation
    Ouvrez une invite de ligne de commande sur votre machine.
    Ligne de commande: sudo apt-get installer python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Configuration Tensorbox
    1. Créer un environnement virtuel pour Tensorbox
      Ligne de commande: cd
      Ligne de commande : virtualenv --system-site-packages '/tensorflow'
      REMARQUE : ' ''''tensorflow' est le nom de l’environnement et est arbitraire
    2. Activer l’environnement
      Ligne de commande : source /tensorflow/bin/activate
  2. Tensorbox Installation
    Nous allons utiliser GitHub pour cloner TensorBox à partir de http://github.com/aarac/TensorBox et l’installer sur notre machine ainsi que l’installation de dépendances supplémentaires.
    Ligne de commande: cd
    Ligne de commande : clone de git http://github.com/aarac/TensorBox
    Ligne de commande: cd TensorBox
    Ligne de commande: pip install -r requirements.txt
  3. Données d’étiquette
    1. Créer un dossier d’images de comportement
      Les outils open source tels que ffmpeg sont utiles pour accomplir la conversion de vidéos en images individuelles Nous recommandons d’étiqueter au moins 600 images à partir d’une large distribution de cadres de comportement pour la formation. Mettez ces images dans un dossier.
    2. Lancement de l’interface utilisateur graphique d’étiquetage
      Ligne de commande: python make_json.py 'lt;path to image folder’gt; labels.json
      Pour étiqueter une image, cliquez d’abord sur le coin supérieur gauche de l’objet d’intérêt (c.-à-d. patte), puis cliquez sur le coin inférieur droit de l’objet d’intérêt (Figure 4). Inspectez que la boîte de délimitation capture l’objet d’intérêt entier. Appuyez sur 'défaire' pour réétiqueter la même image ou appuyez sur 'suivant' pour passer à l’image suivante.
  4. Train TensorBox
    1. Lier les images de formation au fichier d’hyperparamètres réseau
      Dans le dossier tensorbox, ouvrez le dossier suivant dans un éditeur de texte :
      /TensorBox/hypes/overfeat_rezoom.json. Naviguez vers l’attribut sous les données nommées train_idl et remplacez le chemin de fichier de ./data/brainwash/train_boxes.json au filepath labels.json. Enregistrer les modifications à déposer.
    2. Commencer le script de formation
      Ligne de commande : cd /TensorBox
      Ligne de commande: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir sortie
      Le réseau commencera alors la formation pour 600 000 itérations. Dans le dossier de sortie, les poids formés résultantdus du réseau neuronal convolutionnel seront générés.
  5. Prédire sur les nouvelles images
    Pour l’étiquetage de l’image :
    Ligne de commande : cd /TensorBox
    Ligne de commande: python label_images.py --folder 'lt;path to image folder 'gt; --weights output/overfeat_rezoom_'lt;timestamp’gt;/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Pour obtenir les coordonnées des boîtes de délimitation :
    Ligne de commande : cd /TensorBox
    Ligne de commande: python predict_images_to_json.py --folder 'lt;path to image folder 'gt; --weights
    sortie/overfeat_rezoom_-lt;timestamp-gt;/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. MATLAB Post-Processing pour TensorBox
    Un code MATLAB supplémentaire a été fourni pour extraire la cinématique et les visualisations des coordonnées à l’aide du fichier de coordonnées JSON résultant du modèle
    Exécutez le script "Process_files_3Dreaching_mouse.m" pour l’analyse cinématique 3D de la tâche d’atteinte de granule de nourriture unique.

3. YOLOv3

  1. Installer YOLOv3
    Ligne de commande: cd
    Ligne de commande: git clone cd darknet
    Pour l’utilisation du GPU, ouvrez 'Makefile' et modifiez les lignes suivantes : GPU 1; CUDNN1.
    Ligne de commande: faire
  2. Étiquetage des données de formation à l’aide de Yolo_mark
    Ligne de commande: cd
    Ligne de commande : git clone cd à Yolo_Mark
    Ligne de commande: cmake .
    Ligne de commande: faire
    Placez les images de formation dans le dossier ''Yolo_mark/'data/obj
    Ligne de commande : chmod x ./linux_mark.sh
    Ligne de commande: ./linux_mark.sh
    Étiquetez les images une par une dans l’interface utilisateur graphique (Figure 5). La quantité recommandée d’images est d’environ 200.
  3. Formation YOLOv3
    1. Fichier de configuration de configuration
      Ligne de commande : cd et Yolo_mark
      Ligne de commande: scp -r ./data '/darknet
      Ligne de commande : cd /darknet/cfg
      Ligne de commandement: cp yolov3.cfg yolo-obj.cfg
    2. Modifier le fichier de configuration
      Ouvrez le dossier yolo-obj.cfg et modifiez les lignes suivantes : lot 64, subdivision 8, classes (classe à détecter), et pour chaque couche convolutionnelle avant qu’une couche de yolo ne modifie le filtre (classes 5)x3. Vous trouverez des détails sur ces changements à https://github.com/aarac/darknet/blob/master/README.md
    3. Télécharger les poids du réseau
      Téléchargez les poids réseau à partir de https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Placez le fichier de poids téléchargé dans le fichier de poids téléchargé dans le fichier de poids //darknet/build/darknet/x64
    4. Exécuter l’algorithme de formation
      Ligne de commande : cd /darknet
      Ligne de commande: ./darknet détecteur train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Évaluation YOLOv3
      Une fois la formation terminée en fonction d’un nombre d’itérations(ITERATIONNUMBER),vous pouvez les consulter
      Ligne de commande: ./darknet détecteur de données de test /obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights 'lt;IMAGE’gt;jpg
  4. Prédire sur de nouvelles vidéos et obtenir des coordonnées
    Cette commande peut être exécuté pour obtenir les coordonnées des étiquettes dans la nouvelle vidéo :
    Ligne de commande: ./darknet détecteur demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output 'lt;VIDEO.avi’gt; FILENAME.txt
  5. YOLOv3 PostProcessing dans MATLAB
    Prenez le fichier FILENAME.txt à MATLAB, et exécutez le script "Process_socialtest_mini.m" pour deux souris test d’interaction sociale. Voir les résultats de la figure 2

4. OpenPose

OpenPose est idéal pour suivre plusieurs parties du corps dans un sujet humain. Les processus de configuration et d’installation sont très similaires aux deux cadres précédents. Cependant, il n’y a pas d’étape de formation car le réseau est déjà formé sur les données humaines.

  1. OpenPose Installation
    Naviguez vers https://github.com/aarac/openpose et suivez les instructions d’installation.
  2. Vidéo du processus
    ./build/examples/openpose/openpose.bin --video VIDEONAME.avi --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 --hand --hand_scale_number 6 --hand_scale_range 0.4 --write_json JSONFOLDERNAME --write_video RESULTINGVIDEONAME.avi
    Ici, les poignées --net_resolution, -scale_number, --scale_gap, --hand_scale_number et --hand_scale_range peuvent être omises si une détection de haute précision n’est pas nécessaire (ce qui diminuerait le temps de traitement).
  3. OpenPose Post-Traitement
    Dans le dossier MATLAB, veuillez utiliser le script ' process_files_human3D.m’pour exécuter le code après l’ajout du dossier approprié contenant les fichiers json des caméras 1 et 2, ainsi que le fichier d’étalonnage. Cela créera un fichier "cellule" avec toutes les poses 3D des articulations. Il fera également un film de la vue squelettique 3D. Pour l’étalonnage de la caméra, veuillez suivre les instructions à ce lien : http://www.vision.caltech.edu/bouguetj/calib_doc/

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

Résultats

Lorsque le protocole est suivi, les données de chaque architecture de réseau doivent être similaires à celles qui suivent. Pour TensorBox, il produit une boîte de délimitation autour de l’objet d’intérêt. Dans notre exemple, nous avons utilisé des vidéos à partir d’une tâche d’atteinte de granule alimentaire, et étiqueté les pattes droites pour suivre leur mouvement. Comme on le voit dans la figure 1, la patte droite peut être détecté...

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

Discussion

Ici, nous fournissons un guide étape par étape pour la mise en œuvre de DeepBehavior, notre boîte à outils basée sur l’apprentissage profond récemment développé pour l’analyse des données d’imagerie du comportement animal et humain2. Nous fournissons des explications détaillées pour chaque étape pour l’installation des cadres pour chaque architecture de réseau, et fournissons des liens pour l’installation des exigences open-source pour être en mesure d’exécuter ces cadr...

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

Déclarations de divulgation

Les auteurs n’ont rien à révéler.

Remerciements

Nous tenons à remercier Pingping Zhao et Peyman Golshani d’avoir fourni les données brutes pour les tests d’interaction sociale à deux souris utilisés dans le document original2. Cette étude a été appuyée par les subventions du NIH NS109315 et du GPU NVIDIA (AA).

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

matériels

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

Références

  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.

Réimpressions et Autorisations

Demande d’autorisation pour utiliser le texte ou les figures de cet article JoVE

Demande d’autorisation

Explorer plus d’articles

ComportementNum ro 156Apprentissage profondAnalyse du comportementR seaux neuronaux convolutionnelsapprentissage automatiqueanalyse cin matiqueanalyse automatis ecomportement animalcomportement humainatteindre les t chesDonn es d imagesDonn es vid oCin matiques 3D

This article has been published

Video Coming Soon

JoVE Logo

Confidentialité

Conditions d'utilisation

Politiques

Recherche

Enseignement

À PROPOS DE JoVE

Copyright © 2025 MyJoVE Corporation. Tous droits réservés.