Waiting
Login processing...

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

Behavior

Uma implementação passo a passo do DeepBehavior, caixa de ferramentas de deep learning para análise automatizada de comportamento

Published: February 6, 2020 doi: 10.3791/60763

Summary

O objetivo deste protocolo é utilizar redes neurais convolucionais pré-construídas para automatizar o rastreamento de comportamentos e realizar análises detalhadas de comportamento. O rastreamento de comportamento pode ser aplicado a quaisquer dados de vídeo ou sequências de imagens e é generalizável para rastrear qualquer objeto definido pelo usuário.

Abstract

Entender o comportamento é o primeiro passo para realmente entender mecanismos neurais no cérebro que o impulsionam. Os métodos tradicionais de análise comportamental muitas vezes não capturam a riqueza inerente ao comportamento natural. Aqui, fornecemos instruções detalhadas passo a passo com visualizações de nossa metodologia recente, deepbehavior. A caixa de ferramentas DeepBehavior usa estruturas de deep learning construídas com redes neurais convolucionais para processar rapidamente e analisar vídeos comportamentais. Este protocolo demonstra três estruturas diferentes para detecção de objetoúnico, detecção múltipla de objetos e rastreamento de pose articular humana tridimensional (3D). Esses quadros devolvem coordenadas cartesianas do objeto de interesse para cada quadro do vídeo de comportamento. Os dados coletados na caixa de ferramentas DeepBehavior contêm muito mais detalhes do que os métodos tradicionais de análise de comportamento e fornecem insights detalhados sobre a dinâmica do comportamento. DeepBehavior quantifica tarefas de comportamento de forma robusta, automatizada e precisa. Após a identificação do comportamento, o código pós-processamento é fornecido para extrair informações e visualizações dos vídeos comportamentais.

Introduction

Uma análise detalhada do comportamento é fundamental para entender as relações cerebrais e comportamentais. Houve muitos avanços emocionantes nas metodologias para registrar e manipular populações neuronais com alta resolução temporal, no entanto, os métodos de análise de comportamento não se desenvolveram no mesmo ritmo e estão limitados a medições indiretas e a uma abordagem reducionista1. Recentemente, métodos baseados em deep learning foram desenvolvidos para realizar análises de comportamento automatizadas e detalhadas2,3,4,5. Este protocolo fornece um guia de implementação passo a passo para a caixa de ferramentas DeepBehavior.

Os métodos tradicionais de análise comportamental geralmente incluem rotular manualmente dados por vários avaliadores, levando à variância na forma como os experimentadores definem um comportamento6. A rotulagem manual dos dados requer tempo e recursos que aumentam desproporcionalmente para a quantidade de dados coletados. Além disso, dados rotulados manualmente reduzem os desfechos de comportamento em medições categóricas que não capturam a riqueza do comportamento, e serão mais subjetivos. Assim, os métodos tradicionais atuais podem ser limitados na captura dos detalhes nos comportamentos naturais.

A caixa de ferramentas DeepBehavior apresenta uma solução precisa, detalhada, altamente temporal e automatizada usando aprendizado profundo para análise comportamental. O aprendizado profundo tornou-se rapidamente acessível a todos com ferramentas e pacotes de código aberto. As redes neurais convolucionais (CNNs) são comprovadamente altamente eficazes no reconhecimento de objetos e nas tarefas de rastreamento7,8. Usando CNNs modernos e unidades de processamento gráfico de alto desempenho (GPUs), grandes conjuntos de dados de imagem e vídeo podem ser processados rapidamente com alta precisão7,9,10,11. No DeepBehavior, existem três arquiteturas de rede neural convolucional diferentes, TensorBox, YOLOv3 e OpenPose2.

A primeira estrutura, Tensorbox, é uma estrutura versátil que incorpora muitas arquiteturas diferentes da CNN para detecção de objetos12. O TensorBox é mais adequado para detectar apenas uma classe de objeto por imagem. As saídas resultantes são caixas delimitadoras do objeto de interesse (Figura 1) e as coordenadas cartesianas da caixa de limitação.

O segundo quadro da CNN é YOLOv3, que significa "You Only Look Once"13. YOLOv3 é vantajoso quando há múltiplos objetos de interesse que devem ser rastreados separadamente. A saída desta rede inclui a caixa de limitadora com a classe de etiqueta de objeto associada, bem como as coordenadas cartesianas da caixa delimitadora do objeto no quadro de vídeo(Figura 2).

As duas estruturas anteriores são vantajosas para dados comportamentais generalizados coletados de experimentos laboratoriais padrão em indivíduos animais. O último quadro da CNN é OpenPose14,15,16 que é usado para estimativa de pose articular humana. OpenPose detecta pontos de chave do corpo, mão, facial e pé humano nas imagens. As saídas da estrutura são imagens rotuladas do sujeito humano, bem como as coordenadas de todos os 25 pontos-chave do corpo e 21 pontos-chave de cada mão (Figura 3).

