Camera Futura utilise ML.NET pour automatiser la sélection et l'organisation des photos
Client
Camera Futura
Produits & services
ML.NET
WPF
Visual Studio 2019
Secteur
Médias et divertissement
Taille de l’organisation
Petite (1-100 employés)
Pays/région
Suisse
Camera Futura est une société basée à Genève, en Suisse. L'objectif de la société est de développer et de commercialiser des logiciels révolutionnaires pour les photographes passionnés et professionnels.
Le principal produit actuellement en production est Futura Photo, une application de bureau capable d'automatiser l'élimination des photos (le processus de sélection des meilleures images d'une séance photo) et d'organiser les photos avant de commencer le post-traitement. Futura Photo agit comme un 'assistant intelligent et personnalisé'.
Problème d’entreprise
Les photographes passent beaucoup de temps à prendre des photos et beaucoup aiment améliorer les photos grâce au post-traitement. Cependant, plusieurs étapes sont nécessaires après la prise de vue et avant le post-traitement. Ces étapes, qui consistent à sélectionner les photos et à les organiser pour le post-traitement, ne sont pas aussi passionnantes que les autres parties du processus de photographie et peuvent prendre beaucoup de temps.
L'élimination des images signifie simplement la suppression des images de mauvaise qualité. « Basse qualité » signifie que la photo n'a pas été prise comme prévu pour des raisons techniques et non artistiques.
L'organisation des images implique de déplacer les images vers le bon dossier. Cela peut signifier différentes choses, comme choisir entre des images RAW ou JPG pour le post-traitement, assembler des images pour créer des panoramas et empiler des images pour la macrophotographie ou l'astrophotographie. Lorsque l'on parle de laps de temps, organiser signifie trouver les bonnes photos (éventuellement des centaines d'images pour chaque laps de temps) et les télécharger sur un logiciel qui créera la vidéo en accéléré.
Il y a aussi une tâche importante qui combine la sélection et l'organisation : collecter des séries d'images similaires et choisir la meilleure image du groupe. Les photographes ont tendance à prendre de nombreuses images du même sujet (des sports d'action aux événements en passant par les images de leurs enfants en train de jouer). Choisir les meilleures images, bien qu'extrêmement important, peut également être assez frustrant lorsque le photographe doit passer par des dizaines de groupes de ce type pour chaque prise de vue.
Futura Photo, qui se concentre principalement sur l'aide aux photographes passionnés qui prennent environ 10 000 à 25 000 images par an, offre une expérience unique pour aider à résoudre les frustrations liées à l'élimination et à l'organisation des images. Bien que l'automatisation de l'élimination et de l'organisation des photos ne soit pas un concept nouveau, le problème devient particulièrement complexe lorsque vous allez au-delà des bases, comme essayer de trouver des images totalement floues ou de regrouper des images extrêmement similaires.
Il y a plusieurs raisons pour lesquelles cette automatisation n'est pas simple ; il y a de nombreuses questions auxquelles un photographe doit répondre avant de commencer le post-traitement photo, telles que :
- Que signifie vraiment une image nette ?
- Quelles sont les raisons (bonnes ou mauvaises) pour lesquelles un photographe prend de nombreuses images similaires ?
- Lorsqu'un photographe photographie RAW + JPG, quand le fichier RAW est-il nécessaire à la place du fichier JPG ?
- Pourquoi une image avec un visage humain ayant les yeux fermés devrait-elle être jetée, ou devrait-elle être post-traitée comme quelque chose fait exprès ?
- Lorsqu'un photographe prend des images similaires, sont-ils des membres de la pile pour l'empilement de mise au point (macro), HDR (paysages), à des fins de multi-exposition (créatif) ou simplement une rafale d'images (sports) ?
La liste de ces types de questions est assez longue, mais y répondre est quelque chose que Camera Futura veut faire avec l'apprentissage automatique. Une grande valeur ajoutée provient d'un « assistant intelligent » qui est personnalisé pour les besoins du photographe et qui peut remplacer certaines étapes du flux de travail effectuées manuellement par le photographe, mais cela n'est pas possible sans l'aide de l'apprentissage automatique. Ainsi, Futura Photo a décidé d'utiliser la classification des images pour aider les photographes dans le processus de sélection et d'organisation des photos, y compris la sélection de la meilleure image d'un groupe.
Pourquoi ML.NET ?
Il y a plusieurs raisons pour lesquelles Camera Futura a choisi ML.NET pour alimenter les fonctionnalités d'apprentissage automatique de son logiciel Futura Photo.
Premièrement, Camera Futura utilise .NET pour créer ses applications, et l'utilisation de ML.NET a permis à l'entreprise de rester dans l'écosystème .NET sans avoir à coder dans un autre langage ou à s'intégrer à des frameworks non .NET. Cela a éliminé les frais généraux en termes d'apprentissage d'un nouveau langage ainsi que la complexité et les performances potentielles de l'intégration de technologies non .NET dans une application .NET.
De plus, ML.NET Model Builder dans Visual Studio a rendu extrêmement facile l'exécution de scénarios de classification d'images, à la fois pour le prototypage des modèles initiaux et pour la formation des modèles finaux actuellement utilisés en production. ML.NET lui-même offrait également tout ce dont l'entreprise avait besoin en termes de disponibilité des modèles, de personnalisation et de performances globales.
Impact de ML.NET
Alors que ML.NET a permis à Camera Futura de créer, former et déployer rapidement un modèle d'apprentissage automatique au niveau de la production, le framework a également ouvert de nouvelles opportunités pour l'entreprise. Pour une start-up, pouvoir tout faire en .NET est un grand avantage et permet à l'entreprise de développer des fonctionnalités qu'il serait impossible de développer si cela obligeait l'entreprise à utiliser plusieurs technologies différentes. Pour Camera Futura, ML.NET est à la fois un facilitateur et un outil de productivité.
Sans ML.NET, la livraison du premier modèle prêt pour la production aurait demandé plusieurs mois supplémentaires.\ »
Architecture de la solution
Futura Photo est actuellement une application de bureau WPF sur .NET Framework 4.6.1 (avec des plans de migration vers .NET Core d'ici la fin de 2021).
Comment ça fonctionne
L'utilisation de Futura Photo est simple : les photographes configurent des règles, téléchargent des images, vérifient les résultats et les appliquent pour déplacer les photos vers le bon dossier.
Les utilisateurs naviguent à travers trois fenêtres principales. La première fenêtre gère et configure les règles à appliquer, affiche la galerie principale d'images, montre l'avancement de l'analyse et affiche les résultats pour chaque photo, comme le montre la figure suivante :
Lorsque l'analyse est terminée, une seconde fenêtre peut être ouverte pour vérifier les résultats par règle :
Une troisième fenêtre peut être ouverte au besoin pour une visionneuse de photos plein écran afin de plonger plus profondément dans les résultats de chaque photo :
Données et formation
Actuellement, Futura Photo utilise les images de l'entreprise et les données de Camera Futura pour la formation. La taille de l'ensemble de données varie selon le modèle, mais l'entreprise forme généralement localement avec 10 000 à 50 000 images par modèle. Après avoir formé et évalué leurs modèles, ils déploient les modèles avec l'application WPF.
Il existe actuellement quatre modèles en production, dont trois ont été créés à l'aide du scénario de classification d'images de ML.NET Model Builder dans Visual Studio. Le dernier modèle, qui est un modèle de clustering, a été construit avec l'API ML.NET.
Les scénarios de classification d'images sont utilisés pour décider si une image a ou n'a pas une certaine caractéristique. Cette caractéristique peut être tout ce qui ne peut pas être formellement décrit par un modèle mathématique.
Par exemple, l'un des modèles peut regarder la fonction de balance des blancs pour aider à déterminer si une image a la bonne balance des blancs ou non, et pourquoi (trop vert, trop jaune, etc.).
Dans l'exemple suivant, la balance des blancs a été bien définie par l'appareil photo :
Futura Photo consomme le modèle ML.NET qui calcule la balance des blancs (comme illustré dans le schéma ci-dessus) en utilisant un code similaire à l'extrait de code suivant :
// 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;
}
}
Un autre modèle peut regarder la netteté d'une image. En théorie, il existe de nombreuses méthodes mathématiques capables de définir si une image est nette, mais la plupart des méthodes, sinon toutes, ne parviennent pas à détecter le mélange de flou de mouvement et de flou flou. Plus important encore, ces méthodes reposent sur le seuillage, ce qui est bien lorsque vous comparez des images similaires mais pas assez précis pour décider si une image singulière est suffisamment nette. Ces méthodes ne parviennent pas à détecter un niveau de netteté donné en raison de nombreux cas extrêmes qui ont un impact sur la valeur à comparer au seuil. En utilisant des modèles de classification d'images formés avec ML.NET, Futura Photo peut décider avec des taux de faux positifs et négatifs extrêmement faibles si une image est suffisamment nette.
Le dernier modèle est un modèle de clustering qui utilise l'apprentissage automatique non supervisé pour regrouper les images dans un groupe "Pass" (images qui ont demandé des fonctionnalités) ou dans un groupe "Fail" (ce qui signifie que l'image n'a pas les fonctionnalités demandées).
L'avenir de la caméra Futura
La vision de Camera Futura est d'avoir une solution basée sur le cloud qui comprend le chargement d'images via une application mobile, l'exécution du logiciel sur Azure et la finalisation de l'élimination des photos dans l'application de bureau. Cela signifie que toutes les photos seront prêtes pour le post-traitement dès que le photographe sera de retour sur son ordinateur de bureau après la séance photo.
La société développe actuellement plusieurs autres modèles, notamment pour la classification d'images, la détection d'objets et les scénarios de régression.
Alors que les utilisateurs finaux de Futura Photo ne consomment actuellement les modèles que pour l'élimination des photos ou pour organiser leur séance photo avant le post-traitement, Camera Futura aimerait également expérimenter en permettant aux clients de former des modèles localement avec leurs propres données pour des modèles encore meilleurs.
Prêt à démarrer ?
Notre tutoriel étape par étape vous aidera à démarrer ML.NET sur votre ordinateur.