Camera Futura использует ML.NET для автоматизации отбора и организации фотографий.
Клиент
Camera Futura
Продукты и службы
ML.NET
WPF
Visual Studio 2019
Промышленность
СМИ и развлечения
Размер организации
Малый (от 1 до 100 сотрудников)
Страна/регион
Швейцария
Camera Futura — это компания, расположенная в Женеве, Швейцария. Целью компании является разработка и коммерциализация инновационного программного обеспечения для фотографов-любителей и профессиональных фотографов.
Основным разрабатываемым в настоящий момент продуктом является Futura Photo. Это классическое приложение, которое позволяет автоматизировать процесс отбора фотографий (процесс выбора лучших изображений фотосессии) и упорядочивать фотографии перед началом постобработки. Futura Photo выступает в роли умного и персонализированного помощника.
Бизнес-проблема
Фотографы тратят много времени на съемку, и многие предпочитают улучшать фотографии с помощью постобработки. Однако после съемки и перед постобработкой необходимо выполнить несколько шагов. Эти шаги, такие как отбор фотографий и их организация для постобработки, не так увлекательны, как остальные части процесса создания фотографии, и могут занимать много времени.
Отбраковка изображений просто означает отбраковку изображений низкого качества. «Низкое качество» означает, что фотография была снята не так, как предполагалось, по техническим, а не художественным причинам.
Организация изображений включает перемещение изображений в нужную папку. Это может означать несколько разных вещей, таких как выбор между изображениями RAW или JPG для постобработки, объединение изображений для создания панорам и наложение изображений для макро- или астрофотографии. Говоря о таймлапсах, организация означает поиск правильных фотографий (возможно, сотен изображений для каждого таймлапса) и загрузку их в программное обеспечение, которое создаст таймлапс-видео.
Также есть важная задача, которая сочетает в себе отбор и организацию: сбор серии похожих изображений и выбор лучшего изображения из группы. Фотографы, как правило, снимают много изображений одного и того же предмета (от активных видов спорта до мероприятий и просто изображений играющих детей). Выбор нескольких лучших изображений, хотя и является чрезвычайно важным, также может быть весьма утомительным, когда фотографу приходится просматривать десятки таких групп для каждого снимка.
Futura Photo, которая в основном ориентирована на помощь фотографам-энтузиастам, которые снимают от 10 000 до 25 000 изображений в год, предлагает уникальный опыт, помогающий решить проблемы с отбором и организацией изображений. Хотя автоматизация отбора и организации фотографий не является новой концепцией, проблема становится особенно сложной, когда вы выходите за рамки основ, например, пытаетесь найти полностью размытые изображения или сгруппировать очень похожие изображения.
Есть несколько причин, по которым эта автоматизация не является простой; Есть много вопросов, на которые фотограф должен ответить перед тем, как приступить к постобработке фотографий, например:
- Что в действительности означает четкое изображение?
- Каковы причины (хорошие или плохие), почему фотограф снимает много одинаковых изображений?
- Когда фотограф снимает RAW + JPG, когда нужен файл RAW вместо файла JPG?
- Почему изображение с человеческим лицом с закрытыми глазами должно быть отброшено или оно должно быть подвергнуто постобработке как нечто, сделанное специально?
- Когда фотограф снимает похожие изображения, используются ли они для наложения фокуса (макросъемка), HDR (пейзажи), мультиэкспозиции (творчество) или просто как серия изображений (спорт)?
Список таких вопросов довольно длинный, но ответы на них — это то, что Camera Futura хочет сделать с помощью машинного обучения. Большую добавленную стоимость дает «Умный помощник», который настраивается под нужды фотографа и может заменить некоторые этапы рабочего процесса, выполняемые фотографом вручную, но это невозможно без помощи машинного обучения. Итак, Futura Photo решила использовать классификацию изображений, чтобы помочь фотографам в процессе отбора и организации фотографий, включая выбор лучшего изображения из группы.
Почему ML.NET?
Есть несколько причин, по которым Camera Futura выбрала ML.NET для поддержки функций машинного обучения в своем программном обеспечении Futura Photo.
Прежде всего, Camera Futura использует .NET для создания собственных приложений, а использование ML.NET дало компании возможность оставаться в экосистеме .NET без необходимости написания кода на другом языке или выполнения интеграции с платформами, не относящимися к .NET. Это позволило избежать дополнительных расходов на изучение нового языка, а также сложностей и потенциального снижения производительности из-за интеграции в приложение .NET сторонних технологий.
Кроме того, ML.NET Model Builder в Visual Studio чрезвычайно упростил выполнение сценариев классификации изображений как для прототипирования исходных моделей, так и для обучения конечных моделей, которые в настоящее время используются в производстве. Сама ML.NET также предлагала компании все необходимое с точки зрения доступности модели, настройки и общей производительности.
Влияние ML.NET
В то время как ML.NET позволил Camera Futura быстро создавать, обучать и развертывать модель машинного обучения на производственном уровне, платформа также открыла новые возможности для компании. Для стартапа возможность делать все в .NET является большим преимуществом и позволяет компании разрабатывать функции, которые было бы невозможно разработать, если бы от компании требовалось использовать несколько разных технологий. Для Camera Futura ML.NET является одновременно средством реализации и инструментом повышения производительности.
Без ML.NET для выпуска первой готовой к использованию модели потребовалось бы еще несколько месяцев".
Архитектура решения
Futura Photo в настоящее время представляет собой настольное приложение WPF на .NET Framework 4.6.1 (к концу 2021 года планируется перейти на .NET Core).
Как это работает
Использовать Futura Photo просто: фотографы настраивают правила, загружают изображения, проверяют результаты и применяют их для перемещения фотографий в нужную папку.
Пользователи перемещаются по трем основным окнам. Первое окно используется для управления применяемыми правилами и их настройки, отображения основной галереи изображений, хода анализа и результатов для каждой фотографии, как показано на следующем рисунке:
После завершения анализа можно открыть второе окно, чтобы проверить результаты с помощью правила:
При необходимости можно открыть третье окно для полноэкранного просмотра фотографий, чтобы глубже погрузиться в результаты каждой фотографии:
Данные и обучение
В настоящее время Futura Photo использует изображения компаний и данные из Camera Futura для обучения. Размер набора данных варьируется в зависимости от модели, но обычно компания проводит локальное обучение с использованием 10 000–50 000 изображений для каждой модели. После обучения и оценки своих моделей они развертывают модели вместе с приложением WPF.
В настоящее время в производстве находятся четыре модели, три из которых были созданы с использованием сценария классификации изображений ML.NET Model Builder в Visual Studio. Последняя модель, представляющая собой модель кластеризации, была построена с помощью ML.NET API.
Сценарии классификации изображений используются для принятия решения о том, имеет ли изображение определенную функцию или нет. Этой функцией может быть что угодно, что не может быть формально описано с помощью математической модели.
Например, одна из моделей может смотреть на функцию баланса белого, чтобы определить, имеет ли изображение правильный баланс белого или нет, и почему (слишком зеленый, слишком желтый и т. д.).
В следующем примере баланс белого был правильно определен камерой:
Futura Photo использует модель ML.NET, которая вычисляет баланс белого (как показано на диаграмме выше) с помощью кода, аналогичного следующему фрагменту кода:
// 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;
}
}
Другая модель может смотреть на резкость изображения. Теоретически существует множество математических методов, способных определить, является ли изображение резким, но большинство, если не все методы, не в состоянии обнаружить сочетание размытости движения и размытости вне фокуса. Что еще более важно, эти методы основаны на пороговой обработке, которая хороша, когда вы сравниваете похожие изображения, но недостаточно точна, чтобы решить, является ли одно единственное изображение достаточно резким. Эти методы не могут определить заданный уровень резкости из-за множества крайних случаев, влияющих на значение, сравниваемое с порогом. Используя модели классификации изображений, обученные с помощью ML.NET, Futura Photo может с чрезвычайно низким уровнем ложных положительных и отрицательных результатов определить, достаточно ли резкое изображение.
Последняя модель — это модель кластеризации, в которой используется неконтролируемое машинное обучение для группировки изображений в группу «Пройдено» (изображения с запрошенными функциями) или в группу «Не пройдено» (что означает, что изображение не имеет запрошенных функций).
Будущее Camera Futura
Концепция Camera Futura заключается в том, чтобы предоставить облачное решение, которое предусматривает загрузку изображений через мобильное приложение, запуск программного обеспечения в Azure и завершение отбора фотографий в классическом приложении. Это означает, что все фотографии будут готовы к постобработке, как только фотограф вернется к настольному ПК после фотосессии.
В настоящее время компания разрабатывает несколько других моделей, в том числе для классификации изображений, обнаружения объектов и сценариев регрессии.
В то время как конечные пользователи Futura Photo в настоящее время используют модели только для отбора фотографий или для организации своей фотосессии перед постобработкой, Camera Futura также хотела бы поэкспериментировать, позволяя клиентам обучать модели локально с их собственными данными для еще лучших моделей.
Готовы приступить?
Наше пошаговое руководство поможет вам запустить ML.NET на вашем компьютере.