Visión artificial para niños
La visión informática es un campo de la ciencia que enseña a las computadoras a "ver" y "entender" imágenes del mundo real. Imagina que una computadora pudiera usar sus "ojos" (cámaras o sensores) y su "cerebro" (programas especiales) para interpretar lo que ve, igual que nosotros. Eso es lo que busca la visión informática.
Esta área combina conocimientos de matemáticas, estadísticas y otras ciencias para que las computadoras puedan analizar fotos o videos. Así, pueden extraer información útil, como reconocer objetos, detectar eventos o incluso crear modelos 3D de lo que están viendo.
La visión informática se usa en muchas tecnologías. Por ejemplo, ayuda a los robots a moverse sin chocar, a los médicos a analizar imágenes del cuerpo para encontrar problemas, a los sistemas de seguridad a identificar situaciones inusuales, o a las fábricas a revisar la calidad de sus productos.
Contenido
Desafíos y mejoras en la visión informática
Cuando las computadoras intentan "ver" el mundo, se encuentran con algunos problemas. Esto se debe a que el mundo real no es perfecto y los aparatos que capturan las imágenes (como las cámaras) tampoco lo son. Estos problemas pueden hacer que las imágenes no sean claras o que la computadora las interprete mal.
Problemas técnicos en las imágenes
A veces, las imágenes pueden tener "ruido", que son como pequeñas imperfecciones.
Ruido de "sal y pimienta"
Este ruido hace que algunos puntos de la imagen se vean completamente blancos o completamente negros, como si alguien hubiera esparcido sal y pimienta. Puede ocurrir por problemas en la forma en que se transmiten las imágenes. Para arreglarlo, se usan filtros especiales que suavizan la imagen, aunque a veces se pierde un poco de detalle.
Ruido uniforme
Con este ruido, los colores de los píxeles (los pequeños puntos que forman una imagen) cambian de forma aleatoria, haciendo que la imagen parezca codificada o con interferencias. Esto puede pasar cuando la imagen se procesa. También se usan filtros para reducirlo.
Ruido Gaussiano
Este tipo de ruido es común en las cámaras y hace que la imagen se vea un poco borrosa o granulada, con valores que tienden más a los grises. Se usan filtros especiales para corregirlo.
En general, para solucionar estos problemas de ruido, se aplican diferentes tipos de filtros digitales a las imágenes.
Problemas por el contexto de la imagen
Además del ruido, hay otros factores que pueden dificultar que una computadora entienda una imagen:
Punto de vista
Un objeto se ve diferente si lo miras de frente, de lado o desde arriba. La computadora debe ser capaz de reconocer el objeto sin importar desde qué ángulo se tomó la foto.
Iluminación
La cantidad de luz que hay en una escena afecta cómo se ve un objeto. La computadora debe poder identificar un objeto aunque una parte esté en sombra o haya mucha luz.
Oclusión
Si un objeto está parcialmente cubierto por otro, la computadora debe ser capaz de entender que el objeto completo sigue ahí, aunque no se vea todo.
Escala
Un objeto puede parecer más grande o más pequeño en una foto dependiendo de la distancia o el ángulo. La computadora necesita saber que es el mismo objeto, sin importar su tamaño aparente en la imagen.
Deformación
Los objetos pueden verse deformados por el calor, el movimiento o errores al tomar la foto. La computadora debe reconocer el objeto a pesar de estas deformaciones.
Fondo desordenado
Si un objeto está en un lugar con muchas cosas alrededor (como un mosaico), la computadora debe poder distinguirlo del fondo.
Variaciones dentro de una misma clase
No todas las sillas son iguales, pero todas son sillas. La computadora debe aprender a reconocer las características comunes de un tipo de objeto, aunque haya muchas variaciones.
La forma en que se resuelven estos problemas (usando diferentes programas y métodos) hace que un sistema de visión informática sea más o menos efectivo.
Aprendizaje automático
El aprendizaje automático es una parte muy importante de la visión informática. Consiste en enseñar a las computadoras a encontrar patrones en los datos usando algoritmos matemáticos. Es como si la computadora aprendiera de la experiencia.
Se usa mucho para clasificar imágenes. Por ejemplo, puede ayudar a una computadora a decidir si una imagen muestra un gato o un perro. Hay dos tipos principales de aprendizaje automático:
- Aprendizaje supervisado: Aquí, le damos a la computadora muchos ejemplos de imágenes que ya están "etiquetadas" (por ejemplo, le decimos: "esto es un gato", "esto es un perro"). La computadora aprende a encontrar las diferencias entre ellos.
- Aprendizaje no supervisado: En este caso, le damos a la computadora imágenes sin etiquetas y ella misma debe encontrar grupos o categorías similares entre ellas.
Ambos tipos son muy útiles para que las computadoras puedan clasificar y separar partes de las imágenes.
Detección de objetos
La detección de objetos es la habilidad de la visión informática para encontrar y reconocer objetos específicos en una imagen o video. Puede ser para identificar un tipo de objeto (como "una persona" o "un coche") o un objeto en particular (como "mi coche").
Este proceso tiene dos pasos principales:
- Extraer características: La computadora busca detalles importantes en la imagen que "resumen" el objeto. Estos detalles se llaman descriptores.
- Buscar objetos: Usando esos descriptores, la computadora compara lo que ve con lo que ya sabe para identificar el objeto.
Existen diferentes tipos de descriptores y técnicas de clasificación que se usan según el objeto y las condiciones de la imagen (como la luz o la distancia). El gran desafío es que la computadora pueda reconocer un objeto sin importar su posición, tamaño o la luz que reciba.
Visión 3D
La visión 3D informática permite a una computadora "ver" el mundo en tres dimensiones, como lo hacemos nosotros. Con esta capacidad, puede crear un modelo 3D de un objeto o una escena a partir de imágenes 2D.
Hay varias técnicas para capturar la profundidad de los objetos:
- Sistemas estereoscópicos: Usan varias cámaras para simular cómo nuestros ojos ven el mundo desde dos puntos ligeramente diferentes.
- Sistemas de tiempo de vuelo (TOF): Miden el tiempo que tarda la luz en ir y volver de un objeto para calcular su distancia.
- Escáneres de luz estructurada: Proyectan patrones de luz sobre un objeto para capturar su forma y características.
Las aplicaciones de la visión 3D son muchas. Por ejemplo, los coches que se conducen solos usan la detección de objetos y sensores 3D para entender su entorno y moverse de forma segura.
Reconstrucción 3D a partir de imágenes 2D
Crear un modelo 3D a partir de una sola imagen 2D es un reto, porque muchos objetos pueden verse parecidos o diferentes en una foto. Para lograrlo, se usan modelos 3D ya conocidos y se comparan con la imagen.
Un sistema de reconocimiento 3D a partir de una imagen 2D suele seguir estos pasos:
- Adquisición de la imagen: Se toma una foto de la escena.
- Segmentación: Se separan los diferentes objetos de la escena.
- Extracción de características: Se obtienen datos numéricos que representan cada objeto.
- Reconocimiento y localización: Se identifica el objeto y se determina su posición en el espacio 3D.
- Interpretación o estimación: Se usa toda la información para entender la escena.
Reconstrucción 3D a partir de varias imágenes 2D
El objetivo es entender la forma de una escena usando varias fotos. Generalmente, se sabe o se calcula la posición de las cámaras. A veces, es útil tener información previa sobre los objetos para que la computadora los identifique mejor.
Técnicas para obtener imágenes 3D
- Multicámara: Se usan varias cámaras calibradas para capturar el objeto desde diferentes ángulos y obtener datos de profundidad.
- Cámaras estereoscópicas: Imitan la visión humana con dos "ojos" para crear imágenes con efecto 3D.
- Escáner de luz estructurada: Proyecta un patrón de luz sobre un objeto para capturar su forma y detalles.
- Time of Flight (TOF): Un sensor emite una señal infrarroja que rebota en el objeto y regresa a la cámara, permitiendo calcular la distancia y la profundidad.
Herramientas de desarrollo
Para crear sistemas de visión informática, los programadores no suelen empezar desde cero. Usan "librerías", que son colecciones de programas ya hechos que contienen los algoritmos más comunes. Así, pueden concentrarse en resolver problemas específicos.
Una de las librerías más populares es OpenCV, que es gratuita. Funciona con lenguajes de programación como Python y C++. OpenCV tiene herramientas para leer y guardar imágenes, mejorar su calidad, separar objetos y hasta algunas funciones de aprendizaje automático. También hay una versión para dispositivos Android.
Otras librerías importantes en Python son Scikit-Image y Scikit-Learn, muy usadas para procesar imágenes y para el aprendizaje automático. Python es un lenguaje muy popular en este campo.
Para el "aprendizaje profundo" (una forma avanzada de aprendizaje automático), existen librerías como TensorFlow y PyTorch. Estas librerías pueden usar la potencia de las tarjetas gráficas (como las de NVIDIA) para hacer cálculos muy rápidos, lo que es crucial para los modelos de aprendizaje profundo.
Véase también
En inglés: Computer vision Facts for Kids
- Transformador de visión
- Transformador (modelo de aprendizaje automático)