Este guia detalhado passo a passo para a implementação de nossa caixa de ferramentas DeepBehavior de código aberto recém-desenvolvida emprega redes neurais convolucionais de última geração para rastrear o comportamento animal (por exemplo, movimento de uma pata) ou comportamento humano (por exemplo, chegar às tarefas). Ao rastrear o comportamento, os cinemáticas úteis podem ser derivados do comportamento como posição, velocidade e aceleração. O protocolo explica a instalação de cada arquitetura da CNN, demonstra como criar conjuntos de dados de treinamento, como treinar as redes, como processar novos vídeos na rede treinada, como extrair os dados da rede nos novos vídeos e como pós-processo os dados de saída para torná-los úteis para análise si só.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

1. Configuração GPU e Python

  1. GPU Software
    Quando o computador é configurado pela primeira vez para aplicativos de aprendizagem profunda, o software e os drivers apropriados para GPU devem ser instalados que podem ser encontrados no respectivo site da GPU. (ver a Tabela de Materiais para os utilizados neste estudo).
  2. Instalação Python 2.7
    Abra um prompt de linha de comando em sua máquina.
    Linha de comando: sudo apt-get instalar python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Configuração tensorbox
    1. Crie ambiente virtual para tensorbox
      Linha de comando: cd ~
      Linha de comando: virtualenv --sistema-site-pacotes ~/tensorflow
      NOTA: '~/tensorflow' é o nome do ambiente e é arbitrário
    2. Ativar ambiente
      Linha de comando: fonte ~/tensorflow/bin/activate
  2. Instalação de Tensorbox
    Usaremos o GitHub para clonar o TensorBox de http://github.com/aarac/TensorBox e instalá-lo em nossa máquina, bem como instalar dependências adicionais.
    Linha de comando: cd ~
    Linha de comando: git clone http://github.com/aarac/TensorBox
    Linha de comando: cd TensorBox
    Linha de comando: instalação de pip -r requirements.txt
  3. Dados de etiqueta
    1. Crie uma pasta de imagens de comportamento
      Ferramentas de código aberto, como ffmpeg, são úteis para realizar a conversão de vídeos em quadros individuais Recomendamos rotular pelo menos 600 imagens de uma ampla distribuição de quadros de comportamento para treinamento. Coloque essas imagens em uma pasta.
    2. Interface gráfica de usuário de rotulagem de lançamento
      Linha de comando: python make_json.py labels.json
      Para rotular uma imagem, clique no canto superior esquerdo do objeto de interesse (ou seja, pata) primeiro e clique no canto inferior direito do objeto de interesse(Figura 4). Inspecione que a caixa de limitação captura todo o objeto de interesse. Pressione 'desfazer' para rerotular a mesma imagem ou pressionar "a seguir" para passar para o quadro seguinte.
  4. Caixa de Trem TensorBox
    1. Vincular imagens de treinamento ao arquivo hiperparâmetros da rede
      Dentro da pasta tensorbox, abra a seguinte pasta em um editor de texto:
      /TensorBox/hypes/overfeat_rezoom.json. Navegue até o atributo dados chamados train_idl e substitua o caminho do arquivo de ./data/lavagem cerebral/train_boxes.json para o filepath labels.json. Salve as alterações no arquivo.
    2. Comece o roteiro de treinamento
      Linha de comando: cd ~/TensorBox
      Linha de comando: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
      A rede começará então a treinar para 600.000 iterações. Na pasta de saída, serão gerados os pesos treinados resultantes da rede neural convolucional.
  5. Prever em Novas Imagens
    Para rotulagem de imagens:
    Linha de comando: cd ~/TensorBox
    Linha de comando: python label_images.py --folder --weights output/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Para obter coordenadas de caixas de limitadoras:
    Linha de comando: cd ~/TensorBox
    Linha de comando: python predict_images_to_json.py --folder --pesos
    saída/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. Pós-processamento do MATLAB para TensorBox
    Código MATLAB adicional foi fornecido para extrair cinemáticas e visualizações das coordenadas usando o arquivo de coordenadas JSON resultante do modelo
    Execute o roteiro "Process_files_3Dreaching_mouse.m" para análise cinética 3D de uma única pelota de alimento chegando tarefa.

