JoVE Logo

Accedi

È necessario avere un abbonamento a JoVE per visualizzare questo. Accedi o inizia la tua prova gratuita.

In questo articolo

  • Riepilogo
  • Abstract
  • Introduzione
  • Protocollo
  • Risultati
  • Discussione
  • Divulgazioni
  • Riconoscimenti
  • Materiali
  • Riferimenti
  • Ristampe e Autorizzazioni

Riepilogo

Lo scopo di questo protocollo è quello di utilizzare reti neurali convoluzionali pre-costruite per automatizzare il monitoraggio del comportamento ed eseguire analisi dettagliate del comportamento. Il monitoraggio del comportamento può essere applicato a qualsiasi dato video o sequenze di immagini ed è generalizzabile per tenere traccia di qualsiasi oggetto definito dall'utente.

Abstract

Comprendere il comportamento è il primo passo per comprendere veramente i meccanismi neurali nel cervello che lo guidano. I metodi di analisi comportamentale tradizionali spesso non catturano la ricchezza inerente al comportamento naturale. Qui, forniamo istruzioni dettagliate con le visualizzazioni della nostra metodologia recente, DeepBehavior. La casella degli strumenti DeepBehavior utilizza framework di deep learning compilati con reti neurali convoluzionali per elaborare e analizzare rapidamente video comportamentali. Questo protocollo illustra tre diversi framework per il rilevamento di un singolo oggetto, il rilevamento di più oggetti e il rilevamento della posa umana del giunto tridimensionale (3D). Questi framework restituiscono le coordinate cartesiane dell'oggetto di interesse per ogni fotogramma del video di comportamento. I dati raccolti dalla casella degli strumenti DeepBehavior contengono molti più dettagli rispetto ai metodi di analisi del comportamento tradizionali e forniscono informazioni dettagliate sulle dinamiche di comportamento. DeepBehavior quantifica le attività di comportamento in modo robusto, automatizzato e preciso. Dopo l'identificazione del comportamento, viene fornito codice di post-elaborazione per estrarre informazioni e visualizzazioni dai video comportamentali.

Introduzione

Un'analisi dettagliata del comportamento è fondamentale per comprendere le relazioni tra cervello e comportamento. Ci sono stati molti entusiasmanti progressi nelle metodologie per registrare e manipolare le popolazioni neuronali con alta risoluzione temporale, tuttavia, i metodi di analisi del comportamento non si sono sviluppati allo stesso ritmo e sono limitati a misurazioni indirette e un approccio riduzionista1. Recentemente, sono stati sviluppati metodi basati sul deep learning per eseguire l'analisi del comportamento automatizzato e dettagliato2,3,4,5. Questo protocollo fornisce una guida dettagliata all'implementazione per la casella degli strumenti DeepBehavior.This protocol provides a step-by-step implementation guide for the DeepBehavior toolbox.

I metodi di analisi comportamentale tradizionali spesso includono l'etichettatura manuale dei dati da parte di più valutatori, determinando la varianza nel modo in cui gli sperimentatori definiscono un comportamento6. L'etichettatura manuale dei dati richiede tempo e risorse che aumentano in modo sproporzionato rispetto alla quantità di dati raccolti. Inoltre, i dati etichettati manualmente riducono i risultati del comportamento in misurazioni categoriche che non catturano la ricchezza del comportamento e saranno più soggettive. Così, gli attuali metodi tradizionali possono essere limitati nell'acquisizione dei dettagli nei comportamenti naturali.

La casella degli strumenti DeepBehavior presenta una soluzione precisa, dettagliata, altamente temporale e automatizzata che utilizza il deep learning per l'analisi comportamentale. Il deep learning è diventato rapidamente accessibile a tutti con strumenti e pacchetti open source. Le reti neurali convoluzionali (CNN) si sono dimostrate altamente efficaci nei compiti di riconoscimento e monitoraggio degli oggetti7,8. Utilizzando CNC moderne e unità di elaborazione grafica ad alte prestazioni (GPU), grandi set di dati di immagini e video possono essere elaborati rapidamente con alta precisione7,9,10,11. In DeepBehavior, esistono tre diverse architetture di reti neurali convoluzionali, TensorBox, YOLOv3 e OpenPose2.

