¿Cuáles son las trampas / trampas / deudas técnicas a tener en cuenta si alguien está comenzando una codificación de visión por computadora y una aplicación de aprendizaje automático en C ++?

PTTD para C ++ -> la gestión de memoria es un nido de posibles errores. Cuando se encuentre con una pérdida de memoria pero todas sus noticias y eliminaciones se alineen, busque declaraciones en las que haya reasignado el puntero y asegúrese de eliminar antes. No use en exceso la herencia múltiple o la sobrecarga del operador: no hay una ventaja de rendimiento y la compacidad de expresión es una compensación pobre para facilitar el mantenimiento. Debido a que C ++ no tiene multiprocesamiento incorporado, elija sabiamente al usar su biblioteca de hilos. Asegúrese de que todos los paquetes que use, usen los mismos bloques de construcción fundamentales.

PTTD para visión artificial -> no confunda el aprendizaje automático con la visión artificial. Las transformaciones fundamentales de la visión por computadora: transformaciones afines, convoluciones, FFTs todavía son útiles cuando se utiliza el aprendizaje automático, ya que las máquinas aún aprenden mejor cuando los conjuntos de entrenamiento están normalizados. La escala es la variable más importante:> los colores se pueden manipular, los niveles se pueden reducir, pero la escala aún determina lo que estamos viendo. Todas las cámaras imparten su propia personalidad en su imagen: use los metadatos que vienen con las imágenes tanto como sea posible.

PTTD para aprendizaje automático -> la programación para aprendizaje automático es bastante trivial, aunque el ajuste del rendimiento es crítico. Enseñar a la máquina es donde el caucho se encuentra con la carretera. Recuerde que su negativo / fondo es tan importante como su ejemplo positivo. Un gran número de clases en realidad se vuelve más fácil de entrenar porque n-1 de las clases son las negativas para cada clase individual. Construir sus conjuntos de datos es al menos tan importante como elegir su protocolo: la computadora no sabe lo que quiere clasificar; tienes que mostrarlo lo más claramente posible. El aprendizaje no supervisado puede ser académicamente interesante, pero no es valioso para las aplicaciones, a menos que la computadora esté pagando la factura.

En primer lugar, recomendaría buscar en el proyecto OpenCV una biblioteca para ayudar a lo grande con el proceso. Asegúrese de no utilizar una gran cantidad de recursos del sistema que no necesita para mantenerlo rápido. Asegúrate de tener en cuenta las situaciones de carrera si haces múltiples hilos de la aplicación. Y, por último, tenga en cuenta la reutilización de la memoria solo después de haberlo hecho en otro lugar.