Implementación paso a paso de DeepBehavior, Deep Learning Toolbox for Automated Behavior Analysis

Behavior

Your institution must subscribe to JoVE's Behavior section to access this content.

Fill out the form below to receive a free trial or learn more about access:

 

Summary

El propósito de este protocolo es utilizar redes neuronales convolucionales preconstruidas para automatizar el seguimiento del comportamiento y realizar un análisis detallado del comportamiento. El seguimiento del comportamiento se puede aplicar a cualquier dato de vídeo o secuencias de imágenes y se puede generalizable realizar un seguimiento de cualquier objeto definido por el usuario.

Cite this Article

Copy Citation | Download Citations | Reprints and Permissions

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

Please note that all translations are automatically generated.

Click here for the english version. For other languages click here.

Abstract

Entender el comportamiento es el primer paso para entender realmente los mecanismos neuronales en el cerebro que lo impulsan. Los métodos tradicionales de análisis conductual a menudo no capturan la riqueza inherente al comportamiento natural. Aquí, proporcionamos instrucciones detalladas paso a paso con visualizaciones de nuestra metodología reciente, DeepBehavior. La caja de herramientas DeepBehavior utiliza marcos de aprendizaje profundo creados con redes neuronales convolucionales para procesar y analizar rápidamente videos de comportamiento. Este protocolo muestra tres marcos diferentes para la detección de objetos únicos, la detección de objetos múltiples y el seguimiento de poses de unión humana tridimensionales (3D). Estos marcos devuelven coordenadas cartesianas del objeto de interés para cada fotograma del vídeo de comportamiento. Los datos recopilados de la caja de herramientas DeepBehavior contienen mucho más detalle que los métodos de análisis de comportamiento tradicionales y proporcionan información detallada sobre la dinámica de comportamiento. DeepBehavior cuantifica las tareas de comportamiento de una manera robusta, automatizada y precisa. Después de la identificación del comportamiento, se proporciona código de postprocesamiento para extraer información y visualizaciones de los videos de comportamiento.

Introduction

Un análisis detallado del comportamiento es clave para entender el cerebro y las relaciones de comportamiento. Ha habido muchos avances emocionantes en metodologías para registrar y manipular poblaciones neuronales con alta resolución temporal, sin embargo, los métodos de análisis de comportamiento no se han desarrollado al mismo ritmo y se limitan a mediciones indirectas y un enfoque reduccionista1. Recientemente, se han desarrollado métodos basados en el aprendizaje profundo para realizar análisis de comportamiento automatizados y detallados2,3,4,5. Este protocolo proporciona una guía de implementación paso a paso para la caja de herramientas DeepBehavior.

Los métodos tradicionales de análisis de comportamiento a menudo incluyen la etiquetado manual de datos por varios evaluadores, lo que conduce a la varianza en la forma en que los experimentadores definen un comportamiento6. El etiquetado manual de los datos requiere tiempo y recursos que aumenten desproporcionadamente a la cantidad de datos recopilados. Además, los datos etiquetados manualmente reducen los resultados del comportamiento en mediciones categóricas que no capturan la riqueza del comportamiento y serán más subjetivos. Por lo tanto, los métodos tradicionales actuales pueden ser limitados en la captura de los detalles en los comportamientos naturales.

La caja de herramientas DeepBehavior presenta una solución precisa, detallada, altamente temporal y automatizada que utiliza el aprendizaje profundo para el análisis del comportamiento. El aprendizaje profundo se ha vuelto rápidamente accesible para todos con herramientas y paquetes de código abierto. Las redes neuronales convolucionales (CNN) han demostrado ser altamente eficaces en las tareas de reconocimiento y seguimiento de objetos7,8. Utilizando CNN modernas y unidades de procesamiento gráfico (GPU) de alto rendimiento, los grandes conjuntos de datos de imágenes y vídeo se pueden procesar rápidamente con alta precisión7,9,10,11. En DeepBehavior, hay tres arquitecturas de red neuronal convolucional diferentes, TensorBox, YOLOv3 y OpenPose2.

