# Diseño de la aplicación

La siguiente tabla resume las características de diseño de la aplicación que pueden mejorar el rendimiento en el tiempo de ejecución. Las opciones de diseño de la aplicación que mejoran el rendimiento suelen tener un impacto mínimo en el comportamiento del sistema.

Patrón de diseño | Por qué es más rápido | Mejor opción | Cuidado con...
--- | --- | --- | ---
Use un pequeño número de herramientas por flujo. | El tiempo de procesamiento de una sola herramienta de ViDi no varía mucho por la cantidad de información que devuelva la herramienta. Por ejemplo, una única herramienta azul que está entrenada para encontrar 100 características diferentes funciona a la misma velocidad que una herramienta entrenada para encontrar una sola característica. Además, el número de características devueltas solo supone una mínima diferencia de velocidad. De forma similar, una herramienta roja se ejecuta a la misma velocidad con independencia del número de defectos que encuentre, y una herramienta verde puede clasificar a la misma velocidad ya sea en 2 o 2000 clases. | Empiece a construir su aplicación con una sola herramienta. |
Evite las conversiones de imágenes. | Durante el funcionamiento de la herramienta, debe muestrearse la imagen para que la procese la red neuronal. Este muestreo requiere una imagen en formato de trama (sin comprimir) como un mapa de bits. Realizar esta conversión lleva tiempo. De forma similar, si la herramienta está configurada para utilizar una imagen de un solo canal (escala de grises) como entrada, pero las imágenes suministradas son imágenes en color multicanal, debe calcularse el valor de luminancia para cada imagen en tiempo de ejecución. | Intente resolver su aplicación utilizando una imagen en escala de grises de un solo canal. | Algunas aplicaciones requieren información sobre el color.
Reduzca la cantidad de datos procesados. | Reduzca la cantidad de datos procesados haciendo lo siguiente: Use una ROI más pequeña Use una máscara Use el menor número posible de canales de imagen Esto ayuda a mejorar la velocidad de procesamiento al reducir la cantidad total de datos que se procesan. | Restrinja la ROI. | Las herramientas de ViDi necesitan información contextual para funcionar bien, así que intente no limitar demasiado la ROI. Normalmente, no hace falta reducir la frecuencia de muestreo (establecido a través del parámetro Densidad de muestreo). Seleccionando un Tamaño de característica más grande, puede mejorar la velocidad y eliminar la necesidad de reducir la frecuencia de muestreo (downsampling) en tiempo de ejecución.
Usar multihilo | En sistemas con varias GPU, el procesamiento de múltiples secuencias de forma simultánea permite a las herramientas ejecutarse en paralelo, lo que aumenta la capacidad de proceso. En los sistemas con una sola GPU, puede configurar el sistema de modo que varios procesos puedan usar la misma GPU. Esto permite una mayor ocupación de la GPU y puede mejorar la capacidad de proceso, aunque aumentará el tiempo de ejecución de la herramienta. | Utilice el argumento de la línea de comandos --max-process-count para que varios hilos de ejecución puedan acceder a una sola GPU. A fin de habilitar el acceso a la GPU multiproceso para una aplicación en tiempo de ejecución mediante el método GlobalConfig() del control local:
    control.GlobalConfig("max_process_count=2");
| Aumentará el tiempo de procesamiento de una herramienta individual.
C++ (no administrado) | El uso de un entorno de lenguaje no administrado reduce el impacto de la actividad del sistema en la ejecución de la herramienta. | Para aplicaciones de baja latencia y alto rendimiento, no utilice Cognex Designer. | Windows no es un sistema operativo de tiempo real (RTOS).