Il primo framework, Tensorbox, è un framework versatile che incorpora molte architetture CNN diverse per il rilevamento di oggetti12. TensorBox è più adatto per rilevare una sola classe di oggetti per ogni immagine. Gli output risultanti sono i rettangoli di selezione dell'oggetto di interesse (Figura 1) e le coordinate cartesiane del riquadro di delimitazione.

Il secondo framework CNN è YOLOv3, che sta per "You Only Look Once"13. YOLOv3 è vantaggioso quando sono presenti più oggetti di interesse che devono essere tracciati separatamente. L'output di questa rete include il riquadro di delimitazione con la classe di etichette dell'oggetto associata e le coordinate cartesiane del riquadro di delimitazione dell'oggetto nel fotogramma video (Figura 2).

I due quadri precedenti sono vantaggiosi per i dati comportamentali generalizzati raccolti da esperimenti di laboratorio standard in soggetti animali. L'ultimo framework CNN è OpenPose14,15,16 che viene utilizzato per la stima della posa articolare umana. OpenPose rileva i punti chiave del corpo umano, della mano, del viso e del piede sulle immagini. Gli output del framework sono etichettati immagini del soggetto umano, nonché le coordinate di tutti i 25 punti chiave nel corpo e 21 punti chiave di ogni mano (Figura 3).

Questa guida dettagliata per l'implementazione della nostra cassetta degli attrezzi DeepBehavior open source recentemente sviluppata utilizza reti neurali convoluzionali all'avanguardia per monitorare il comportamento animale (ad esempio il movimento di una zampa) o il comportamento umano (ad esempio, il raggiungimento di compiti). Tenendo traccia del comportamento, è possibile derivare una cinematica utile dal comportamento, ad esempio posizione, velocità e accelerazione. Il protocollo spiega l'installazione di ogni architettura CNN, dimostra come creare set di dati di formazione, come addestrare le reti, come elaborare nuovi video sulla rete addestrata, come estrarre i dati dalla rete sui nuovi video e come post-elaborare i dati di output per renderli utili per ulteriori analisi.

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

Protocollo

1. GPU e Python Setup

  1. GPU Software
    Quando il computer è la prima configurazione per le applicazioni di deep learning, software gPU appropriati e driver devono essere installati che possono essere trovati sul rispettivo sito web della GPU. (vedere la Tabella dei Materiali per quelli utilizzati in questo studio).
  2. Installazione di Python 2.7
    Aprire un prompt dei comandi nel computer.
    Riga di comando: sudo apt-get install python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Impostazione Tensorbox
    1. Crea ambiente virtuale per Tensorbox
      Riga di comando: cd
      Riga di comando: virtualenv --system-site-packages - tensorflow
      N.: Il nome dell'ambiente è '/tensorflow' ed è arbitrario
    2. Attivare l'ambiente
      Riga di comando: sorgente /tensorflow/bin/activate
  2. Installazione di Tensorbox
    Utilizzeremo GitHub per clonare TensorBox da http://github.com/aarac/TensorBox e installarlo sul nostro computer, oltre a installare dipendenze aggiuntive.
    Riga di comando: cd
    Riga di comando: clonare git http://github.com/aarac/TensorBox
    Riga di comando: cd TensorBox
    Riga di comando: pip install -r requirements.txt
  3. Dati etichetta
    1. Creare una cartella di immagini di comportamento
      Gli strumenti open source come ffmpeg sono utili per realizzare la conversione di video in singoli fotogrammi Ti consigliamo di etichettare almeno 600 immagini da un'ampia distribuzione dei fotogrammi di comportamento per l'allenamento. Inserire queste immagini in una cartella.
    2. Avviare l'interfaccia utente grafica di etichettatura
      Riga di comando: python make_json.py labels.json
      Per etichettare un'immagine, fare clic prima nell'angolo superiore sinistro dell'oggetto di interesse (ad esempio, zampa), quindi fare clic sull'angolo inferiore destro dell'oggetto di interesse (Figura 4). Verificare che il riquadro di delimitazione acquisisca l'intero oggetto di interesse. Premere 'annulla' per rietichettare la stessa immagine o premere "avanti" per passare al fotogramma successivo.
  4. Treno TensorBox
    1. Collegare le immagini di training al file degli iperparametri di rete
      All'interno della cartella tensorbox, aprire la seguente cartella in un editor di testo:
      /TensorBox/hypes/overfeat_rezoom.json. Passare all'attributo sotto i dati denominati train_idl e sostituire il percorso del file da ./data/brainwash/train_boxes.json al percorso del file labels.json. Salvare le modifiche nel file.
    2. Iniziare lo script di formazione
      Riga di comando: cd /TensorBox
      Riga di comando: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
      La rete inizierà quindi il training per 600.000 iterazioni. Nella cartella di output verranno generati i pesi sottoposti a training risultante della rete neurale convoluzionale.
  5. Prevedi le nuove immagini
    Per l'etichettatura delle immagini:
    Riga di comando: cd /TensorBox
    Riga di comando: python label_images.py --folder --weights output/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Per ottenere le coordinate dei rettangoli di selezione:
    Riga di comando: cd /TensorBox
    Riga di comando: python predict_images_to_json.py --folder --weights
    output/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. MATLAB Post-elaborazione per TensorBox
    È stato fornito codice MATLAB aggiuntivo per estrarre la cinematica e le visualizzazioni delle coordinate utilizzando il file di coordinate JSON risultante dal modello
    Eseguire lo script "Process_files_3Dreaching_mouse.m" per l'analisi cinematica 3D dell'attività di raggiungimento del pellet singolo alimento.

3. YOLOv3

  1. Installare YOLOv3
    Riga di comando: cd
    Riga di comando: git clone cd darknet
    Per l'utilizzo della GPU, aprire 'Makefile' e modificare le seguenti righe: GPU 1; L'aPN1.
    Riga di comando: make
  2. Etichettatura dei dati di training usando Yolo_mark
    Riga di comando: cd
    Riga di comando: git clone cd /Yolo_Mark
    Riga di comando: cmake .
    Riga di comando: make
    Posizionare le immagini di training nella cartella Yolo_mark/dati/obj
    Riga di comando: chmod .x ./linux_mark.sh
    Riga di comando: ./linux_mark.sh
    Etichettare le immagini una per una nell'interfaccia utente grafica (Figura 5). La quantità di immagini consigliata è di circa 200.
  3. Formazione YOLOv3
    1. File di configurazione dell'installazione
      Riga di comando: cd /Yolo_mark
      Riga di comando: scp -r ./data
      Riga di comando: cd /darknet/cfg
      Riga di comando: cp yolov3.cfg yolo-obj.cfg
    2. Modificare il file di configurazione
      Aprire la cartella yolo-obj.cfg e modificare le seguenti righe: batch-64, sottodivisione 8, classi (numero di classi da rilevare) e per ogni livello convoluzionale prima di un livello yolo modificare il filtro , (classi) 5) x3. I dettagli su queste modifiche sono disponibili presso https://github.com/aarac/darknet/blob/master/README.md
    3. Scarica i pesi di rete
      Scarica i pesi di rete da https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Inserire il file di peso scaricato in /darknet/build/darknet/x64
    4. Eseguire l'algoritmo di trainingRun training algorithm
      Riga di comando: cd /darknet
      Riga di comando: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Valutazione YOLOv3
      Una volta completato il training in base a un numero impostato di iterazioni (ITERATIONNUMBER),è possibile visualizzarle
      Riga di comando: ./darknet detector test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Prevedi nuovi video e ottieni coordinate
    Questo comando può essere eseguito per ottenere le coordinate delle etichette nel nuovo video:
    Riga di comando: ./darknet detector demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 PostProcessing in MATLAB
    Portare il file FILENAME.txt in MATLAB ed eseguire lo script "Process_socialtest_mini.m" per due mouse di test di interazione social. Vedere i risultati in Figura 2

4. OpenPose

OpenPose è ideale per tenere traccia di più parti del corpo in un soggetto umano. I processi di installazione e installazione sono molto simili ai due framework precedenti. Tuttavia, non vi è alcun passo di formazione in quanto la rete è già addestrata sui dati umani.

  1. Installazione OpenPose
    Passare a https://github.com/aarac/openpose e seguire le istruzioni di installazione.
  2. Video di processo
    ./build/examples/openpose/openpose.bin --video VIDEONAME.avi --net_resolution "1312x736" --scale_number scale_number --scale_gap 0,25 --hand--hand_scale_number 6--hand_scale_range 0,4 --write_json JSONFOLDERNAME --write_video RESULTINGVIDEONAME.avi
    Qui le maniglie --net_resolution, --scale_number, --scale_gap, --hand_scale_number e --hand_scale_range possono essere omesse se non è necessario un rilevamento di precisione elevata (questo ridurrebbe il tempo di elaborazione).
  3. Post-elaborazione Di OpenPose
    Nella cartella MATLAB, si prega di utilizzare lo script 'process_files_human3D.m' per eseguire il codice dopo aver aggiunto la cartella appropriata contenente i file json dalle telecamere 1 e 2, così come il file di calibrazione. Questo creerà un file "cella" con tutte le pose 3D delle articolazioni. Farà anche un filmato della vista scheletrica 3D. Per la calibrazione della fotocamera, seguire le istruzioni a questo link: http://www.vision.caltech.edu/bouguetj/calib_doc/

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

Risultati

Quando viene seguito il protocollo, i dati per ogni architettura di rete devono essere simili ai seguenti. Per TensorBox, viene generato un riquadro di delimitazione intorno all'oggetto di interesse. Nel nostro esempio, abbiamo usato i video di un'attività di raggiungimento del pellet alimentare ed etichettato le zampe giuste per monitorare il loro movimento. Come si è visto in Figura 1, la zampa destra può essere rilevata in diverse posizioni sia nella vi...

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

Discussione

Qui, forniamo una guida passo-passo per l'implementazione di DeepBehavior, il nostro toolbox basato sul deep learning recentemente sviluppato per l'analisi dei dati di imaging del comportamento animale e umano2. Vengono fornite spiegazioni dettagliate per ogni passaggio per l'installazione dei framework per ogni architettura di rete e vengono forniti collegamenti per l'installazione dei requisiti open source per poter eseguire questi framework. Dimostriamo come installarli, come creare dati di tra...

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

Divulgazioni

Gli autori non hanno nulla da rivelare.

Riconoscimenti

Ringraziamo ping e Peyman Golshani per aver fornito i dati grezzi per i test di interazione sociale a due topo utilizzati nel documento originale2. Questo studio è stato sostenuto da NIH NS109315 e NVIDIA GPU grants (AA).

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

Materiali

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

Riferimenti

  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.

Ristampe e Autorizzazioni

Richiedi autorizzazione per utilizzare il testo o le figure di questo articolo JoVE

Richiedi Autorizzazione

Esplora altri articoli

ComportamentoProblema 156Deep LearningAnalisi del comportamentoReti neurali convoluzionaliApprendimento automaticoAnalisi KinematicaAnalisi automatizzataComportamento animaleComportamento umanoAgitazione di attivitDati immagineDati videoKinematica 3D

This article has been published

Video Coming Soon

JoVE Logo

Riservatezza

Condizioni di utilizzo

Politiche

Ricerca

Didattica

CHI SIAMO

Copyright © 2025 MyJoVE Corporation. Tutti i diritti riservati