El primer framework, Tensorbox, es un marco versátil que incorpora muchas arquitecturas CNN diferentes para la detección de objetos12. TensorBox es el más adecuado para detectar solo una clase de objeto por imagen. Las salidas resultantes son cuadros delimitadores del objeto de interés(figura 1) y las coordenadas cartesianas del cuadro delimitador.

El segundo marco de CNN es YOLOv3, que significa "Sólo miraunas"13. YOLOv3 es ventajoso cuando hay varios objetos de interés que se deben realizar un seguimiento por separado. La salida de esta red incluye el cuadro delimitador con la clase de etiqueta de objeto asociada, así como las coordenadas cartesianas del cuadro delimitador del objeto en el fotograma de vídeo (Figura 2).

Los dos marcos anteriores son ventajosos para los datos de comportamiento generalizados recopilados de experimentos de laboratorio estándar en sujetos animales. El último marco de CNN es OpenPose14,15,16 que se utiliza para la estimación de la pose de articulación humana. OpenPose detecta los puntos clave del cuerpo, la mano, la cara y el pie en las imágenes. Los resultados del marco son imágenes etiquetadas del sujeto humano, así como las coordenadas de todos los 25 puntos clave en el cuerpo y 21 puntos clave de cada mano(Figura 3).

Esta guía detallada paso a paso para la implementación de nuestra caja de herramientas DeepBehavior de código abierto recientemente desarrollada emplea redes neuronales convolucionales de última generación para rastrear el comportamiento animal (por ejemplo, movimiento de una pata) o el comportamiento humano (por ejemplo, llegar a tareas). Mediante el seguimiento del comportamiento, la cinemática útil se puede derivar del comportamiento, como la posición, la velocidad y la aceleración. El protocolo explica la instalación de cada arquitectura CNN, demuestra cómo crear conjuntos de datos de entrenamiento, cómo entrenar las redes, cómo procesar nuevos videos en la red entrenada, cómo extraer los datos de la red en los nuevos videos, y cómo post-procesar los datos de salida para que sean útiles para su posterior análisis.

Subscription Required. Please recommend JoVE to your librarian.

Protocol

1. Configuración de GPU y Python

  1. GPU Software
    Cuando el equipo se configura por primera vez para aplicaciones de aprendizaje profundo, se debe instalar software y controladores apropiados para GPU que se pueden encontrar en el sitio web respectivo de la GPU. (véase la Tabla de Materiales para los utilizados en este estudio).
  2. Instalación de Python 2.7
    Abra un símbolo del sistema en el equipo.
    Línea de comandos: sudo apt-get install python-pip python-dev python-virtualenv

