Waiting
Login processing...

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

Behavior

En trinvis implementering af DeepBehavior, Deep Learning Toolbox til automatiseret adfærdsanalyse

Published: February 6, 2020 doi: 10.3791/60763

Summary

Formålet med denne protokol er at udnytte præ-bygget convolutional neurale net til at automatisere adfærd sporing og udføre detaljerede adfærd analyse. Adfærdssporing kan anvendes på alle videodata eller sekvenser af billeder og kan generelt spores i ethvert brugerdefineret objekt.

Abstract

Forståelse adfærd er det første skridt til virkelig at forstå neurale mekanismer i hjernen, der driver det. Traditionelle adfærdsmæssige analysemetoder ofte ikke fange den rigdom iboende den naturlige adfærd. Her giver vi detaljerede trinvise instruktioner med visualiseringer af vores seneste metode, DeepBehavior. DeepBehavior værktøjskassen bruger deep learning rammer bygget med convolutional neurale netværk til hurtigt at behandle og analysere adfærdsmæssige videoer. Denne protokol viser tre forskellige rammer for registrering af enkelte objekter, registrering af flere objekter og tredimensionel (3D) humant sammenstillesporing. Disse rammer returnerer kartesiske koordinater for genstanden af interesse for hver ramme af adfærdsvideoen. Data indsamlet fra værktøjskassen DeepBehavior indeholder langt flere detaljer end traditionelle adfærdsanalysemetoder og giver detaljeret indsigt i adfærdsdynamikken. DeepBehavior kvantificerer adfærdsopgaver på en robust, automatiseret og præcis måde. Efter identifikation af adfærd, efterbehandling kode er fastsat for at udtrække oplysninger og visualiseringer fra adfærdsmæssige videoer.

Introduction

En detaljeret analyse af adfærd er nøglen til at forstå hjernen og adfærd relationer. Der har været mange spændende fremskridt i metoder til registrering og manipulation af neuronale populationer med høj tidsmæssig opløsning, men adfærdsanalysemetoder har ikke udviklet sig i samme tempo og er begrænset til indirekte målinger og en reduktionistisk tilgang1. For nylig, deep learning baseret metoder er blevet udviklet til at udføre automatiserede og detaljerede adfærd analyse2,3,4,5. Denne protokol indeholder en trinvis implementeringsvejledning til værktøjsboksen DeepBehavior.

Traditionelle adfærdsmæssige analysemetoder omfatter ofte manuelt mærkning af data af flere evaluatorer, hvilket fører til varians i, hvordan eksperimentatorer definerer en adfærd6. Manuel mærkning af dataene kræver tid og ressourcer, der øger uforholdsmæssigt meget i forhold til mængden af indsamlede data. Desuden manuelt mærkede data reducere adfærd resultater i kategoriske målinger, som ikke fange den rigdom af adfærd, og vil være mere subjektive. Således, de nuværende traditionelle metoder kan være begrænset til at fange detaljerne i den naturlige adfærd.

DeepBehavior-værktøjskassen præsenterer en præcis, detaljeret, meget tidsmæssig og automatiseret løsning ved hjælp af deep learning til adfærdsanalyse. Deep learning er hurtigt blevet tilgængelig for alle med open source-værktøjer og pakker. Convolutional neurale netværk (CNNs) har vist sig at være yderst effektiv i objektgenkendelse og sporing opgaver7,8. Ved hjælp af moderne CNN'er og højtydende grafikbehandlingsenheder (GPU'er) kan store billed- og videodatasæt behandles hurtigt med høj præcision7,9,10,11. I DeepBehavior, der er tre forskellige convolutional neurale net arkitekturer, TensorBox, YOLOv3, og OpenPose2.

Den første ramme, Tensorbox, er en alsidig ramme, der inkorporerer mange forskellige CNN arkitekturer til objekt afsløring12. TensorBox er bedst egnet til registrering af kun én objektklasse pr. billede. De resulterende udgange er afgrænsningskasser af det objekt af interesse (figur 1) og de kartesiske koordinater for afgrænsningsrammen.