3. YOLOv3

  1. Instale YOLOv3
    Linha de comando: cd ~
    Linha de comando: git clone cd darknet
    Para uso de GPU, abra 'Makefile' e altere as seguintes linhas: GPU=1; CUDNN=1.
    Linha de comando: fazer
  2. Rotular dados de treinamento usando Yolo_mark
    Linha de comando: cd ~
    Linha de comando: git clone cd ~/Yolo_Mark
    Linha de comando: cmake .
    Linha de comando: fazer
    Coloque as imagens de treinamento em ~/Yolo_mark/data/pasta obj
    Linha de comando: chmod +x ./linux_mark.sh
    Linha de comando: ./linux_mark.sh
    Rotular as imagens uma a uma na interface gráfica do usuário (Figura 5). A quantidade recomendada de imagens é de aproximadamente 200.
  3. Treinamento YOLOv3
    1. Arquivo de configuração de configuração
      Linha de comando: cd ~/Yolo_mark
      Linha de comando: scp -r ./data ~/darknet
      Linha de comando: cd ~/darknet/cfg
      Linha de comando: cp yolov3.cfg yolo-obj.cfg
    2. Modifique o arquivo de configuração
      Abra a pasta yolo-obj.cfg e modifique as seguintes linhas: batch=64, subdivisão=8, classes=(# de classe para detectar) e para cada camada convolucional antes que uma camada yolo altere o filtro=(classes+5)x3. Detalhes sobre essas mudanças podem ser encontrados em https://github.com/aarac/darknet/blob/master/README.md
    3. Baixar pesos de rede
      Baixe os pesos da rede de https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Coloque o arquivo de peso baixado em ~/darknet/build/darknet/x64
    4. Executar algoritmo de treinamento
      Linha de comando: cd ~/darknet
      Linha de comando: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Avaliação YOLOv3
      Após o treinamento ser concluído com base em um número definido de iterações(ITERATIONNUMBER),você pode visualizá-las por
      Linha de comando: dados de teste do detector ./darknet/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Prever novos vídeos e obter coordenadas
    Este comando pode ser executado para obter as coordenadas dos rótulos no novo vídeo:
    Linha de comando: dados de demonstração de demo do detector ./darknet/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 Pós-Processamento no MATLAB
    Leve o arquivo FILENAME.txt para o MATLAB e execute o script "Process_socialtest_mini.m" para teste de interação social de dois ratos. Veja os resultados na Figura 2

4. OpenPose

OpenPose é ideal para rastrear múltiplas partes do corpo em um sujeito humano. Os processos de instalação e instalação são muito semelhantes aos dois quadros anteriores. No entanto, não há etapa de treinamento, pois a rede já é treinada em dados humanos.

  1. Instalação OpenPose
    Navegue até https://github.com/aarac/openpose e siga as instruções de instalação.
  2. Vídeo de processo
    ./build/examples/openpose/openpose.bin --video VIDEONAME.avi --net_resolution "1312x736" --scale_number 4 --scale_gap 0,25 --hand_scale_number 6 --hand_scale_range 0,4 --write_json JSONFOLDERNAME --write_video RESULTINGVIDEONAME.avi
    Aqui as alças --net_resolution, --scale_number, --scale_gap, --hand_scale_number e --hand_scale_range podem ser omitidas se uma detecção de alta precisão não for necessária (isso diminuiria o tempo de processamento).
  3. OpenPose pós-processamento
    Na pasta MATLAB, use o script 'process_files_human3D.m' para executar o código depois de adicionar a pasta apropriada contendo arquivos JSON das câmeras 1 e 2, bem como o arquivo de calibração. Isso criará um arquivo "celular" com todas as poses 3D das articulações. Ele também fará um filme da visão esquelética 3D. Para calibrar a câmera, siga as instruções neste link: http://www.vision.caltech.edu/bouguetj/calib_doc/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

Quando o protocolo é seguido, os dados de cada arquitetura de rede devem ser semelhantes aos seguintes. Para o TensorBox, ele produz uma caixa de limitador em torno do objeto de interesse. Em nosso exemplo, usamos vídeos de uma tarefa de alcance de pelotas de comida, e rotulamos as patas certas para rastrear seu movimento. Como visto na Figura 1,a pata direita pode ser detectada em diferentes posições tanto na visão frontal quanto nas câmeras de visão lateral. Após o pós-processamento com calibração da câmera, trajetórias 3D do alcance podem ser obtidas (Figura 1B).

Em Yolov3, como há vários objetos, a saída também é de várias caixas de limitadoras. Como visto na Figura 2B,há várias caixas de limitador as caixas ao redor dos objetos de interesse. Estas podem ser partes do corpo.

No OpenPose, a rede detecta as posições articulares como visto na Figura 3A. Após o pós-processamento com calibração da câmera, um modelo 3D do sujeito pode ser criado (Figura 3B).

Em conclusão, esses resultados representativos mostram os detalhes ricos do comportamento que podem ser capturados usando a caixa de ferramentas DeepBehavior.

Figure 1
Figura 1: Caixas delimitadoras com TensorBox vistas nas patas de quadros de vídeo durante uma tarefa de alcance em camundongos. (Adaptado de Arac et al 2019). Clique aqui para ver uma versão maior deste valor.

Figure 2
Figura 2: Caixas delimitadoras com Yolov3 vistas nas regiões de interesse em quadros de vídeo durante um teste de interação social de dois ratos (Uma imagem bruta, imagem analisada b). (Adaptado de Arac et al 2019). Clique aqui para ver uma versão maior deste valor.

Figure 3
Figura 3: Detecção de pose humana com OpenPose em duas visualizações de câmera (A) e modelo 3D criados a partir dessas duas imagens (B). (Adaptado de Arac et al 2019). Clique aqui para ver uma versão maior deste valor.

Figure 4
Figura 4: A make_json GUI da TensorBox usada para rotular dados de treinamento. Clique aqui para ver uma versão maior deste valor.

Figure 5
Figura 5: GUI de Yolo_Mark rotular imagens em um formato aceitável para Yolov3. Clique aqui para ver uma versão maior deste valor.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

Aqui, fornecemos um guia passo a passo para a implementação do DeepBehavior, nossa caixa de ferramentas baseada em aprendizagem profunda recentemente desenvolvida para análise de dados de imagem de comportamento animal e humano2. Fornecemos explicações detalhadas para cada etapa para a instalação das estruturas para cada arquitetura de rede e fornecemos links para a instalação dos requisitos de código aberto para poder executar essas estruturas. Demonstramos como instalá-los, como criar dados de treinamento, como treinar a rede e como processar novos arquivos de vídeo na rede treinada. Também fornecemos o código pós-processamento para extrair as informações básicas necessárias necessárias para análise si só.

Para detecção de objeto único, recomendamos usar o TensorBox. Se o objetivo é rastrear vários objetos ao mesmo tempo, recomendamos usar YOLOv3. Finalmente, para obter dados cinémáticos humanos, recomendamos o uso do OpenPose. Neste protocolo, mostramos que métodos de aprendizagem profunda são capazes de processar centenas de milhares de quadros enquanto rastreiam objetos com alto grau de precisão. Usando o código de pós-processamento fornecido, podemos obter formas significativas de analisar o comportamento de interesse rastreado. Isso fornece uma maneira mais detalhada de capturar comportamentos. Também fornece uma maneira automatizada e robusta de definir comportamentos que é generalizável para muitos tipos diferentes de tarefas comportamentais.

É bastante comum obter um 'ModuleNotFoundError' ao começar com um novo ambiente virtual ou código que foi baixado da internet. No caso de isso ocorrer, abra seu terminal, ative o ambiente de origem e digite 'pip install '. Se o problema persistir, você precisará verificar sua versão python, bem como outras embalagens de dependência.

As limitações a esta técnica incluem a solução de problemas técnicos para configurar adequadamente unidades de processamento de GPU compatíveis com código de código aberto. É vantajoso ter experiência de programação passada dentro de um ambiente linux para configurar adequadamente as dependências e ambientes necessários do projeto que são compatíveis com o hardware do computador.

Demonstramos as instalações da caixa de ferramentas DeepBehavior e o processamento de em um ambiente linux, no entanto, esta caixa de ferramentas também pode ser executada em uma máquina windows e Mac com GPUs seguindo as respectivas guias de instalação no github.

Usar métodos de aprendizagem profunda para análise de dados de imagem é uma maneira muito eficiente de automatizar a análise de comportamento. Em comparação com os métodos tradicionais de análise de comportamento, o DeepBehavior captura muito mais informações para quantificar, automatizar e avaliar o comportamento de forma mais precisa e temporal detalhada. Com os avanços adicionais no campo de aprendizagem profunda, a utilização e extensão do uso dessa tecnologia na análise de comportamento provavelmente continuarão a melhorar. Os aplicativos do DeepBehavior podem ser expandidos além das tarefas de alcance demonstradas para identificar objetos de interesse em qualquer imagem comportamental. Neste protocolo, fornecemos instruções detalhadas para implementar três redes neurais para análise de comportamento. Com esse tipo de métodos automatizados e imparcial de análise de comportamento, espero que o campo da neurociência seja capaz de fazer análises de comportamento mais detalhadas.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Os autores não têm nada para divulgar.

Acknowledgments

Gostaríamos de agradecer a Pingping Zhao e Peyman Golshani por fornecer os dados brutos para testes de interação social de dois camundongos usados no artigo original2. Este estudo foi apoiado por concessões de GPU DA NIH NS109315 e NVIDIA GPU (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

Comportamento Edição 156 Deep Learning Análise de Comportamento Redes Neurais Convolucionais Machine Learning Análise Cinemática Análise Automatizada Comportamento Animal Comportamento Humano Tarefas de Alcance Dados de Imagem Dados de Vídeo Cinética 3D
Uma implementação passo a passo do DeepBehavior, caixa de ferramentas de deep learning para análise automatizada de comportamento
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