En trinnvis implementering av DeepBehavior, Deep Learning Toolbox for automatisert atferdsanalyse

Behavior

Your institution must subscribe to JoVE's Behavior section to access this content.

Fill out the form below to receive a free trial or learn more about access:

 

Summary

Formålet med denne protokollen er å bruke forhåndsbygde konvolutionale nevrale nett for å automatisere atferdssporing og utføre detaljert atferdsanalyse. Atferdssporing kan brukes på alle videodata eller sekvenser av bilder og kan generaliseres for å spore et hvilket som helst brukerdefinert objekt.

Cite this Article

Copy Citation | Download Citations | Reprints and Permissions

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

Please note that all translations are automatically generated.

Click here for the english version. For other languages click here.

Abstract

Forstå atferd er det første skrittet for å virkelig forstå nevrale mekanismer i hjernen som driver den. Tradisjonelle atferdsanalysemetoder fanger ofte ikke rikdommen som ligger i den naturlige oppførselen. Her gir vi detaljerte trinnvise instruksjoner med visualiseringer av vår nylige metodikk, DeepBehavior. DeepBehavior-verktøykassen bruker dype læringsrammer bygget med convolutional nevrale nettverk for raskt å behandle og analysere atferdsvideoer. Denne protokollen demonstrerer tre forskjellige rammeverk for registrering av enkeltobjekt, registrering av flere objekter og tredimensjonal (3D) menneskelig felles positursporing. Disse rammeverkene returnerer kartesiske koordinater til objektet av interesse for hver ramme av atferdsvideoen. Data som samles inn fra DeepBehavior-verktøykassen, inneholder mye mer detaljer enn tradisjonelle atferdsanalysemetoder og gir detaljert innsikt i atferdsdynamikken. DeepBehavior kvantifiserer atferdsoppgaver på en robust, automatisert og presis måte. Etter identifisering av virkemåte gis etterbehandlingskode for å trekke ut informasjon og visualiseringer fra atferdsvideoene.

Introduction

En detaljert analyse av atferd er nøkkelen til å forstå hjernen og atferdsrelasjoner. Det har vært mange spennende fremskritt i metoder for opptak og manipulering av nevronale populasjoner med høy timelig oppløsning, men atferdsanalysemetoder har ikke utviklet seg i samme hastighet og er begrenset til indirekte målinger og en reduksjonistisk tilnærming1. Nylig har dyp læring basert metoder blitt utviklet for å utføre automatisert og detaljert atferdsanalyse2,3,4,5. Denne protokollen inneholder en trinnvis implementeringsveiledning for DeepBehavior-verktøykassen.

Tradisjonelle atferdsanalysemetoder inkluderer ofte manuell merking av data ved flere evaluatorer, noe som fører til varians i hvordan eksperimenterere definerer en virkemåte6. Manuell merking av dataene krever tid og ressurser som øker uforholdsmessig til mengden data som samles inn. Videre reduserer manuelt merkede data atferdsresultatene til kategoriske målinger som ikke fanger opp atferdens rikdom, og vil være mer subjektive. Dermed kan dagens tradisjonelle metoder være begrenset i å fange detaljene i den naturlige atferden.

DeepBehavior-verktøykassen presenterer en presis, detaljert, svært tidsmessig og automatisert løsning ved hjelp av dyp læring for atferdsanalyse. Dyp læring har raskt blitt tilgjengelig for alle med åpen kildekode verktøy og pakker. Convolutional nevrale nettverk (CNNer) er bevist å være svært effektive i objektgjenkjenning og sporing oppgaver7,8. Ved hjelp av moderne CNNer og høyytelses grafikkbehandlingsenheter (GPU-er) kan store bilde- og videodatasett behandles raskt med høy presisjon7,9,10,11. I DeepBehavior er det tre forskjellige convolutional neural net architectures, TensorBox, YOLOv3 og OpenPose2.

