Subskrypcja JoVE jest wymagana do oglądania tego materiału. Zaloguj się lub rozpocznij bezpłatny okres próbny.

Artykuł metodologiczny

Implementacja DeepBehavior, zestawu narzędzi do głębokiego uczenia się krok po kroku do automatycznej analizy zachowania

8.9K wyświetleń

DOI:

10.3791/60763

6 lutego 2020

W tym artykule

Podsumowanie

Celem tego protokołu jest wykorzystanie gotowych konwolucyjnych sieci neuronowych do automatyzacji śledzenia zachowań i przeprowadzania szczegółowej analizy zachowań. Śledzenie zachowania może być stosowane do dowolnych danych wideo lub sekwencji obrazów i można je uogólnić w celu śledzenia dowolnego obiektu zdefiniowanego przez użytkownika.

Streszczenie

Zrozumienie zachowania jest pierwszym krokiem do prawdziwego zrozumienia mechanizmów neuronalnych w mózgu, które je napędzają. Tradycyjne metody analizy behawioralnej często nie oddają bogactwa tkwiącego w naturalnym zachowaniu. W tym miejscu przedstawiamy szczegółowe instrukcje krok po kroku wraz z wizualizacjami naszej najnowszej metodologii, DeepBehavior. Przybornik DeepBehavior wykorzystuje ramy głębokiego uczenia zbudowane z konwolucyjnych sieci neuronowych do szybkiego przetwarzania i analizowania filmów behawioralnych. Protokół ten demonstruje trzy różne ramy do wykrywania pojedynczych obiektów, wykrywania wielu obiektów i trójwymiarowego (3D) śledzenia pozycji stawów ludzkich. Struktury te zwracają współrzędne kartezjańskie obiektu zainteresowania dla każdej klatki filmu o zachowaniu. Dane zebrane z zestawu narzędzi DeepBehavior zawierają znacznie więcej szczegółów niż tradycyjne metody analizy zachowania i zapewniają szczegółowy wgląd w dynamikę zachowania. DeepBehavior kwantyfikuje zadania behawioralne w solidny, zautomatyzowany i precyzyjny sposób. Po zidentyfikowaniu zachowania dostarczany jest kod przetwarzania końcowego w celu wyodrębnienia informacji i wizualizacji z filmów behawioralnych.

Wprowadzenie

Szczegółowa analiza zachowania jest kluczem do zrozumienia relacji między mózgiem a zachowaniem. Dokonano wielu ekscytujących postępów w metodologiach rejestrowania i manipulowania populacjami neuronów z wysoką rozdzielczością czasową, jednak metody analizy zachowania nie rozwinęły się w tym samym tempie i ograniczają się do pomiarów pośrednich i podejścia redukcjonistycznego1. Ostatnio opracowano metody oparte na głębokim uczeniu do przeprowadzania zautomatyzowanej i szczegółowej analizy zachowania2,3,4,5. Ten protokół zawiera przewodnik implementacji krok po kroku dla zestawu narzędzi DeepBehavior.

Tradycyjne metody analizy behawioralnej często obejmują ręczne oznaczanie danych przez wielu oceniających, co prowadzi do rozbieżności w sposobie, w jaki eksperymentatorzy definiują zachowanie6. Ręczne etykietowanie danych wymaga czasu i zasobów, które zwiększają się nieproporcjonalnie do ilości zbieranych danych. Co więcej, ręcznie oznaczone dane redukują wyniki zachowania do kategorycznych pomiarów, które nie oddają bogactwa zachowania i będą bardziej subiektywne. W związku z tym obecne tradycyjne metody mogą być ograniczone w uchwyceniu szczegółów w naturalnych zachowaniach.

Zestaw narzędzi DeepBehavior przedstawia precyzyjne, szczegółowe, wysoce czasowe i zautomatyzowane rozwiązanie wykorzystujące głębokie uczenie do analizy behawioralnej. Głębokie uczenie szybko stało się dostępne dla wszystkich dzięki narzędziom i pakietom typu open source. Udowodniono, że konwolucyjne sieci neuronowe (CNN) są bardzo skuteczne w zadaniach rozpoznawania i śledzenia obiektów7,8. Korzystając z nowoczesnych sieci CNN i wysokowydajnych procesorów graficznych (GPU), duże zestawy danych obrazów i wideo mogą być szybko przetwarzane z dużą precyzją7,9,10,11. W DeepBehavior istnieją trzy różne konwolucyjne architektury sieci neuronowych: TensorBox, YOLOv3 i OpenPose2.

