Introducción
La soya es un arbusto tipo hierba, vertical, anual y con ramas, cuya altura varía entre los 30 centímetros y los 2 metros y su ciclo de vida puede oscilar entre los 80 y los 200 días, dependiendo de la variedad y las condiciones ambientales. Tanto las vainas, los tallos como las hojas de esta planta son pubescentes, es decir, están cubiertos de vellosidades. Además, sus semillas son de forma esférica, de tamaño medio y contienen niveles elevados de aceites y proteínas. En variedades mejoradas de soya, estas cifras pueden alcanzar hasta un 40 % de proteínas y un 22 % de aceite en relación con su peso en seco (Rosas y Young, 1991). La soya, de hecho, es el cultivo oleaginoso más extenso del mundo, pues existen alrededor de 130 millones de hectáreas de tierra que producen un total de 360 millones de toneladas (Roján-Herrera et al., 2022).
Sin embargo, como cualquier otro cultivo, la soya es vulnerable a las plagas -como los deshojadores, hijuelos y raspadores (Magallanes-Estala et al., 2014)-, y el daño causado por los insectos puede tener un impacto significativo en el rendimiento y la calidad de la cosecha. La magnitud de esta amenaza varía de un periodo de cultivo a otro, dependiendo de factores como el entorno, el tipo de insectos presentes, la ubicación geográfica y las condiciones climáticas. Por lo tanto, se recomienda llevar a cabo inspecciones visuales periódicas para detectar posibles infestaciones (Magallanes-Estala et al., 2014).
Ahora bien, en lo que respecta al reconocimiento de imágenes, en el contexto de la visión artificial, se puede definir como “la capacidad del software para identificar objetos, lugares, personas, escritura y acciones en imágenes. Las computadoras pueden usar tecnologías de visión artificial en combinación con una cámara y un software de inteligencia artificial para lograr el reconocimiento de imágenes” (Ramírez-González et al., 2009).
En el caso de las hojas de soya, conocer cuál es el mejor algoritmo para su reconocimiento no solo impacta directamente en la productividad agrícola, sino que también puede impulsar el progreso tecnológico, la sostenibilidad y la eficiencia a través de soluciones informáticas que beneficien a este sector. Por eso, el propósito del presnete trabajo es evaluar el costo computacional de los algoritmos SIFT, SURF, Harris, Shi-Tomasi, Snake y Chan-Vese mediante su comparación en el proceso de reconocimiento de imágenes de plantas de soya. Para eso, se plantea la siguiente hipótesis:
El costo computacional varía al utilizar diferentes algoritmos de reconocimiento de imágenes para la detección de hojas de plantas de soya.
En tal sentido, la pregunta de investigación formulada fue la siguiente:
Metodología
En la primera sección del apartado de metodología se describen los trabajos previos relacionados con el reconocimiento de hojas de soya. En la segunda sección se establecen las definiciones clave necesarias para una comprensión completa del artículo. A continuación, en la tercera sección, se presenta algunos algoritmos de reconocimiento de imágenes que pueden ser aplicados en el cultivo de la soya. Por último, en la cuarta sección se describen los experimentos realizados.
Trabajos relacionados
En cuanto a los antecedentes, Larese et al. (2011) desarrollaron una metodología que utiliza el análisis de imágenes de soya para detectar la cantidad de clorofila en las plantas, lo que sirve como indicador de la calidad fisiológica de las semillas. Este enfoque, además, permite la clasificación e identificación de diferentes variedades de cultivos de soya mediante un sistema automatizado de reconocimiento de imágenes foliares.
En otro estudio -realizado por Cáceres-Flores et al. (2015)- se menciona que existen trabajos especializados en el procesamiento de imágenes para la detección de plagas y el análisis morfológico de las plantas en cultivos de invernadero. Según los autores, se pueden detectar diferencias de color entre las hojas de plantas sanas e infectadas para identificar potencialmente la presencia de plagas a través de la segmentación de imágenes.
Además, se ha indagado en la detección temprana de plagas en plantas de pimiento utilizando el modelo de color RGB para procesar imágenes y examinar las características de las hojas y tallos. De esta manera se pueden identificar plagas agrupando las imágenes por color en función de los síntomas de enfermedad o infestación (Canty, 2019).
Asimismo, se ha implementado un sistema de detección de plagas mediante el procesamiento de imágenes en el cultivo de caña de azúcar (Begonia semperflorens). Específicamente, Lin et al. (2017) han investigado sobre el uso de drones para la inspección fotográfica de la cosecha de caña de azúcar, lo que representa una valiosa contribución a este campo.
Definiciones
Según la Real Academia de Ingeniería (s. f.), el costo computacional se refiere al valor en memoria y tiempo de ejecución de un sistema de información, aplicación, etc., a nivel de hardware, software y mantenimiento. Por otro lado, para la Real Academia Española (s. f.) una imagen (del latín imago) es una representación visual que muestra el aspecto de un objeto real o imaginario. Existen dos categorías principales de imágenes: las “mentales”, que las personas no perciben, pero existen en su interior, y las “creadas” o “repetidas”, que representan visualmente un objeto a través de diversos métodos, como dibujos, pinturas, fotografías o videos.
En un contexto más especializado, una imagen se define generalmente como una función f(x, y) bidimensional que representa la intensidad de la luz, donde “x” e “y” representan las coordenadas espaciales de un punto, mientras que f(x, y) es la intensidad o el nivel de gris de la imagen en ese punto. Cuando las coordenadas espaciales son finitas y la amplitud cubre un rango finito de valores, se denomina “imagen digital” (Sánchez-Prieto, 2014), la cual es una representación bidimensional de una imagen que utiliza bits, es decir, las unidades más pequeñas de información constituidas por dígitos binarios (0 y 1). Las computadoras y otros dispositivos digitales emplean imágenes digitales, que se pueden definir matemáticamente como una función bidimensional f(x, y), donde “f” y los valores de (x, y) son cantidades discretas finitas que representan un valor de píxel específico dentro de la imagen (Peña-Peñate et al., 2016).
Una imagen digital se puede representar mediante una matriz f(x, y) de tamaño M x N de la siguiente manera:
Los elementos de la matriz (píxeles), en una imagen monocromática típica (que opera en niveles de gris), tienen 2, 8 o 256 de intensidad, por lo que f(x, y) puede variar de 0 a 255 (0 es negro y 255 significa blanco); esto es lo que se puede representar como un carácter en la mayoría de los lenguajes de programación.
Un algoritmo, en cambio, se define como un conjunto de pasos que, cuando se realizan correctamente, conducen a un resultado (Gómez-Fuentes et al., 2014). Según el reconocimiento de imágenes, se refiere a la clasificación de diferentes objetos de imagen en función de sus descriptores. Los objetos detectados con descriptores similares se agrupan en una clase (Fernández-García, 2012). El costo computacional de un algoritmo se refiere a la cantidad de tiempo requerido para completar alguna operación; de igual manera, también tiene que ver con la memoria RAM utilizada para realizar dicha tarea (Trefethen y Bau, 1997).
Explicado lo anterior, es importante ofrecer un listado y una comparativa de algoritmos para medir su costo computacional, lo cual permitiría elegir la mejor opción según el costo y la confiabilidad.
Algoritmos de reconocimiento de imágenes
En el campo de la visión artificial uno de los problemas clásicos es el del reconocimiento o clasificación de imágenes, que consiste básicamente en tomar una o un conjunto de imágenes como entradas para generar como salida una etiqueta apropiada para dichas imágenes. En el caso de las hojas de soya, el objetivo es predecir si se trata de una hoja de soya, si tiene plaga y qué tipo de plaga presenta.
Para llevar a cabo esa tarea, el primer paso consiste en investigar y probar diversos algoritmos que ayuden en su ejecución. En el campo de la visión artificial, existen numerosas técnicas que varían según los objetivos que se deseen alcanzar. Algunas de ellas son las siguientes: métodos basados en características que detectan esquinas y manchas, y vectores descriptivos que se extraen alrededor de la vecindad de esos puntos. Asimismo, existen enfoques de aprendizaje automático mediante los cuales se aprenden las características de los datos de entrenamiento, es decir, dependiendo del problema se elige la técnica (Le, 12 de abril de 2018; Mallick, 2016).
Listado de algoritmos de reconocimiento de patrones
Los algoritmos vinculados con la visión por computadora y el reconocimiento de patrones son muy diversos y engloban muchas técnicas y objetivos (Rivera-Díez, 2015). A continuación, se procederá a nombrar y explicar diferentes algoritmos de detección de características en una imagen.
SIFT (Scale Invariant Features Transform)
El SIFT (Scale Invariant Features Transform) es un algoritmo de visión por computadora -difundido originalmente en 1999 por David Lowe- que se encarga de seleccionar características sobresalientes en imágenes en escala de grises. A partir de estas, se puede identificar una imagen en la base de datos y otra más grande con un número diferente de elementos dispuestos de manera desordenada (Ñauñay-Ilbay y Tipantuña-Córdova, 2013). El algoritmo descrito por Lowe consta de cuatro etapas:
Detección de límites en el espacio-escala: En esta etapa se buscan puntos de interés para toda la imagen y se consideran todas las escalas utilizando la diferencia gaussiana.
Ubicación precisa del punto clave: Para cada punto de interés anterior el modelo se ajusta para definir su ubicación y escala. Asimismo, se eligen puntos característicos (puntos clave), excepto aquellos que están cerca de los bordes o tienen poco contraste.
Asignación de dirección: A cada punto base se le asigna una o más direcciones en función de la dirección del gradiente local. Esta orientación, junto con la posición y la escala previamente calculada, permite que el descriptor sea invariante en estos tres casos.
Descripción de los puntos clave: Los gradientes de imagen locales se miden alrededor de cada punto característico y su histograma se usa para obtener una imagen de esa región que es resistente a cambios de luz significativos y pequeñas distorsiones de forma (Alegre y Fernández-Robles, 2016).
SURF (Speed Up Robust Feature)
El algoritmo SURF (Speed Up Robust Feature) es otro detector de variables locales. Fue presentado por primera vez por Bay et al. (2006) y se basa en el descriptor SIFT, aunque presenta algunos progresos como los siguiente:
Mayor velocidad de cálculo sin deterioro de rendimiento.
Cuando existe una transformación de la imagen presenta una mayor firmeza.
Los avances en esta área son factibles porque permiten la disminución de la complejidad del cálculo y la dimensionalidad de los vectores de características de puntos de interés conseguidos, aunque sigue siendo distinto y repetitivo (Aracil-López, 2012). A continuación, se listan las etapas en las que se divide:
Harris Corner Detector
El detector de Harris se funda en la búsqueda de esquinas. Estas características son muy insensibles a los cambios de rotación y escala. Las esquinas (o córneres) son regiones en una imagen con variaciones de intensidad en diferentes direcciones, lo que representa el fundamento para encontrar el punto de Harris. Filtrando la imagen con una ventana móvil en ocho direcciones, se obtienen tres tipos de región (Enebral-González, 2009). A continuación, se indican las etapas en las que se divide:
Shi-Tomasi Cornes Detector
En 1994 J. Shi y C. Tomasi realizaron pequeñas modificaciones y consiguieron mejores resultados que con el Harris Corner Detector. Este algoritmo propone los siguientes cambios respecto al anterior (Rivera-Díez, 2015).
Si el valor obtenido es mayor al valor umbral, significa que se encuentran en una esquina. Si se traza de nuevo el dibujo esquemático, quiere decir que se halla con la siguiente figura, en la que se puede ver a simple vista que solamente se considera esquina cuando los valores λ1 y λ2 se encuentran ambos por encima de λmin .
Listado de algoritmos de contornos activos
Los modelos de contorno activos con representación semiautomática de objetos en imágenes intentan modelar las funciones energéticas asociadas a estas fuerzas (externas e internas) para desarrollar curvas guiadas por fuerzas externas y por límites y fuerzas asociadas a la imagen. Por lo general, estos modelos se basan en la detección de bordes utilizando información recopilada de los gradientes de imagen (Jiménez-Carretero et al., 2011).
Contornos activos (Snakes)
En 2000, Ntalianis et al. escribieron un algoritmo para conseguir automáticamente los contornos iniciales de las Snakes a partir de mapas de profundidad obtenidos utilizando un algoritmo recursivo de árbol de expansión más corto (RSST) de múltiples resoluciones (Rodríguez-Rieiro, 2011). El algoritmo, una vez que se conoce la posición z del objeto de interés, devuelve una imagen de tres colores:
Blanco: Si el objetivo de análisis corresponde a una profundidad diferente a la profundidad del levantamiento.
Gris: Cuando el objetivo de análisis está cerca de la profundidad de investigación.
Negro: Cuando el contenido que se analiza corresponde a la profundidad de la investigación.
El contorno inicial está formado por los puntos que pertenecen al borde y están más cerca del límite entre las partes gris y blanca de la imagen anterior (Rodríguez-Rieiro, 2011).
Algoritmo Chan-Vese
El método de Chan-Vese ha sido de gran utilidad para lograr la segmentación de objetos o diferentes estructuras anatómicas en imágenes con una gran cantidad de ruido o donde los bordes de los objetos de interés no están definidos. Hay trabajos en la literatura que dividen en grupos las estructuras anatómicas (por ejemplo, el intestino delgado y los vasos sanguíneos), así como en áreas industriales para la producción de carburadores, llantas y otras partes de automóviles. En general, el algoritmo de Chan-Vese es un método de segmentación que tiene como objetivo minimizar la función de energía (Hernández-Juárez et al., 2017).
Experimentación
Para medir la efectividad de los algoritmos seleccionados se realizaron una serie de pruebas de acuerdo con el tipo de algoritmo, las cuales se ejecutaron con el siguiente ambiente de desarrollo: un equipo de cómputo que contaba con un Intel Core i5 7200U a 2.5 Ghz de procesador y 8 GB de memoria RAM sobre un Windows 10 de 64 bits como sistema operativo; en cuanto a las imágenes, la imagen 1 (principal) fue de 5184 x 2912 pixeles y 2.1 MB (figura 1), y la imagen 2 fue de 336 x 408 pixeles de 25.1 kB (figura 2); lo anterior se procesó usando el lenguaje de programación Python (versión 3. 6. 6) y el paquete OpenCV (versión 3. 4. 2).
Para la implementación del algoritmo SIFT los resultados se pueden observar en la figura 3, donde se obtuvo 1377 y 263 descriptores por cada imagen respectivamente (figuras 1 y 2). Estas se procesaron en un tiempo de 8782.877 milisegundos, con un consumo de memoria RAM de 46.16 MB (figura 3).
En cuanto al algoritmo SURF, se consiguieron 2553 y 153 descriptores por cada imagen respectivamente (figura 1 y 2), con un tiempo de 7004.71 milisegundos y un consumo de memoria RAM de 65.75 MB (figura 4).
En cuanto al algoritmo de Harris, se detectaron 46 esquinas en un tiempo de 3837.095 milisegundos, con un consumo de memoria RAM de 276.894 MB.
Referente al algoritmo de Shi-Tomasi, se destacaron 1000 esquinas en un tiempo de 3688.562 milisegundos con un consumo de memoria de 104.417 MB.
En relación con los algoritmos de contornos activos, Snake arrojó un tiempo de ejecución de 40 segundos y un consumo de memoria de 394.199 MB (figura 7).
En cuanto al algoritmo de Chan-Vese, se tuvo un tiempo de ejecución de 7.7 minutos y un consumo de memoria de 1890.929 MB.
Resultados
La tabla 1 resume los resultados alcanzados con los algoritmos SIFT y SURF.
DESCRIPTORES | ||||
---|---|---|---|---|
Algoritmo | Fig. 1 | Fig. 2 | Tiempo en ms | Consumo de memoria |
SIFT | 1377 | 263 | 8782.877 | 46.16 |
SURF | 2553 | 153 | 7004.71 | 65.75 |
Fuente: Elaboración propia
La tabla 2 muestra los resultados obtenidos con los algoritmos Harris y Shi-Tomasi.
PROCESAMIENTO FIG. 1 | |||
---|---|---|---|
Algoritmo | Num. De Corners | Tiempo en Ms | Consumo de memoria |
Harris | 46 | 3837.095 | 276.894 |
Shi-Tomasi | 1000 | 3688.562 | 104.417 |
Fuente: Elaboración propia
La tabla 3 refleja los resultados obtenidos en los algoritmos Snake y Chav-Vesse.
PROCESAMIENTO FIG. 1 | ||
---|---|---|
Algoritmo | Tiempo ms | Consumo de memoria |
Snake | 40 | 394.199 |
Chan-Vese | 424200 | 1890.929 |
Fuente: Elaboración propia
Las figuras 9 y 10 muestran el costo computacional en cuanto al consumo de tiempo de procesamiento en milisegundos (figura 9) y el consumo de memoria en MB (figura 10) para la obtención de los resultados de los algoritmos analizados.
Discusión
En un artículo similar de Ahmad et al. (2021) que aborda el procedimiento para clasificar y detectar la soya, se calcula el tiempo de ejecución de dicha actividad, y se puede observar que estos tiempos son ligeramente superiores a los presentados en el presente estudio.
Asimismo, en otro estudio realizado por Razfar et al. (2022), se propone un método de reconocimiento de la soya, para lo cual se mide tanto el consumo de memoria RAM como el tiempo necesario para llevar a cabo estas tareas. En síntesis, se evidencian tiempos similares a los presentados en esta investigación, aunque el uso de memoria es notablemente superior.
Como se ha observado durante la experimentación, existen diversos algoritmos que proporcionan diferentes características de las imágenes según las necesidades planteadas. En tal sentido, todos ellos tienen ventajas y desventajas dependiendo de los resultados que se busquen destacar.
Este trabajo de investigación tuvo como objetivo presentar algunos de esos algoritmos disponibles para el reconocimiento de imágenes, por lo que se puede indicar que la elección uno u otro dependerá de las necesidades específicas y del contexto donde se apliquen.
Finalmente, en lo que respecta al costo computacional, de acuerdo con los resultados obtenidos en cuanto al consumo de tiempo y memoria RAM, el algoritmo más destacado en ambos aspectos fue el Shi-Tomasi, de ahí que podría ser la mejor elección para el reconocimiento de hojas de soya.
Conclusiones
En el presente trabajo se explicó el uso de diferentes tipos de algoritmos para el reconocimiento de hojas de soya. Esto se consiguió después de una exhaustiva investigación del estado de la cuestión con la finalidad de probar solo aquellos algoritmos reconocidos y recomendados por la literatura científica.
En este sentido, cabe indicar que se analizaron, programaron y se sometieron a prueba dichos algoritmos con diferentes imágenes para medir su costo computacional, lo cual arrojó resultados dispares. Aun así, se puede señalar que el algoritmo Shi-Tomasi puede ser elegido para reconocer hojas de soya, pues presenta un costo computacional aceptable para la tarea encomendada.
Futuras líneas de investigación
Como líneas de investigación se podrían agregar y probar más algoritmos de reconocimiento de imágenes, así como otras técnicas computacionales para detección de hojas de soya. Asimismo, se pueden probar los algoritmos que presenten mejor rendimiento extrapolar para reconocer no solo hojas de soya, sino otros tipos de plantas (p. ej., maíz, frijol, etc.).