A Camera Futura usa o ML.NET para automatizar a seleção e a organização de fotos
Cliente
Camera Futura
Produtos e serviços
ML.NET
WPF
Visual Studio 2019
Setor
Mídia e Entretenimento
Tamanho da Organização
Pequena (1-100 funcionários)
País/região
Suíça
Camera Futura é uma empresa com base em Geneva, Suíça. O objetivo da empresa é desenvolver e comercializar software revolucionário para entusiastas e fotógrafos profissionais.
O principal produto atualmente em produção é o Futura Photo, um aplicativo da área de trabalho que pode automatizar a seleção de fotos (o processo de selecionar as melhores imagens de uma sessão de fotos) e pode organizar fotos antes de iniciar o pós-processamento. Futura Photo atua como um 'assistente inteligente e personalizado'.
Problema de negócios
Os fotógrafos passam muito tempo tirando fotos, e muitos gostam de melhorar as fotos por meio do pós-processamento. No entanto, várias etapas são necessárias após a filmagem e antes do pós-processamento. Estas etapas, que são a seleção de fotos e a organização de fotos para pós-processamento, não são tão interessantes quanto outras partes do processo fotográfico e podem consumir muito tempo.
Selecionar imagens simplesmente significa descartar imagens de baixa qualidade. "Baixa qualidade" significa que a foto não foi capturada conforme o esperado devido a motivos técnicos, não artísticos.
Organizar imagens envolve mover imagens para a pasta correta. Isto pode significar algumas coisas diferentes, tais como escolher imagens RAW ou JPG para pós-processamento, costurar imagens para criar panoramas e empilhar imagens para macro- ou astrofotografia. Ao se falar sobre os lapsos de tempo, organizar significa encontrar as fotos corretas (possivelmente centenas de imagens para cada lapso de tempo) e carregá-las para um software que criará o vídeo de lapso de tempo.
Há também uma tarefa importante que combina selecionar e organizar: coletar séries de imagens semelhantes e escolher a melhor imagem do grupo. Os fotógrafos tendem a tirar muitas imagens do mesmo assunto (de esportes de ação a eventos e apenas imagens de seus filhos brincando). Escolher as melhores imagens, embora extremamente importante, também pode ser bastante frustrante quando o fotógrafo deve passar por dezenas de grupos desse tipo para cada foto.
Futura Photo, que está focada principalmente em ajudar os fotógrafos entusiastas que tiram cerca de 10.000 a 25.000 imagens por ano, está proporcionando uma experiência única para ajudar a resolver as frustrações com a seleção e a organização de imagens. Embora a automação de selecionar e organizar fotos não seja um novo conceito, o problema se torna particularmente complexo quando você ultrapassa as noções básicas, como tentar encontrar imagens totalmente desfocadas ou agrupar imagens extremamente semelhantes.
Há vários motivos pelos quais esta automação não é simples; há muitas perguntas que um fotógrafo deve responder antes de iniciar o pós-processamento das fotos, como por exemplo:
- O que realmente significa uma imagem nítida?
- Quais são as razões (boas ou ruins) pelas quais um fotógrafo tira muitas imagens semelhantes?
- Quando um fotógrafo tira imagens RAW + JPG, quando o arquivo BRUTO é necessário em vez do arquivo JPG?
- Por que uma imagem com um rosto humano de olhos fechados deve ser descartada, ou deve ser pós-processada como algo feito de propósito?
- Quando um fotógrafo tira imagens semelhantes, elas são partes de pilhas para empilhamento de foco (macro), HDR (paisagens), finalidade de múltipla exposição (criatividade) ou apenas uma intermitência de imagens (esportes)?
A lista destes tipos de perguntas é bastante longa, mas respondê-las é algo que a Camera Futura quer fazer com o aprendizado de máquina. Muitos valor agregado vem de um 'Assistente Inteligente' que é personalizado para as necessidades do fotógrafo e que pode substituir algumas etapas do fluxo de trabalho feito manualmente pelo fotógrafo, mas isto não é possível sem a ajuda do aprendizado de máquina. Portanto, a Futura Photo decidiu usar a classificação de imagem para ajudar os fotógrafos com o processo de seleção e organização de fotos, incluindo selecionando a melhor imagem de um grupo.
Por que ML.NET?
Há vários motivos pelos quais a Camera Futura escolheu p ML.NET para ativar as funcionalidades do aprendizado de máquina em seu software Futura Photo.
Primeiro, a Camera Futura usa o .NET para compilar seus aplicativos, e usando o ML.NET permitiu que a empresa permanecesse no ecossistema .NET sem ter que codificar em outra linguagem ou integrar-se com estruturas não-.NET. Isto eliminou a sobrecarga em termos de aprendizagem de uma nova linguagem, bem como a complexidade e os possíveis impactos de desempenho da integração de tecnologia não-.NET em um aplicativo .NET.
Além disso, o ML.NET Model Builder no Visual Studio tornou extremamente fácil executar cenários de classificação de imagem, tanto para criação de protótipos dos modelos iniciais quanto para o treinamento dos modelos finais que estão sendo atualmente usados na produção. O ML.NET em si também ofereceu tudo o que a empresa precisava em termos de disponibilidade, personalização e desempenho geral do modelo.
Impacto do ML.NET
Embora o ML.NET tenha habilitado a Camera Futura para compilar, treinar e implantar um modelo de machine learning em nível de produção rapidamente, a estrutura também abriu novas oportunidades para a empresa. Para uma start-up, ser capaz de fazer tudo em .NET é uma grande vantagem e permite que a empresa desenvolva funcionalidades que seriam impossíveis de desenvolver se exigisse que a empresa utilizasse várias tecnologias diferentes. Para a Camera Futura, o ML.NET é tanto um capacitador quanto uma ferramenta de produtividade.
Sem o ML.NET, a entrega do primeiro modelo pronto para produção levaria vários meses a mais."
Arquitetura da solução
Futura Photo é atualmente um aplicativo WPF da área de trabalho no .NET Framework 4.6.1 (com planos para migrar para o .NET Core até o final de 2021).
Como funciona
Usar o Futura Photo é simples: os fotógrafos configuram regras, carregam imagens, verificam os resultados e os aplicam para mover fotos para a pasta correta.
Os usuários navegam pelas três principais janelas. A primeira janela gerencia e configura as regras a serem aplicadas, exibe a galeria principal de imagens, mostra o progresso durante a análise e exibe os resultados para cada foto, conforme mostrado na seguinte figura:
Quando a análise é concluída, uma segunda janela poderá ser aberta para verificar os resultados por regra:
Uma terceira janela pode ser aberta conforme necessário para que um visualizador de fotos em tela inteira se aprofunde nos resultados de cada foto:
Dados e treinamento
Atualmente, o Futura Photo usa imagens e dados da empresa através da Camera Futura para treinamento. O tamanho do conjunto de dados varia de acordo com o modelo, mas a empresa normalmente é treinada localmente com 10.000-50.000 imagens por modelo Após treinar e avaliar seus modelos, eles implantam os modelos juntamente com o aplicativo WPF.
Há atualmente quatro modelos em produção, três dos quais foram compilados usando o cenário de classificação de imagem no Visual Studio do ML.NET Model Builder. O último modelo, que é um modelo de clustering, foi compilado com a API ML.NET.
Os cenários de classificação de imagem são usados para decidir se uma imagem tem ou não um determinado recurso. Esse recurso pode ser qualquer coisa que não possa ser descrita formalmente por meio de um modelo matemático.
Por exemplo, um dos modelos pode examinar o recurso de saldo em branco para ajudar a determinar se uma imagem tem o equilíbrio branco certo ou não e por que (verde demais, amarelo demais etc.).
No exemplo a seguir, o saldo em branco foi bem definido pela câmera:
Futura Photo consome o modelo ML.NET que calcula o saldo em branco (como visto no diagrama acima) usando código semelhante ao seguinte trecho 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;
}
}
Outro modelo pode olhar para a nitidez de uma imagem. Em teoria, há muitos métodos matemáticos que são capazes de definir se uma imagem é nítida, mas a maioria, se não todos os métodos, falha ao detectar a mistura de nitidez de movimento e desfocagem fora de foco. Ainda mais importante, estes métodos dependem de limiares, o que é bom quando se compara imagens semelhantes, mas não é suficiente preciso para decidir se uma imagem singular é suficientemente nítida. Estes métodos não detectam um determinado nível de nitidez devido a muitos casos de canto que impactam o valor a ser comparado com o limiar. Usando modelos de classificação de imagem treinados com ML.NET, o Futura Photo pode decidir com índices extremamente baixos de falsos positivos e negativos se uma imagem é suficientemente nítida.
O último modelo é um modelo de clustering que usa o aprendizado de máquina não supervisionado para agrupar imagens em um grupo 'Pass' (imagens que têm solicitações de funcionalidades) ou em um grupo 'Fail' (o que significa que a imagem não tem as solicitações de funcionalidades).
O Futuro da Camera Futura
A visão da Camera Futura é ter uma solução baseada em nuvem que inclui o carregamento de imagens através de um aplicativo móvel, a execução do software no Azure e a finalização da seleção de fotos no aplicativo da área de trabalho. Isto significa que todas as fotos estarão prontas para pós-processamento assim que o fotógrafo voltar ao seu computador desktop após a sessão de fotos.
A empresa está atualmente desenvolvendo vários outros modelos, incluindo cenários de classificação de imagem, detecção de objetos e regressão.
Embora os usuários finais do Futura Photo atualmente consumam apenas os modelos para selecionar fotos ou para organizar suas fotos antes do pós-processamento, o Camera Futura também gostaria de fazer experiências para permitir que os clientes treinem modelos localmente com seus próprios dados para modelos ainda melhores.
Pronto para começar?
Nosso tutorial passo-a-passo irá ajudá-lo a usar o ML.NET em seu computador.