2. TENSORBOX

  1. Configuración de Tensorbox
    1. Crear entorno virtual para Tensorbox
      Línea de mando: cd ?
      Línea de comandos: virtualenv --system-site-packages ?/tensorflow
      NOTA: '/tensorflow' es el nombre del entorno y es arbitrario
    2. Activar el entorno
      Línea de comandos: fuente /tensorflow/bin/activate
  2. Instalación de Tensorbox
    Usaremos GitHub para clonar TensorBox desde http://github.com/aarac/TensorBox e instalarlo en nuestra máquina, así como para instalar dependencias adicionales.
    Línea de mando: cd ?
    Línea de comandos: clon de git http://github.com/aarac/TensorBox
    Línea de comandos: cd TensorBox
    Línea de comandos: pip install -r requirements.txt
  3. Datos de etiquetas
    1. Crear una carpeta de imágenes de comportamiento
      Las herramientas de código abierto como ffmpeg son útiles para lograr la conversión de vídeos a marcos individuales Recomendamos etiquetar al menos 600 imágenes de una amplia distribución de marcos de comportamiento para el entrenamiento. Coloque estas imágenes en una carpeta.
    2. Iniciar la interfaz gráfica de usuario del etiquetado
      Línea de comandos: python make_json.py labels.json
      Para etiquetar una imagen, haga clic primero en la esquina superior izquierda del objeto de interés (es decir, pata) y, a continuación, haga clic en la esquina inferior derecha del objeto de interés(Figura 4). Inspeccione que el cuadro delimitador captura todo el objeto de interés. Pulse 'deshacer' para volver a etiquetar la misma imagen o pulse 'siguiente' para pasar al siguiente fotograma.
  4. Train TensorBox
    1. Vincular imágenes de entrenamiento al archivo de hiperparámetros de red
      Dentro de la carpeta tensorbox, abra la siguiente carpeta en un editor de texto:
      /TensorBox/hypes/overfeat_rezoom.json. Vaya al atributo en datos denominados train_idl y reemplace la ruta de acceso del archivo de ./data/brainwash/train_boxes.json a labels.json filepath. Guarde los cambios en el archivo.
    2. Comenzar el guión de entrenamiento
      Línea de comandos: cd /TensorBox
      Línea de comandos: python train.py --hypes hypes/overfeat_rezoom.json --gpu 0 --logdir output
      A continuación, la red comenzará a entrenar para 600.000 iteraciones. En la carpeta de salida, se generarán los pesos entrenados resultantes de la red neuronal convolucional.
  5. Predecir en nuevas imágenes
    Para el etiquetado de imágenes:
    Línea de comandos: cd /TensorBox
    Línea de comandos: python label_images.py --folder --weights output/overfeat_rezoom_/save.ckpt-600000 --hypes /hypes/overfeat_rezoom.json --gpu 0
    Para obtener coordenadas de los cuadros delimitadores:
    Línea de comandos: cd /TensorBox
    Línea de comandos: python predict_images_to_json.py --folder --weights
    output/overfeat_rezoom_/save.ckpt-600000 --hypes
    /hypes/overfeat_rezoom.json --gpu 0
  6. Procesamiento posterior de MATLAB para TensorBox
    Se ha proporcionado código MATLAB adicional para extraer cinemáticas y visualizaciones de las coordenadas utilizando el archivo de coordenadas JSON resultante del modelo
    Ejecute el script "Process_files_3Dreaching_mouse.m" para el análisis cinemático 3D de la tarea de alcanzar pellets de un solo alimento.

3. YOLOv3

  1. Instalar YOLOv3
    Línea de mando: cd ?
    Línea de comandos: git clone cd darknet
    Para el uso de GPU, abra 'Makefile' y cambie las siguientes líneas: GPU-1; CUDNN-1.
    Línea de comandos: make
  2. Etiquetado de datos de entrenamiento mediante Yolo_mark
    Línea de mando: cd ?
    Línea de comandos: git clone cd /Yolo_Mark
    Línea de comandos: cmake .
    Línea de comandos: make
    Coloque las imágenes de entrenamiento en la carpeta de Yolo_mark datos/datos/obj
    Línea de comandos: chmod +x ./linux_mark.sh
    Línea de comandos: ./linux_mark.sh
    Etiquete las imágenes una por una en la interfaz gráfica de usuario(Figura 5). La cantidad recomendada de imágenes es de aproximadamente 200.
  3. Entrenamiento YOLOv3
    1. Archivo de configuración de configuración
      Línea de comandos: cd s/Yolo_mark
      Línea de comandos: scp -r ./data ?/darknet
      Línea de comandos: cd /darknet/cfg
      Línea de comandos: cp yolov3.cfg yolo-obj.cfg
    2. Modificar el archivo de configuración
      Abra la carpeta yolo-obj.cfg y modifique las siguientes líneas: batch-64, subdivisión-8, classes-(-de la clase para detectar), y para cada capa convolucional antes de que una capa yolo cambie el filtro (clases +5)x3. Los detalles sobre estos cambios se pueden encontrar en https://github.com/aarac/darknet/blob/master/README.md
    3. Descargar pesos de red
      Descargue los pesos de red desde https://www.dropbox.com/s/613n2hwm5ztbtuf/darknet53.conv.74?dl=0
      Coloque el archivo de peso descargado en el archivo de peso descargado en el archivo de peso descarcellado en el archivo de peso de s/darknet/build/darknet/x64
    4. Ejecutar algoritmo de entrenamiento
      Línea de comandos: cd /darknet
      Línea de comandos: ./darknet detector train data/obj.data cfg/yolo-obj.cfg darknet53.conv.74
    5. Evaluación YOLOv3
      Una vez completado el entrenamiento en función de un número determinado de iteraciones (ITERATIONNUMBER),puede verlas
      Línea de comandos: ./darknet detector test data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights .jpg
  4. Predecir nuevos vídeos y obtener coordenadas
    Este comando se puede ejecutar para obtener las coordenadas de las etiquetas en el nuevo vídeo:
    Línea de comandos: ./darknet detector demo data/obj.data cfg/yolo-obj.cfg backup/yolo-obj_ITERATIONNUMBER.weights VIDEO.avi -ext_output FILENAME.txt
  5. YOLOv3 PostProcesamiento en MATLAB
    Lleve el archivo FILENAME.txt a MATLAB y ejecute el script "Process_socialtest_mini.m" para la prueba de interacción social de dos ratones. Vea los resultados en la Figura 2

