Camera Futura با استفاده از ML.NET کار گزینش و ساماندهی عکسها را خودکار میکند
Camera Futura شرکتی مستقر در ژنوِ سوئیس است که هدفش توسعه و تجاریسازی نرمافزارهای نوآورانه برای عکاسان علاقهمند و حرفهای است.
محصول اصلی آنها Futura Photo است؛ یک نرمافزار دسکتاپ که میتواند فرایند «گزینش عکسها» (Photo Culling) ــ یعنی انتخاب بهترین تصاویر از یک جلسهٔ عکاسی ــ را خودکار کند و پیش از شروع ویرایش، عکسها را ساماندهی کند. Futura Photo مانند یک «دستیار هوشمند و شخصیسازیشده» عمل میکند.

مشکل کسبوکار
عکاسان زمان زیادی را صرف عکاسی میکنند و بسیاری از آنها از ویرایش پس از عکاسی لذت میبرند. با این حال، پیش از ویرایش چندین مرحله لازم است: گزینش عکسها و ساماندهی آنها برای پردازش نهایی. این مراحل هیجان دیگر بخشهای عکاسی را ندارند و بسیار وقتگیرند.
گزینش تصویر یعنی کنار گذاشتن عکسهای بیکیفیت؛ «بیکیفیت» یعنی عکس به دلیل علل فنی ــ نه هنری ــ طبق انتظار ثبت نشده است.
ساماندهی تصویر یعنی جابهجایی عکسها به پوشهٔ مناسب. این کار میتواند انتخاب میان فایلهای RAW یا JPG برای ویرایش، چسباندن تصاویر برای ساخت پانوراما، یا رویهمگذاری (Stacking) عکسها برای ماکرو یا عکاسی نجومی باشد. در تایملپسها، ساماندهی به معنای یافتن عکسهای درست (گاهی صدها تصویر برای هر تایملپس) و بارگذاری آنها در نرمافزاری است که ویدئوی تایملپس میسازد.
کار مهم دیگری هم هست که گزینش و ساماندهی را ترکیب میکند: جمع کردن مجموعهای از تصاویر مشابه و انتخاب بهترین عکس آن گروه. عکاسان معمولاً از یک سوژه (از ورزش پرتحرک تا رویدادها یا بازیِ بچهها) عکسهای زیادی میگیرند؛ انتخاب چند عکس برتر ــ هرچند بسیار اهمیت دارد ــ هنگام مرور دهها گروه تصویر در هر جلسه میتواند آزاردهنده باشد.

Futura Photo که عمدتاً بر کمک به عکاسان علاقهمندی تمرکز دارد که سالانه حدود ۱۰,۰۰۰ تا ۲۵,۰۰۰ تصویر میگیرند، تجربهای منحصربهفرد را برای حل مشکلات و ناامیدیهای مرتبط با مرتبسازی و سازماندهی تصاویر ارائه میدهد. در حالی که خودکارسازی مرتبسازی و سازماندهی عکس مفهوم جدیدی نیست، زمانی که از موارد ابتدایی فراتر میروید، مانند تلاش برای یافتن تصاویر کاملاً تار یا گروهبندی تصاویر بسیار مشابه، این مشکل به طرز خاصی پیچیده میشود.
دلایل متعددی وجود دارد که چرا این خودکارسازی سرراست نیست؛ سوالات زیادی وجود دارد که یک عکاس باید قبل از شروع پسپردازش عکس به آنها پاسخ دهد، از جمله:
- یک تصویر واضح واقعاً به چه معناست؟
- دلایل (خوب یا بد) اینکه یک عکاس تصاویر مشابه زیادی میگیرد چیست؟
- زمانی که یک عکاس RAW + JPG میگیرد، چه زمانی به فایل RAW به جای فایل JPG نیاز است؟
- چرا یک تصویر با چهره انسانی که چشمانش بسته است باید دور انداخته شود، یا آیا باید به عنوان چیزی که عامدانه انجام شده است، پسپردازش شود؟
زمانی که یک عکاس تصاویر مشابه میگیرد، آیا آنها اعضای استک برای فوکوس استکینگ (ماکرو)، HDR (مناظر)، نوردهی چندگانه (خلاقانه) هستند، یا فقط یک سری عکس پشت سر هم (ورزش)؟
لیست این نوع سوالات بسیار طولانی است، اما Camera Futura میخواهد با کمک یادگیری ماشین به آنها پاسخ دهد. ارزش افزوده زیادی از یک "دستیار هوشمند" حاصل میشود که برای نیازهای عکاس سفارشیسازی شده و میتواند برخی از مراحل گردش کار را که به صورت دستی توسط عکاس انجام میشود، جایگزین کند، اما این بدون کمک یادگیری ماشین امکانپذیر نیست. بنابراین، Futura Photo تصمیم گرفت از طبقهبندی تصویر برای کمک به عکاسان در فرآیند مرتبسازی و سازماندهی عکس، از جمله انتخاب بهترین تصویر از یک گروه، استفاده کند.
چرا ML.NET؟
دلایل متعددی باعث شد Camera Futura برای قابلیتهای یادگیری ماشینِ Futura Photo سراغ ML.NET برود:
۱. این شرکت نرمافزارهایش را با .NET میسازد؛ ML.NET امکان ماندن در اکوسیستم .NET را فراهم کرد، بیآنکه نیاز به زبان دیگری یا یک چارچوب خارج از .NET باشد. در نتیجه، زحمت یادگیری زبان تازه و پیچیدگی یا افت عملکرد ناشی از ادغام فناوریهای ناهمگون حذف شد.
۲. Model Builder در Visual Studio اجرای سناریوهای طبقهبندی تصویر را ــ چه برای نمونهسازی مدل اولیه و چه آموزش مدل نهایی ــ بسیار ساده کرده است. خود ML.NET هم هر آنچه برای دسترسپذیری مدل، شخصیسازی و عملکرد لازم بود در اختیار شرکت گذاشت.
تأثیر ML.NET
ML.NET به Camera Futura اجازه داد سریعاً مدلی در سطح تولید بسازد، آموزش دهد و مستقر کند؛ افزون بر آن، فرصتهای تازهای پیشِ روی شرکت گشود. برای یک استارتاپ، انجام همهچیز در .NET مزیتی بزرگ است و امکان توسعهٔ ویژگیهایی را میدهد که در صورت نیاز به چند فناوری مختلف عملاً غیرممکن بود. برای Camera Futura، ML.NET هم «تسهیلگر» است و هم «افزایندهٔ بهرهوری».
«بدون ML.NET، ارائهٔ نخستین مدل در سطح تولید چند ماهِ دیگر زمان میبُرد.»
— Tristan Renaud، بنیانگذار Camera Futura
معماری راهکار
Futura Photo اکنون یک اپلیکیشن دسکتاپ WPF روی .NET Framework ۴٫۶٫۱ است (و برنامهٔ مهاجرت به .NET Core تا پایان ۲۰۲۱ دارد).
نحوهٔ کار
کار با Futura Photo ساده است: عکاس قوانین را پیکربندی میکند، تصاویر را بارگذاری میکند، نتایج را بررسی و اعمال میکند تا عکسها به پوشهٔ مناسب منتقل شوند.
کاربر از سه پنجرهٔ اصلی میگذرد:
۱. پنجرهٔ نخست قوانین را مدیریت و پیکربندی میکند، گالری اصلی تصاویر را نشان میدهد، پیشرفت تحلیل را نمایش میدهد و نتیجهٔ هر عکس را ارائه میکند.

