Camera Futura는 ML.NET을 사용하여 사진 선별 및 구성을 자동화합니다.
Camera Futura는 스위스의 Geneva에 기반을 둔 회사입니다. 회사의 목적은 매니아 및 전문 사진가를 위한 혁신적인 소프트웨어를 개발하고 상용화하는 것입니다.
현재 프로덕션 중인 주요 제품은 사진 컬링을 자동화하고(사진 촬영에서 최상의 이미지를 선택하는 프로세스) 후 처리를 시작하기 전에 사진을 구성할 수 있는 데스크톱 애플리케이션인 Futura Photo입니다. Futura Photo는 '스마트하고 개인 설정된 도우미'의 역할을 합니다.
비즈니스 문제
사진 작가는 이미지 촬영에 많은 시간을 할애하며, 다수가 후처리를 통해 사진을 개선하기를 즐깁니다. 그러나 촬영 후 및 사후 처리 전에 몇 가지 단계가 필요합니다. 사진을 선별하고 사후 처리를 위해 사진을 구성하는 이러한 단계는 사진 프로세스의 다른 부분만큼 흥미롭지 않으며 시간이 많이 걸릴 수 있습니다.
이미지 컬링은 단순히 저품질 이미지를 삭제하는 것을 의미합니다. '저품질'은 예술적인 이유가 아니라 기술적인 이유로 인해 사진이 의도한 대로 촬영되지 않은 것을 의미합니다.
이미지를 구성하는 데는 이미지를 올바른 폴더로 이동하는 작업이 포함됩니다. 이는 사후 처리를 위해 RAW 또는 JPG 이미지 중에서 선택하거나, 이미지를 함께 연결하여 파노라마를 만들거나, 매크로 또는 천체사진술용 이미지를 쌓는 등 몇 가지 다른 작업을 의미할 수 있습니다. 시간 경과에 대해 이야기할 때 구성은 올바른 사진(경과할 때마다 잠정 수백 개의 이미지)을 찾고 시간 경과 비디오를 만드는 소프트웨어에 업로드하는 것을 의미합니다.
선별과 구성을 결합하는 중요한 작업도 있습니다. 비슷한 일련의 이미지를 수집하고 그룹에서 최상의 이미지를 선택하는 것입니다. 사진 촬영자는 동일한 주제의 많은 이미지(액션 스포츠부터 이벤트, 자녀가 노는 이미지에 이르기까지)를 촬영합니다. 최상인 몇 개의 이미지를 선택하는 것은 매우 중요하지만, 사진 촬영을 할 때마다 수십 개의 이러한 그룹을 거쳐야 하는 것은 매우 어려울 수 있습니다.
주로 연간 약 10,000~25,000개의 이미지를 촬영한 매니아 사진 촬영가를 돕는 데 초점을 맞춘 Futura Photo는 이미지 선별 및 구성으로 인한 불만족을 해결하는 데 도움이 되는 고유한 환경을 제공하고 있습니다. 사진 선별 및 구성의 자동화는 새로운 개념이 아니지만, 완전히 흐릿한 이미지를 찾거나 매우 유사한 이미지를 그룹화하려는 경우와 같이 기본 사항을 넘어서는 경우 문제가 특히 복잡해집니다.
이 자동화가 간단하지 않은 이유는 여러 가지가 있습니다. 사진 사후 처리를 시작하기 전에 사진 촬영자가 답변해야 하는 다음과 같은 많은 질문이 있습니다.
- 선명한 이미지는 실제로 무엇을 의미하나요?
- 사진가가 비슷한 이미지를 많이 찍는 이유는(좋든 나쁘든) 무엇인가요?
- 사진 촬영자가 RAW + JPG를 촬영할 때 JPG 파일 대신 RAW 파일이 필요한 경우는 언제입니까?
- 눈을 감은 사람의 얼굴을 가진 이미지를 삭제해야 하는 이유는 무엇인가요? 아니면 의도적으로 수행된 것으로 사후 처리되어야 하나요?
- 사진 촬영자가 유사한 이미지를 촬영할 때 포커스 스태킹(매크로), HDR(풍경), 다중 노출 목적(크리에이티브) 또는 이미지 버스트(스포츠)를 위해 멤버를 스택합니까?
이러한 유형의 질문 목록은 매우 길지만, 이에 답변을 하는 것은 Camera Futura가 기계 학습을 사용하여 수행하려는 것입니다. 많은 부가가치는 사진 촬영자의 요구에 맞게 사용자 지정된 '스마트 길잡이'에서 제공되며, 이는 사진 촬영자가 수동으로 수행하는 워크플로의 일부 단계를 대체할 수 있지만 기계 학습의 도움 없이는 불가능합니다. 따라서 Futura Photo는 이미지 분류를 사용하여 사진 컬링 및 조직 프로세스(그룹에서 최상의 이미지 선택 포함)를 통해 사진 촬영자에 도움을 주기로 결정했습니다.
왜 ML.NET를 사용해야 하나요?
Camera Futura가 Futura Photo 소프트웨어에서 기계 학습 기능을 구동하기 위해 ML.NET 선택한 이유는 여러 가지가 있습니다.
먼저, Camera Futura는 .NET을 사용하여 애플리케이션을 빌드하고 ML.NET을 사용하여 회사는 다른 언어로 코딩하거나 .NET 이외의 프레임워크와 통합할 필요 없이 .NET 에코시스템에 남아있을 수 있습니다. 이로 인해 .NET 이외의 기술을 .NET 애플리케이션에 통합하여 발생하는 복잡성과 잠재적인 성능 저하뿐만 아니라 새 언어를 학습하는 측면에서 오버헤드가 제거되었습니다.
또한 Visual Studio에서 ML.NET Model Builder는 초기 모델을 프로토타입화하고 현재 프로덕션에서 사용 중인 최종 모델을 학습시키는 이미지 분류 시나리오를 매우 쉽게 실행할 수 있게 하였습니다. 또한 ML.NET는 모델 가용성, 사용자 지정 및 전반적인 성능 측면에서 회사에 필요한 모든 것을 제공했습니다.
ML.NET의 영향
ML.NET은 Camera Futura에서 프로덕션 수준 기계 학습 모델을 신속하게 빌드, 학습 및 배포할 수 있도록 해주었고 해당 프레임워크는 또한 회사에 새로운 기회를 열었습니다. 스타트업의 경우 .NET에서 모든 작업을 수행할 수 있다는 것은 큰 장점이며 회사에서 여러 기술을 사용해야 하는 경우 개발이 불가능한 기능을 개발할 수 있게 해줍니다. Camera Futura의 경우 ML.NET가 이네이블러이자 생산성 도구입니다.
ML.NET이 없으면 프로덕션 준비가 완료된 첫 번째 모델을 제공하는 데 몇 달이 더 필요했을 것입니다."
솔루션 아키텍처
Futura Photo는 현재 .NET Framework 4.6.1의 WPF 데스크톱 애플리케이션입니다(2021년 말까지 .NET Core로 마이그레이션할 계획임).
작동 원리
Futura Photo를 사용하는 것은 간단합니다. 사진 촬영자는 규칙을 구성하고, 이미지를 업로드하고, 결과를 확인하고 적용하여 사진을 올바른 폴더로 이동합니다.
사용자는 세 개의 주 창을 탐색합니다. 첫 번째 창은 적용할 규칙을 관리 및 구성하고, 이미지의 주 갤러리를 표시하고, 분석 중에 진행률을 표시하고 다음 그림과 같이 각 사진에 대한 결과를 표시합니다.
분석이 완료되면 두 번째 창을 열어 규칙에 따라 결과를 확인할 수 있습니다.
전체 화면 사진 뷰어가 각 사진의 결과를 자세히 살펴보려면 필요에 따라 세 번째 창을 열 수 있습니다.
데이터 및 교육
현재 Futura Photo는 학습을 위해 Camera Futura의 회사 이미지와 데이터를 사용합니다. 데이터 세트의 크기는 모델에 따라 다르지만 회사는 일반적으로 모델을 학습하고 평가한 후 모델당 10,000~50,000개의 이미지를 사용하여 로컬로 학습하고 WPF 애플리케이션으로 모델을 배포합니다.
현재 프로덕션에는 4개의 모델이 있으며, 그 중 3개는 Visual Studio에서 ML.NET Model Builder 이미지 분류 시나리오를 사용하여 빌드되었습니다. 클러스터링 모델인 마지막 모델은 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;
}
}
다른 모델은 이미지의 선명도를 볼 수 있습니다. 이론적으로 이미지가 선명한지 여부를 정의할 수 있는 많은 수학 메서드가 많이 있지만, 대부분의 경우 모든 메서드가 동작 흐림과 포커스 흐림의 혼합을 감지하지 못합니다. 더욱 중요한 것은 이러한 메서드는 임계값을 사용합니다. 이는 유사한 이미지를 비교할 때는 좋지만 하나의 단일 이미지가 충분히 선명한지 여부를 결정할 만큼 정확하지는 않습니다. 이러한 메서드는 임계값과 비교할 값에 영향을 주는 많은 코너 사례로 인해 지정된 수준의 선명도를 검색하지 못합니다. Futura Photo는 ML.NET으로 학습된 이미지 분류 모델을 사용하여 이미지가 충분히 선명할 경우 매우 낮은 가양성 및 음의 비율로 결정할 수 있습니다.
마지막 모델은 감독되지 않은 기계 학습을 사용하여 이미지를 'Pass' 그룹(기능을 요청한 이미지) 또는 '실패' 그룹으로 그룹화(이미지에 요청된 기능이 없음)하는 클러스터링 모델입니다.
Camera Futura의 미래
Camera Futura의 비전은 모바일 앱을 통해 이미지를 로드하고, Azure에서 소프트웨어를 실행하고, 데스크톱 앱에서 사진 컬링을 마무리하는 클라우드 기반 솔루션을 보유하는 것입니다. 즉, 사진 촬영 후 사진 촬영자가 데스크톱 컴퓨터로 돌아오는 즉시 모든 사진을 사후 처리할 준비가 됩니다.
이 회사는 현재 이미지 분류, 개체 감지 및 회귀 시나리오를 비롯한 여러 다른 모델을 개발하고 있습니다.
Futura Photo의 최종 사용자는 현재 사진 선별에만 모델을 사용하거나 후처리 전에 사진 촬영 구성에만 사용하지만, Camera Futura는 고객이 더 나은 모델을 위해 자신의 데이터로 로컬로 모델을 학습할 수 있도록 실험하도록 하려고 합니다.
시작할 준비가 되셨나요?
단계별 자습서는 컴퓨터에서 ML.NET을(를) 실행하는 데 도움이 될 것입니다.