Waiting
Login processing...

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

Behavior

En steg-för-steg-implementering av DeepBehavior, Deep Learning Toolbox för automatiserad beteendeanalys

Published: February 6, 2020 doi: 10.3791/60763

Summary

Syftet med detta protokoll är att använda förbyggda invecklade neurala nät för att automatisera beteendespårning och utföra detaljerad beteendeanalys. Beteendespårning kan tillämpas på videodata eller sekvenser av bilder och är allmänt användbart för att spåra alla användardefinierade objekt.

Abstract

Förstå beteende är det första steget för att verkligen förstå neurala mekanismer i hjärnan som driver den. Traditionella beteendeanalysmetoder fångar ofta inte rikedomen inneboende till det naturliga beteendet. Här ger vi detaljerade steg-för-steg-instruktioner med visualiseringar av vår senaste metod, DeepBehavior. DeepBehavior-verktygslådan använder djupinlärningsramverk byggda med invecklade neurala nätverk för att snabbt bearbeta och analysera beteendevideor. Det här protokollet visar tre olika ramverk för identifiering av enstaka objekt, flera objektidentifiering och 3D-spårning av mänskliga gemensamma poser (3D). Dessa ramverk returnerar cartesiankoordinater för objektet av intresse för varje bildruta i beteendevideon. Data som samlas in från DeepBehavior-verktygslådan innehåller mycket mer detaljer än traditionella beteendeanalysmetoder och ger detaljerade insikter om beteendedynamiken. DeepBehavior kvantifierar beteendeuppgifter på ett robust, automatiserat och exakt sätt. Efter identifiering av beteende, efter bearbetning kod tillhandahålls för att extrahera information och visualiseringar från beteendemässiga videor.

Introduction

En detaljerad analys av beteende är nyckeln till att förstå hjärnan och beteende relationer. Det har varit många spännande framsteg i metoder för att registrera och manipulera neuronala populationer med hög tidsmässig upplösning, men beteendeanalysmetoder har inte utvecklats i samma takt och är begränsade till indirekta mätningar och en reduktionistisk strategi1. Nyligen har djupinlärningsbaserade metoder utvecklats för att utföra automatiserad och detaljerad beteendeanalys2,3,4,5. Det här protokollet innehåller en steg-för-steg-implementeringsguide för verktygslådan DeepBehavior.

Traditionella beteendeanalysmetoder inkluderar ofta manuellt märkning av data av flera utvärderare, vilket leder till varians i hur experimentörer definierar ett beteende6. Manuell märkning av data kräver tid och resurser som ökar oproportionerligt till mängden insamlade data. Dessutom minskar manuellt märkta data beteenderesultaten i kategoriska mätningar som inte fångar beteendets rikedom och blir mer subjektiva. Således kan de nuvarande traditionella metoderna begränsas för att fånga detaljerna i de naturliga beteendena.

DeepBehavior-verktygslådan presenterar en exakt, detaljerad, mycket tidsmässig och automatiserad lösning med djupinlärning för beteendeanalys. Djupinlärning har snabbt blivit tillgängligt för alla med verktyg och paket med öppen källkod. Invecklade neurala nätverk (CNNs) har visat sig vara mycket effektiva i objektigenkänning och spårningsuppgifter7,8. Med hjälp av moderna CNNs och högpresterande grafik-bearbetning-enheter (GPU: er), stor bild och video dataset kan bearbetas snabbt med hög precision7,9,10,11. I DeepBehavior finns det tre olika invecklade neurala nätarkitekturer, TensorBox, YOLOv3 och OpenPose2.

Den första ramen, Tensorbox, är en mångsidig ram som innehåller många olika CNN-arkitekturer för objektdetektering12. TensorBox är bäst lämpad för att upptäcka endast en objektklass per bild. De resulterande utgångarna är begränsningslådor av objektet av intresse(figur 1)och de kartesiska koordinaterna för markeringsramen.

Den andra CNN ram är YOLOv3, som står för "You Only Look Once"13. YOLOv3 är fördelaktigt när det finns flera objekt av intresse som måste spåras separat. Utdata från detta nätverk innehåller begränsningsrutan med den associerade objektetikettklassen samt markeringsramens cartesiankoordinater för objektet i videoramen (bild 2).

De två föregående ramarna är fördelaktiga för generaliserade beteendedata som samlats in från vanliga laboratorieexperiment hos djurförsökspersoner. Den sista CNN ramen är OpenPose14,15,16 som används för mänskliga gemensamma pose uppskattning. OpenPose upptäcker människokroppen, handen, ansikts- och fottangenterna på bilder. Resultaten av ramen är märkta bilder av det mänskliga ämnet samt koordinaterna för alla 25 viktiga punkter i kroppen och 21 viktiga punkter i varje hand (figur 3).