4. OpenPose

OpenPose es ideal para rastrear múltiples partes del cuerpo en un sujeto humano. Los procesos de instalación y configuración son muy similares a los dos marcos anteriores. Sin embargo, no hay ningún paso de formación, ya que la red ya está entrenada en datos humanos.

  1. Instalación de OpenPose
    Vaya a https://github.com/aarac/openpose y siga las instrucciones de instalación.
  2. Procesar vídeo
    ./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
    Aquí se pueden omitir los identificadores --net_resolution, --scale_number, --scale_gap, --hand_scale_number y --hand_scale_range si no se necesita una detección de alta precisión (esto disminuiría el tiempo de procesamiento).
  3. Postprocesamiento de OpenPose
    En la carpeta MATLAB, utilice el script 'process_files_human3D.m' para ejecutar el código después de agregar la carpeta adecuada que contiene archivos json de las cámaras 1 y 2, así como el archivo de calibración. Esto creará un archivo "celda" con todas las poses 3D de las articulaciones. También hará una película de la vista esquelética 3D. Para la calibración de la cámara, siga las instrucciones de este enlace: http://www.vision.caltech.edu/bouguetj/calib_doc/

Subscription Required. Please recommend JoVE to your librarian.

Representative Results

Cuando se sigue el protocolo, los datos de cada arquitectura de red deben ser similares a los siguientes. Para TensorBox, genera un cuadro delimitador alrededor del objeto de interés. En nuestro ejemplo, usamos videos de una tarea de llegar a pellets de alimentos, y etiquetamos las patas derechas para rastrear su movimiento. Como se ve en la Figura 1,la pata derecha se puede detectar en diferentes posiciones tanto en las cámaras de vista frontal como lateral. Después del post-procesamiento con calibración de la cámara, se pueden obtener trayectorias 3D del alcance(Figura 1B).

En Yolov3, como hay varios objetos, la salida también es varios cuadros delimitadores. Como se ve en la Figura 2B,hay varios cuadros delimitadores alrededor de los objetos de interés. Pueden ser partes del cuerpo.

En OpenPose, la red detecta las posiciones de las articulaciones como se ve en la Figura 3A. Después del post-procesamiento con calibración de la cámara, se puede crear un modelo 3D del sujeto(Figura 3B).

En conclusión, estos resultados representativos muestran los detalles enriquecidos del comportamiento que se pueden capturar mediante la caja de herramientas DeepBehavior.

Figure 1
Figura 1: Cajas de enlace con TensorBox visto en las patas de los fotogramas de vídeo durante una tarea de alcance en ratones. (Adaptado de Arac et al 2019). Haga clic aquí para ver una versión más grande de esta figura.

Figure 2
Figura 2: Cajas de enlace con Yolov3 vistas en las regiones de interés en fotogramas de vídeo durante una prueba de interacción social de dos ratones (una imagen en bruto, imagen analizada B). (Adaptado de Arac et al 2019). Haga clic aquí para ver una versión más grande de esta figura.

Figure 3
Figura 3: Detección de poses humanas con OpenPose en dos vistas de cámara (A) y modelo 3D creado a partir de estas dos imágenes (B). (Adaptado de Arac et al 2019). Haga clic aquí para ver una versión más grande de esta figura.

Figure 4
Figura 4: La interfaz gráfica de usuario de make_json de TensorBox utilizada para etiquetar los datos de entrenamiento. Haga clic aquí para ver una versión más grande de esta figura.

