JoVE Logo

Iniciar sesión

Se requiere una suscripción a JoVE para ver este contenido. Inicie sesión o comience su prueba gratuita.

En este artículo

  • Resumen
  • Resumen
  • Introducción
  • Protocolo
  • Resultados
  • Discusión
  • Divulgaciones
  • Agradecimientos
  • Materiales
  • Referencias
  • Reimpresiones y Permisos

Resumen

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.

Resumen

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.

Introducción

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.

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

Protocolo

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

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

Resultados

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

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

Discusión

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

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

Divulgaciones

Los autores no tienen nada que revelar.

Agradecimientos

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

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

Materiales

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

Referencias

  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.

Reimpresiones y Permisos

Solicitar permiso para reutilizar el texto o las figuras de este JoVE artículos

Solicitar permiso

Explorar más artículos

ComportamientoProblema 156Aprendizaje ProfundoAn lisis de ComportamientoRedes Neuronales ConvolucionalesAprendizaje Autom ticoAn lisis Cinem ticoAn lisis AutomatizadoComportamiento AnimalComportamiento HumanoLlegar a TareasDatos de ImagenDatos de VideoCinem tica 3D

This article has been published

Video Coming Soon

JoVE Logo

Privacidad

Condiciones de uso

Políticas

Investigación

Educación

ACERCA DE JoVE

Copyright © 2025 MyJoVE Corporation. Todos los derechos reservados