Den anden CNN ramme er YOLOv3, som står for "You Only Look Once"13. YOLOv3 er fordelagtig, når der er flere objekter af interesse, der skal spores separat. Outputtet af dette netværk omfatter afgrænsningsrammen med den tilknyttede objektetiketklasse samt afgrænsningsrammens kartesiske koordinater for objektet i videorammen (Figur 2).

De to foregående rammer er fordelagtige for generaliserede adfærdsmæssige data indsamlet fra standard laboratorieforsøg hos dyreforsøg. Den sidste CNN ramme er OpenPose14,15,16, som bruges til menneskelige fælles udgør skøn. OpenPose registrerer menneskelige krop, hånd, ansigtsbehandling, og mund centrale punkter på billeder. Udgangene af rammen er mærket billeder af det menneskelige emne samt koordinaterne for alle de 25 centrale punkter i kroppen og 21 centrale punkter i hver hånd (Figur 3).

Denne detaljerede trin-for-trin guide til gennemførelse af vores nyligt udviklede open source DeepBehavior værktøjskasse beskæftiger state-of-the-art convolutional neurale net til at spore dyrs adfærd (f.eks bevægelse af en pote) eller menneskelig adfærd (f.eks nå opgaver). Ved at spore funktionsmåden kan nyttige kinematik udledes af adfærden, f.eks. Protokollen forklarer installationen af hver CNN-arkitektur, viser, hvordan du opretter træningsdatasæt, hvordan man træner netværkene, hvordan man behandler nye videoer på det uddannede netværk, hvordan data udtrækkes fra netværket på de nye videoer, og hvordan du kan efter behandling af outputdataene for at gøre dem nyttige til yderligere analyse.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

1. GPU og Python Setup

  1. GPU-software
    Når computeren er først setup for deep learning applikationer, GPU-passende software og drivere bør installeres, som kan findes på GPU's respektive hjemmeside. (se materialetabellen for dem, der anvendes i denne undersøgelse).
  2. Python 2.7 Installation
    Åbn en kommandolinjeprompt på computeren.
    Kommandolinje: sudo apt-get installere python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Opsætning af Tensorbox
    1. Opret virtuelt miljø til Tensorbox
      Kommandolinje: cd ~
      Kommandolinje: virtualenv --system-site-pakker ~/tensorflow
      BEMÆRK: '~/tensorflow' er miljøets navn og er vilkårlig
    2. Aktiver miljø
      Kommandolinje: kilde ~/tensorflow/bin/activate
  2. Tensorbox Installation
    Vi vil bruge GitHub til at klone TensorBox fra http://github.com/aarac/TensorBox og installere det på vores maskine samt installere yderligere afhængigheder.
    Kommandolinje: cd ~
    Kommandolinje: git klon http://github.com/aarac/TensorBox
    Kommandolinje: cd TensorBox
    Kommandolinje: pip installation -r requirements.txt
  3. Etiketdata
    1. Oprette en mappe med billeder af funktionsmåden
      Open source-værktøjer som ffmpeg er nyttige til at udføre konvertering af videoer til individuelle rammer Vi anbefaler mærkning mindst 600 billeder fra en bred distribution af adfærdsrammer til træning. Læg disse billeder i en mappe.
    2. Start mærkning grafisk brugergrænseflade
      Kommandolinje: python make_json.py labels.json
      Hvis du vil mærke et billede, skal du først klikke på det øverste venstre hjørne af det objekt, der er interessant (dvs. pote), og derefter klikke på nederste højre hjørne af objektet af interesse (Figur 4). Undersøg, at afgrænsningsrammen fanger hele objektet af interesse. Tryk på 'forlad' for at fjerne det samme billede igen, eller tryk på 'næste' for at gå videre til næste ramme.
  4. Tog TensorBox
    1. Link træningsbilleder til filen med netværkshyperparametre
      Åbn følgende mappe i en teksteditor i mappen Tensorbox:
      /TensorBox/hypes/overfeat_rezoom.json. Gå til attributten under data med navnet train_idl og erstat filstien fra ./data/brainwash/train_boxes.json til filen labels.json filepath. Gem ændringerne i filen.
    2. Begynd træningsscript
      Kommandolinje: cd ~/TensorBox
      Kommandolinje: python train.py --hypes hypes/overfeat_rezoom.json --GPU 0 --logdir output
      Netværket vil derefter begynde at uddanne sig til 600.000 gentagelser. I output-mappen, den resulterende uddannede vægte af convolutional neurale netværk vil blive genereret.
  5. Forudsige på nye billeder
    Til billedmærkning:
    Kommandolinje: cd ~/TensorBox
    Kommandolinje: python label_images.py --folder --vægte output/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --GPU 0
    Sådan får du koordinater for afgrænsningsbokse:
    Kommandolinje: cd ~/TensorBox
    Kommandolinje: python predict_images_to_json.py --folder --vægte
    output/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --GPU 0
  6. MATLAB efterbehandling til TensorBox
    Yderligere MATLAB-kode er blevet leveret for at udtrække kinematik og visualiseringer af koordinaterne ved hjælp af den resulterende JSON-koordinatfil fra modellen
    Kør "Process_files_3Dreaching_mouse.m" script for 3D kinematisk analyse af enkelt mad pellet nå opgaven.

