JoVE Logo

Entrar

É necessária uma assinatura da JoVE para visualizar este conteúdo. Faça login ou comece sua avaliação gratuita.

Neste Artigo

  • Resumo
  • Resumo
  • Introdução
  • Protocolo
  • Resultados
  • Discussão
  • Divulgações
  • Agradecimentos
  • Materiais
  • Referências
  • Reimpressões e Permissões

Resumo

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.

Resumo

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.

Introdução

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

Access restricted. Please log in or start a trial to view this content.

Protocolo

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
  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/

Access restricted. Please log in or start a trial to view this content.

Resultados

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

Access restricted. Please log in or start a trial to view this content.

Discussão

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

Access restricted. Please log in or start a trial to view this content.

Divulgações

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

Agradecimentos

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

Access restricted. Please log in or start a trial to view this content.

Materiais

NameCompanyCatalog NumberComments
CUDA v8.0.61NVIDIAn/aGPU Software
MATLAB R2016bMathworksn/aMatlab
Python 2.7Pythonn/aPython Version
Quadro P6000NVIDIAn/aGPU Processor
Ubuntu v16.04Ubuntun/aOperating System

Referências

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

Access restricted. Please log in or start a trial to view this content.

Reimpressões e Permissões

Solicitar permissão para reutilizar o texto ou figuras deste artigo JoVE

Solicitar Permissão

Explore Mais Artigos

ComportamentoEdi o 156Deep LearningAn lise de ComportamentoRedes Neurais ConvolucionaisMachine LearningAn lise Cinem ticaAn lise AutomatizadaComportamento AnimalComportamento HumanoTarefas de AlcanceDados de ImagemDados de V deoCin tica 3D

This article has been published

Video Coming Soon

JoVE Logo

Privacidade

Termos de uso

Políticas

Pesquisa

Educação

SOBRE A JoVE

Copyright © 2025 MyJoVE Corporation. Todos os direitos reservados