Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Visión por computador desde cero, Unidad 10 — Visión clásica vs Deep Learning, 10.1 — Límites de la visión clásica ·

Sensibilidad a cambios

Sensibilidad a cambios: Límites de la visión clásica

Introducción

La visión por computador (VPC) ha avanzado significativamente gracias al uso de métodos basados en aprendizaje profundo, pero sigue habiendo desafíos importantes que los sistemas tradicionales de VPC no pueden superar. En este artículo, exploraremos la sensibilidad a cambios y cómo afecta a las técnicas clásicas de VPC, proporcionando ejemplos prácticos y un checklist para ayudarte a mejorar tus proyectos.

Explicación principal

La visión por computador tradicional, también conocida como visión clásica, se basa en algoritmos manuales y reglas predefinidas para analizar imágenes. Estos sistemas pueden ser altamente precisos en ciertas tareas, pero su rendimiento puede verse comprometido cuando las imágenes presentan pequeños cambios o variaciones en condiciones ambientales.

Una de las principales limitantes de la visión clásica es su sensibilidad a cambios sutiles en el entorno. Por ejemplo, un sistema que detecta rostros basado en reglas manuales puede fallar si la iluminación cambia ligeramente o si hay pequeños movimientos en el rostro. Este fenómeno se conoce como sensibilidad a cambios.

Ejemplo práctico

Imagina un sistema que utiliza bordes para detectar objetos en una imagen. Si el borde de un objeto se desvía ligeramente debido a un cambio en la iluminación, el algoritmo puede fallar. En el siguiente código, vemos cómo un simple cambio en la iluminación afecta la detección de bordes utilizando el operador Sobel:

import cv2
import numpy as np

# Cargar imagen
image = cv2.imread('imagen_original.jpg', 0)

# Aplicar operador Sobel
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)

# Sumar los resultados para obtener el borde total
edges_sobel = np.sqrt(sobel_x**2 + sobel_y**2)

# Aumentar la iluminación (ejemplo de cambio)
image_aumentada = cv2.add(image, 50)

sobel_x_aumentada = cv2.Sobel(image_aumentada, cv2.CV_64F, 1, 0, ksize=3)
sobel_y_aumentada = cv2.Sobel(image_aumentada, cv2.CV_64F, 0, 1, ksize=3)

edges_sobel_aumentada = np.sqrt(sobel_x_aumentada**2 + sobel_y_aumentada**2)

# Visualizar los resultados
cv2.imshow('Original', edges_sobel)
cv2.imshow('Aumentada', edges_sobel_aumentada)
cv2.waitKey(0)
cv2.destroyAllWindows()

Como puedes ver, incluso un pequeño aumento en la iluminación puede afectar significativamente la detección de bordes.

Errores típicos / trampas

  1. Sensibilidad al ruido: Los sistemas basados en reglas manuales pueden ser altamente sensibles a ruido adicional en las imágenes, lo que puede llevar a malinterpretaciones.
  2. Dependencia de la iluminación: Ciertas técnicas pueden fallar si la iluminación varía ligeramente, como se muestra en el ejemplo anterior con el operador Sobel.
  3. Fallos por escala y rotación: Las reglas manuales no suelen tener una buena capacidad para manejar imágenes a diferentes escalas o rotaciones.

Checklist accionable

Para mejorar la resistencia de tus sistemas de visión clásica, considera las siguientes acciones:

  1. Preprocesamiento avanzado: Aplica técnicas de preprocesamiento como normalización y reducción de ruido para mejorar la consistencia de las imágenes.
  2. Adaptabilidad a condiciones ambientales: Implementa métodos que puedan adaptarse a cambios en la iluminación o el entorno, como el uso de histogramas equilibrados (HE).
  3. Consistencia en escala y rotación: Utiliza transformaciones geométricas para asegurar que tus algoritmos funcionen correctamente con imágenes a diferentes escalas y rotaciones.
  4. Reducción del ruido: Aplica filtros espaciales o temporales para minimizar el impacto del ruido en la detección de características.
  5. Validación exhaustiva: Realiza pruebas exhaustivas en diversas condiciones ambientales y con imágenes a diferentes escalas para asegurar una implementación robusta.

Cierre

Los sistemas basados en reglas manuales o técnicas clásicas de visión por computador pueden fallar ante pequeños cambios en las imágenes. Sin embargo, mediante el uso de técnicas avanzadas de preprocesamiento y adaptabilidad a condiciones ambientales, puedes mejorar significativamente la robustez de tus sistemas.

Siguientes pasos

  1. Implementa un pipeline de preprocesamiento: Utiliza herramientas como OpenCV para aplicar filtros espaciales y reducir el ruido.
  2. Ajusta a diferentes condiciones ambientales: Prueba tu sistema en diversas condiciones de iluminación y entorno.
  3. Evaluación exhaustiva: Realiza pruebas con imágenes a diferentes escalas y rotaciones para asegurar una implementación robusta.

Siguiendo estas recomendaciones, podrás desarrollar sistemas de visión por computador más resistentes y adaptativos a las condiciones reales del mundo real.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).