Een abonnement op JoVE is vereist om deze inhoud te bekijken. Log in of start vandaag met uw gratis proefperiode.

Methodenartikel

Een stapsgewijze implementatie van DeepBehavior, Deep Learning Toolbox voor geautomatiseerde gedragsanalyse

8.9K weergaven

DOI:

10.3791/60763

6 februari 2020

In dit artikel

Samenvatting

Het doel van dit protocol is om vooraf gebouwde convolutional neurale netten te gebruiken om gedragstracking te automatiseren en gedetailleerde gedragsanalyse uit te voeren. Gedragstracking kan worden toegepast op alle videogegevens of sequenties van afbeeldingen en is generaliseerbaar om elk door de gebruiker gedefinieerd object bij te houden.

Samenvatting

Inzicht in gedrag is de eerste stap naar echt begrijpen neurale mechanismen in de hersenen die het rijden. Traditionele gedragsanalyse methoden vaak niet vangen de rijkdom die inherent is aan het natuurlijke gedrag. Hier geven we gedetailleerde stapsgewijze instructies met visualisaties van onze recente methodologie, DeepBehavior. De DeepBehavior toolbox maakt gebruik van deep learning frameworks gebouwd met convolutional neurale netwerken om snel te verwerken en te analyseren gedragsvideo's. Dit protocol toont drie verschillende frameworks voor detectie van één object, detectie van meerdere objecten en driedimensionale (3D) menselijke gezamenlijke pose tracking. Deze frameworks geven cartesiaanse coördinaten van het object van belang voor elk frame van de gedragsvideo terug. Gegevens verzameld uit de DeepBehavior toolbox bevatten veel meer detail dan traditionele gedragsanalysemethoden en bieden gedetailleerde inzichten in de gedragsdynamiek. DeepBehavior kwantificeert gedragstaken op een robuuste, geautomatiseerde en nauwkeurige manier. Na de identificatie van gedrag wordt nabewerkingscode verstrekt om informatie en visualisaties uit de gedragsvideo's te extraheren.

Inleiding

Een gedetailleerde analyse van gedrag is de sleutel tot het begrijpen van de hersenen en gedragsrelaties. Er zijn veel opwindende vooruitgang in methodologieën voor het registreren en manipuleren van neuronale populaties met een hoge temporele resolutie, echter, gedragsanalyse methoden hebben niet ontwikkeld in hetzelfde tempo en zijn beperkt tot indirecte metingen en een reductionistische aanpak1. Onlangs zijn deep learning gebaseerde methoden ontwikkeld om geautomatiseerde en gedetailleerde gedragsanalyse uit te voeren2,3,4,5. Dit protocol biedt een stapsgewijze implementatiehandleiding voor de DeepBehavior toolbox.

Traditionele gedragsanalysemethoden omvatten vaak handmatig labelen van gegevens door meerdere beoordelaars, wat leidt tot variantie in de manier waarop onderzoekers een gedrag definiëren6. Handmatig labelen van de gegevens vergt tijd en middelen die onevenredig toenemen tot de hoeveelheid verzamelde gegevens. Bovendien verminderen handmatig gelabelde gegevens de gedragsresultaten in categorische metingen die de rijkdom van het gedrag niet vastleggen en subjectiefer zullen zijn. Zo kunnen de huidige traditionele methoden worden beperkt in het vastleggen van de details in het natuurlijke gedrag.

