La cámara Futura usa ML.NET para automatizar la selección y organización de fotos
Cliente
Camera Futura
Productos y servicios
ML.NET
WPF
Visual Studio 2019
Sector
Medios de comunicación y entretenimiento
Tamaño de la organización
Pequeño (1-100 empleados)
País o región
Suiza
Camera Futura es una empresa con sede en Ginebra, Suiza. El propósito de la empresa es desarrollar y comercializar software innovador para entusiastas y fotógrafos profesionales.
El producto principal actualmente en producción es Futura Photo, una aplicación de escritorio que puede automatizar la selección de fotos (el proceso de selección de las mejores imágenes de una toma de fotos) y puede organizar las fotos antes de iniciar el procesamiento posterior. Futura Photo actúa como un "asistente inteligente y personalizado".
Problema empresarial
Los fotógrafos pasan mucho tiempo grabando imágenes y muchos disfrutan mejorando las fotos a través del procesamiento posterior. Sin embargo, se necesitan varios pasos después de la toma y antes del procesamiento posterior. Estos pasos, que consisten en seleccionar fotos y organizarlas para su procesamiento posterior, no son tan interesantes como otras partes del proceso de fotografía y pueden llevar mucho tiempo.
La eliminación de imágenes simplemente significa descartar imágenes de baja calidad. "Baja calidad" significa que la foto no se tomó según lo previsto debido a razones técnicas, no artísticas.
La organización de imágenes implica mover imágenes a la carpeta correcta. Esto puede significar algunas cosas diferentes, como elegir entre imágenes RAW o JPG para el procesamiento posterior, unir imágenes para crear panorámicas y apilar imágenes para macro- o astrofotografía. Cuando se habla de intervalos de tiempo, organizar significa buscar las fotos correctas (posiblemente cientos de imágenes para cada intervalo de tiempo) y cargarlas en software que creará el vídeo de intervalo de tiempo.
También hay una tarea importante que combina la selección y la organización: la recopilación de series de imágenes similares y la elección de la mejor imagen del grupo. Los fotógrafos tienden a grabar muchas imágenes del mismo tema (desde deportes de acción hasta eventos hasta simplemente imágenes de sus hijos jugando). Elegir las mejores imágenes, aunque sumamente importantes, también puede resultar bastante frustrante cuando el fotógrafo debe pasar por docenas de estos grupos para cada fotograma.
Futura Photo, que se centra principalmente en ayudar a los fotógrafos entusiastas que graban entre 10 000 y 25 000 imágenes al año, proporciona una experiencia única para ayudar a resolver las frustraciones con la selección y organización de imágenes. Aunque la automatización de la selección y organización de fotos no es un concepto nuevo, el problema se vuelve especialmente complejo cuando va más allá de los conceptos básicos, como intentar encontrar imágenes totalmente borrosas o agrupar imágenes extremadamente similares.
Hay varias razones por las que esta automatización no es sencilla; hay muchas preguntas que un fotógrafo debe responder antes de iniciar el procesamiento posterior de la foto, como:
- ¿Qué significa realmente una imagen nítida?
- ¿Cuáles son las razones (buenas o incorrectas) por las que un fotógrafo graba muchas imágenes similares?
- Cuando un fotógrafo graba RAW + JPG, ¿cuándo se necesita el archivo RAW en lugar del archivo JPG?
- ¿Por qué se debe descartar una imagen con una cara humana con los ojos cerrados o debe procesarse como algo hecho a propósito?
- Cuando un fotógrafo graba imágenes similares, ¿son miembros de pila para el apilamiento de foco (macro), HDR (paisajes), propósito de exposición múltiple (creativo) o solo una ráfaga de imágenes (deportes)?
La lista de estos tipos de preguntas es bastante larga, pero responderlas es algo que la Cámara Futura quiere hacer con el aprendizaje automático. Una gran cantidad de valor agregado procede de un "Asistente inteligente" que está personalizado para las necesidades del fotógrafo y que puede reemplazar algunos pasos del flujo de trabajo realizado manualmente por el fotógrafo, pero esto no es posible sin la ayuda del aprendizaje automático. De manera que, Futura Photo decidió usar la clasificación de imágenes para ayudar a los fotógrafos con el proceso de organización y selección de fotos, incluida la selección de la mejor imagen de un grupo.
¿Por qué ML.NET?
Hay varias razones por las que la Camera Futura eligió ML.NET para potenciar las características de aprendizaje automático en su software Futura Photo.
En primer lugar, Camera Futura usa .NET para compilar sus aplicaciones y el uso de ML.NET ha permitido a la empresa permanecer en el ecosistema de .NET sin tener que codificar en otro lenguaje ni integrarse con non-.NET marcos. Esto ha eliminado la sobrecarga en términos de aprendizaje de un nuevo lenguaje, así como la complejidad y los posibles resultados de rendimiento de la integración de non-.NET tecnología en una aplicación .NET.
Además, ML.NET Model Builder en Visual Studio facilitaba enormemente la ejecución de escenarios de clasificación de imágenes, tanto para crear prototipos de los modelos iniciales como para entrenar los modelos finales que se usan actualmente en producción. ML.NET también ofrecía todo lo que la empresa necesitaba en términos de disponibilidad del modelo, personalización y rendimiento general.
Impacto de ML.NET
Aunque ML.NET ha habilitado Camera Futura para crear, entrenar e implementar rápidamente un modelo de machine learning de nivel de producción, el marco también ha abierto nuevas oportunidades para la empresa. Para una empresa emergente, poder hacer todo en .NET es una gran ventaja y permite a la empresa desarrollar características que serían imposibles de desarrollar si fuera necesario que la empresa usara varias tecnologías diferentes. Para Camera Futura, ML.NET es un habilitador y una herramienta de productividad.
"Sin ML.NET, la entrega del primer modelo listo para producción habría requerido varios meses más."
Arquitectura de la solución
Futura Photo es actualmente una aplicación de escritorio de WPF en .NET Framework 4.6.1 (con planes para migrar a .NET Core a finales de 2021).
Cómo funciona
Usar Futura Photo es sencillo: los fotógrafos configuran reglas, cargan imágenes, comprueban los resultados y los aplican para mover fotos a la carpeta correcta.
Los usuarios navegan por tres ventanas principales. La primera ventana administra y configura las reglas que se van a aplicar, muestra la galería principal de imágenes, muestra el progreso durante el análisis y muestra los resultados de cada foto, como se muestra en la ilustración siguiente:
Cuando se realiza el análisis, se puede abrir una segunda ventana para comprobar los resultados por regla:
Se puede abrir una tercera ventana según sea necesario para que un visor de fotos a pantalla completa profundice en los resultados de cada foto:
Datos y entrenamiento
Actualmente, Futura Photo usa imágenes de empresa y datos de la Camera Futura para el entrenamiento. El tamaño del conjunto de datos varía según el modelo, pero la empresa normalmente entrena localmente con entre 10 000 y 50 000 imágenes por modelo Después de entrenar y evaluar sus modelos, implementan los modelos junto con la aplicación WPF.
Actualmente hay cuatro modelos en producción, tres de los cuales se crearon con el escenario de clasificación de imágenes de ML.NET Model Builder en Visual Studio. El último modelo, que es un modelo de agrupación en clústeres, se compiló con la API de ML.NET.
Los escenarios de clasificación de imágenes se usan para decidir si una imagen tiene o no una característica determinada. Esta característica puede ser cualquier cosa que no se pueda describir formalmente a través de un modelo matemático.
Por ejemplo, uno de los modelos puede ver la característica de balance de blancos para determinar si una imagen tiene el balance de blancos correcto o no, y por qué (demasiado verde, demasiado amarillo, etc.).
En el ejemplo siguiente, la cámara ha definido bien el balance de blancos:
Futura Photo consume el modelo de ML.NET que calcula el balance de blancos (como se muestra en el diagrama anterior) mediante código similar al siguiente fragmento de código:
// Method using ML to define whether the camera's AWB
// (Automatic White Balance) estimation is accurate
private Photo CalculationAWB(Photo photo)
{
Photo _photo = photo;
try
{
// Create single instance of sample data from first line of
// dataset for model input
ModelInput inputData = new ModelInput()
{
// FileNameImageLight: path for ad-hoc thumbnail of the
// Photo source object (JPG or RAW file)
ImageSource = _photo.FileNameImageLight
};
// WB_ML_PC: % of likelihood of AWB being either 'OK'
// (well calculated), cold, tint green, tint purple, or warm
// AWB's Accuracy Result ("OK"): predictionResult.Score[1]
// Bias: predictionResult.Score[0] for Cold, [2] for Tint Green,
// [3] for Tint Purple, and [4] for warm
for (int i = 0; i < 5; i++){
_photo.WB_ML_PC[i] = predictionResult.Score[i]) * 100;
}
catch (Exception ex)
{
log.Error(ex, "Throughout ML_IsAWB_OK");
}
return _photo;
}
}
Otro modelo puede examinar la nitidez de una imagen. En teoría, hay una gran cantidad de métodos matemáticos que pueden definir si una imagen es nítida, pero la mayoría, si no todos los métodos, no detectan la combinación de desenfoque del movimiento y desenfoque del foco. Aún más importante, estos métodos se basan en el umbral, que es correcto cuando se comparan imágenes similares, pero no es lo suficientemente preciso como para decidir si una imagen singular es lo suficientemente nítida. Estos métodos no detectan un nivel determinado de nitidez debido a muchos casos de esquina que afectan al valor que se va a comparar con el umbral. Con modelos de clasificación de imágenes entrenados con ML.NET, Futura Photo puede decidir con tasas extremadamente bajas de falsos positivos y negativos si una imagen es lo suficientemente nítida.
El último modelo es un modelo de agrupación en clústeres que usa aprendizaje automático no supervisado para agrupar imágenes en un grupo "Pass" (imágenes que han solicitado características) o en un grupo "Fail" (lo que significa que la imagen no tiene las características solicitadas).
El futuro de la Camera Futura
La visión de Camera Futura es tener una solución basada en la nube que incluye cargar imágenes a través de una aplicación móvil, ejecutar el software en Azure y finalizar la selección de fotos en la aplicación de escritorio. Esto significa que todas las fotos estarán listas para el procesamiento posterior en cuanto el fotógrafo vuelva a su equipo de escritorio después de la sesión de fotos.
Actualmente, la empresa está desarrollando otros modelos, como la clasificación de imágenes, la detección de objetos y los escenarios de regresión.
Aunque los usuarios finales de Futura Photo actualmente solo consumen los modelos para la selección de fotos o para organizar su foto antes del procesamiento posterior, la Cámara Futura también quiere experimentar con la posibilidad de que los clientes entrenen modelos localmente con sus propios datos para mejorar aún más los modelos.
¿Listo para empezar?
Nuestro tutorial paso a paso le ayudará a ejecutar ML.NET en su equipo.