Pierwszy framework, Tensorbox, to wszechstronny framework, który łączy wiele różnych architektur CNN do wykrywania obiektów12. TensorBox najlepiej nadaje się do wykrywania tylko jednej klasy obiektów na obraz. Wynikowe dane wyjściowe to pola ograniczające obiektu zainteresowania (rysunek 1) i współrzędne kartezjańskie pola ograniczenia.

Drugim frameworkiem CNN jest YOLOv3, co oznacza "You Only Look Once" 13. YOLOv3 jest korzystny, gdy istnieje wiele interesujących obiektów, które muszą być śledzone osobno. Dane wyjściowe tej sieci obejmują obwiednię z powiązaną klasą etykiety obiektu, a także współrzędne kartezjańskie pola ograniczenia obiektu w klatce wideo (rysunek 2).

Poprzednie dwa frameworki są korzystne dla uogólnionych danych behawioralnych zebranych ze standardowych eksperymentów laboratoryjnych na zwierzętach. Ostatnim frameworkiem CNN jest OpenPose14,15,16, który służy do szacowania pozycji stawów ludzkich. OpenPose wykrywa kluczowe punkty ludzkiego ciała, dłoni, twarzy i stóp na obrazach. Rezultatami struktury są oznaczone obrazy człowieka, a także współrzędne wszystkich 25 kluczowych punktów w ciele i 21 kluczowych punktów każdej ręki (Rysunek 3).

Ten szczegółowy przewodnik krok po kroku dotyczący implementacji naszego niedawno opracowanego zestawu narzędzi DeepBehavior o otwartym kodzie źródłowym wykorzystuje najnowocześniejsze konwolucyjne sieci neuronowe do śledzenia zachowań zwierząt (np. ruch łapy) lub ludzkich (np. zadania związane z docieraniem). Śledząc zachowanie, można wyprowadzić użyteczną kinematykę na podstawie zachowania, takiego jak pozycja, prędkość i przyspieszenie. Protokół wyjaśnia instalację każdej architektury CNN, pokazuje, jak tworzyć zestawy danych treningowych, jak trenować sieci, jak przetwarzać nowe filmy w wytrenowanej sieci, jak wyodrębnić dane z sieci na nowych filmach oraz jak przetworzyć dane wyjściowe, aby były przydatne do dalszej analizy.

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Protokół

1. Konfiguracja GPU i Pythona

  1. Oprogramowanie GPU
    Gdy komputer jest po raz pierwszy konfigurowany do aplikacji głębokiego uczenia, należy zainstalować oprogramowanie i sterowniki odpowiednie dla procesora graficznego, które można znaleźć na odpowiedniej stronie internetowej procesora graficznego. (patrz Tabela materiałów dla tych wykorzystanych w tym badaniu).
  2. Instalacja Pythona 2.7
    Otwórz wiersz poleceń na swoim komputerze.
    Wiersz poleceń: sudo apt-get install python-python-dev python-virtualenv