3.

  1. Installer YOLOv3
    Kommandolinje: cd ~
    Kommandolinje: git klon cd darknet
    For GPU-brug skal du åbne 'Makefile' og ændre følgende linjer: GPU=1; CUDNN=1.
    Kommandolinje: gør
  2. Mærkning af træningsdata ved hjælp af Yolo_mark
    Kommandolinje: cd ~
    Kommandolinje: git kloncd ~/Yolo_Mark
    Kommandolinje: cmake .
    Kommandolinje: gør
    Placer træningsbillederne i mappen ~/Yolo_mark/data/obj
    Kommandolinje: chmod +x ./linux_mark.sh
    Kommandolinje: ./linux_mark.sh
    Mærk billederne én efter én i den grafiske brugergrænseflade (Figur 5). Den anbefalede mængde billeder er ca. 200.
  3. Uddannelse YOLOv3
    1. Konfigurationsfil til installation
      Kommandolinje: cd ~/Yolo_mark
      Kommandolinje: scp -r ./data ~/darknet
      Kommandolinje: cd ~/darknet/cfg
      Kommandolinje: cp yolov3.cfg yolo-obj.cfg
    2. Ændre konfigurationsfilen
      Åbn mappen yolo-obj.cfg, og rediger følgende linjer: batch=64, underdivision=8, klasses=(# i klassen for at registrere), og for hvert convolutional lag før et yolo-lag ændres filter=(klasse+5)x3. Oplysninger om disse ændringer kan findes på https://github.com/aarac/darknet/blob/master/README.md
    3. Hent netværksvægte
      Download netværksvægte fra https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Placer den hentede vægtfil i ~/darknet/build/darknet/x64
    4. Kør træningsalgoritme
      Kommandolinje: cd ~/darknet
      Kommandolinje: ./darknet detektor tog data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Evaluering af YOLOv3
      Når træningen er fuldført baseret på et bestemt antal gentagelser (ITERATIONSTAL),kan du se dem ved at
      Kommandolinje: ./darknet detektor test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Forudsige nye videoer og få koordinater
    Denne kommando kan køres for at hente koordinaterne for etiketterne i den nye video:
    Kommandolinje: ./darknet detector demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 Efterbehandling i MATLAB
    Tag FILENAME.txt-filen til MATLAB, og kør scriptet "Process_socialtest_mini.m" for to mus social interaktionstest. Se resultaterne i figur 2

4. OpenPose

OpenPose er ideel til at spore flere kropsdele i et menneskeligt emne. Opsætnings- og installationsprocesserne minder meget om de to foregående rammer. Der er dog ingen uddannelse skridt, da netværket allerede er uddannet i menneskelige data.

  1. OpenPose Installation
    Gå til https://github.com/aarac/openpose og følg installationsvejledningen.
  2. Procesvideo
    ./build/eksempler/openpose/openpose.bin --video VIDEONAME.avi --net_resolution "1312x736" --scale_number 4 --scale_gap 0,25 --hånd --hånd --hand_scale_number 6 --hand_scale_range 0,4 --write_json JSONFOLDERNAME --write_video RESULTINGVIDEONAME.avi
    Her kan håndtagene --net_resolution, --scale_number, --scale_gap, --hand_scale_number og --hand_scale_range håndtag udelades, hvis der ikke er behov for en højpræcisionsdet detektion (dette ville reducere behandlingstiden).
  3. OpenPose efterbehandling
    I MATLAB mappe, skal du bruge 'process_files_human3D.m' script til at køre koden efter at have tilføjet den relevante mappe, der indeholder json filer fra kameraer 1 og 2, samt kalibrering sakt. Dette vil skabe en "celle" fil med alle de 3D udgør af leddene. Det vil også gøre en film af 3D skelet visning. For kamerakalibrering skal du følge instruktionerne på dette link: http://www.vision.caltech.edu/bouguetj/calib_doc/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

Når protokollen følges, skal dataene for hver netværksarkitektur svare til følgende. For TensorBox udskriver den en afgrænsningsramme omkring det objekt, der er interessant. I vores eksempel brugte vi videoer fra en madpille, der nåede opgaven, og mærkede de rigtige poter til at spore deres bevægelser. Som det ses i figur 1,kan den rigtige pote detekteres i forskellige positioner i både frontvisning og sidevisning kameraer. Efter efterbehandling med kamerakalibrering kan der opnås 3D-baner af rækkevidden (figur 1B).

I Yolov3, da der er flere objekter, er outputtet også flere afgrænsningsrammer. Som det fremgår af figur 2B, er der flere afgrænsningskasser omkring objekter af interesse. Disse kan være dele af kroppen.

I OpenPose registrerer netværket de fælles positioner, som det fremgår af figur 3A. Efter efterbehandling med kamerakalibrering kan der oprettes en 3D-model af motivet (Figur 3B).

Afslutningsvis viser disse repræsentative resultater de rige detaljer om adfærd, der kan registreres ved hjælp af deepbehavior-værktøjskassen.

Figure 1
Figur 1: Afgrænsningskasser med TensorBox set på poterne i videobilleder under en rækkende opgave i mus. (Tilpasset fra Arac et al. 2019). Klik her for at se en større version af denne figur.

Figure 2
Figur 2: Afgrænsningskasser med Yolov3 set på de regioner af interesse i videobilleder under en to mus social interaktion test (En rå billede, B analyseret billede). (Tilpasset fra Arac et al. 2019). Klik her for at se en større version af denne figur.

Figure 3
Figur 3: Registrering af menneskelige poser med OpenPose i to kameravisninger (A) og 3D-model, der er oprettet ud fra disse to billeder (B). (Tilpasset fra Arac et al. 2019). Klik her for at se en større version af denne figur.

Figure 4
Figur 4: TensorBox's make_json GUI bruges til at mærke træningsdata. Klik her for at se en større version af denne figur.

Figure 5
Figur 5: GUI af Yolo_Mark til at mærke billeder i et format, der er acceptabelt for Yolov3. Klik her for at se en større version af denne figur.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

Her giver vi en trinvis vejledning til implementering af DeepBehavior, vores nyligt udviklede deep learning baseret værktøjskasse til dyre-og menneskelig adfærd imaging data analyse2. Vi giver detaljerede forklaringer på hvert trin til installation af rammerne for hver netværksarkitektur og indeholder links til installation af open source-kravene for at kunne køre disse rammer. Vi demonstrerer, hvordan du installerer dem, hvordan du opretter træningsdata, hvordan netværket trænes, og hvordan du behandler nye videofiler på det uddannede netværk. Vi leverer også efterbehandlingskoden for at udtrække de grundlæggende nødvendige oplysninger, der er nødvendige for yderligere analyse.

Til registrering af enkeltobjekter anbefaler vi at bruge TensorBox. Hvis målet er at spore flere objekter på én gang, anbefaler vi at bruge YOLOv3. Endelig, for at opnå menneskelige kinematiske data, anbefaler vi at bruge OpenPose. I denne protokol har vi vist, at deep learning metoder er i stand til at behandle hundredtusindvis af rammer, mens sporing objekter med en høj grad af præcision. Ved hjælp af den leverede efterbehandlingskode kan vi udlede meningsfulde måder at analysere den sporede funktionsmåde for interesse. Dette giver en mere detaljeret måde at fange adfærd på. Det giver også en automatiseret, robust måde at definere adfærd, der er generaliserbar for mange forskellige typer af adfærdsmæssige opgaver.

Det er ret almindeligt at få en 'ModuleNotFoundError', når du starter med et nyt virtuelt miljø eller kode, der er blevet downloadet fra internettet. Hvis dette sker, skal du åbne terminalen, aktivere kildemiljøet og skrive 'pip install '. Hvis problemet fortsætter, skal du tjekke din python version samt andre afhængighed pakker.

Begrænsninger i denne teknik omfatter teknisk fejlfinding for korrekt opsætning af GPU-behandlingsenheder, der er kompatible med open source-kode. Det er en fordel at have tidligere programmering erfaring inden for en linux miljø til korrekt opsætning af de nødvendige projekt afhængigheder og miljøer, der er kompatible med computerens hardware.

Vi demonstrerer DeepBehavior værktøjskasse installationer og behandling af i et linux-miljø, men denne værktøjskasse kan også køres på en Windows og Mac maskiner med GPU'er ved at følge de respektive installationsvejledninger på github.

Brug af dybdeindlæringsmetoder til analyse af billeddata er en meget effektiv måde at automatisere adfærdsanalyse på. I forhold til traditionelle adfærdsanalysemetoder registrerer DeepBehavior meget mere information for at kvantificere, automatisere og evaluere adfærden på en mere præcis og tidsmæssigt detaljeret måde. Med de yderligere fremskridt på det dybe læringsområde vil udnyttelsen og omfanget af brugen af denne teknologi i adfærdsanalyse sandsynligvis fortsætte med at forbedre sig. Anvendelserne af DeepBehavior kan udvides ud over de demonstrerede nå opgaver for at identificere objekter af interesse i eventuelle adfærdsmæssige billeder. I denne protokol, Vi giver detaljerede instruktioner til at gennemføre tre neurale netværk til adfærdanalyse. Med denne form for automatiseret og upartisk adfærd analysemetoder, forhåbentlig, neurovidenskab området vil være i stand til at gøre mere detaljeret adfærd analyse.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Forfatterne har intet at afsløre.

Acknowledgments

Vi vil gerne takke Pingping Zhao og Peyman Golshani for at give de rå data for to-mus social interaktion test, der anvendes i det oprindelige papir2. Denne undersøgelse blev støttet af NIH NS109315 og NVIDIA GPU tilskud (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

Adfærd Deep Learning Behavior Analysis Convolutional Neural Nets Machine Learning Kinematic Analysis Automatiseret Analyse Animal Behavior Human Behavior Nå Opgaver Billeddata Video Data 3D Kinematics
En trinvis implementering af DeepBehavior, Deep Learning Toolbox til automatiseret adfærdsanalyse
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