De DeepBehavior toolbox presenteert een nauwkeurige, gedetailleerde, zeer temporele en geautomatiseerde oplossing met behulp van deep learning voor gedragsanalyse. Deep learning is snel toegankelijk geworden voor iedereen met open-source tools en pakketten. Convolutional neurale netwerken (CNN's) zijn bewezen zeer effectief te zijn in objectherkenning en tracking taken7,8. Met behulp van moderne CN's en krachtige grafische verwerkingseenheden (GPU's) kunnen grote beeld- en videodatasets snel worden verwerkt met hoge precisie7,9,10,11. In DeepBehavior zijn er drie verschillende convolutional neurale net architecturen, TensorBox, YOLOv3, en OpenPose2.

Het eerste framework, Tensorbox, is een veelzijdig raamwerk dat veel verschillende CNN-architecturen bevat voor objectdetectie12. TensorBox is het meest geschikt voor het detecteren van slechts één objectklasse per afbeelding. De resulterende uitgangen zijn omsluitende vakken van het object van belang (figuur 1) en de cartesiaanse coördinaten van het selectiekader.

De tweede CNN kader is YOLOv3, wat staat voor "You Only Look Once"13. YOLOv3 is voordelig wanneer er meerdere interessantvoorwerpen zijn die afzonderlijk moeten worden bijgehouden. De uitvoer van dit netwerk omvat het selectiekader met de klasse van het bijbehorende objectlabel en de cartesian-coördinaten van het object in het videoframe (figuur 2).

De vorige twee kaders zijn voordelig voor gegeneraliseerde gedragsgegevens verzameld uit standaard laboratoriumexperimenten bij proefpersonen. De laatste CNN kader is OpenPose14,15,16 die wordt gebruikt voor menselijke gezamenlijke pose schatting. OpenPose detecteert menselijke lichaam, hand, gezicht, en voet belangrijke punten op beelden. De uitgangen van het kader zijn gelabeldbeelden van het menselijke onderwerp, evenals de coördinaten van alle 25 belangrijke punten in het lichaam en 21 belangrijke punten van elke hand (figuur 3).

Deze gedetailleerde stapsgewijze handleiding voor de implementatie van onze recent ontwikkelde open-source DeepBehavior toolbox maakt gebruik van state-of-the-art convolutional neurale netten om dierlijk gedrag (bijvoorbeeld beweging van een poot) of menselijk gedrag (bijvoorbeeld het bereiken van taken) te volgen. Door het gedrag te volgen, kunnen nuttige kinematica worden afgeleid uit het gedrag, zoals positie, snelheid en versnelling. Het protocol legt de installatie van elke CNN-architectuur uit, laat zien hoe u trainingsgegevensmaakt, hoe u de netwerken trainen, hoe u nieuwe video's op het getrainde netwerk verwerken, hoe de gegevens uit het netwerk op de nieuwe video's kunnen worden geëxtraheerd en hoe u na het proces van de uitvoergegevens om het nuttig te maken voor verdere analyse.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Protocol

1. GPU en Python Setup

  1. GPU-software
    Wanneer de computer voor het eerst is ingesteld voor deep learning-toepassingen, moeten GPU-geschikte software en stuurprogramma's worden geïnstalleerd die kunnen worden gevonden op de respectievelijke website van de GPU. (zie de Tabel met materialen voor de materialen die in deze studie worden gebruikt).
  2. Installatie python 2.7
    Open een opdrachtregelprompt op uw machine.
    Command line: sudo apt-get installeren python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Tensorbox instellen
    1. Virtuele omgeving voor tensorbox maken
      Opdrachtregel: cd ~
      Opdrachtregel: virtualenv --system-site-packages ~/tensorflow
      LET OP: '~/tensorflow' is de naam van de omgeving en is arbitrair
    2. Omgeving activeren
      Opdrachtregel: bron ~/tensorflow/bin/activate
  2. Tensorbox Installatie
    We zullen GitHub gebruiken om TensorBox te klonen van http://github.com/aarac/TensorBox en het op onze machine te installeren en extra afhankelijkheden te installeren.
    Opdrachtregel: cd ~
    Opdrachtregel: git-kloon http://github.com/aarac/TensorBox
    Opdrachtregel: cd TensorBox
    Command line: pip install -r requirements.txt
  3. Labelgegevens
    1. Een map met afbeeldingen van gedrag maken
      Open source tools zoals ffmpeg zijn handig om het converteren van video's naar individuele frames te bereiken We raden aan om ten minste 600 afbeeldingen te labelen van een brede verdeling van gedragsframes voor training. Plaats deze afbeeldingen in een map.
    2. Grafische gebruikersinterface voor labeling starten
      Opdrachtregel: python make_json.py labels.json
      Als u een afbeelding wilt labelen, klikt u eerst op de linkerbovenhoek van het object van belang (d.w.z. poot) en klikt u vervolgens op de rechterbenedenhoek van het object van belang (figuur 4). Controleer of het selectiekader het hele object van belang vastlegt. Druk op 'ongedaan maken' om dezelfde afbeelding opnieuw te labelen of druk op 'volgende' om naar het volgende frame te gaan.
  4. Train TensorBox
    1. Trainingsafbeeldingen koppelen aan het bestand hyperparameters van het netwerk
      Open in de map tensorbox de volgende map in een teksteditor:
      / TensorBox / hypes / overfeat_rezoom.json. Navigeer naar het kenmerk onder gegevens met de naam train_idl en vervang het bestandspad van ./data/brainwash/train_boxes.json naar het bestand labels.json filepath. Sla de wijzigingen op in het bestand.
    2. Beginnen met het trainingsscript
      Opdrachtregel: cd ~/TensorBox
      Command line: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
      Het netwerk zal dan beginnen met de training voor 600.000 iteraties. In de uitvoermap worden de resulterende getrainde gewichten van het convolutional neural eernetwerk gegenereerd.
  5. Voorspellen op nieuwe afbeeldingen
    Voor afbeeldingsetikettering:
    Opdrachtregel: cd ~/TensorBox
    Opdrachtregel: python label_images.py --map
  6. MATLAB Nabewerking voor TensorBox
    Er is extra MATLAB-code verstrekt om kinematiek en visualisaties van de coördinaten te extraheren met behulp van het resulterende JSON-coördinatenbestand uit het model
    Voer het "Process_files_3Dreaching_mouse.m" script voor 3D kinematische analyse van single food pellet bereiken taak.

3. YOLOv3

  1. YOLOv3 installeren
    Opdrachtregel: cd ~
    Opdrachtregel: git clone cd darknet
    Open 'Makefile' voor GPU-gebruik en wijzig de volgende regels: GPU=1; CUDNN=1.
    Opdrachtregel: maken
  2. Trainingsgegevens labelen met behulp van Yolo_mark
    Opdrachtregel: cd ~
    Opdrachtregel: git clone cd ~/Yolo_Mark
    Opdrachtregel: cmake .
    Opdrachtregel: maken
    Plaats de trainingsafbeeldingen in de map ~/Yolo_mark/data/obj
    Opdrachtregel: chmod +x ./linux_mark.sh
    Opdrachtregel: ./linux_mark.sh
    Label de afbeeldingen één voor één in de grafische gebruikersinterface (figuur 5). De aanbevolen hoeveelheid afbeeldingen is ongeveer 200.
  3. Training YOLOv3
    1. Configuratiebestand instellen
      Opdrachtregel: cd ~/Yolo_mark
      Opdrachtregel: scp -r ./data ~/darknet
      Opdrachtregel: cd ~/darknet/cfg
      Command line: cp yolov3.cfg yolo-obj.cfg
    2. Het configuratiebestand wijzigen
      Open de map yolo-obj.cfg en wijzig de volgende regels: batch=64, onderverdeling=8, klassen=(# van de klasse om op te sporen) en voor elke convolutional-laag voordat een yolo-laag het filter=(klassen+5)x3 wijzigt. Details over deze wijzigingen zijn te vinden op https://github.com/aarac/darknet/blob/master/README.md
    3. Netwerkgewichten downloaden
      Download de netwerkgewichten van https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Plaats het gedownloade gewichtsbestand in ~/darknet/build/darknet/x64
    4. Trainingsalgoritme uitvoeren
      Opdrachtregel: cd ~/darknet
      Command line: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. YOLOv3 Evaluatie
      Nadat de training is voltooid op basis van een vast aantal iteraties(ITERATIONNUMBER),u ze bekijken op
      Opdrachtregel: ./darknet detector test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Voorspellen op nieuwe video's en coördinaten krijgen
    Deze opdracht kan worden uitgevoerd om de coördinaten van de labels in de nieuwe video te verkrijgen:
    Command line: ./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
    Breng het FILENAME.txt-bestand naar MATLAB en voer het script 'Process_socialtest_mini.m' uit voor twee sociale interactietest voor muizen. Zie resultaten in figuur 2

4. OpenPose

OpenPose is ideaal om meerdere lichaamsdelen in een menselijk onderwerp te volgen. De installatie- en installatieprocessen lijken sterk op de vorige twee frameworks. Er is echter geen opleidingsstap omdat het netwerk al is getraind op menselijke gegevens.

  1. Installatie openpose
    Navigeer naar https://github.com/aarac/openpose en volg de installatie-instructies.
  2. Procesvideo
    ./build/examples/openpose/openpose.bin --video VIDEONAME.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 RESULTERENDE VIDEONAME.avi
    Hier kunnen de --net_resolution, --scale_number, --scale_gap, --hand_scale_number en --hand_scale_range handgrepen worden weggelaten als een hoge precisiedetectie niet nodig is (dit zou de verwerkingstijd verminderen).
  3. OpenPose Nabewerking
    Gebruik in de MATLAB-map het 'process_files_human3D.m'-script om de code uit te voeren nadat u de juiste map hebt toegevoegd met json-bestanden van camera's 1 en 2, evenals het kalibratiebestand. Dit zal leiden tot een "cel" bestand met alle 3D-poses van de gewrichten. Het zal ook een film van de 3D-skelet weergave. Voor camerakalibratie volgt u de instructies op deze link: http://www.vision.caltech.edu/bouguetj/calib_doc/

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Resultaten

Wanneer het protocol wordt gevolgd, moeten de gegevens voor elke netwerkarchitectuur vergelijkbaar zijn met het volgende. Voor TensorBox wordt een selectiekader uitgevoerd rond het object van belang. In ons voorbeeld gebruikten we video's van een voedselpellet die taak bereikte en bestempelden we de rechterpoten om hun beweging te volgen. Zoals te zien in figuur 1,kan de rechterpoot worden gedetecteerd in verschillende posities in zowel de voorkant en zijaanz...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Discussie

Hier bieden we een stapsgewijze handleiding voor de implementatie van DeepBehavior, onze recent ontwikkelde deep learning gebaseerde toolbox voor dier- en menselijke gedragsbeeldvormingsgegevensanalyse2. We geven gedetailleerde uitleg voor elke stap voor de installatie van de frameworks voor elke netwerkarchitectuur en bieden koppelingen voor de installatie van de open-source vereisten om deze frameworks te kunnen uitvoeren. We laten zien hoe je ze installeert, hoe je trainingsgegevens maakt, hoe ...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Openbaarmakingen

De auteurs hebben niets te onthullen.

Dankbetuigingen

We willen Pingping Zhao en Peyman Golshani bedanken voor het verstrekken van de ruwe gegevens voor twee-muis sociale interactie tests gebruikt in het oorspronkelijke papier2. Deze studie werd ondersteund door NIH NS109315 en NVIDIA GPU subsidies (AA).

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Materialen

Lijst van materialen gebruikt in dit artikel
NaamBedrijfCatalogusnummerOpmerkingen
CUDA v8.0.61NVIDIAn/aGPU Software
MATLAB R2016bMathworksn/aMatlab
Python 2.7Pythonn/aPython Versie
Quadro P6000NVIDIAn/aGPU Processor
Ubuntu v16.04Ubuntun/aBesturingssysteem

Referenties

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

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Herprints en machtigingen

Tags

DeepBehavior ToolboxConvolutionele Neurale NetwerkenDetectie van Enkele ObjectenDetectie van Meerdere ObjectenHuman Pose TrackingTensor Box SetupYOLOv3 InstallatieOpenPose VerwerkingMATLAB Postprocessing