Camera Futura usa ML.NET per automatizzare l'eliminazione e l'organizzazione delle foto
Cliente
Camera Futura
Prodotti e servizi
ML.NET
WPF
Visual Studio 2019
Settore
Media e intrattenimento
Dimensioni dell'organizzazione
Piccole dimensioni (1-100 dipendenti)
Paese/area geografica
Svizzera
Camera Futura è una società con sede a Geneva, Svizzera. L'azienda ha lo scopo di sviluppare e commercializzare software di successo per appassionati di fotografie e fotografi professionisti.
Il prodotto principale attualmente in produzione è Futura Photo, un'applicazione desktop che può automatizzare il recupero delle foto (il processo di selezione delle immagini migliori da un servizio fotografico) e può organizzare le foto prima di avviare la post-produzione. Futura Photo funge da 'assistente intelligente e personalizzato'.
Problema aziendale
I fotografici dedicano molto tempo a scattare immagini e molti si divertono a migliorare le foto tramite la rielaborazione. Tuttavia, sono necessari diversi passaggi dopo la ripresa e prima della rielaborazione. Questi passaggi, che consentono di recuperare foto e organizzarle per la post-elaborazione, non sono così interessanti come altre parti del processo fotografico e possono richiedere molto tempo.
L'eliminazione delle immagini implica semplicemente la rimozione di immagini di bassa qualità. "Bassa qualità" significa che la foto non è stata scattata come previsto per motivi tecnici, non artistici.
L'organizzazione delle immagini implica lo spostamento delle immagini nella cartella corretta. Ciò può comportare operazioni diverse, ad esempio la scelta tra immagini RAW o JPG per la post-elaborazione, l'unione delle immagini per creare panorama e la creazione di stack di immagini per macrofotografia o astrofotografia. Quando si tratta di time lapse, l'organizzazione comporta l'individuazione delle foto corrette (probabilmente centinaia di immagini per ogni time lapse) e il caricamento nel software che creerà il video con time lapse.
Esiste anche un'attività importante che combina l'eliminazione e l'organizzazione, ovvero raccogliere serie di immagini simili e scegliere l'immagine migliore dal gruppo. I fotografi tendono a scattare molte immagini dello stesso soggetto (dagli sport d'azione agli eventi fino alle immagini di bambini che giocano). Anche se è estremamente importante, la scelta delle poche immagini migliori può anche essere abbastanza frustrante quando il fotografo deve esaminare decine di gruppi di foto per ogni scatto.
Futura Photo, che si occupa principalmente di aiutare gli appassionati di fotografia che scattano da 10.000 a 25.000 immagini all'anno, offre un'esperienza unica per aiutare a risolvere le frustrazioni correlate all'eliminazione e all'organizzazione di immagini. Anche se l'automazione dell'eliminazione e dell'organizzazione di foto non è un concetto nuovo, il problema diventa particolarmente complesso quando si vogliono eseguire operazioni più complicate, come cercare immagini completamente sfocate o raggruppare immagini estremamente simili.
Questa automazione non è semplice per diversi motivi. Ci sono molte domande a cui un fotografo deve rispondere prima di avviare la post-elaborazione della foto, ad esempio:
- Che cosa significa davvero un'immagine nitida?
- Quali sono i motivi (positivi o negativi) per cui un fotografo scatta molte immagini simili?
- Quando un fotografo scatta immagini RAW + JPG, in quali casi è necessario usare un file RAW invece del file JPG?
- Perché un'immagine con un volto umano con occhi chiusi deve essere rimossa o deve essere sottoposta a post-elaborazione come se fosse stata scattata appositamente?
- Quando un fotografo scatta immagini simili, si tratta di membri di uno stack per focus stacking (macrofotografia), HDR (panorami), finalità di esposizione multipla (creatività) o semplicemente di un gruppo di immagini (sport)?
L'elenco di questi tipi di domande è piuttosto lungo, ma Camera Futura vuole rispondere tramite l'apprendimento automatico. Una grande quantità di valore aggiunto deriva da un "assistente intelligente" personalizzato per le esigenze dei fotografi e in grado di sostituire alcuni passaggi del flusso di lavoro eseguiti manualmente dal fotografo, ma questo risultato non è possibile senza l'aiuto dell'apprendimento automatico. Futura Photo ha deciso di usare la classificazione delle immagini per aiutare i fotografi a eseguire il processo di eliminazione e organizzazione delle foto, inclusa la selezione dell'immagine migliore da un gruppo.
Perché ML.NET?
Esistono diversi motivi per cui Camera Futura ha scelto ML.NET per sfruttare le funzionalità di apprendimento automatico nel proprio software Futura Photo.
In primo luogo, Camera Futura usa .NET per compilare le proprie applicazioni e l'uso di ML.NET ha consentito all'azienda di rimanere nell'ecosistema .NET senza dover scrivere codice in un altro linguaggio o integrarsi con i framework diversi da .NET. Questo ha eliminato il sovraccarico in termini di apprendimento di un nuovo linguaggio, nonché la complessità e potenziali riscontri di prestazioni dall'integrazione di tecnologia non .NET a un'applicazione .NET.
Inoltre, ML.NET Model Builder in Visual Studio ha reso estremamente semplice eseguire gli scenari di classificazione delle immagini, sia per creare prototipi dei modelli iniziali sia per il training dei modelli finali attualmente in uso nella produzione. ML.NET offre anche tutto il necessario per l'azienda in termini di disponibilità dei modelli, personalizzazione e prestazioni complessive.
Impatto di ML.NET
ML.NET ha consentito a Camera Futura di creare, eseguire il training e distribuire rapidamente un modello di apprendimento automatico a livello di produzione, ma il framework ha offerto anche nuove opportunità per l'azienda. Per una startup la possibilità di eseguire tutte le operazioni in .NET costituisce un vantaggio significativo e consente alla società di sviluppare funzionalità che sarebbero altrimenti impossibili da sviluppare se la società dovesse usare più tecnologie diverse. Per Camera Futura, ML.NET è uno strumento che offre nuove opportunità e favorisce la produttività.
Senza ML.NET, la distribuzione del primo modello pronto per la produzione avrebbe richiesto diversi altri mesi."
Architettura della soluzione
Futura Photo è attualmente un'applicazione desktop WPF in .NET Framework 4.6.1 (con piani per la migrazione a .NET Core entro la fine del 2021).
Come funziona
L'uso di Futura Photo è semplice: i fotografi configurano le regole, caricano le immagini, controllano i risultati e li applicano per spostare le foto nella cartella corretta.
Gli utenti si spostano in tre finestre principali. La prima finestra gestisce e configura le regole da applicare, visualizza la raccolta principale di immagini, mostra lo stato di avanzamento durante l'analisi e visualizza i risultati per ogni foto, come illustrato nella figura seguente:
Al termine dell'analisi, è possibile aprire una seconda finestra per controllare i risultati in base alla regola:
Se necessario, è possibile aprire una terza finestra per consentire a un visualizzatore foto a schermo intero di analizzare in dettaglio i risultati di ogni foto:
Dati e training
Attualmente, Futura Photo usa immagini e dati aziendali di Camera Futura per il training. Le dimensioni del set di dati variano in base al modello, ma l'azienda esegue in genere il training in locale con 10.000-50.000 immagini per modello Dopo il training e la valutazione dei modelli, i modelli vengono distribuiti insieme all'applicazione WPF.
Sono attualmente disponibili quattro modelli in produzione, tre dei quali sono stati compilati usando lo scenario di classificazione delle immagini di ML.NET Model Builder in Visual Studio. L'ultimo modello, ovvero un modello di clustering, è stato compilato con l'API ML.NET.
Gli scenari di classificazione delle immagini vengono usati per decidere se un'immagine include o meno una determinata caratteristica. Questa caratteristica può essere qualsiasi elemento che non può essere descritto in modo formale tramite un modello matematico.
Ad esempio, uno dei modelli può esaminare la funzionalità di bilanciamento del bianco per determinare se un'immagine ha o meno il giusto bilanciamento del bianco e perché (troppo verde, troppo giallo e così via).
Nell'esempio seguente il bilanciamento del bianco è stato definito correttamente dalla fotocamera:
Futura Photo utilizza il modello di ML.NET che calcola il bilanciamento del bianco (come illustrato nel diagramma precedente) usando codice simile al frammento di codice seguente:
// 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 altro modello può osservare la nitidezza di un'immagine. In teoria esistono molti metodi matematici che sono in grado di definire se un'immagine è nitida, ma la maggior parte dei metodi, se non tutti i metodi, non riesce a rilevare la combinazione di sfocatura dovuta a movimento e sfocatura dovuta a messa a fuoco. Ancora più importante, questi metodi si basano sulla definizione della soglia, che è accettabile quando si confrontano immagini simili ma non è abbastanza accurata per decidere se una singola immagine è sufficientemente nitida. Questi metodi non sono in grado di rilevare un determinato livello di nitidezza a causa di molti casi limite che influiscono sul valore da confrontare con la soglia. Usando i modelli di classificazione delle immagini di cui è stato eseguito il training con ML.NET, Futura Photo può decidere se un'immagine è abbastanza nitida con percentuali estremamente ridotte di falsi positivi e negativi.
L'ultimo modello è un modello di clustering che usa l'apprendimento automatico non supervisionato per raggruppare le immagini in un gruppo "Pass", ovvero immagini che hanno le caratteristiche richieste, o in un gruppo "Fail", ovvero immagini senza le caratteristiche richieste.
Il futuro di Camera Futura
La visione di Camera Futura prevede una soluzione basata sul cloud che include il caricamento di immagini tramite un'app per dispositivi mobili, l'esecuzione del software in Azure e la finalizzazione della foto nell'app desktop. Ciò significa che tutte le foto saranno pronte per la post-produzione non appena il fotografo torna sul proprio computer desktop dopo il servizio fotografico.
L'azienda sta attualmente sviluppando diversi altri modelli, ad esempio per la classificazione delle immagini, il rilevamento di oggetti e gli scenari di regressione.
Mentre gli utenti finali di Futura Photo utilizzano attualmente solo i modelli per l'eliminazione delle foto o per l'organizzazione del servizio fotografico prima della post-elaborazione, Camera Futura vorrebbe anche sperimentare per consentire ai clienti di eseguire il training dei modelli in locale con i propri dati per ottenere modelli ancora migliori.
Pronti per iniziare?
Questa esercitazione dettagliata ti aiuterà a ottenere ML.NET in esecuzione nel computer.