Figure 5
Figura 5: GUI de Yolo_Mark para etiquetar imágenes en un formato aceptable para Yolov3. Haga clic aquí para ver una versión más grande de esta figura.

Subscription Required. Please recommend JoVE to your librarian.

Discussion

Aquí, proporcionamos una guía paso a paso para la implementación de DeepBehavior, nuestra caja de herramientas recientemente desarrollada basada en el aprendizaje profundo para el análisis de datos de imágenes de comportamiento animal y humano2. Proporcionamos explicaciones detalladas para cada paso para la instalación de los marcos de trabajo para cada arquitectura de red y proporcionamos vínculos para la instalación de los requisitos de código abierto para poder ejecutar estos marcos. Demostramos cómo instalarlos, cómo crear datos de entrenamiento, cómo entrenar la red y cómo procesar nuevos archivos de vídeo en la red entrenada. También proporcionamos el código de postprocesamiento para extraer la información básica necesaria para su posterior análisis.

Para la detección de un solo objeto, se recomienda usar TensorBox. Si el objetivo es realizar un seguimiento de varios objetos a la vez, se recomienda usar YOLOv3. Por último, para obtener datos cinemáticos humanos, recomendamos usar OpenPose. En este protocolo hemos demostrado que los métodos de aprendizaje profundo son capaces de procesar cientos de miles de fotogramas mientras se realiza un seguimiento de objetos con un alto grado de precisión. Usando el código de postprocesamiento proporcionado, podemos derivar formas significativas de analizar el comportamiento de seguimiento de interés. Esto proporciona una forma más detallada de capturar el comportamiento. También proporciona una forma automatizada y robusta de definir el comportamiento que es generalizable para muchos tipos diferentes de tareas de comportamiento.

Es bastante común obtener un 'ModuleNotFoundError' al comenzar con un nuevo entorno virtual o código que se ha descargado de Internet. En el caso de que esto ocurra, abra el terminal, active el entorno de origen y escriba 'pip install '. Si el problema persiste, deberá comprobar la versión de Python, así como otros paquetes de dependencia.

Las limitaciones a esta técnica incluyen la solución de problemas técnicos para configurar correctamente las unidades de procesamiento de GPU compatibles con el código fuente abierto. Es ventajoso tener experiencia de programación pasada dentro de un entorno linux para configurar correctamente las dependencias de proyecto y entornos necesarios que son compatibles con el hardware del equipo.

Demostramos las instalaciones de la caja de herramientas DeepBehavior y el procesamiento de en un entorno linux, sin embargo, esta caja de herramientas también se puede ejecutar en una máquina Windows y Mac con GPU siguiendo las respectivas guías de instalación en github.

El uso de métodos de aprendizaje profundo para el análisis de datos por imágenes es una forma muy eficiente de automatizar el análisis de comportamiento. En comparación con los métodos de análisis de comportamiento tradicionales, DeepBehavior captura mucha más información para cuantificar, automatizar y evaluar el comportamiento de una manera más precisa y temporalmente detallada. Con los avances adicionales en el campo del aprendizaje profundo, la utilización y el alcance del uso de esta tecnología en el análisis de comportamiento probablemente continuará mejorando. Las aplicaciones de DeepBehavior se pueden ampliar más allá de las tareas de alcance demostradas para identificar objetos de interés en cualquier imagen de comportamiento. En este protocolo, proporcionamos instrucciones detalladas para implementar tres redes neuronales para el análisis del comportamiento. Con este tipo de métodos de análisis de comportamiento automatizados e imparciales, con suerte, el campo de la neurociencia será capaz de hacer un análisis de comportamiento más detallado.

Subscription Required. Please recommend JoVE to your librarian.

Disclosures

Los autores no tienen nada que revelar.

Acknowledgments

Nos gustaría agradecer a Pingping Zhao y Peyman Golshani por proporcionar los datos brutos para las pruebas de interacción social de dos ratones utilizadas en el documento original2. Este estudio fue apoyado por NIH NS109315 y nvidial 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).

Comments

0 Comments


    Post a Question / Comment / Request

    You must be signed in to post a comment. Please or create an account.

    Usage Statistics