2. TENSORBOX

  1. Konfiguracja Tensorbox
    1. Utwórz środowisko wirtualne dla Tensorbox
      Wiersz poleceń: cd ~
      Wiersz poleceń: virtualenv --system-site-packages ~/tensorflow
      UWAGA: '~/tensorflow' jest nazwą środowiska i jest arbitralna
    2. Aktywuj environment
      Wiersz poleceń: source ~/tensorflow/bin/activate
  2. Instalacja Tensorbox
    Będziemy używać GitHub do klonowania TensorBox z http://github.com/aarac/TensorBox i instalowania go na naszym komputerze, a także instalowania dodatkowych zależności.
    Wiersz poleceń: cd ~
    Wiersz poleceń: git clone http://github.com/aarac/TensorBox
    Wiersz poleceń: cd TensorBox
    Wiersz polecenia: install -r requirements.txt
  3. Dane etykiety
    1. Utwórz folder z obrazami zachowania
      Narzędzia typu open source, takie jak ffmpeg, są przydatne do konwersji filmów na pojedyncze klatki Zalecamy oznaczenie co najmniej 600 obrazów z szerokiej dystrybucji ramek zachowania do trenowania. Umieść te obrazy w folderze.
    2. Uruchom graficzny interfejs użytkownika etykietowania
      Wiersz poleceń: python make_json.py <ścieżka do folderu obrazów> labels.json
      Aby oznaczyć obraz, najpierw kliknij lewy górny róg interesującego go obiektu (np. łapy), a następnie kliknij prawy dolny róg interesującego go obiektu (Rysunek 4). Sprawdź, czy obwiednia przechwytuje cały obiekt zainteresowania. Naciśnij "cofnij", aby ponownie oznaczyć ten sam obraz lub naciśnij "dalej", aby przejść do następnej klatki.
  4. Trenuj TensorBox
    1. Łączenie obrazów szkoleniowych z plikiem hiperparametrów sieci
      W folderze tensorbox otwórz następujący folder w edytorze tekstu:
      /TensorBox/hypes/overfeat_rezoom.json. Przejdź do atrybutu w obszarze danych o nazwie train_idl i zastąp ścieżkę pliku z ./data/brainwash/train_boxes.json na labels.json ścieżkę do pliku. Zapisz zmiany do pliku.
    2. Rozpocznij trenowanie skryptu
      Wiersz poleceń: cd ~/TensorBox
      Wiersz poleceń: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
      Następnie sieć rozpocznie szkolenie w liczbie 600 000 iteracji. W folderze wyjściowym zostaną wygenerowane wynikowe wytrenowane wagi konwolucyjnej sieci neuronowej.
  5. Przewiduj na nowych obrazach
    Do etykietowania obrazów:
    Wiersz poleceń: cd ~/TensorBox
    Wiersz poleceń: python label_images.py --folder <ścieżka do folderu obrazu> --weights output/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Aby uzyskać współrzędne pól ograniczenia:
    Wiersz poleceń: cd ~/TensorBox
    Wiersz poleceń: python predict_images_to_json.py --folder <ścieżka do folderu obrazów> --weights
    output/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. Przetwarzanie końcowe MATLAB dla TensorBox
    Dostarczono dodatkowy kod MATLAB w celu wyodrębnienia kinematyki i wizualizacji współrzędnych przy użyciu wynikowego pliku współrzędnych JSON z modelu
    Uruchom skrypt "Process_files_3Dreaching_mouse.m" do analizy kinematycznej 3D pojedynczego zadania docierania do granulek żywności.

