Cómo crear un plan de prueba (por ejemplo, como un diagrama de flujo) para evaluar algoritmos de procesamiento de imágenes

Respondo como alguien que se especializó en Visión por Computadora para la tesis de pregrado y que trabajó en el campo del aseguramiento de la calidad del software, sin conocer ningún detalle sobre su pregunta, como los algoritmos de procesamiento de imágenes que desea probar.

Como respuesta genérica:

  1. No existe un algoritmo de bala de plata que pueda reemplazar por completo el análisis humano y los aportes del mundo real en la planificación del enfoque de prueba. Los algoritmos no pueden conocer el conocimiento a priori del proyecto que planea probar.
  2. En la automatización de pruebas: es un error común pensar que la automatización de pruebas puede reemplazar completamente a los probadores humanos. La ejecución de la prueba manual debe identificarse claramente primero y debe ser altamente predecible y lo suficientemente repetitiva como para ser automatizada. En la industria de TI, el Principio de Pareto es aplicable: solo puede automatizar el 20% superior (aproximadamente) de su sistema, es decir, el marco del sistema, la parte que no cambia incluso después de correcciones y mejoras. De lo contrario, terminará creando scripts de prueba igualmente largos (casos de prueba automatizados) para cada cambio de código. Dado que los scripts de prueba también son códigos y están igualmente sujetos a errores de programación, también debe probar el código que se supone que debe probar en su nombre, que es solo una capa adicional de prueba y no siempre resuelve el problema directamente. Puede hacerlo de esta manera, pero no siempre es eficiente.
  3. El enfoque de prueba siempre debe depender del problema que el sistema intenta resolver y los problemas potenciales que debe manejar. Cualquiera sea el proyecto, se deben considerar todos los tipos posibles de escenarios de prueba, incluidos:
  • casos falsos positivos, por ejemplo, imágenes del mundo real con objetos que el software podría detectar / reconocer pero no debería ser
  • casos de falsos negativos, por ejemplo, imágenes del mundo real con objetos que el software debería detectar / reconocer pero no pudo hacerlo

Los casos de falsos positivos y falsos negativos deben considerarse en la computación para la tasa de precisión del sistema, es decir, casos exitosos / (verdadero positivo + falso positivo + falso negativo)

Si solo está hablando del preprocesamiento de imágenes (por ejemplo, reducción de ruido, nitidez), la prueba debería ser mucho más fácil que la detección y el reconocimiento de objetos. Para probar la efectividad de la reducción de ruido o el afilado:

  1. Obtén una imagen de referencia
  2. Para reducción de ruido: ponga algo de ruido en la imagen de referencia. Para enfocar: use un algoritmo de desenfoque para desenfocar la imagen
  3. Use su algoritmo de reducción de ruido / nitidez
  4. Compare la imagen en el Paso 1 y el Paso 3

Esto no es realmente un “algoritmo”.

De esta manera, una pregunta demasiado amplia para responder de manera significativa. En principio, debe identificar sus variables y luego generar suficientes casos de prueba para cubrir la mayoría de los escenarios posibles que podrían romper su algoritmo. Tomemos, por ejemplo, el más simple de los algoritmos de procesamiento de imágenes: escalado.
¿Cuáles son las restricciones de entrada? (Formatos específicos, resolución (tamaño máximo posible, tamaño posible mínimo), profundidad de bits, espacio de color, etc.)
¿Subes, bajas o ambos?
¿Son los factores de escala arbitrarios o restringidos (digamos, enteros positivos solamente)?
¿Cuál es el formato de salida, profundidad de bits, espacio de color?
Etc.

More Interesting

¿Cómo puede el aprendizaje automático mejorar el desarrollo de software?

¿Cuáles son los principales factores que debo tener en cuenta al fijar el precio de mi software?

¿Por qué las grandes empresas contratan a grandes ingenieros y les piden que hagan un trabajo mundano? ¿Por qué no pueden automatizarse estas tareas cotidianas, como las operaciones de desarrollo, utilizando IA?

¿Cuál es la mejor manera para que una compañía de software SaaS aloje su software en China?

¿Qué se siente estar en una empresa de software cuando su sucursal no está relacionada con el software?

Cómo construir software como un principiante completo

¿Cuáles son algunas de las características clave que busca en una solución confiable de software de monitoreo de redes empresariales?

Cómo vender un producto de software a escuelas en India

¿Qué es mejor para una pasantía de ingeniería de software: nuevas empresas o empresas establecidas?

¿Cuáles son los mejores motores 3D para Flash?

¿Cuánto es razonable pedir, como desarrollador de software de nivel medio a superior, para ser compensado por más de 5 horas, entrevistas en el sitio?

Soy el único desarrollador en una startup donde los fundadores no son expertos en tecnología. Estoy tratando de convencerlos de que necesitamos más desarrolladores y una línea de tiempo más larga. ¿Cómo puedo convencerlos?

¿Qué es EMC ESRS y cómo funciona?

¿El concepto de "ingeniero de pila completa" va en contra de la cultura / mentalidad de DevOps?

¿Qué desafíos enfrentan los desarrolladores / programadores?