Det første rammeverket, Tensorbox, er et allsidig rammeverk som inkorporerer mange forskjellige CNN-arkitekturer for objektdeteksjon12. TensorBox er best egnet for å oppdage bare én objektklasse per bilde. De resulterende utgangene er grenser bokser av objektet av interesse (Figur 1) og kartesiske koordinater av markeringsboksen.

Den andre CNN rammeverket er YOLOv3, som står for "You Only Look Once"13. YOLOv3 er fordelaktig når det er flere objekter av interesse som må spores separat. Utdataene for dette nettverket inkluderer markeringsboksen med den tilknyttede objektetikettklassen samt markeringsboksen kartesiske koordinater for objektet i videorammen (figur 2).

De to foregående rammeverkene er fordelaktige for generaliserte atferdsdata samlet inn fra standard laboratorieforsøk hos dyreforsøk. Det siste CNN-rammeverket er OpenPose14,15,16 som brukes til menneskelig felles positurestimering. OpenPose oppdager menneskelige kropp, hånd, ansikts- og fotnøkkelpunkter på bilder. Utdataene av rammeverket er merket bilder av det menneskelige motivet, samt koordinatene til alle de 25 nøkkelpunktene i kroppen og 21 nøkkelpunkter for hver hånd (figur 3).

Denne detaljerte trinnvise veiledningen for implementering av vår nylig utviklede open-source DeepBehavior verktøykasse bruker toppmoderne convolutional nevrale nett for å spore dyratferd (f.eks. bevegelse av en pote) eller menneskelig oppførsel (f.eks. nå oppgaver). Ved å spore virkemåten kan nyttige kinematikk utledes fra virkemåten som posisjon, hastighet og akselerasjon. Protokollen forklarer installasjonen av hver CNN-arkitektur, demonstrerer hvordan du oppretter opplæringsdatasett, hvordan du trener nettverkene, hvordan du behandler nye videoer på det trente nettverket, hvordan du pakker ut dataene fra nettverket på de nye videoene, og hvordan du utdata for å gjøre det nyttig for videre analyse.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

1. GPU- og Python-oppsett

  1. GPU-programvare
    Når datamaskinen først er satt opp for dype læringsprogrammer, bør GPU-passende programvare og drivere installeres som finnes på GPU's respektive nettsted. (se materialtabellen for de som brukes i denne studien).
  2. Python 2.7 Installasjon
    Åpne en ledetekst på maskinen.
    Kommandolinje: sudo apt-get installere python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Oppsett av tensorkasse
    1. Opprett virtuelt miljø for Tensorbox
      Kommandolinje: cd ~
      Kommandolinje: virtualenv --system-site-pakker ~/tensorflow
      MERK: '~/tensorflow' er navnet på miljøet og er vilkårlig
    2. Aktivere miljø
      Kommandolinje: kilde ~/tensorflow/bin/activate
  2. Tensorbox Installasjon
    Vi vil bruke GitHub til å klone TensorBox fra http://github.com/aarac/TensorBox og installere den på maskinen vår, samt installere flere avhengigheter.
    Kommandolinje: cd ~
    Kommandolinje: git klone http://github.com/aarac/TensorBox
    Kommandolinje: cd TensorBox
    Kommandolinje: pip installere -r requirements.txt
  3. Etikettdata
    1. Opprette en mappe med bilder av virkemåte
      Åpen kildekode-verktøy som ffmpeg er nyttige for å oppnå konvertering av videoer til individuelle rammer Vi anbefaler å merke minst 600 bilder fra en bred distribusjon av atferdsrammer for opplæring. Legg disse bildene i en mappe.
    2. Start merking av grafisk brukergrensesnitt
      Kommandolinje: python make_json.py labels.json
      Hvis du vil merke et bilde, klikker du øverst til venstre i interesseobjektet (dvs. pote) først og deretter klikker du nederst til høyre i objektet av interesse (Figur 4). Inspiser at markeringsboksen fanger opp hele objektet av interesse. Trykk på "angre" for å merke det samme bildet på nytt, eller trykk på "neste" for å gå over til neste bilde.
  4. Tog TensorBox
    1. Koble treningsbilder til filen for nettverkshyperparametere
      Åpne følgende mappe i en tekstredigeringsprogram i mappen tensorbox:
      /TensorBox/hypes/overfeat_rezoom.json. Naviger til attributtet under data som heter train_idl, og erstatt filbanen fra ./data/brainwash/train_boxes.json til filepath.json. Lagre endringene i filen.
    2. Begynne å trene skript
      Kommandolinje: cd ~/TensorBox
      Kommandolinje: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir utgang
      Nettverket vil da begynne å trene for 600.000 iterasjoner. I utdatamappen vil de resulterende trente vektene til det konvolutionale nevrale nettverket bli generert.
  5. Forutsi nye bilder
    For bildemerking:
    Kommandolinje: cd ~/TensorBox
    Kommandolinje: python label_images.py --mappe --vekter utgang / overfeat_rezoom_ / save.ckpt-600000 --hypes / hypes / overfeat_rezoom.json --gpu 0
    Slik får du koordinater for markeringsbokser:
    Kommandolinje: cd ~/TensorBox
    Kommandolinje: python predict_images_to_json.py --mappe --vekter
    utgang/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. MATLAB Etterbehandling for TensorBox
    Ytterligere MATLAB-kode er gitt for å trekke ut kinematikk og visualiseringer av koordinatene ved hjelp av den resulterende JSON-koordinatfilen fra modellen
    Kjør skriptet "Process_files_3Dreaching_mouse.m" for 3D kinematisk analyse av enkelt matpellet som når oppgaven.

3. YOLOv3 (andre artilleri)

  1. Installere YOLOv3
    Kommandolinje: cd ~
    Kommandolinje: git klone cd darknet
    For GPU-bruk åpner du 'Makefile' og endrer følgende linjer: GPU=1; CUDNN=1.
    Kommandolinje: gjør
  2. Merke opplæringsdata ved hjelp av Yolo_mark
    Kommandolinje: cd ~
    Kommandolinje: git klone cd ~/Yolo_Mark
    Kommandolinje: cmake .
    Kommandolinje: gjør
    Plasser treningsbildene i mappen ~/Yolo_mark/data/obj
    Kommandolinje: chmod +x ./linux_mark.sh
    Kommandolinje: ./linux_mark.sh
    Merk bildene en etter en i det grafiske brukergrensesnittet (Figur 5). Den anbefalte mengden bilder er ca. 200.
  3. Trening YOLOv3
    1. Konfigurasjonsfil for oppsett
      Kommandolinje: cd ~/Yolo_mark
      Kommandolinje: scp -r ./data ~/darknet
      Kommandolinje: cd ~/darknet/cfg
      Kommandolinje: cp yolov3.cfg yolo-obj.cfg
    2. Endre konfigurasjonsfilen
      Åpne mappen yolo-obj.cfg, og endre følgende linjer: batch=64, underinndeling =8, klasser=(# av klassen for å oppdage), og for hvert konvolutionalt lag før et yolo-lag endrer filteret =(klasser+5)x3. Detaljer om disse endringene finner du på https://github.com/aarac/darknet/blob/master/README.md
    3. Last ned nettverksvekter
      Last ned nettverksvektene fra https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Plasser den nedlastede vektfilen i ~/darknet/build/darknet/x64
    4. Kjør treningsalgoritme
      Kommandolinje: cd ~/darknet
      Kommandolinje: ./darknet detektor tog data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. YOLOv3 Evaluering
      Når treningen er fullført basert på et angitt antall gjentakelser (ITERATIONNUMBER),kan du vise dem ved å
      Kommandolinje: ./darknet detektor test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Forutsi nye videoer og få koordinater
    Denne kommandoen kan kjøres for å få koordinatene til etikettene i den nye videoen:
    Kommandolinje: ./darknet detector demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 etterbehandling i MATLAB
    Ta filen FILENAME.txt til MATLAB, og kjør skriptet "Process_socialtest_mini.m" for to mus sosial interaksjonstest. Se resultater i figur 2

4. ÅpnePose

OpenPose er ideell for å spore flere kroppsdeler i et menneskelig emne. Installasjons- og installasjonsprosessene er svært lik de to foregående rammeverkene. Det er imidlertid ingen opplæringstrinn som nettverket allerede er trent på menneskelige data.

  1. OpenPose Installasjon
    Naviger til https://github.com/aarac/openpose, og følg installasjonsinstruksjonene.
  2. Behandle video
    ./build/examples/openpose/openpose.bin --video VIDEONAME.avi --net_resolution "1312x736" --scale_number 4 --scale_gap 0,25 --hånd --hand_scale_number 6 --hand_scale_range 0,4 --write_json JSONFOLDERNAME --write_video RESULTINGVIDEONAME.avi
    Her kan de --net_resolution, --scale_number, --scale_gap, --hand_scale_number og --hand_scale_range håndtakene utelates hvis en høy presisjonsdeteksjon ikke er nødvendig (dette vil redusere behandlingstiden).
  3. ÅpnePose etterbehandling
    I MATLAB-mappen, vennligst bruk 'process_files_human3D.m' skript for å kjøre koden etter å ha lagt til den aktuelle mappen som inneholder json-filer fra kameraer 1 og 2, samt kalibreringsfilen. Dette vil opprette en "celle" fil med alle 3D positurer av leddene. Det vil også lage en film av 3D skjelettvisning. For kamerakalibrering, vennligst følg instruksjonene på denne linken: http://www.vision.caltech.edu/bouguetj/calib_doc/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

Når protokollen følges, bør dataene for hver nettverksarkitektur være lik følgende. For TensorBox sender den ut en markeringsboks rundt objektet av interesse. I vårt eksempel brukte vi videoer fra en matpellet som nådde oppgaven, og merket de riktige potene for å spore bevegelsen. Som vist i figur 1, kan høyre pote oppdages i forskjellige posisjoner i både front- og sidevisning-kameraer. Etter etterbehandling med kamerakalibrering kan 3D-baner av rekkevidden oppnås (figur 1B).

I Yolov3, som det er flere objekter, er utgangen også flere grenser bokser. Som vist i figur 2B, er det flere grenser bokser rundt objekter av interesse. Dette kan være deler av kroppen.

I OpenPose oppdager nettverket fellesposisjonene som vist i figur 3A. Etter etterbehandling med kamerakalibrering, kan en 3D-modell av motivet opprettes (Figur 3B).

Til slutt viser disse representative resultatene de rike detaljene om atferd som kan fanges opp ved hjelp av DeepBehavior-verktøykassen.

Figure 1
Figur 1: Grenser bokser med TensorBox sett på potene av videorammer under en nåoppgave hos mus. (Tilpasset fra Arac et al 2019). Vennligst klikk her for å vise en større versjon av dette tallet.

Figure 2
Figur 2: Grenser bokser med Yolov3 sett på områdene av interesse for videorammer under en to mus sosial interaksjontest (Et råbilde, B analysert bilde). (Tilpasset fra Arac et al 2019). Vennligst klikk her for å vise en større versjon av dette tallet.

Figure 3
Figur 3: Menneskelig positurdeteksjon med OpenPose i to kameravisninger (A) og 3D-modell opprettet fra disse to bildene (B). (Tilpasset fra Arac et al 2019). Vennligst klikk her for å vise en større versjon av dette tallet.

Figure 4
Figur 4: TensorBox's make_json GUI brukes til å merke treningsdata. Vennligst klikk her for å vise en større versjon av dette tallet.

Figure 5
Figur 5: GUI av Yolo_Mark å merke bilder i et format som er akseptabelt for Yolov3. Vennligst klikk her for å vise en større versjon av dette tallet.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

Her gir vi en trinnvis veiledning for implementering av DeepBehavior, vår nylig utviklede dyplæringsbaserte verktøykasse for dataanalyse av data analyse av data for dyre- og menneskelig atferdbildebehandling 2. Vi gir detaljerte forklaringer for hvert trinn for installasjon av rammeverkene for hver nettverksarkitektur, og gir koblinger for installasjon av kravene til åpen kildekode for å kunne kjøre disse rammene. Vi viser hvordan du installerer dem, hvordan du oppretter opplæringsdata, hvordan du trener nettverket og hvordan du behandler nye videofiler på det opplærte nettverket. Vi gir også etterbehandlingskoden for å trekke ut den grunnleggende nødvendige informasjonen som trengs for videre analyse.

For gjenkjenning av ett objekt anbefaler vi at du bruker TensorBox. Hvis målet er å spore flere objekter samtidig, anbefaler vi at du bruker YOLOv3. Til slutt, for å få menneskelige kinematiske data, anbefaler vi at du bruker OpenPose. I denne protokollen har vi vist at dype læringsmetoder er i stand til å behandle hundretusenvis av rammer mens du sporer objekter med høy grad av presisjon. Ved hjelp av den angitte etterbehandlingskoden kan vi utlede meningsfulle måter å analysere den sporede virkemåten av interesse på. Dette gir en mer detaljert måte å fange atferd på. Det gir også en automatisert, robust måte å definere atferd som er generaliserbar for mange forskjellige typer atferdsoppgaver.

Det er ganske vanlig å få en "ModuleNotFoundError" når du starter med et nytt virtuelt miljø eller kode som er lastet ned fra Internett. Hvis dette skjer, åpner du terminalen, aktiverer kildemiljøet og skriver inn pip installer . Hvis problemet vedvarer, må du sjekke python-versjonen din samt andre avhengighetspakker.

Begrensninger for denne teknikken inkluderer teknisk feilsøking for å sette opp GPU-behandlingsenheter som er kompatible med åpen kildekode. Det er en fordel å ha tidligere programmeringserfaring i et linux-miljø for å sette opp de nødvendige prosjektavhengighetene og miljøene som er kompatible med datamaskinens maskinvare.

Vi demonstrerer DeepBehavior verktøykasse installasjoner og behandling av i et linux miljø, men denne verktøykassen kan også kjøres på en Windows og Mac maskiner med GPUer ved å følge de respektive installasjonsveiledningene på github.

Bruk av dype læringsmetoder for bildedataanalyse er en svært effektiv måte å automatisere atferdsanalyse på. I forhold til tradisjonelle atferdsanalysemetoder fanger DeepBehavior mye mer informasjon for å kvantifisere, automatisere og evaluere atferden på en mer presis og tidsmessig detaljert måte. Med de videre fremskrittene i det dype læringsfeltet vil utnyttelsen og omfanget av bruken av denne teknologien i atferdsanalyse sannsynligvis fortsette å forbedre seg. Anvendelsene av DeepBehavior kan utvides utover de demonstrerte å nå oppgaver for å identifisere objekter av interesse i atferdsbilder. I denne protokollen gir vi detaljerte instruksjoner for å implementere tre nevrale nettverk for atferdsanalyse. Med denne typen automatiserte og objektive atferdsanalysemetoder, forhåpentligvis, vil nevrovitenskapsfeltet kunne gjøre mer detalj atferdsanalyse.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Forfatterne har ingenting å avsløre.

Acknowledgments

Vi vil gjerne takke Pingping Zhao og Peyman Golshani for å gi rådataene for to-mus sosiale interaksjonstester som brukes i det opprinnelige papiret2. Denne studien ble støttet av NIH NS109315 og NVIDIA GPU-tilskudd (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).

Comments

0 Comments


    Post a Question / Comment / Request

    You must be signed in to post a comment. Please or create an account.

    Usage Statistics