3. YOLOv3

  1. Zainstaluj YOLOv3
    Wiersz poleceń: cd ~
    Wiersz poleceń: git clone cd darknet
    Aby użyć GPU, otwórz "Makefile" i zmień następujące wiersze: GPU=1; CUDNN=1.
    Wiersz poleceń: make
  2. Etykietowanie danych treningowych przy użyciu Yolo_mark
    Wiersz poleceń: cd ~
    Wiersz poleceń: git clone cd ~/Yolo_Mark
    Wiersz poleceń: cmake .
    Wiersz poleceń: make
    Umieść obrazy treningowe w folderze ~/Yolo_mark/data/obj
    Wiersz poleceń: chmod +x ./linux_mark.sh
    Wiersz polecenia: ./linux_mark.sh
    Oznacz obrazy jeden po drugim w graficznym interfejsie użytkownika (Rysunek 5). Zalecana liczba obrazów to około 200.
  3. Szkolenie YOLOv3
    1. Plik konfiguracyjny konfiguracji
      Wiersz poleceń: cd ~/Yolo_mark
      Wiersz poleceń: scp -r ./data ~/darknet
      Wiersz poleceń: cd ~/darknet/cfg
      Wiersz poleceń: cp yolov3.cfg yolo-obj.cfg
    2. Zmodyfikuj plik konfiguracyjny
      Otwórz folder yolo-obj.cfg i zmodyfikuj następujące wiersze: batch=64, subdivision=8, classes=(# klasy do wykrycia), a dla każdej warstwy konwolucyjnej przed warstwą yolo zmień filtr=(classes+5)x3. Szczegółowe informacje na temat tych zmian można znaleźć na stronie https://github.com/aarac/darknet/blob/master/README.md
    3. Pobierz wagi sieciowe
      Pobierz wagi sieci ze strony https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Umieść pobrany plik wagi w ~/darknet/build/darknet/x64
    4. Uruchom algorytm trenowania
      Wiersz poleceń: cd ~/darknet
      Wiersz poleceń: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Ocena YOLOv3
      Po zakończeniu trenowania na podstawie ustalonej liczby iteracji (ITERATIONNUMBER) można je wyświetlić według
      Wiersz poleceń: ./darknet detector test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights >.jpg
  4. Przewiduj nowe filmy i otrzymuj współrzędne
    To polecenie można uruchomić, aby uzyskać współrzędne etykiet w nowym video:
    Wiersz poleceń: ./darknet detector demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. Przetwarzanie końcowe YOLOv3 w MATLAB<br /> Przenieś plik FILENAME.txt do MATLAB i uruchom skrypt "Process_socialtest_mini.m" dla testu interakcji społecznych dwóch myszy. Zobacz wyniki w Rysunek 2

4. OpenPose

OpenPose jest idealny do śledzenia wielu części ciała u człowieka. Procesy instalacji i instalacji są bardzo podobne do poprzednich dwóch frameworków. Nie ma jednak etapu trenowania, ponieważ sieć jest już przeszkolona na danych ludzkich.

  1. Instalacja OpenPose
    Przejdź do https://github.com/aarac/openpose i postępuj zgodnie z instrukcjami instalacji.
  2. Wideo procesu
    ./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 RESULTINGVIDEONAME.avi
    W tym miejscu uchwyty --net_resolution, --scale_number, --scale_gap, --hand_scale_number i --hand_scale_range można pominąć, jeśli wykrywanie o wysokiej precyzji nie jest potrzebne (skróciłoby to czas przetwarzania).
  3. Przetwarzanie końcowe OpenPose
    W folderze MATLAB należy użyć skryptu 'process_files_human3D.m', aby uruchomić kod po dodaniu odpowiedniego folderu zawierającego pliki json z kamer 1 i 2, a także plik kalibracyjny. Spowoduje to utworzenie pliku "komórkowego" ze wszystkimi ułożeniami 3D stawów. Zostanie również nakręcony film przedstawiający widok szkieletu w 3D. Aby skalibrować kamerę, postępuj zgodnie z instrukcjami pod tym linkiem: http://www.vision.caltech.edu/bouguetj/calib_doc/

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Wyniki

Przy zastosowaniu opisanego protokołu dane dla każdej architektury sieci powinny być zbliżone do poniższych. TensorBox generuje ramkę ograniczającą wokół interesującego nas obiektu. W naszym przykładzie wykorzystano nagrania wideo z zadania sięgania po pellet spożywczy, a w celu śledzenia ruchu oznakowano prawe łapy. Jak widać na Rysunku 1, prawą łapę można wykryć w różnych pozycjach zarówno w kamerze widoku przedniego, jak i bocznego. Po przetwarzaniu wstępn...

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Dyskusja

W tym miejscu przedstawiamy przewodnik krok po kroku dotyczący implementacji DeepBehavior, naszego niedawno opracowanego zestawu narzędzi opartego na głębokim uczeniu do analizy danych obrazowania zachowań zwierząt i ludzi2. Udostępniamy szczegółowe wyjaśnienia dla każdego kroku instalacji struktur dla każdej architektury sieciowej oraz udostępniamy łącza do instalacji wymagań open source, aby móc uruchomić te struktury. Pokazujemy, jak je instalować, jak tworzyć dane treningowe, jak trenować sieć...

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Oświadczenia

Autorzy nie mają nic do ujawnienia.

Podziękowania

Chcielibyśmy podziękować Pingping Zhao i Peymanowi Golshaniemu za dostarczenie surowych danych do testów interakcji społecznych z udziałem dwóch myszy, które zostały użyte w oryginalnym artykule2. Badanie to było wspierane przez NIH NS109315 i granty NVIDIA GPU (AA).

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Materiały

Lista materiałów użytych w tym artykule
NazwaFirmaNumer katalogowyKomentarze
CUDA v8.0.61NVIDIAn/aGPU Software
MATLAB R2016bMathworksn/aMatlab
Python 2.7Pythonn/aWersja Pythona
Quadro P6000NVIDIAn/aGPU Procesor
Ubuntu v16.04Ubuntun/aSystem operacyjny

Bibliografia

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

Dostęp ograniczony. Zaloguj się lub rozpocznij wersję próbną, aby wyświetlić tę treść.

Przedruki i uprawnienia

Tagi

Zestaw narzędzi DeepBehaviorsplotowe sieci neuronowedetekcja pojedynczego obiektudetekcja wielu obiektówśledzenie pozy człowiekakonfiguracja Tensor Boxinstalacja YOLOv3przetwarzanie OpenPosepostprocessing w programie MATLAB