Denna detaljerade steg-för-steg guide för genomförandet av vår nyligen utvecklade öppen källkod DeepBehavior verktygslåda sysselsätter state-of-the-art faltningneurala nät för att spåra djurbeteende (t.ex. förflyttning av en tass) eller mänskligt beteende (t.ex. nå uppgifter). Genom att spåra beteendet kan användbara kinematik härledas från beteendet såsom position, hastighet och acceleration. Protokollet förklarar installationen av varje CNN-arkitektur, visar hur du skapar träningsdatauppsättningar, hur du tränar nätverken, hur man bearbetar nya videor på det utbildade nätverket, hur du extraherar data från nätverket på de nya videorna och hur man efterprocessen utdata för att göra det användbart för ytterligare analys.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

1. GPU och Python Setup

  1. GPU Programvara
    När datorn är första installationen för djupinlärningsprogram bör GPU-lämplig programvara och drivrutiner installeras som finns på GPU:s respektive webbplats. (se materialförteckningen för dem som används i denna studie).
  2. Python 2.7 Installation
    Öppna en kommandoradstolk på datorn.
    Kommandorad: sudo apt-get installera python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Inställningar för tensorbox
    1. Skapa virtuell miljö för tensorbox
      Kommandorad: cd ~
      Kommandorad: virtualenv --system-site-paket ~/tensorflow
      OBS: "~/tensorflow" är namnet på miljön och är godtyckligt
    2. Aktivera miljö
      Kommandorad: källa ~/tensorflow/bin/activate
  2. Tiorbox installation
    Vi kommer att använda GitHub för att klona TensorBox från http://github.com/aarac/TensorBox och installera den på vår maskin samt installera ytterligare beroenden.
    Kommandorad: cd ~
    Kommandorad: git klon http://github.com/aarac/TensorBox
    Kommandorad: cd TensorBox
    Kommandorad: pip install -r requirements.txt
  3. Etikettdata
    1. Skapa en mapp med bilder av beteende
      Verktyg med öppen källkod som ffmpeg är användbara för att kunna konvertera videor till enskilda ramar Vi rekommenderar att du märker minst 600 bilder från en bred fördelning av beteenderamar för utbildning. Placera dessa bilder i en mapp.
    2. Starta märkning grafiskt användargränssnitt
      Kommandorad: python make_json.py labels.json
      Om du vill märka en bild klickar du på det övre vänstra hörnet av objektet av intresse (dvs. tass) först och klickar sedan på det nedre högra hörnet av objektet av intresse(bild 4). Kontrollera att markeringsrutan fångar hela objektet av intresse. Tryck på "ångra" för att märka om samma bild eller tryck på "nästa" för att gå vidare till nästa bildruta.
  4. Tåg TensorBox
    1. Länka utbildningsbilder till nätverkshyperparameters-fil
      Öppna följande mapp i en textredigerare i mappen Tensorbox:
      /TensorBox/hypes/overfeat_rezoom.json. Navigera till attributet under data med namnet train_idl och ersätt filsökvägen från ./data/brainwash/train_boxes.json till labels.json-filsökvägen. Spara ändringarna i filen.
    2. Börja träna skript
      Kommandorad: cd ~/TensorBox
      Kommandorad: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir utgång
      Nätverket kommer då att börja träna för 600.000 iterationer. I utdatamappen genereras de resulterande tränade vikterna i det invecklade neurala nätverket.
  5. Förutsäg på nya bilder
    För bildmärkning:
    Kommandorad: cd ~/TensorBox
    Kommandorad: python label_images.py --folder --vikter utdata/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Så här får du koordinater för markeringsrutor:
    Kommandorad: cd ~/TensorBox
    Kommandorad: python predict_images_to_json.py --mapp --vikter
    output/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. MATLAB Efter bearbetning för TensorBox
    Ytterligare MATLAB-kod har tillhandahållits för att extrahera kinematik och visualiseringar av koordinaterna med hjälp av den resulterande JSON-koordinatfilen från modellen
    Kör "Process_files_3Dreaching_mouse.m"-skriptet för 3D-kinematic analys av enkel mat pellets nå uppgift.

