Este repositorio es la biblioteca backend de nuestra aplicación basada en GUI: MOTHe-GUI
Mothe es una biblioteca PYPI para detectar y rastrear múltiples animales en un entorno heterogéneo. MOTHe es un repositorio basado en Python y utiliza la arquitectura de red neuronal convolucional (CNN) para la tarea de detección de objetos. Toma una imagen digital como entrada y lee sus características para asignarle una categoría. Estos algoritmos son algoritmos de aprendizaje, lo que significa que extraen características de las imágenes utilizando grandes cantidades de datos de entrenamiento etiquetados. Una vez entrenados los modelos CNN, estos modelos se pueden utilizar para clasificar datos novedosos (imágenes). MOTHe está diseñado para ser genérico, lo que permite al usuario rastrear objetos de interés incluso en un entorno natural.
MOTHe puede automatizar todas las tareas asociadas con la clasificación de objetos y se divide en 5 métodos dedicados a las siguientes tareas:
Configuración del sistema : La configuración del sistema se utiliza para configurar MOTHe en el sistema de los usuarios. Detalles básicos como la ruta al repositorio local, la ruta al video que se procesará, el tamaño del individuo que se recortará, la cantidad de fotogramas que se omitirán mientras se ejecuta la detección o el seguimiento (para reducir el tiempo de cálculo/para ejecutar un caso de prueba) y el tamaño del cuadro delimitador que se dibujará durante la fase de detección.
Generación de conjuntos de datos : la generación de conjuntos de datos es un paso crucial hacia la detección y el seguimiento de objetos. El esfuerzo manual necesario para generar la cantidad necesaria de datos de entrenamiento es enorme. La clase de generación de datos y el ejecutable automatizan en gran medida el proceso al permitir al usuario recortar la región de interés con simples clics en una GUI y guarda automáticamente las imágenes en las carpetas apropiadas.
Entrenamiento de la red neuronal convolucionaltrain_model : después de generar una cantidad suficiente de ejemplos de entrenamiento, los datos se utilizan para entrenar la red neuronal. La red neuronal produce un clasificador como salida. La precisión del clasificador depende de qué tan bien esté entrenada la red, lo que a su vez depende de la calidad y cantidad de los datos de entrenamiento (consulte la sección ¿Cuántos datos de entrenamiento necesito? ). Los diversos parámetros de ajuste de la red están fijos para facilitar el proceso a los usuarios. Esta red funciona bien para la clasificación binaria: objeto de interés (animales) y fondo. Esta canalización no admite la clasificación de clases múltiples.
Detección de objetos : este método realiza dos tareas clave: primero identifica las regiones de la imagen que potencialmente pueden tener animales, esto se llama localización; luego realiza la clasificación en las regiones recortadas. Esta clasificación se realiza utilizando una pequeña CNN (6 capas convolucionales). La salida se presenta en forma de archivos .csv que contienen las ubicaciones de los animales identificados en cada cuadro.
Seguimiento de objetos : el seguimiento de objetos es el objetivo final del MOTHe. Este módulo asigna identificaciones únicas a los individuos detectados y genera sus trayectorias. Hemos separado los módulos de detección y seguimiento, para que también pueda ser utilizado por alguien interesado sólo en los datos del recuento (por ejemplo, encuestas). Esta modularización también proporciona flexibilidad para utilizar algoritmos de seguimiento más sofisticados para los programadores experimentados. Usamos un código existente para la tarea de seguimiento (de la página de referencia de Github). Este algoritmo utiliza filtros de Kalman y algoritmo húngaro. Este script se puede ejecutar una vez que se generan las detecciones en el paso anterior. La salida es un archivo text{.csv} que contiene ID y ubicaciones individuales para cada cuadro. También se genera una salida de video con las identificaciones únicas de cada individuo.
MOTHe es un paquete de Python que utiliza varias otras bibliotecas de Python que podrían haber sido actualizadas. Por ello, es importante estar atentos a las versiones que descargamos/instalamos. Las versiones de Python recomendadas son las versiones estables de Python3.6 a Python3.7 (las últimas versiones LTS de Linux (por ejemplo, Ubuntu 20.04 Focal Fossa) se instalan con un Python3.8 estándar que no es compatible con MOTHe). Python3.8 no admite versiones de Tensorflow inferiores a 2.2 que MOTHe requiere para funcionar. Tenga en cuenta las versiones de algunas bibliotecas que se modifican con bastante rapidez y se utilizan para probar MOTHe muy recientemente: