trabajo fin de grado ingeniería electrónica, robótica y...
TRANSCRIPT
-
carr Equation Chapter 1 Section 1
Trabajo Fin de Grado
Ingeniería Electrónica, Robótica y Mecatrónica
Sistema automatizado de reconocimiento de
malas hierbas en cultivos de algodón basado en
aprendizaje
Autor: Jesús Piña Muñoz
Tutor: Federico Cuesta Rojo
Dep. Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2018
-
ii
-
iii
Trabajo Fin de Grado
Ingeniería Electrónica, Robótica y Mecatrónica
Sistema automatizado de reconocimiento de malas
hierbas en cultivos de algodón basado en
aprendizaje
Autor:
Jesús Piña Muñoz
Tutor:
Federico Cuesta Rojo
Profesor titular
Dep. Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2018
-
iv
-
v
Trabajo Fin de Grado: Sistema automatizado de reconocimiento de malas hierbas en cultivos de algodón
basado en aprendizaje
Autor: Jesús Piña Muñoz
Tutor: Federico Cuesta Rojo
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
-
vi
Sevilla, 2018
El Secretario del Tribunal
-
vii
-
viii
Agradecimientos
A mi familia por permitirme realizar mis estudios y su constante apoyo,
A mis amigos por siempre estar disponible para cualquier ayuda que necesite,
Y a Federico, por guiarme en todo momento.
-
ix
-
x
Resumen
Este trabajo se basa en el reconocimiento automático de las malezas típicas que se encuentran en los cultivos
de algodón. Concretamente se van a reconocer dos de éstas malas hierbas, Chenopodium Album, conocido
vulgarmente como Cenizo Blanco y Chrozophora Tinctoria, conocido como Cenizo Tornasol. Para ello se ha
implementado un vehículo equipado de un sistema de cámaras capaces de identificar estas plantas y de seguir
a una persona por el color de su camiseta. Se exponen los resultados de aplicar las técnicas necesarias para
obtener un buen rendimiento, se obtienen conclusiones y se proponen futuras mejoras.
-
xi
-
xii
Abstract
The aim of this work is to automatically identify the weeds growing in cotton plantations. By generating an
alarm sing, the system is able inform the workers, and tell them to remove the parasitic plant in case that it has
not already been removed. The device follows the trajectory marked by the worker. The results obtained when
the techniques required to obtain an outstanding performance are applied are shown. Finally, conclusions are
presented and some future improvements are suggested.
-
xiii
-
xiv
Índice
Agradecimientos viii
Resumen x
Abstract xii
Índice xiv
Índice de Tablas xvi
Índice de Figuras xvii
Notación xx
Conceptos xxi
1 Introducción 11 1.1. Antecedentes 11 1.2. Motivación 11 1.3. Objetivo 12 1.4. Estructura del trabajo 12
Estado del Arte 13 2.1. La Robótica en la Agricultura 13
2.2. Visión por Computador 15 2.3. Conclusión 16
3 Técnicas de Reconocimiento de Imágenes 18 3.1. Características de Haar 18
3.1.1. Imagen Integral 20 3.1.2. Adaboost 21
3.1.3. Método de la Ventana Deslizante 28 3.1.4. Cascada de Clasificadores 30 3.1.5. Detalles de Implementación 32 3.2. LBP 33
4 Diseño Hardware 39 4.1. Introducción 39
4.2. Raspberry Pi 39 4.3. Cámaras 41
4.4. Chasis 42
4.5. Controlador de Motores 42
4.6. Zumbador 43
4.7. Baterías 43
5 Diseño Software 44 5.1. Introducción 44 5.2. Características de Haar 44 5.3. Python 44
https://es.wikipedia.org/wiki/Raspbian
-
xv
5.4. Reconocimiento Automático de Malas Hierbas 45 5.4.1. Introducción 45 5.4.2. Característiscas de Haar 45 5.1.2.1. Imágenes Positivas 45 5.1.2.2. Imágenes Negativas 46 5.1.2.3. Entrenamiento 48 5.1.2.4. Conclusiones 52 5.4.3. LBP 53
6 Sistema de Seguimiento 57
7 Alarmas 64
8 Experimentos 65 8.1. Introducción 65
8.2. Sistema de Seguimiento 65 8.3. Sistema de Reconocimiento 65 8.4. Sistema Completo 66
9 Conclusiones 67 9.1. Problemas 67
9.2. Futuros Desarrollos 67
9.3. Conclusión 67
Bibliografía 69
-
xvi
ÍNDICE DE TABLAS
4.1 Diferencias entre Haar y LBP 38
5.1 Diferencia entre clasificadores con y sin imágenes de Cenizo Tornasol como negativas 47
5.2 Diferencia entre clasificadores modificando el número de imágenes negativas y positivas 50
5.3 Diferencia entre clasificadores modificando el número de etapas 51
5.4 Diferencia de resultados entre Haar y LBP 55
-
xvii
ÍNDICE DE FIGURAS
3.1 Filtros de Haar 18
3.2 Imagen Digital 18
3.3 Interpretación filtros de Haar 19
3.4 Diferentes escalas filtros de Haar 19
3.5 Aplicación imagen integral 20
3.6 Ecuación de la intensidad de un píxel en la imagen integral 20
3.7 Descripción del cálculo del valor de un píxel en la imagen integral 20
3.8 Ejemplo de un conjunto de características 21
3.9 Primer clasificador 21
3.10 Nuevo peso de las muestras 22
3.11 Segundo clasificador 22
3.12 Nuevo peso de las muestras 22
3.13 Tercer clasificador 22
3.14 Combinación de clasificadores 23
3.15 Árbol de decisión binario 23
3.16 Resultado del árbol de decisión 23
3.17 Árbol de decisión binario 23
3.18 Resultado del árbol de decisión inversa 23
3.19 Parámetro alfa 24
3.20 Resultado si α=1 24
3.21 Resultado si α=-1 24
3.22 Muestras extraidas de los filtros de Haar y ordenadas en función de f(x) 24
3.23 Umbral para θ=50 25
3.24 Ejemplos mal clasificados 25
-
xviii
3.25 Umbral para θ=50 25
3.26 Umbral para θ=40 26
3.27 Resultado de aplicar muchos filtros de Haar 26
3.28 Actualización del peso relativo 26
3.29 Ejemplo clasificador débil 27
3.30 Actualización peso relativo 27
3.31 Resultado de la clasificación 27
3.32 Desplazamientos ventana deslizante 28
3.33 Ventanas donde se encuentra el objetivo 29
3.34 Tamaño de la ventana canónica 29
3.35 Diferentes tamaños del objetivo 30
3.36 Todas las posibles ventanas 30
3.37 Cascada de clasificadores 30
3.38 Frontera de decisión para un conjunto de muestras 31
3.39 Factor de margen ‘s’ 31
3.40 Nuevo clasificador aumentando las características de Haar 32
3.41 Ecuación de normalización de las imágenes 33
3.42 Ejemplo para el cálculo del código LBP 33
3.43 Resultado para la comparación de los píxeles 34
3.44 Resultado del código LBP para el píxel central 34
3.45 Resultado del código LBP en un píxel 34
3.46 LBP invariante ante nieles de gris 35
3.47 LBP invariante ante traslación 35
3.48 Vecindad circular 35
3.49 Histograma LBP 36
3.50 Reconocimientos indeseados en LBP 36
3.51 Histograma de cada bloque 37
3.52 Diferencias en los histrogramas de los bloques en cada imagen 37
3.53 Adicción de bloques para el cálculo del histograma 38
4.1 Esquema conexionado 39
4.2 Esquema de pines Raspberry Pi 3 model b 40
4.3 Chasis del vehículo 42
4.4 Partes del módulo L298N 44
5.1 Muestras enmarcadas para realizar el entrenamiento 46
5.2 Resultado de un clasificador realizado para Cenizo Blanco aplicado a Cenizo Tornasol en el que no se
han introducido imágenes de Cenizo Tornasol como negativas 47
5.3 Resultado de otro clasificador con las mismas características pero donde sí se han introducido imágenes
de Cenizo Tornasol como negativas 47
5.4 50 positivas-100 negativas 48
5.5 100 positivas-200 negativas 48
-
xix
5.6 300 positivas-600 negativas 49
5.7 500 positivas-1000 negativas 49
5.8 700 positivas-1400 negativas 49
5.9 Clasificador con 10 etapas 51
5.10 Clasificador con 20 etapas 51
5.11 Prueba 1 53
5.12 Prueba 2 54
5.13 Prueba 3 54
5.14 Prueba 4 55
6.1 Imagen tomada por la cámara encargada del seguimiento 57
6.2 Resultado de aplicar la máscara 58
6.3 Máscara con ruido 58
6.4 Máscara tras realizarle operaciones morfológicas 59
6.5 Ecuación para el cálculo de los momentos 59
6.6 Ecuación punto central 59
6.7 a) Imagen capturada por la cámara b) Imagen tras aplicar la máscara 60
6.8 Desglose del tamaño de la imagen 61
6.9 Recta de velocidad para el motor izquierdo 62
6.10 Recta de velocidad para el motor derecho 62
6.11 Reconocimiento del pie 63
-
xx
Notación
DC
DPI
GHz
GND
I+D
IMU
LBP
Mm
mA
ms
PWM
RFID
RGB
TFG
TIC
v
∑
∊
Corriente Continua
Puntos Por Pulgada
Gigahercio
Tierra
Investigación y Desarrollo
Unidad de Medición Inercial
Local Binary Patterns (Patrón Binario Local)
Milímetros
Miliamperios
Milisegundos
Modulación por Ancho de Pulsos
Identificación por Radio Frecuencia
Rojo,Verde y Azul
Trabajo Fin de Grado
Tecnologías de la Información y Comunicaciones
Voltios
Sumatorio
Pertenece
-
xxi
Conceptos
Compilador
GNU/Linux
Hardware
IDLE
Lenguaje
interpretado
Pines GPIO
Proceso
Software
Software Libre
Transductor
Electroacústico
Coma Flotante
Wavelet de Haar
Programa informático que traduce un programa que ha sido escrito en un lenguaje de
programación a un lenguaje común.
También conocido como Linux, es un sistema operativo libre tipo Unix;
multiplataforma, multiusuario y multitarea.
Partes físicas tangibles de un sistema informático.
Entorno de desarrollo que permite editar y ejecutar los programas.
Es un lenguaje de programación para el que la mayoría de sus implementaciones
ejecuta las instrucciones directamente, sin una previa compilación del programa a
instrucciones en lenguaje máquina.
Pines genéricos, cuyo comportamiento, incluyendo si es un pin de entrada o salida, se
puede controlar por el usuario en tiempo de ejecución.
Unidad de actividad que se caracteriza por la ejecución de una secuencia de
instrucciones, un estado actual, y un conjunto de recursos del sistema asociado.
Soporte lógico de un sistema informático, que comprende el conjunto de los
componentes lógicos necesarios que hacen posible la realización de tareas específicas.
Se refiere al conjunto de software que por elección manifiesta de su autor, puede ser
copiado, estudiado, modificado, utilizado libremente con cualquier fin y redistribuido
con o sin cambios o mejoras.
Aquel dispositivo que transforma la electricidad en sonido, o viceversa.
Es una forma de notación científica usada en los microprocesadores con la cual se
pueden representar números racionales extremadamente grandes y pequeños de una
manera muy eficiente y compacta, y con la que se pueden realizar operaciones
aritméticas.
Secuencia de funciones matemáticas.
https://es.wikipedia.org/wiki/Software_librehttps://es.wikipedia.org/wiki/Programa_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Proceso_de_traducci%C3%B3n_de_programashttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Sistema_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Compiladorhttps://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttps://es.wikipedia.org/wiki/Sistema_l%C3%B3gicohttps://es.wikipedia.org/wiki/Sistema_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Softwarehttps://es.wikipedia.org/wiki/Electricidadhttps://es.wikipedia.org/wiki/Sonido
-
11
-
11
Capítulo 1
Introducción
1.1. Antecedentes
Uno de los mayores sectores a automatizar es el campo. La invención del tractor ya supuso un hecho muy
importante en la reducción de mano de obra y tiempo invertido por las cuadrillas de trabajadores que tenían
que sembrar y recolectar a mano decenas de hectáreas a lo largo de cada temporada de siembra durante el año.
A día de hoy, el trabajo en el campo sigue siendo muy manual aunque cada vez podemos ver la introducción
de más maquinaria para ahorrar tiempo y esfuerzo a los agricultores y jornaleros. Un ejemplo es la cada vez
más usual cosechadora de aceitunas con la que se tarda en recolectar un olivo con una sola persona menos de
un minuto a diferencia de cuando nuestros abuelos tardaban más de 10 minutos y trabajaban 5 jornaleros
juntos al mismo tiempo en el mismo olivo.
Un trabajo que sigue siendo muy manual es quitar las malas hierbas al algodón. Es necesario recorrer todas las
hectáreas del terreno cultivado andando una vez el algodón ha empezado a crecer para quitar las plantas o
hierbas que no lo sean para que no le quite los nutrientes de la tierra a la planta que realmente interesa al
agricultor, que en este caso es el algodón. Dependiendo de la altura a la que esté el algodón la cuadrilla se
suele coger entre 3 y 5 surcos de algodón para cada uno de los jornaleros. Como a veces es difícil tener
controlado tantos surcos andando a un ritmo alto o debido a que la altura del algodón dificulta la visión del
terreno, a los jornaleros se les pueden quedar algunas malas hierbas sin quitar. Este hecho da como resultado
una mala estética del terreno cultivado de algodón porque aunque el jornalero no haya sido capaz de reconocer
esta mala hierba, es posible que resalte desde lejos y la confianza en las personas encargadas de quitar estas
plantas disminuya. En esta idea de basa este trabajo.
1.2. Motivación
Durante los últimos veranos he estado trabajando quitando estas malas hierbas en el algodón para la empresa
para la que trabaja mi padre. Sin tener ninguna experiencia anterior en este asunto, es complicado reconocer
todas las plantas por diferentes motivos como puede ser la velocidad que se debe llevar para poder recorrer las
hectáreas cultivadas en un plazo aceptable o que muchas de estas plantas son muy parecidas al algodón, como
el Xanthium strumarium conocido vulgarmente como caíllo o cadillo que en ciertas condiciones es muy difícil
reconocer y hay que tener cierta experiencia para reconocerlo sin problemas. Debido a que estoy cursando el Grado de Ingeniería Electrónica, Robótica y Mecatrónica en la especialidad de
Robótica y Automática quería realizar un proyecto relacionado a la robótica. Llevaba algunos años queriendo
aprender a usar Raspberry Pi porque después de aprender a usar Arduino y conocer sus limitaciones, quería
dar un paso hacia adelante a otra plataforma que te permita realizar proyectos más ambiciosos. Además
siempre he sentido curiosidad acerca de la visión artificial porque no entendía como se podría adquirir,
analizar y comprender las imágenes del mundo real para aplicarlo a lo que nos interese. Además de estos dos
aspectos enunciados, durante los meses que estuve trabajando en el algodón estuve pensando qué podría hacer
para sustituir este trabajo humano por robots. Entonces, juntando el hecho de que quería aprender acerca de
Raspberry Pi y Visión Artificial y que un proyecto que quería realizar es lo anteriormente expuesto acerca de
quitar estas malas hierbas dio como resultado este trabajo de TFG.
-
12
1.3. Objetivos
El objetivo es crear un sistema capaz de reconocer las plantas que no son algodón en plantaciones de algodón
y avisar al jornalero para que la quite en caso de que no lo haya hecho dicha persona previamente. En un principio la idea principal del proyecto era crear un robot que fuera capaz de reconocer y eliminar de
raíz estas plantas, pero tras analizarlo y concluir que el robot no iba a tener la suficiente fuerza, al menos con
mis medios, para poder arrancarlas del suelo. Tras este análisis decidí que solo avisara de que había alguna
mala hierba sin quitar en el caso de que hubiera alguna. Es muy importante que las malas hierbas se quiten
también con la raíz, es decir, no se debería de cortar ya que si esto ocurre la planta va a continuar creciendo y
al cabo de los días va a estar igual y mientras tanto va a continuar quitando nutrientes al algodón, que es la
planta que nos interesa que crezca lo más rápido posible.
1.4. Estructura del trabajo
En cuanto a la estructura seguida, en primer lugar se va a realizar un estudio del estado del arte de la
introducción de la robótica en la agricultura y de las técnicas de visión artificial usadas en la actualidad. Posteriormente, vamos a describir todo el software utilizado y por qué se han usado estos elementos.
En el siguiente bloque vamos a explicar cómo hemos desarrollado el hardware, describiendo los métodos
utilizados y analizando diferentes alternativas.
Los últimos bloques estarán dedicados a la realización de experimentos, extraer conclusiones a partir de los
resultados obtenidos y describir posibles mejoras o aplicaciones futuras.
-
13
Capítulo 2
Estado del Arte
2.1. La Robótica en la Agricultura La robótica aplicada a la agricultura se encuentra en un estado de desarrollo avanzado, con algunas
realizaciones ya plenamente comerciales y otras validadas a nivel de prototipo [1]. La inminente
necesidad de aumentar la producción sin aumentar los recursos y minimizando el impacto ambiental
demanda dar el paso hacia la automatización de la agricultura donde la robótica agrícola tendrá un
protagonismo destacado.
Si bien las investigaciones aplicadas sobre los robots agrícolas comenzaron hace más de 25 años, ha sido
recientemente cuando el desarrollo de diferentes ‘tecnologías facilitadoras’ asociadas a las TIC ha
permitido un progreso sustancial en sus desarrollos, consiguiendo en los últimos años que, de acuerdo a
los datos recogidos por la International Federation of Robotics [2], las aplicaciones de la robótica en
agricultura y ganadería sean las segundas en número de ventas de robots de servicios profesionales, tras
las aplicaciones en defensa y seguridad.
¿Qué razones pueden justificar esta destacada posición de la robótica agrícola? ¿Está justificada la robotización de la agricultura?
La reciente Expo Milano 2015 tuvo por lema ‘Feeding the Planet, Energy for Life’ (Alimentar el planeta,
energía para la vida). En ella se recordó de nuevo la necesidad de aumentar la producción agrícola en un
60 o 70% antes del 2050 [3]. Sin embargo, los recursos naturales disponibles (suelo cultivable, agua,
energía) se encuentran muy cerca de su límite. Por ello, se hace imprescindible, que a la vez que se
aprovecha de la mejor manera posible lo producido, evitando su desperdicio, se mejore el rendimiento de los recursos, considerando éstos de manera integral.
La mecanización de la agricultura en el siglo XIX y la introducción del motor de combustión en el siglo
XX, permitieron un aumento singular de la producción agrícola [4], a pesar de la fuerte disminución de la
mano de obra dedicada a la agricultura [5]. No obstante, este aumento de la producción se ha realizado con un notable derroche de los recursos, que no es sostenible en el tiempo.
La denominada Agricultura de Precisión contribuye a optimizar el uso de los recursos. Se basa en utilizar
el recurso adecuado en el lugar y momento preciso, evitando de este modo aplicar, por ejemplo, un riego
o producto fitosanitario en una dosis excesiva o en un lugar innecesario. Para ello utiliza una metodología
similar a la utilizada frecuentemente por los seres vivos y que, a su vez, inspira el funcionamiento de los
sistemas automáticos de control industrial: Medir, Procesar la información y Actuar, reiterando este proceso de manera continua, para así conseguir que los resultados se acerquen a los objetivos.
La eficacia de este modo de funcionamiento precisa conocer con detalle las necesidades de los cultivos y
poder de manera adecuada. Estas funciones, que a pequeña escala pueden ser realizadas de manera
manual, precisan de sistemas automáticos para poder ser realizadas a las escalas de producción que se
demanda actualmente. Es aquí donde los robots agrícolas, entendidos como maquinaria con capacidad de
desenvolverse en el entorno agrícola para capturar información o actuar sobre el terreno de manera autónoma o semiautónoma, encuentran su justificación.
La robótica agrícola está, a día de hoy, en fase de prototipo avanzado pero aún no alcanza la madurez
necesaria como para abordar su implantación real y extendida en el sector [6]. A continuación se revisan
algunas de las tecnologías críticas en el desarrollo de la robótica agrícola:
Sistemas de Navegación: Puesto que se trata medir o actuar sobre localizaciones precisas, la primera
-
14
necesidad a ser cubierta por un robot que se mueve en un entorno agrícola es la de navegación. Aquí es
significativamente diferente la tecnología a utilizar en el caso de agricultura de interiores o exteriores.
Así, en el caso de robots para invernadero, puede contemplarse desde el uso de robots que se desplazan
por railes, facilitando enormemente su localización, hasta la inclusión de marcas o balizas en el entorno
(ópticas, RFID, etc.), que pueden simplificar la tareas de localización del robot. Por el contrario, el uso de
los sistemas de navegación por satélite, como el conocido GPS, es normalmente insuficiente para el
sistema de navegación de los robots agrícolas de exteriores.
En ambos casos la navegación del robot suele verse apoyada por sistemas de medida inercial (IMU) y por
sistemas de telemetría que, con los correspondientes algoritmos, consiguen precisiones suficientes para el
posicionamiento del robot. Toda esta tecnología está implantada en otros sectores y en fuerte proceso de
mejora y crecimiento.
Sistemas de Visión por Computador: La visión por computador 2D y 3D, tanto en espectro visible
como en otros espectros, constituye un pilar fundamental en el uso de robots en agricultura, tanto para las
tareas de captura de información que permite la toma de decisiones (estado vegetativo, necesidades
hídricas o de nutrientes, presencia de plagas, etc.), como para ser usado como instrumento de ayuda al
posicionamiento que permite ubicar la posición relativa entre el robot y el entorno sobre el que debe
actuar (cosechado, localización de maleza, seguimiento de línea de cultivo, etc.). Las oclusiones entre los
objetos sobre los que actuar, como por ejemplo frutos dentro de la masa foliar, la falta de homogeneidad y
por ello difícil clasificación de los objetos presentes en la imagen y la variabilidad de las condiciones de
iluminación, suponen una notable dificultad que limita aún las posibilidades de los robots tanto en
exteriores como en interiores.
Plataformas: Mientras que en el caso de robots de interiores las plataformas que transportan y posicionan
los sistemas de medida o actuación son similares a las utilizadas en otras aplicaciones (transporte en
almacén, vigilancia etc.) en el caso de robots de exteriores, las características del terreno suponen un
factor a considerar. Muchos de los sistemas robóticos para ser aplicados en agricultura de exteriores se
han basado en la ‘robotización’ de determinada maquinaria agrícola, incorporando los sensores necesarios
para su navegación autónoma (los ya citados GPS, IMU, telemetría, etc.). Sin embargo, la tendencia
actual apunta al desarrollo de ‘pequeños’ robots agrícolas, más flexibles en cuanto a su cometido, con
mejor capacidad de maniobra, robustez colectiva ante averías (el conjunto puede seguir operando aun si
uno de ellos se detiene) y con un menor impacto en la compactación de terreno. Asimismo el trabajo en
cultivos de difícil accesibilidad es mejor abordarlo con pequeños robots mejor que con máquina de medio
o gran tamaño.
Sistemas de Manipulación: La manipulación, generalmente asociada al cosechado, tanto en invernadero,
como en frutales, supone uno de los retos más complejos por resolver, pues hay que combinar un agarre
estable sobre objetos de geometría variable, con una adecuada velocidad que haga eficiente la
automatización del proceso. Los avances que se están haciendo en el desarrollo de ‘soft robotics’ abren
una nueva vía al considerar el uso de garras deformables de material no rígido, que pueden abrazar de
manera delicada y firme a la vez frutos de diferentes formas. En todo caso este sigue siendo un tema
abierto a la I+D.
Seguridad: Los espacios de trabajo donde los robots agrícolas actuales deben trabajar, son compartidos
por operarios y en algunos casos por animales. Además el entorno no está exento de obstáculos, en
ocasiones ocultos, que ponen en riesgo al robot. Por ello es preciso incorporar en el robot sistemas que
detecten los riesgos (presencia de objetos estáticos o móviles) y los minimicen. Este objetivo es
plenamente compartido por la robótica industrial actual, en la que se ha pasado de compartimentar los
espacios de trabajo de operarios y máquinas a trabajar de manera simultánea y colaborativa sobre las
mismas piezas, recurriendo para ello a la captación e interpretación del entorno mediante sensores de
visión, fuerza y distancia y a algoritmos que reaccionan de manera rápida ante un contacto.
Al ser la robótica agrícola una tecnología todavía en desarrollo, pueden considerarse multitud de aplicaciones
potenciales. Sin embargo, hay algunas que, habiendo alcanzado un mayor grado de madurez, pueden ser
descritas de una manera tangible y realista:
Robótica aérea: Los robots aéreos, conocidos popularmente Drones, ha experimentado una enorme evolución
-
15
en los últimos años y se ha permitido su incorporación de manera intensa de esta tecnología en la agricultura.
Son varias las tareas que la robótica aérea puede realizar en este sector, pero su mayor uso se dedica a
operaciones de captura de información. Para ello, se incorpora a la plataforma aérea instrumentos de captura
de información, en la mayor parte de los casos consistentes en cámaras en diferentes espectros, pero también
puede considerarse la utilización de sensores de parámetros ambientales como humedad, temperatura,
concentración de gases, etc.
Los robots, sobrevuelan la zona a explorar a la vez que capturan la información que, una vez procesada,
permite conocer las necesidades de nutrientes de una sola planta, el estado de irrigación del cultivo, la
presencia de malas hierbas, cómo detectar fugas en el sistema de riego o estimar las dimensiones de los
cultivos leñosos. El uso de robots aéreos para estas tareas, que alternativamente podrían ser realizadas por
vuelos tripulados o por imágenes de satélite, presenta frente a estas opciones las ventajas de la gran
disponibilidad temporal, la disminución de costes, el vuelo a baja altura y por ello gran resolución y la
posibilidad de tomar datos tanto sobre grandes áreas, como sobre zonas específicas, si así se precisa. Otra
área en la que la inmediatez y resolución que aportan los robots aéreos en la captura de información desde
el aire es ventajosa es en la evaluación de daños tras desastre, para hacer la correcta tasación de los seguros de riesgo.
Por otro lado, es posible utilizar estos robots aéreos para tareas de fumigación a baja altura, lo que de
nuevo aporta las ventajas de la precisión y la focalización del tratamiento.
Robots terrestres: Los Vehículos Terrestres Autónomos (UGV) llevan aplicándose a la agricultura desde
los años 90, basándose mayoritariamente en la ‘robotización’ de maquinaria agrícola convencional,
abordando tareas de laboreo, fumigación y cosechado. Las nuevas tendencias apuntan a flotas de
pequeños tractores robotizados o robots específicos que, adecuadamente coordinadas, pueden trabajar de
manera ininterrumpida con mayor eficacia y robustez. Para ello, junto a los problemas de navegación,
locomoción y otros ya comentados, se deben incorporar técnicas de comunicaciones y cooperación, que
permitan pasar de un agregado de robots trabajando sobre el mismo espacio a un equipo bien integrado de
robots (enjambres). Los principales fabricantes de maquinaria agrícola tienen prototipos en este sentido,
pudiendo estar cerca su comercialización.
2.2. Visión por Computador La visión por computador o visión artificial es el conjunto de herramientas y métodos que permiten obtener,
procesar y analizar imágenes del mundo real con la finalidad de que puedan ser tratadas por un ordenador.
Esto permite automatizar una amplia gama de tareas al aportar a las máquinas la información que necesitan
para la toma de decisiones correctas en cada una de las tareas en las que han sido asignadas [7].
Una de las ventajas que se obtienen del aprendizaje automático es que consigue llevar a cabo la distinción de
forma automática de los patrones haciendo uso de algoritmos matemáticos. Este tipo de técnicas se usan para
la clasificación de las imágenes o de la toma de decisiones y, a grandes rasgos, se pueden dividir en dos tipos
principales, que son las supervisadas y las que no están supervisadas.
Aprendizaje supervisado: En este caso, se trata de un tipo de aprendizaje que permite al ordenador aprender mediante los patrones
que le han sido proporcionados de forma previa. Esto se lleva a cabo ofreciéndole a la
computadora patrones que han sido previamente etiquetados, es decir, se le ofrece información que puede
interpretar por sí mismo.
Aprendizaje no supervisado: Por el contrario, en el caso del aprendizaje no supervisado, lo que se lleva a cabo es un entrenamiento de
la computadora mediante patrones que no han sido etiquetados ni clasificados con anterioridad. Lo que
implica un mayor esfuerzo, pero permite al ordenador identificar los patrones por sí mismo en el futuro.
Las principales funciones de la Visión Artificial son:
-
16
Detección de objetos: Estos aprendizajes permite la detección de objetos ya que, cuando el ordenador recibe la información
visual, puede relacionarla con los patrones aprendidos con anterioridad y, de esta forma, identificar los
objetos y diferenciarlos.
Análisis de vídeo: Así mismo, al tener la capacidad de identificar cada uno de los objetos, esta capacidad se puede utilizar
para llevar a cabo un análisis de vídeo. Esto es especialmente útil a la hora de aplicarlo en estrategias de
seguridad y control, como la identificación de patrones concretos y búsqueda de los mismos dentro de un
sistema de video.
Los sistemas de visión 3D artifical se ocupan de proporcionar a un ordenador un sistema que funciona de
manera similar a como lo haría la visión humana pero en un proceso digitalizado. De hecho, estos sistemas
pueden imitar la visión humana mediante la creación de un modelo tridimensional, ya se trate de un objeto
aislado o de una escena que se muestra de manera conjunta.
Aplicaciones de la visión artificial
Automoción: En el sector de la automoción el uso de sistemas de visión artificial industrial se corresponde
principalmente con las inspecciones en la fabricación y el ensamblaje de todas las piezas de los vehículos.
Además, hay que tener en cuenta que tareas como la inspección de estampación, mecanizado, pintura y
rebabas dependen directamente de equipos de visión artificial que supervisan todo el proceso.
Alimentación: La visión artificial industrial es un elemento fundamental en el control de calidad de los productos
alimenticios, especialmente en las fases finales. Tanto la selección de frutas como el correcto cierre de las
latas de conserva, o la elaboración de productos cárnicos procesados, dependen directamente de sistemas
de visión artificial que supervisan el desarrollo en todas sus fases.
Envases y embalajes: Las tareas más habituales que lleva a cabo la visión artificial en el packaging están referidas a los trabajos
de inspección de presencia o ausencia de marcadores.
Electrónica: El sector de la electrónica es uno de los que más se beneficia del uso de la visión artificial industrial en
sus procesos de fabricación. La manipulación e identificación de los distintos componentes corren a su
cuenta. La visión artificial tiene la capacidad de comprobar de forma eficiente la correcta soldadura y
ensamblaje de piezas.
Logística e identificación: Todas las industrias requieren de procesos de logística e identificación de cada una de las partes y
productos implicados en su trabajo.
2.3. Conclusión La aplicación de la robótica a la agricultura es una tecnología que ha alcanzado un grado de madurez cercano a
la comercialización, siendo en gran medida condicionantes de precio los que limitan su aplicación frecuente.
Algunos tipos de robots, como es el caso de los aéreos, impulsados por su empleo en otros sectores, son en la
actualidad plenamente operativos para tareas como la adquisición precisa, local e instantánea de información
muy valiosa para mejorar la eficiencia del ciclo productivo agrícola. Dentro de invernaderos, o plantaciones
con cierto grado de estructuración, los robots pueden desarrollar con seguridad tareas de medida y actuación a
nivel de planta. En agricultura abierta la menor estructuración del entorno dificulta el uso de robots autónomos,
pero, aun así, existen sistemas eficaces. Frente o además del uso de grandes máquinas agrícolas robotizadas, la
-
17
tendencia de futuro puede estar orientada a pequeños robots, versátiles y con capacidad de colaboración que se
repartan de manera autónoma las tareas a realizar.
Al ser aún un mercado que se está empezando a expandir, muy necesario para la humanidad porque la
agricultura nos provee de un elevado porcentaje de toda la alimentación mundial y además debido a que es
muy diverso y por lo tanto hay muchos tipos de aplicaciones, es una muy buena oportunidad de invertir en el
desarrollo de la robótica en este sector.
-
18
Capítulo 3
Técnicas de Reconocimiento de Imágenes
3.1. Características de Haar
Las características de Haar son características de imagen digital utilizadas en el reconocimiento de objetos.
Deben su nombre a su similitud intuitiva con wavelet de Haar y se usaron en el primer detector facial en
tiempo real [8].
Históricamente, trabajar únicamente con intensidades de imagen, es decir, los valores de píxel RGB en
cada píxel de imagen, hacía que la tarea de cálculo de características fuera costosa desde el punto de vista
de la computación. Una publicación de Papageorgiou [9] discutió el trabajo con un conjunto de
características alternativas basado en Haar wavelets en lugar de las intensidades de imagen habituales.
Viola y Jones adaptaron la idea de usar Haar wavelets y desarrollaron las llamadas ‘características de
Haar’ [10]. Las características de Haar se obtienen como resultado de aplicar por toda la imagen un
conjunto de filtros de Haar [11].
Como podemos observar un filtro de Haar es una combinacion de varios rectángulos (entre 2 y 4) que son
adyacentes en la dirección horizontal o vertical. Los rectángulos en negro representan zonas con una
contribución positiva al filtro mientras que los rectangulos en blancos representan zonas con una
contribución negativa al filtro.
Figura 3.1: Filtros de Haar
Así que aplicando estos filtros en una imagen, el resultado final va a ser la diferencia entre la suma de
intensidad de todos los píxeles que están situados en el rectángulo negro menos la suma de intensidad de todos
los píxeles que están situados en el rectángulo blanco:
∑ 𝐼(𝑥, 𝑦)
(𝑥,𝑦) ∊ 𝑁𝑒𝑔𝑟𝑜
− ∑ 𝐼(𝑥, 𝑦)
(𝑥,𝑦) ∊ 𝐵𝑙𝑎𝑛𝑐𝑜
Para esta imagen digital:
Figura 3.2: Imagen digital
-
19
Obtenemos ∑ 𝐼(𝑥, 𝑦)(𝑥,𝑦) ∊ 𝑁𝑒𝑔𝑟𝑜 − ∑ 𝐼(𝑥, 𝑦)(𝑥,𝑦) ∊ 𝐵𝑙𝑎𝑛𝑐𝑜 = 900-300=600.
Este valor puede ser necesario normalizarlo por el tamaño de la ventana del filtro para conseguir que los
valores sean invariantes al cambio del tamaño de los objetos y también para que características aplicadas a
diferentes escalas en toda la imagen tengan valores comparables. Igualmente puede ser necesario normalizar la
imagen para conseguir también invarianza ante cambios de iluminación.
Aplicando los filtros de Haar podemos obtener los siguientes resultados:
Figura 3.3: Interpretación filtros de Haar
La respuesta de los filtros se concentra principalmente en las zonas donde existe un mayor contorno. De
hecho, el cálculo que realizan los filtros de Haar es bastante similar al cálculo del gradiente. Las características
de Haar no se concentran únicamente en el contorno, sino que también nos permitirá detectar otros cambios de
intensidad que se producen en la imagen.
Cada uno de los filtros básicos se va a aplicar en la imagen en todas las posibles escalas tanto en la dirección
horizontal como en la vertical como se muestra en las siguientes imágenes:
a) b) c) d)
Figura 3.4: Diferentes escalas filtros de Haar
Cada uno de estos filtros recorre la imagen entera y el resultado de aplicar cada filtro en cada escala y posición
es una característica de Haar. De esta forma, la descripción global de la imagen es la concatenación de todas
estas características.
En una imagen de 24x24 píxeles podemos obtener 162336 características.
-
20
3.1.1. Imagen Integral
El número de características que se pueden obtener en una imagen es muy elevado. Con el concepto de imagen
integral, podemos calcular cada una de estas características de forma muy eficiente por lo que el tan elevado
número de características va a dejar de ser un problema.
La imagen integral es una transformación de la imagen original que nos va a dar como resultado una nueva
imagen, del mismo tamaño en el que el valor de cada píxel va a ser la suma de todos los píxeles situados a la
izquierda y arriba en la imagen original [12].
Para un píxel de coordenadas (x,y) el valor del mismo píxel en la imagen integral va a ser la suma de los
valores de todos los píxeles que se encuentran en el recuadro gris:
Figura 3.5: Aplicación Imagen Integral
Es una transformación muy simple pero nos va a permitir calcular rápidamente la suma de todos los píxeles de
cualquier rectángulo en la imagen, que es la base del cálculo de las características de Haar. Podemos calcular
el valor de cualquier píxel en la imagen integral a partir de esta expresión:
Figura 3.6: Ecuación de la intensidad de un píxel en la imagen integral
Donde vemos que el valor depende del valor del píxel situado una posición por encima que es el valor de
II(x,y-1), es decir, el valor de dicho píxel nos va a dar la suma de todo el rectángulo situado arriba y a la
izquierda de él. También hay que sumarle la acumulación de píxeles situados a la izquierda del píxel, es decir,
el valor de s(x,y):
Figura 3.7: Descripción del cálculo del valor de un píxel en la imagen integral
-
21
Como ya hemos comentado, la gran ventaja del uso de la imagen integral, es que nos va a permitir calcular de
una forma rápida la suma de intensidades de cualquier rectángulo de la imagen independientemente del
tamaño debido a que al aplicar los filtros de Haar a la imagen no hay que ir sumando el valor de los píxeles
uno a uno, sino que cogiendo el valor de un solo píxel en la imagen integral ya podemos saber el valor de todo
el rectángulo que encierra.
3.1.2. Adaboost
Hemos generado un conjunto muy elevado de características de Haar pero no todas son válidas. Para ello se
necesita de un método muy eficiente para tratar con este número tan elevado de características y acabar
obteniendo un clasificador muy robusto que utilice únicamente un subconjunto de estas características y el
método idóneo es Adaboost [13].
Adaboost es una combinación de clasificadores muy simples. El rendimiento individual de cada uno de estos
clasificadores no va a ser muy elevado, de hecho, es ligeramente superior al de una clasificación aleatoria, sin
embargo, la forma que tiene Adaboost de aprender y combinar estos clasificadores nos va a acabar dando un
clasificador global que minimizará el error de clasificación y con buena capacidad de generalización.
Cada clasificador simple se aprende dando un peso diferente a cada ejemplo. Se da un peso mayor a los
ejemplos mal clasificados y un peso menor a los ejemplos bien clasificados por los clasificadores previos; así
para cada nuevo clasificador que se va a aprender, se va a incrementar el peso de aquello ejemplos que se han
clasificado mal en los clasificadores anteriores mientras que se va a disminuir el peso de los ejemplos bien
clasificados. De esta forma vamos a ir forzando a los clasificadores simples a centrarse en aquellos ejemplos
que no hemos sido capaces de clasificar en los pasos anteriores.
Suponiendo que tenemos este conjunto de características:
Figura 3.8: Ejemplo de un conjunto de características
Otros tipos de clasificadores intentarían encontrar una línea que separe las características positivas de las
negativas, aunque vemos que en este caso es imposible. Adaboost lo hace de una forma distinta. Suponiendo
que tenemos clasificadores simples que se basan en una única característica y que por lo tanto podemos
aprender un clasificador simple donde a partir de un determinado valor, las muestras que tienen un umbral
mayor las clasificamos como negativas y las de un umbral menor, como positivas.
Figura 4.9: Primer clasificador
Podemos ver que hay varias positivas que han quedado mal clasificadas. Cuando aprendemos un nuevo
clasificador, a estos ejemplos que han quedado mal clasificados Adaboost les da un peso mayor mientras que
-
22
al resto le ha disminuido el peso.
Figura 3.10: Nuevo peso de las muestras
De esta forma cuando aprendemos este segundo clasificador simple la frontera de decisión va a quedar
condicionada por estos ejemplos que tienen mayor peso.
Figura 3.11: Segundo clasificador
Igualmente vemos que han quedado ejemplos mal clasificados y en el tercer clasificador estos ejemplos
vuelven a tener un mayor peso.
Figura 3.12: Nuevo peso de las muestras
Así que este tercer clasificador vuelve a centrarse en estos ejemplos y vuelve a poner la frontera condicionada
a éstos.
Figura 3.13: Tercer clasificador
Finalmente, todos los clasificadores simples se combinan en un único clasificador global y al combinar las
-
23
diferentes fronteras de decisión aplicadas en los anteriores clasificadores, nos crea una nueva frontera donde
separa los ejemplos en los que la mayoría de los anteriores clasificadores nos han dado una clasificación
positiva a diferencia de donde la mayoría de los anteriores clasificadores nos han dado una clasificación
negativa.
Figura 3.14: Combinación de clasificadores
Pero, ¿Cómo decide un clasificador simple si un ejemplo es negativo o positivo? En la terminología de
Adaboost, un clasificador simple se denomina como clasificador débil y puede tomar diferentes formas.
Un árbol de decisión binario calcula una función de características para cada imagen de entrada y también fija
un umbral θ que permite distinguir los ejemplos positivos de los negativos. Esto nos da como resultado el
clasificador que vimos antes. La función f(x) es el resultado de evaluar un filtro de Haar en una posición de la
imagen y escala determinada.
Figura 3.15: Árbol de decisión binario Figura 3.16: Resultado del árbol de decisión
La función f(x) es el resultado de evaluar solo un filtro de Haar en una posición de la imagen y escala
determinada.
Sin embargo, hay que tener en cuenta que la función de decisión óptima puede ser la inversa, es decir, valores
menores que este umbral.
Figura 3.17: Árbol de decisión binario Figura 3.18: Resultado del árbol de decisión inversa
Para distinguir estas dos situaciones en la formulación del clasificador débil se introduce un parámetro alfa que
nos va a permitir distinguir en qué situación nos encontramos.
-
24
Figura 3.19: Parámetro alfa
Si alfa es igual a 1 nos encontramos en la situación que muestra la figura 3.20:
Figura 3.20: Resultado si α=1
Y si alfa es igual a -1 nos encontramos en esta otra.
Figura 3.21: Resultado si α=-1
Con esta formulación de un clasificador débil, fijada una característica de Haar, los parámetros que nos
determinan el clasificador son dos: el umbral θ y el signo de la decisión α. Para fijarlos, Adaboost examina de
forma exhaustiva todos los valores posibles del umbral para acabar seleccionando aquel que tenga un error de
clasificación mínimo.
En un conjunto de muestras a clasificar, cada muestra tiene asociado un peso relativo que va a ser mayor para
ejemplos mal clasificados en los clasificadores anteriores. Para encontrar el umbral óptimo de forma eficiente,
lo que se hace es ordenar las muestras a entrenar en función del valor de la característica de Haar que estamos
utilizando para ese clasificador, es decir, en función de f(x). Una vez tenemos las muestras ordenadas,
podemos ir evaluando fácilmente todos los posibles valores del umbral, calcular el error de clasificación para
cada uno de ellos y acabar seleccionando el umbral que tenga un error mínimo.
Figura 3.22: Muestras extraídas de los filtros de Haar y ordenadas en función de f(x)
-
25
En este ejemplo de la figura 3.23, el primer umbral que podemos evaluar sería el de θ=50 que nos fijaría esta
frontera de decisión.
Figura 3.23: Umbral para θ=50
En la figura 3.24 podemos ver que algunos ejemplos han quedado mal clasificados:
Figura 3.24: Ejemplos mal clasificados
A partir de estos ejemplos podemos calcular el error de clasificación sumando el peso relativo (ponderación)
de cada uno de estos ejemplos mal clasificados dividido entre el número total de ejemplos. En este caso, el
error de clasificación sería de 0,42. Así podemos ir evaluando todos los posibles umbrales moviendo la
frontera de decisión.
En este segundo caso el umbral sería de θ=44 y el error de clasificación 0,375.
Figura 3.25: Umbral para θ=50
Si continuamos moviendo el umbral hasta acabar evaluando todos los umbrales posibles, el caso que menor
error es para θ=44 con un error de 0,33 que fija esta frontera de decisión:
-
26
Figura 3.26: Umbral para θ=40
Este resultado es para el caso de tomar solo un filtro de Haar, sin embargo Adaboost utiliza muchas
características de Haar, no solo uno y también selecciona aquellas características calculadas que son más
relevantes por lo tanto en cada iteración del proceso de aprendizaje vamos a entrenar un clasificador débil
diferente para cada una de las características de Haar. Cada característica va a ser la base para entrenar un
clasificador débil. Cada uno de estos clasificadores débiles se entrenará igual que se explicó anteriormente, es
decir, ordenando las muestras en función del valor de la característica y selecciona el umbral que menor error
nos da. De esta forma, cada característica nos da un clasificador diferente y cada uno con un error diferente.
Aquí podemos observar un ejemplo para el caso de reconocimiento de caras:
Figura 3.27: Resultado de aplicar muchos filtros de Haar
Al final como resultado de esta iteración concreta del proceso de aprendizaje, nos quedamos con aquel
clasificador débil asociado a la característica que tenga un error mínimo de clasificación. Así que a la vez que
aprendemos los parámetros de un nuevo clasificador débil también estamos seleccionando una única
característica de Haar de entre las muchas que hay.
Otro concepto clave de Adaboost es la actualización del peso relativo que se da a cada ejemplo después de
aprender cada nuevo clasificador débil. Adaboost es un proceso iterativo y en cada iteración aprende un nuevo
clasificador débil. En cada una de estas iteraciones el peso relativo de un ejemplo wi(t+1) se va a actualizar en
función del peso relativo que tiene en la iteración anterior wi(t) y de un factor de actualización que dependerá
del error de clasificación del último clasificador débil que hemos aprendido.
Figura 3.28: Actualización del peso relativo
Como suponemos que cada clasificador débil aprendido va a ser mejor aunque sea poco que un clasificador
aleatorio, podemos suponer que el error de clasificación ∊t va a ser siempre menor que 0,5 y por lo tanto en los
-
27
casos en que los ejemplos han quedado mal clasificados, es decir, h(xi) ≠yi este factor de actualización 1
2∊t va a
ser mayor que 1; mientras que en los casos en los que los que los ejemplos están bien clasificados h(xi) =yi , el
factor de actualización 1
2(1−∊t) va a ser menor que 1.
Suponemos que hemos aprendido este clasificador débil de la figura 3.29:
Figura 3.29: Ejemplo clasificador débil
Como podemos observar el error final es 0,33 con lo que el factor de actualización para las muestras mal
clasificadas va a ser 1
2∗0,33 = 1,5 y para las muestras que han quedado bien clasificadas será
1
2(1−0,33) = 0,75.
Así podemos ver que en la siguiente iteración del proceso de aprendizaje, el peso de las muestras bien
clasificadas ha disminuido por el factor 0,75 mientras que las muestras que habían sido mal clasificadas su
peso ha aumentado por el factor 1,5:
Figura 3.30: Actualización peso relativo
Como ya se ha dicho, Adaboost es un proceso iterativo donde el número de iteraciones se fija al principio
(variable ‘T’) y así en cada iteración aprende un clasificador débil en el que vamos a seleccionar la mejor
característica de Haar y el mejor umbral posible en función del peso relativo de los ejemplos en esa iteración
en concreto. Como resultado final vamos a tener un clasificador fuerte que se define como la suma de todos los
clasificadores débiles que hemos aprendido al final del número total de iteraciones. El resultado de la
clasificación es el signo de la suma de todos los clasificadores débiles de manera que si la suma es mayor que
0 el ejemplo será positivo y si la suma es menor que 0 el ejemplo lo clasificamos como negativo.
Figura 3.31: Resultado de la clasificación
Podemos ver que no todos los clasificadores se combinan de la misma forma, sino que vamos a dar más
importancia a los clasificadores débiles que han funcionado mejor, es decir, a los que tienen un menor error de
clasificación.
Los clasificadores débiles se combinan utilizando un factor de ponderación αt que es el resultado de esta
ecuación: αt = 1
2 log
1−∊t
∊t . Cuando ∊t tiende a 0, el factor de ponderación αt tiende a infinito y sin embargo
cuando ∊t tiende a 0.5, que es similar a un clasificador aleatorio, αt tiende a 0.
En resumen, Adaboost crea un clasificador fuerte como una combinación de clasificadores muy simples que
-
28
únicamente requieren un umbral para una determinada característica de Haar. Al aprender cada clasificador
débil hace una selección de las características de Haar y como el error del clasificador sirve para modificar el
peso relativo de los ejemplos de entrenamiento para la siguiente iteración. De esta forma lo que conseguimos
es entrenar un conjunto de clasificadores simples pero con una gran variedad entre ellos de manera que cuando
los combinamos de forma ponderada acabamos obteniendo un clasificador que se denomina clasificador fuerte
que tiene un alto rendimiento y que se puede demostrar que tiene una buena capacidad de generalización y de
minimización del error de clasificación.
Para poder tratar de forma eficiente con tan elevado número de características de Haar se utiliza la cascada de
clasificadores que se realiza a partir de entrenar un conjunto de clasificadores con Adaboost como se acaba de
explicar.
La principal motivación para introducir una cascada de clasificadores viene de observar que el número de
objetos que queremos reconocer y que podemos encontrar en una imagen es muy limitada. Sin embargo, el
detector se va a evaluar utilizando el método de ventana deslizante y por lo tanto, va a generar un número muy
elevado de hipótesis que van a corresponder a desplazar la ventana por toda la imagen a múltiples escalas.
Vamos a explicar primero qué es el método de la ventana deslizante:
3.1.3. Método de la Ventana Deslizante
La clasificación de ventanas se basa en saber si una ventana de una imagen contiene o no uno de los objetos
que nos interesa. Dada una ventana que tenemos colocada en una cierta posición de la imagen, lo que se hace
es colocar otra ventana del mismo tamaño desplazada con respecto a la anterior a una distancia Δx para el eje x
e Δy para el eje y [14].
Figura 3.32: Desplazamientos ventana deslizante
Así que tenemos los parámetros Δx e Δy que nos va a servir para generar un patrón de desplazamiento de la
ventana situada arriba a la izquierda en la imagen que recorre toda la imagen, donde en este ejemplo, a medida
que el algoritmo avanza por las distintas ventanas, el clasificador las clasifica como conteniendo un peatón o
no:
-
29
Figura 3.33: Ventanas donde se encuentra el objetivo
En este caso, tres de todas las ventanas examinadas han sido clasificadas como peatón. Así pues, hemos visto
como dada una imagen de entrada podemos generar una serie de ventanas en esa imagen que hemos de
clasificar como conteniendo o no, en este caso peatones.
Unas cuestiones interesantes a tener en cuenta respecto a la ventana deslizante es que la altura y anchura de la
ventana canónica determina el tamaño que detectaremos los objetos. En este ejemplo, si queremos detectar
peatones y este es el tamaño de la ventana canónica, podremos detectar a este peatón porque son tamaños
iguales o muy parecidos. No podremos detectar a este segundo peatón porque es mucho más grande que el
tamaño de la ventana canónica.
Figura 3.34: Tamaño de la ventana canónica
En el proceso de aprendizaje, para clasificar objetos necesitamos un modelo de esos objetos y ese modelo se
aprende de un conjunto de muestras. Para el ejemplo de la figura 3.35, el objetivo es reconocer peatones así
que los enmarcamos para generar su modelo. Como podemos ver, cada ventana tiene un tamaño diferente. Lo
que sucede es que para el proceso de aprendizaje todas las ventanas han de tener el mismo tamaño canónico
por lo que hay que hacer un reescalado de cada una de esas ventanas y esto es un proceso muy importante ya
que si se hace mal los clasificadores podrían ser peores de lo que realmente podrían ser.
-
30
Figura 3.35: Diferentes tamaños del objetivo
3.1.4. Cascada de Clasificadores
El resultado que nos debe dar nuestro clasificador es una ventana en la pantalla principal que nos indique
donde se encuentra la planta a reconocer en el caso de que hubiese alguna. Como en una imagen la mayoría de
las posibles ventanas que puede haber no corresponden con nuestro objeto a reconocer se precisa de una
‘cascada de clasificadores’ que nos ayude a descartar todas esas ventanas que no corresponden con nuestro
objeto. Por ejemplo, para el caso de reconocer una cara sería así:
Figura 3.36: Todas las posibles ventanas
La cascada de clasificadores tiene por objetivo descartar muchas de estas ventanas para disminuir el coste
computacional y concentrar el esfuerzo en las ventanas que tienen una mayor probabilidad de ser nuestro
objeto. La cascada de clasificadores nos va a permitir alcanzar este objetivo mediante una combinación
secuencial de clasificadores de forma que una ventana solo será detectada como nuestro objeto si es
reconocida de forma correcta por todos los clasificadores. Si uno de estos clasificadores rechaza la ventana
como nuestro objeto, la ventana quedará rechazada [15].
Figura 3.37: Cascada de clasificadores
-
31
El primer clasificador va a recibir todas las posibles ventanas de una imagen. Todas aquellas que rechace el
primer clasificador quedarán descartadas y las que acepte se pasarán como entradas al segundo clasificador y
así hasta llegar al último clasificador. Solo las ventanas que sean reconocidas como nuestro objeto en este
último clasificador y por lo tanto han sido reconocidas en los demás clasificadores va a ser la detección final
de nuestro objeto que va a producir nuestro detector.
La reducción de tiempo de procesamiento es menor debido a que a medida que avanzamos por la cascada el
número de ventanas se va reduciendo y porque el número de características que se va a utilizar en los primeros
clasificadores va a ser muy bajo con lo que podemos descartar muchas ventanas de forma muy rápida.
La clave del funcionamiento de la cascada va a estar en cómo se entrena cada clasificador para conseguir
rechazar un buen número de ventanas negativas mientras aceptamos también todas o casi todas las ventanas
positivas. Cada clasificador en un nivel de la cascada va a ser un clasificador entrenado por Adaboost de la
forma anteriormente explicada sin embargo en el aprendizaje de la cascada el objetivo no va a ser minimizar el
error de clasificación global sino que cada clasificador tendrá como objetivo cumplir con un número máximo
de falsos positivos que corresponden a falsas detecciones de nuestro objeto y con un número máximo de falsos
negativos que corresponden a plantas que no son detectadas. Por lo tanto, hay que modificar ligeramente la
forma en la que se construirá el clasificador fuerte a partir de los clasificadores débiles.
Para cada clasificador vamos a fijar un objetivo respecto al número máximo falsos positivos y falsos negativos
que debería producir y que se va a evaluar sobre un conjunto de validación.
En la figura 3.38 a partir de esta frontera de decisión nos encontramos que hay un falso negativo y cuatro
falsos positivos:
Figura 3.38: Frontera de decisión para un conjunto de muestras
Si estos valores están por encima del objetivo que no hemos fijado hay que reducir estos valores. La solución
es mover la frontera de decisión a la izquierda o a la derecha según convenga por lo que vamos a introducir en
la formulación del clasificador un factor de margen ‘s’ que vamos a tener que encontrar de una forma iterativa
y que nos va a permitir modular el número de ventanas rechazadas y aceptadas.
Figura 3.39: Factor de margen ‘s’
Vamos a suponer que el número de falsos positivos es superior al objetivo y para reducirlo vamos a tener que
mover la frontera hacia la derecha y para ello fijaremos un valor del factor ‘s’ negativo, de forma que
imágenes que antes tenían una predicción positiva pasen a tener una predicción negativa. De la misma forma,
si lo que se supera es el objetivo marcado para el número de falsos negativos, vamos a mover la frontera hacia
la izquierda fijando un valor ‘s’ positivo de forma que ejemplos que antes tenían una respuesta negativa ahora
pasen a tenerla positiva.
Nos podemos encontrar en la forma en la que no es posible encontrar un único valor ‘s’ que cumpla a la vez
con los dos objetivos propuestos de falsos positivos y falsos negativos así que vamos a considerar que el
clasificador fuerte no es suficientemente robusto como para cumplir con el objetivo propuesto y lo que vamos
a hacer es entrenar un nuevo clasificador fuerte aumentando el número de características de Haar.
-
32
Figura 3.40: Nuevo clasificador aumentando las características de Haar
Donde T’ va a ser mayor que T que corresponde al número de características de Haar del clasificador fuerte.
Ahora esperamos conseguir un clasificador mejor que pueda cumplir con los objetivos marcados. Nos puede
pasar que por mucho que incrementemos el número de características el objetivo para ese nivel de la cascada
sea demasiado restrictivo y no podamos encontrar un clasificador que lo pueda cumplir por lo tanto vamos a
fijar también un número máximo de características por clasificador.
Con todo esto, para entrenar un clasificador vamos a fijar como parámetros de entrada para el objetivo de
falsos positivos y de falsos negativos que queremos conseguir y también el número máximo de características
que permitimos para ese clasificador. Con estos parámetros fijados vamos a empezar a entrenar un clasificador
fuerte con un número inicial de características muy bajo. Una vez entrenado este clasificador, vamos a adaptar
el margen de la frontera para intentar cumplir con el objetivo de falsos positivos y falsos negativos. Si no es
posible cumplir con este objetivo, incrementamos el número de características permitidas en el clasificador y
reentrenamos un nuevo clasificador con un número mayor de características. El aprendizaje del clasificador
solo lo vamos a dar por finalizado bien si conseguimos cumplir con el objetivo de falsos positivos y falsos
negativos fijados o bien si acabamos alcanzando el número máximo de características que permitimos para el
clasificador. Este proceso se va a repetir para todos los niveles de la cascada, sin embargo, el primer
clasificador ya ha rechazado un buen número de ventanas negativas por lo tanto no queremos que los nuevos
clasificadores vuelvan a evaluar estas mismas ventanas para que se concentren en ventanas negativas que el
anterior clasificador haya considerado como positivas. Así que antes de entrenar un nuevo clasificador vamos
a evaluar el clasificador anterior con un conjunto de imágenes negativas para seleccionar un nuevo conjunto de
ejemplos negativos que sean falsos positivos en el paso anterior así que de esta forma vamos a conseguir que
el nuevo clasificador se concentre en ventanas que son más difíciles que en el paso anterior.
En el proceso de aprendizaje se van añadiendo clasificadores hasta que bien alcanzamos un número fijado de
niveles que queremos tener en la cascada o bien alcanzamos un objetivo de rendimiento en relación a falsos
positivos y falsos negativos.
3.1.5. Detalles para la Implementación
La primera consideración que tenemos que tener en cuenta es la normalización de las imágenes que se usan
como entrada al clasificador. En el proceso de aprendizaje y para reducir la variabilidad de todas estas
imágenes se normalizan a un tamaño fijo de 20x20 píxeles, por lo tanto esta va a ser la escala mínima que
vamos utilizar como base para la detección del objeto deseado. A partir de este tamaño se pueden detectar el
objeto a escalas superiores [16].
Por otro lado, durante el proceso de aprendizaje también va a ser necesario normalizar las imágenes para
reducir el efecto de diferentes iluminaciones que podrían dar lugar a valores bastantes diferentes en las
características de Haar. Para disminuir estas diferencias de iluminación a las imágenes se les aplica una
normalización bastante simple que consiste en restar a la intensidad de cada píxel I(x,y) la media de
intensidades de toda la imagen µ(I) y dividir entre la desviación estándar θ(I).
-
33
Figura 3.41: Ecuación de normalización de las imágenes
De esta forma conseguimos imágenes que tienen una media igual a 0 y una desviación estándar igual a 1.
Esto también hay que aplicarlo cuando se evalúan todas las ventanas que se van a generar como hipótesis
durante la detección. Sin embargo, tenemos que tener en cuenta que durante el proceso de detección se van a
generar un gran número de ventanas y normalizar cada una por separado puede ser muy costoso. Dado que
cada filtro de Haar solo realiza sumas de intensidades de píxeles se puede comprobar que normalizar la imagen
por la varianza y después calcular las características de Haar es equivalente al proceso inverso, es decir,
calcular primero las características de Haar y después normalizar por la varianza. Por lo tanto, la normalización
se puede incluir en el cálculo de las características de Haar dividiendo el resultado de aplicar el filtro calculado
como ya se explicó, por la desviación estándar de todas las subventanas.
3.2. LBP Existen otros tipos de descriptores de características a diferencia de Haar. Uno de ellos es el Local Binary
Pattern conocido como LBP [17].
Vamos a ver como se calcula el código LBP para cada uno de los píxeles de la imagen. Supongamos que la
siguiente figura es una imagen y cada cuadrado es un píxel de la imagen:
Figura 3.42: Ejemplo para el cálculo del código LBP
Vamos a realizar el cálculo LBP para el píxel central. Para ello, vamos a definir una vecindad alrededor del
píxel y vamos a comparar el valor de cada uno con el valor del píxel central de forma que:
-
34
Figura 3.43: Resultado para la comparación de los píxeles
Por lo que obtenemos el siguiente código:
Figura 3.44: Cálculo del código LBP para el píxel central
Por lo tanto, el código LBP de ese píxel central es 182:
Figura 3.45: Resultado del código LBP en un píxel
De igual forma se obtiene un valor LBP para cada píxel excepto en las esquinas ya que al introducir una
vecindad en una de ellas hay ciertos píxeles de la vecindad que en la imagen no van a existir y para ello lo más
común es ignorar los bordes de las imágenes.
LBP es invariante a niveles de gris:
-
35
Figura 3.46: LBP invariante ante nieles de gris
Y ante traslación:
Figura 3.47: LBP invariante ante traslación
Hay diferentes variantes como puede ser el uso de otra vecindad [18]. Es muy común la vecindad circular:
Figura 3.48: Vecindad circular
Ahora vamos a ver como se utiliza el código LBP calculado para definir descriptores para su posterior
clasificación [19].
Se basa en la idea de que una ventana dentro de diferentes imágenes que contienen el objeto deseado a
reconocer siguen un cierto un patrón en su histograma y que es muy diferentes a ventanas donde no se
encuentra el objeto. Los histogramas son normalizados, es decir, que cada entrada está comprendidos entre 0 y
1 y sumando todas las entradas nos darán el valor 1.
Este descriptor no es suficientemente discriminativo ya que las imágenes de la figura 3.49 tendrían el mismo
histograma.
-
36
a) b)
Figura 3.49: Histograma LBP
Y puede provocar reconocimientos indeseados como ocurre en la figura 3.50 enmarcados por las ventanas
amarillas, que reconoce la parte superior de una persona con la inferior de otra persona diferente:
Figura 3.50: Reconocimientos indeseados en LBP
Para mejorar el descriptor vamos a dividir la ventana en bloques y cada uno se le calcula su histograma:
-
37
Figura 3.51: Histograma de cada bloque
Así que para el caso anterior el histograma de cada bloque es diferente, que es lo que buscamos:
a) b)
Figura 3.52: Diferencias en los histogramas de los bloques en cada imagen
Para conseguir unos descriptores más robustos se añade cierta redundancia mediante bloques solapados como
podemos ver en la siguiente ilustración:
-
38
Figura 3.53: Adicción de bloques para el cálculo del histograma
Donde el descriptor final es resultado de la concatenación de todos los histogramas correspondientes a cada
uno de los bloques.
Una vez obtenido los descriptores para cada ventana, se usa Adaboost y la cascada de clasificadores al igual
que en Haar para generar el fichero encargado del reconocimiento del objeto deseado.
En la siguiente tabla vamos a exponer las ventajas y desventajas que hay entre LBP y las características de
Haar [20]:
Algoritmo Ventajas Desventajas
Haar Mayor exactitud de reconocimiento.
Menor tasa de falsos positivos.
Alto coste computacional.
Tiempo de entrenamiento alto.
Limitaciones en condiciones de iluminación difíciles.
LBP Bajo coste computacional.
Tiempo de entrenamiento bajo.
Robusto a cambios de iluminación.
Menor exactitud.
Alto tasa de falsos positivos.
Tabla 4.1: Diferencias entre Haar y LBP
-
39
Capítulo 4
Diseño hardware
4.1. Introducción
Para que nuestro robot pueda reconocer las malezas y a la persona a la que debe realizar el seguimiento, vamos
a necesitar dos cámaras, una para cada función. Vamos a utilizar el chasis de un coche para dotar al sistema de
la capacidad de trasladarse a lo largo de los surcos de algodón. Precisamos de motores para aplicar el
movimiento así como de un controlador de motores para poder proporcionarle las intensidades que se deseen.
Como suministro de energía para los motores vamos a usar una batería de 12 voltios. Todo esto es controlado
por Raspberry Pi a la que vamos a suministrarle energía por medio de una batería portátil para móviles.
Figura 4.1: Esquema conexionado
4.2. Raspberry Pi
Como ya hemos dicho, el componente encargado del control de todo el proyecto será el mini ordenador
Raspberry Pi 3 model b.
Raspberry Pi es una placa base con unas dimensiones reducidas y permite una gran cantidad de
aplicaciones. Se puede convertir en casi cualquier cosa, desde un mini pc, hasta un servidor de datos,
centro de ocio o la base de un robot.
El principal atractivo de este mini PC no es otro que el precio. Bajo la premisa de ofrecer la potencia de
un ordenador a bajo precio, la Raspberry es una de las formas más asequibles de disponer de un hardware
especialmente eficiente y dinámico accesible para cualquier bolsillo.
-
40
Este modelo de Raspberry ensambla en su circuito un chipset Broadcom BCM2387 con cuatro
núcleos ARM Cortex-A53 a 1.2 GHz. Dicho procesador es capaz de mover con soltura videojuegos y
aplicaciones, además de disponer de una gran potencia de procesado para otro tipos de tareas [21].
El ‘giga’ de ram DDR2 que incorpora le permite mover con soltura bastantes sistemas operativos, como
Windows 10 lot Core o Ubuntu Snappy, versiones Slim de los sistemas operativos a los que emulan.
Además, disponemos de 4 puertos USB para ampliar el dispositivo con todo tipo de periféricos, que a día
de hoy son muchos.
Entre otras de las mejoras que encontramos en el modelo Pi 3 se cuenta la llegada de la conectividad Wi-
Fi y Bluetooth integradas. La entrada HDMI permite la visualización de contenidos en alta definición en
un gran número de dispositivos, como pueden ser pantallas, ordenadores portátiles o televisores,
suponiendo uno de los principales atractivos de este dispositivo.
Eficiencia es la palabra que mejor describe a la Raspberry Pi 3. Basta con un simple cargador de móvil
para alimentar a esta placa.
Tiene unas dimensiones de 85 x 56 x 17 mm, perfecta utilizarla como base de un kit de robótica.
Tiene 40 pines, de los cuales 27 son pines GPIO y de los restantes algunos suministran 3.3v, otros 5v y
algunos son GND. En este esquema vemos las características de cada pin:
Figura 4.2: Esquema de pines Raspberry Pi 3 model b
-
41
Especificaciones de Raspberry Pi 3 model b:
Procesador:
o Chipset Broadcom BCM2387.
o 1,2 GHz de cuatro núcleos ARM Cortex-A53
GPU
o Dual Core VideoCore IV ® Multimedia Co-procesador. Proporciona Open GL ES 2.0, OpenVG acelerado por hardware, y 1080p30 H.264 de alto perfil de decodificación.
o Capaz de 1 Gpixel / s, 1.5Gtexel / s o 24 GFLOPs con el filtrado de texturas y la
infraestructura DMA
RAM: 1GB LPDDR2.
Conectividad
o Ethernet socket Ethernet 10/100 BaseT
o 802.11 b / g / n LAN inalámbrica y Bluetooth 4.1 (Classic Bluetooth y LE)
o Salida de vídeo
HDMI rev 1.3 y 1.4
RCA compuesto (PAL y NTSC)
o Salida de audio
jack de 3,5 mm de salida de audio, HDMI
USB 4 x Conector USB 2.0
o Conector GPIO
40-clavijas de 2,54 mm (100 milésimas de pulgada) de expansión: 2x20 tira
Proporcionar 27 pines GPIO, así como 3,3 V, +5 V y GND líneas de suministro
o Conector de la cámara de 15 pines cámara MIPI interfaz en serie (CSI-2)
o Pantalla de visualización Conector de la interfaz de serie (DSI) Conector de 15 vías plana
flex cable con dos carriles de datos y un carril de reloj
o Ranura de tarjeta de memoria Empuje / tire Micro SDIO
4.3. Cámaras
Para tanto el reconocimiento de las malas hierbas como para el seguimiento del trabajador, vamos a utilizar
cámaras web.
La cámara encargada de las malezas es una webcam de la marca Tecknet de alta definición con conector capaz
de tomar 30 fotogramas por segundo. Tiene 5 mega píxeles, con una resolución de 2560 x 1920 píxeles y su
DPI es de 1280x720 [22].
La cámara encargada de seguir al jornalero es WebCam Live! Ultra Notebook de la marca Creative y destaca por el brillo, excelente definición y detalle que ofrecen sus sensores CCD complementados con un objetivo
gran angular que ofrece un campo visual capaz de capturar un 50 por ciento más de imagen por fotograma.
Conexión USB 2.0 de alta velocidad que permite almacenar en el disco duro más de 30 fotogramas por
segundo de vídeo. Tiene 1,3 Mega píxeles de resolución [23].
La diferencia entre ambas es que la segunda tiene un campo de visión mucho más amplio, lo que está más
acorde a la función de seguimiento ya que al tener un mayor ángulo de visión, es más difícil perder al
trabajador. La segunda cámara tiene un muy buen zoom y será más eficaz para el reconocimiento de las
malezas.
-
42
4.4. Chasis
El chasis del proyecto es el de un coche pequeño de cuatro ruedas con un motor para cada una. Se ha elegido
este chasis suponiendo que las condiciones en las que va a trabajar son ideales, es decir, que el suelo va a ser
liso, sin piedras y que no va a haber barro.
Figura 4.3: Chasis del vehículo
Obviamente, estas condiciones no son realistas debido a que la superficie en el campo es irregular con
numerosas piedras de todos los tamaños, puede que se haya regado el cultivo incluso días atrás y siga el
terreno embarrado o la existencia de desniveles en la superficie que puede provocar que nuestro robot no sea
capaz de superarlos.
Para estas condiciones más realistas necesitaríamos otro tipo de chasis, como por ejemplo podría ser el de tipo
tanque ya que su sistema de tracción le permite atravesar terrenos complicados y diferentes obstáculos.
4.5. Controlador de Motores
El dispositivo encargado del control de los motores es el módulo L298N. El módulo L298N posee dos
canales de Puente H, pudiéndolos utilizar para controlar dos motores DC o un motor Paso a Paso,
controlando el sentido de giro y velocidad. Está conformado por un driver L298N, sus diodos de
protección y un regulador de voltaje de 5v [24].
Especificaciones:
Voltaje de alimentación, mínimo de 5v. Posee dos entradas, una de 5v para controlar la parte lógica y
otra para alimentar las salidas al motor, que pueden ser de 5v o más.
La tarjeta tiene la opción de habilitar un regulador LM7805 integrado en ella para alimentar la parte
lógica con lo que se puede alimentar la tarjeta con 12v por ejemplo.
Corriente máxima 2 Amperios.
Posee 6 entradas de control
Admite entradas de señal PWM para el control de velocidad.
Dimensiones: 43 mm x 23,9 mm x 43 mm.
Salidas: para 2 motores de DC o para un motor bipolar paso a paso
Partes:
-
43
Figura 4.4: Partes del módulo L298N
4.6. Zumbador Un Zumbador o buzzer, es un transductor electroacústico que produce un sonido o zumbido continuo o
intermitente de un mismo tono generalmente agudo. Sirve como mecanismo de señalización o aviso y se
utiliza en múltiples sistemas [25].
La parte encargada de avisar a la persona encargada de quitar las hierbas que ha dejado alguna sin quitar es el
zumbador. Tiene un voltaje de entrada de 5v.
Tendrá dos funciones:
La primera es la ya comentada y para ello dará 3 pitidos intermitentes de medio segundo con una pausa de
medio segundo entre una y otra.
La segunda función será también la de avisar al jornalero pero en caso de que esté 10 segundos o más sin
haber reconocido a la persona a la que debe de seguir. En este caso se producirá un fuerte pitido hasta que
vuelva a reconocer a dicha persona.
4.7. Baterías
El proyecto está compuesto por dos baterías. Una de ellas, de 12v suministra la potencia necesaria a los 4
motores los cuales requieren 5v para su funcionamiento.
La otra batería se dedica exclusivamente a mantener encendida la Raspberry Pi. Es una batería portátil para
móviles con un voltaje de salida de 5v y 1000mA, al igual que la potencia que suministran los cargadores de
móviles, así que también sirve para esta función.
-
44
Capítulo 5
Diseño Software
5.1. Introducción
Nuestro robot está compuesto por dos partes que destacan del resto: el reconocimiento de las malezas y el
seguimiento al jornalero. Para ambas partes vamos a utilizar la biblioteca de visión artificial OpenCV (Open
Source Computer Vision) que contiene múltiples funciones que abarcan una gran gama de áreas en el proceso
de visión.
También contiene un sistema de alarmas. El entorno de desarrollo utilizado es Raspbian y Python como
lenguaje de programación.
5.2. Raspbian
Como ya se ha comentado anteriormente, Raspberry Pi puede soportar varios sistemas operativos. Para este
proyecto se ha elegido Raspbian.
Raspbian es una distribución del sistema operativo GNU/Linux y por lo tanto de software libre para Raspberry
Pi, orientado a la enseñanza de informática con soporte optimizado para cálculos en coma flotante por
hardware, lo que permite dar más rendimiento en según qué casos. Contiene herramientas de desarrollo como
IDLE para el lenguaje de programación Python. Destaca también el menú "raspi-config" que permite
configurar el sistema operativo sin tener que modificar archivos de configuración manualmente [26].
Al ser una distribución de GNU/Linux las posibilidades son infinitas. Todo software libre puede
ser recompilado en la propia Raspberry Pi para que pueda ser utilizado en el propio dispositivo. Además esta
distribución, como la mayoría, contiene repositorios donde el usuario puede descargar multitud de programas.
Todo esto hace de Raspberry Pi un dispositivo que además de servir como placa con microcontrolador clásica,
tenga mucha de la funcionalidad de un ordenador personal.
5.3. Python
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca
un código legible [27]. Básicamente, Python es un lenguaje de programación de alto nivel, interpretado y
multipropósito. En los últimos años su utilización ha ido constantemente creciendo y en la actualidad es
uno de los lenguajes de programación más empleados para el desarrollo de software [28].
Se trata de un lenguaje potente, flexible y con una sintaxis clara y concisa. Además, no requiere dedicar
tiempo a su compilación debido a que es interpretado.
Python es open source, cualquiera puede contribuir a su desarrollo y divulgación. Además, no es
necesario pagar ninguna licencia para distribuir software desarrollado con esté lenguaje. Hasta su
intérprete se distribuye de forma gratuita para diferentes plataformas.
https://es.wikipedia.org/wiki/Sistema_operativohttps://es.wikipedia.org/wiki/Software_librehttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Inform%C3%A1ticahttps://es.wikipedia.org/wiki/C%C3%A1lculoshttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Pythonhttps://es.wikipedia.org/wiki/GNU/Linuxhttps://es.wikipedia.org/wiki/Software_de_c%C3%B3digo_abiertohttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Ordenador_personal
-
45
5.4. Reconocimiento Automático de las Malas Hierbas
5.4.1. Introducción
Para el desarrollo de esta aplicación utilizaremos el módulo “Object Detection” de la librería OpenCV. Este
detector de objetos utiliza los conceptos propuesto por Paul Viola [29]. La librería OpenCV es una biblioteca
de visión artificial y de aprendizaje automático iniciada por Intel en 1999. Esta biblioteca multiplataforma se
centra en el procesamiento de imágenes en tiempo real e incluye implementaciones libres de patentes de los
últimos algoritmos de visión computarizada [30].
Esta librería está escrita en el lenguaje de programación C y C++ y cuenta con aproximadamente quinientas
funciones que abarcan diferentes procesos de la visión artificial. OpenCV fue diseñado para la eficiencia
computacional y con un fuerte enfoque en aplicaciones en tiempo real. La librería permite el manejo eficiente
de imágenes y matrices, reconocimiento de objetos y análisis de imágenes.
Vamos a crear nuestros propios clasificadores con la ayuda de OpenCV para el reconocimiento de las malezas
y se va a comparar el resultado aplicando el método de las Características de Haar y LBP (Local Binary
Pattern).
5.4.2. Características de Haar
Basándose en las cualidades descritas en el apartado 3.1, OpenCV crea el clasificador para el objeto deseado,
pero para ello hay que definir ciertos aspectos.
Para el aprendizaje automático basado en las características de Haar, es necesario recopilar una gran cantidad
de imágenes positivas y negativas. Las imágenes positivas son aquellas en las que se encuentra el objeto que
queremos reconocer y las negativas son aquellas en las que no está dicho objeto [31].
En primer lugar, solo se van a reconocer dos