3. YOLov3

  1. Installera YOLOv3
    Kommandorad: cd ~
    Kommandorad: git klon cd darknet
    För GPU-användning öppnar du "Makefile" och ändrar följande rader: GPU=1; CUDNN=1.
    Kommandorad: gör
  2. Märkning utbildningsdata med Yolo_mark
    Kommandorad: cd ~
    Kommandorad: git klon cd ~/Yolo_Mark
    Kommandorad: cmake .
    Kommandorad: gör
    Placera träningsbilderna i mappen ~/Yolo_mark/data/obj
    Kommandorad: chmod +x ./linux_mark.sh
    Kommandorad: ./linux_mark.sh
    Märk bilderna en efter en i det grafiska användargränssnittet(bild 5). Den rekommenderade mängden bilder är cirka 200.
  3. Utbildning YOLov3
    1. Konfigurationsfil för installationsinställningar
      Kommandorad: cd ~/Yolo_mark
      Kommandorad: scp -r ./data ~/darknet
      Kommandorad: cd ~/darknet/cfg
      Kommandorad: cp yolov3.cfg yolo-obj.cfg
    2. Ändra konfigurationsfilen
      Öppna mappen yolo-obj.cfg och ändra följande rader: batch=64, subdivision=8, classes=(# av klassen för att upptäcka), och för varje faltningsskikt innan ett yolo-lager ändrar filter=(klasserna+5)x3. Information om dessa ändringar finns på https://github.com/aarac/darknet/blob/master/README.md
    3. Ladda ner nätverksvikter
      Ladda ner nätverksvikterna från https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Placera den nedladdade viktfilen i ~/darknet/build/darknet/x64
    4. Kör träningsalgoritm
      Kommandorad: cd ~/darknet
      Kommandorad: ./darknet detektor tågdata/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Bedömning av YOLov3
      När utbildningen är klar baserat på ett angivet antal iterationer(ITERATIONNUMBER)kan du visa dem genom att
      Kommandorad: ./darknet detektor testdata/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Förutsäg nya videor och få koordinater
    Det här kommandot kan köras för att hämta koordinaterna för etiketterna i den nya videon:
    Kommandorad: ./darknet detektor demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 Efterbearbetning i MATLAB
    Ta filen FILENAME.txt till MATLAB och kör "Process_socialtest_mini.m"-skriptet för två sociala interaktionstest för möss. Se resultat i figur 2

4. OpenPose

OpenPose är perfekt för att spåra flera kroppsdelar i ett mänskligt ämne. Installations- och installationsprocesserna är mycket lika de två föregående ramarna. Det finns dock inget utbildningssteg eftersom nätverket redan är utbildad på mänskliga data.

  1. OpenPose Installation
    Navigera till https://github.com/aarac/openpose och följ installationsanvisningarna.
  2. Bearbeta video
    ./build/examples/openpose/openpose.bin --videoVIDEONAME.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
    Här kan handtagen ---net_resolution, --scale_number, --scale_gap, --hand_scale_number och --hand_scale_range utelämnas om detektering av hög precision inte behövs (detta skulle minska bearbetningstiden).
  3. OpenPose efterbearbetning
    Använd "process_files_human3D.m"-skript et i MATLAB-mappen för att köra koden efter att ha lagt till lämplig mapp som innehåller jsonfiler från kameror 1 och 2, samt kalibreringsfilen. Detta kommer att skapa en "cell" fil med alla 3D utgör av lederna. Det kommer också att göra en film av 3D skelettet visa. För kamerakalibrering, följ instruktionerna på denna länk: http://www.vision.caltech.edu/bouguetj/calib_doc/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

När protokollet följs bör data för varje nätverksarkitektur liknaföljande. För TensorBox matas en markeringsram runt objektet av intresse. I vårt exempel använde vi videor från en matpellets som nådde uppgiften och kallade rätt tassar för att spåra deras rörelse. Som framgår av figur 1kan rätt tass detekteras i olika lägen i både frontvy- och sidokameror. Efter efterbehandling med kamerakalibrering kan 3D-banor för räckvidden erhållas(figur 1B).

I Yolov3, eftersom det finns flera objekt, är utdata också flera begränsningsrutor. Som framgår av figur 2Bfinns det flera begränsningsrutor runt objekt av intresse. Dessa kan vara delar av kroppen.

I OpenPose identifierar nätverket de gemensamma positionerna som visas i figur 3A. Efter efterbearbetning med kamerakalibrering kan en 3D-modell av motivet skapas (bild 3B).

Sammanfattningsvis visar dessa representativa resultat de rika detaljerna i beteende som kan fångas med hjälp av DeepBehavior verktygslåda.

Figure 1
Bild 1: Markeringsrutor med TensorBox sett på tassarna av videoramar under en nånde uppgift hos möss. (Anpassad från Arac et al 2019). Klicka här för att se en större version av denna siffra.

Figure 2
Bild 2: Markeringsrutor med Yolov3 sett på de regioner som är intresserade av videoramar under ett två mice social interaktionstest (En rå bild, B-analysad bild). (Anpassad från Arac et al 2019). Klicka här för att se en större version av denna siffra.

Figure 3
Bild 3: Mänsklig posedetektering med OpenPose i två kameravyer (A) och 3D-modell som skapats från dessa två bilder (B). (Anpassad från Arac et al 2019). Klicka här för att se en större version av denna siffra.

Figure 4
Bild 4: TensorBox make_json GUI används för att märka träningsdata. Klicka här för att se en större version av denna siffra.

Figure 5
Bild 5: GUI av Yolo_Mark att märka bilder i ett format som är acceptabelt för Yolov3. Klicka här för att se en större version av denna siffra.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

Här erbjuder vi en steg-för-steg guide för genomförandet av DeepBehavior, vår nyligen utvecklade djupinlärningsbaserade verktygslåda för djur- och mänskligt beteende imaging dataanalys2. Vi ger detaljerade förklaringar till varje steg för installation av ramverk för varje nätverksarkitektur och tillhandahåller länkar för installation av kraven på öppen källkod för att kunna köra dessa ramverk. Vi visar hur du installerar dem, hur du skapar träningsdata, hur du tränar nätverket och hur du bearbetar nya videofiler i det tränade nätverket. Vi tillhandahåller även efterbehandlingskoden för att extrahera den grundläggande information som behövs för vidare analys.

För identifiering av enstaka objekt rekommenderar vi att du använder TensorBox. Om målet är att spåra flera objekt samtidigt rekommenderar vi att du använder YOLOv3. Slutligen, för att få mänskliga kinematiska data, rekommenderar vi att du använder OpenPose. I det här protokollet har vi visat att djupinlärningsmetoder kan bearbeta hundratusentals ramar samtidigt som vi spårar objekt med hög precision. Med hjälp av postbehandlingskoden kan vi härleda meningsfulla sätt att analysera det spårade beteendet av intresse. Detta ger ett mer detaljerat sätt att fånga beteende. Det ger också ett automatiserat, robust sätt att definiera beteende som är generaliserbart för många olika typer av beteendemässiga uppgifter.

Det är ganska vanligt att få en "ModuleNotFoundError" när du börjar med en ny virtuell miljö eller kod som har laddats ner från Internet. Om detta inträffar öppnar du terminalen, aktiverar källmiljön och skriver "pip-installation ". Om problemet kvarstår måste du kontrollera din python-version samt andra beroendepaket.

Begränsningar av den här tekniken inkluderar den tekniska felsökningen för att korrekt konfigurera GPU-bearbetningsenheter som är kompatibla med öppen källkod. Det är fördelaktigt att ha tidigare programmeringserfarenhet inom en Linux-miljö för att korrekt ställa in nödvändiga projektberoenden och miljöer som är kompatibla med datorns maskinvara.

Vi demonstrerar DeepBehavior verktygslåda installationer och bearbetning av i en Linux-miljö, men denna verktygslåda kan också köras på en Windows och Mac-maskiner med GPU: er genom att följa respektive installationsguider på github.

Att använda djupinlärningsmetoder för bildframställning av dataanalys är ett mycket effektivt sätt att automatisera beteendeanalys. I jämförelse med traditionella beteendeanalysmetoder fångar DeepBehavior mycket mer information för att kvantifiera, automatisera och utvärdera beteendet på ett mer exakt och tidsmässigt detaljerat sätt. Med de fortsatta framstegen inom området djupinlärning kommer användningen och omfattningen av användningen av denna teknik i beteendeanalys sannolikt att fortsätta att förbättras. Programmen för DeepBehavior kan utökas utöver de visade nå uppgifter för att identifiera objekt av intresse i alla beteendemässiga bilder. I det här protokollet ger vi detaljerade instruktioner för att implementera tre neurala nätverk för beteendeanalys. Med denna typ av automatiserade och opartiska beteendeanalysmetoder, förhoppningsvis, neurovetenskap området kommer att kunna göra mer detalj beteende analys.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Författarna har inget att avslöja.

Acknowledgments

Vi vill tacka Pingping Zhao och Peyman Golshani för att tillhandahålla rådata för två-mus social interaktion tester som används i det ursprungliga papperet2. Denna studie stöddes av NIH NS109315 och NVIDIA GPU bidrag (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

Beteende Deep Learning Beteendeanalys Inveckladneurala nät maskininlärning kinetisk analys automatiserad analys djurbeteende mänskligt beteende Nå uppgifter bilddata Videodata 3D Kinematik
En steg-för-steg-implementering av DeepBehavior, Deep Learning Toolbox för automatiserad beteendeanalys
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