۲. پس از پایان تحلیل، پنجرهٔ دومی برای بررسی نتایج بر اساس هر قانون باز میشود.

۳. در صورت نیاز، پنجرهٔ سومی بهعنوان نمایشگر تمامصفحه باز میشود تا کاربر عمیقتر نتیجهٔ هر عکس را ببیند.

داده و آموزش
اکنون Futura Photo از تصاویر و دادههای خود Camera Futura برای آموزش بهره میگیرد. اندازهٔ مجموعهداده بسته به مدل متغیر است، اما معمولاً آموزش محلی با ۱۰٬۰۰۰ تا ۵۰٬۰۰۰ تصویر برای هر مدل انجام میشود. پس از آموزش و ارزیابی، مدلها همراه برنامهٔ WPF منتشر میشوند.
در حال حاضر چهار مدل در تولید است؛ سه مدل با سناریوی طبقهبندی تصویرِ Model Builder در Visual Studio ساخته شده و مدل چهارم، یک مدل خوشهبندی، با API ML.NET نوشته شده است.
سناریوهای طبقهبندی تصویر تشخیص میدهند آیا عکسی ویژگی خاصی دارد یا نه؛ ویژگیای که قالب ریاضی روشنی ندارد. برای نمونه، یکی از مدلها تعادل رنگ سفید را بررسی میکند تا ببیند عکس از این نظر درست است یا نه و چرا (بیشازحد سبز، زرد و …).
در تصویر زیر، دوربین تعادل رنگ سفید را بهخوبی تعیین کرده است:

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;
}
}
یک مدل دیگر میتواند sharpness (وضوح) تصویر را بررسی کند. در تئوری، روشهای ریاضی زیادی وجود دارند که میتوانند تعریف کنند که آیا یک تصویر شارپ است یا خیر، اما اکثر این روشها، اگر نگوییم همه آنها، در تشخیص ترکیبی از تاری ناشی از حرکت و تاری ناشی از عدم فوکوس با شکست مواجه میشوند. مهمتر از آن، این روشها به آستانهگذاری (thresholding) وابسته هستند که در مقایسه تصاویر مشابه خوب است اما برای تصمیمگیری در مورد اینکه آیا یک تصویر منفرد به اندازه کافی شارپ است، دقت کافی را ندارد. این روشها در تشخیص یک سطح معین از شارپنس به دلیل موارد خاص فراوان (corner cases) که بر ارزش مقایسه با آستانه تأثیر میگذارند، شکست میخورند. با استفاده از مدلهای طبقهبندی تصویر که با ML.NET آموزش دیدهاند، Futura Photo میتواند با نرخ مثبت کاذب و منفی کاذب بسیار پایین تصمیم بگیرد که آیا یک تصویر به اندازه کافی شارپ است یا خیر.
آخرین مدل، یک مدل خوشهبندی (clustering) است که از یادگیری ماشین بدون نظارت برای گروهبندی تصاویر به دو دسته "Pass" (تصاویری که ویژگیهای درخواستی را دارند) یا "Fail" (به این معنی که تصویر ویژگیهای درخواستی را ندارد) استفاده میکند.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید