Waiting
Login processing...

Trial ends in Request Full Access Tell Your Colleague About Jove
Click here for the English version

Behavior

Un'implementazione passo-passo di DeepBehavior, Deep Learning Toolbox per l'analisi automatizzata del comportamento

Published: February 6, 2020 doi: 10.3791/60763

Summary

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.

Introduction

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.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

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/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

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 vista frontale e videocamere laterali. Dopo la post-elaborazione con la calibrazione della fotocamera, è possibile ottenere traiettorie 3D della portata(Figura 1B).

In Yolov3, poiché sono presenti più oggetti, l'output è anche più rettangoli di delimitazione. Come si vede nella Figura 2B, ci sono più rettangoli di selezione intorno agli oggetti di interesse. Queste possono essere parti del corpo.

In OpenPose, la rete rileva le posizioni dei giunti come illustrato nella Figura 3A. Dopo la post-elaborazione con la calibrazione della fotocamera, è possibile creare un modello 3D del soggetto (Figura 3B).

In conclusione, questi risultati rappresentativi mostrano i dettagli dettagliati del comportamento che possono essere acquisiti utilizzando la casella degli strumenti DeepBehavior.

Figure 1
Figura 1: Scatole di delimitazione con TensorBox visto sulle zampe dei fotogrammi video durante un compito di raggiungimento nei topi. (Adattato da Arac et al 2019). Fare clic qui per visualizzare una versione più grande di questa figura.

Figure 2
Figura 2: Caselle di delimitazione con Yolov3 viste sulle regioni di interesse per i fotogrammi video durante un test di interazione sociale con due topi (Immagine non elaborata, Immagine analizzata B). (Adattato da Arac et al 2019). Fare clic qui per visualizzare una versione più grande di questa figura.

Figure 3
Figura 3: Rilevamento della posa umana con OpenPose in due viste della fotocamera (A) e nel modello 3D creato da queste due immagini (B). (Adattato da Arac et al 2019). Fare clic qui per visualizzare una versione più grande di questa figura.

Figure 4
Figura 4: GUI di make_json tensorBox utilizzata per etichettare i dati di training. Fare clic qui per visualizzare una versione più grande di questa figura.

Figure 5
Figura 5: GUI di Yolo_Mark per etichettare le immagini in un formato accettabile per Yolov3. Fare clic qui per visualizzare una versione più grande di questa figura.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

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 training, come addestrare la rete e come elaborare nuovi file video sulla rete addestrata. Forniamo anche il codice di post-elaborazione per estrarre le informazioni di base necessarie per un'ulteriore analisi.

Per il rilevamento di un singolo oggetto, è consigliabile usare TensorBox.For single object detection, we recommend using TensorBox. Se l'obiettivo è tenere traccia di più oggetti contemporaneamente, è consigliabile usare YOLOv3. Infine, per ottenere dati cinematici umani, si consiglia di utilizzare OpenPose. In questo protocollo abbiamo dimostrato che i metodi di deep learning sono in grado di elaborare centinaia di migliaia di fotogrammi mentre tracciano gli oggetti con un alto grado di precisione. Utilizzando il codice di post-elaborazione fornito, possiamo derivare modi significativi di analizzare il comportamento monitorato di interesse. Ciò fornisce un modo più dettagliato di catturare il comportamento. Fornisce inoltre un modo automatizzato e affidabile di definire un comportamento generalizzabile per molti tipi diversi di attività comportamentali.

È abbastanza comune ottenere un 'ModuleNotFoundError' quando si inizia con un nuovo ambiente virtuale o codice che è stato scaricato da Internet. In tal caso, aprire il terminale, attivare l'ambiente di origine e digitare 'pip install '. Se il problema persiste, sarà necessario controllare la versione di python e altri pacchetti di dipendenze.

Le limitazioni a questa tecnica includono la risoluzione tecnica dei problemi per configurare correttamente le unità di elaborazione GPU compatibili con il codice open source. È vantaggioso avere un'esperienza di programmazione passata all'interno di un ambiente linux per impostare correttamente le dipendenze di progetto necessarie e gli ambienti compatibili con l'hardware del computer.

Dimostriamo le installazioni della casella degli strumenti DeepBehavior e l'elaborazione di in un ambiente linux, tuttavia, questa casella degli strumenti può essere eseguita anche su un computer Windows e Mac con GPU seguendo le rispettive guide di installazione su github.

L'utilizzo di metodi di deep learning per l'analisi dei dati di imaging è un modo molto efficiente per automatizzare l'analisi del comportamento. Rispetto ai metodi di analisi del comportamento tradizionali, DeepBehavior acquisisce molte più informazioni per quantificare, automatizzare e valutare il comportamento in modo più preciso e temporalmente dettagliato. Con gli ulteriori progressi nel campo del deep learning, l'utilizzo e l'estensione dell'uso di questa tecnologia nell'analisi del comportamento continueranno probabilmente a migliorare. Le applicazioni di DeepBehavior possono essere ampliate oltre le attività di raggiungimento dimostrate per identificare gli oggetti di interesse in qualsiasi immagine comportamentale. In questo protocollo vengono fornite istruzioni dettagliate per implementare tre reti neurali per l'analisi del comportamento. Con questo tipo di metodi di analisi del comportamento automatizzati e imparziali, si spera, il campo delle neuroscienze sarà in grado di fare analisi del comportamento più dettagliate.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Gli autori non hanno nulla da rivelare.

Acknowledgments

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).

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

DOWNLOAD MATERIALS LIST

References

  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).

Tags

Comportamento Problema 156 Deep Learning Analisi del comportamento Reti neurali convoluzionali Apprendimento automatico Analisi Kinematica Analisi automatizzata Comportamento animale Comportamento umano Agitazione di attività Dati immagine Dati video Kinematica 3D
Un'implementazione passo-passo di DeepBehavior, Deep Learning Toolbox per l'analisi automatizzata del comportamento
Play Video
PDF DOI DOWNLOAD MATERIALS LIST

Cite this Article

Shukla, S., Arac, A. A Step-by-StepMore

Shukla, S., Arac, A. A Step-by-Step Implementation of DeepBehavior, Deep Learning Toolbox for Automated Behavior Analysis. J. Vis. Exp. (156), e60763, doi:10.3791/60763 (2020).

Less
Copy Citation Download Citation Reprints and Permissions
View Video

Get cutting-edge science videos from JoVE sent straight to your inbox every month.

Waiting X
Simple Hit Counter