Camera Futura は ML.NET を使用して写真カリングと整理を自動化します
Camera Futura は、スイスのジュネーブに拠点を持つ会社です。この会社の目的は、熱心な写真愛好家やプロトコルのフォトグラファーに画期的なソフトウェアを開発して商品化することです。
現在運用中の主要製品は、写真カリング (写真撮影からの最適なイメージを選択するプロセス) を自動化し、後処理を開始する前に写真を整理できるデスクトップ アプリケーションです。Futura Photo は、'スマートで個人用に設定されたアシスタント' として機能します。
ビジネスの問題
フォトグラファーは画像の撮影に多くの時間を費やし、多くの人が後処理を通じて写真を高度化することを楽しんでいます。ただし、撮影後と後処理の前にいくつかの手順が必要です。写真をカリングし、後処理のために写真を整理するこれらの手順は、写真プロセスの他の部分ほど魅力的ではなく、非常に時間がかかる場合があります。
画像をカリングすることは、単に低品質の画像を破棄することを意味します。"低品質" とは、アートではなく技術的な理由により、写真が意図したとおりに撮影されなかったことを意味します。
画像の整理には、画像を適切なフォルダーに移動する作業が含まれます。これは、後処理用の RAW または JPG イメージの選択、パノラマを作成するためのイメージのつなぎ付け、マクロまたは天体撮影の画像のスタッキングなど、様々な整理作業があることを意味します。タイムラプスについていえば、整理とは、適切な写真 (1 回のタイムラプスに数百枚の画像がある場合もあります) を検出し、それをタイムラプス ビデオを悪性するソフトウェアにアップロードすることを意味します。
また、カリングと整理を組み合わせた重要なタスクもあります。類似した一連の画像を収集し、グループから最適な画像を選択します。フォトグラファーは、同じ主題の多くの画像を撮影する傾向があります (アクション スポーツやイベントから、単に遊んでいる子供の画像まで)。フォトグラファーが撮影ごとに何十ものグループを通過する必要がある場合、非常に重要ですが、最適な数の画像を選択することは非常にストレスになる可能性もあります。
Futura Photo は主に、年間約 10,000 - 25,000 枚の画像を撮影する熱心なフォトグラファーを支援することに重点を置き、画像のカリングと整理に関するフラストレーションを解決するのに役立つ独自のエクスペリエンスを提供しています。画像のカリングと整理の自動化は新しい概念ではありませんが、完全にぼやけた画像を見つけたり、非常に似た画像をグループ化したりするような基本を超える動作になると、問題は特に複雑になります。
いくつかの理由により、このオートメーションを簡単に行うことはできません。写真の後処理を開始する前に、次のように、フォトグラファーの回答が必要な質問事項が多くあります:
- 鮮明なイメージが本当に意味することは?
- フォトグラファーが多くの同様の画像を撮影する理由 (良いか悪いか) は何ですか?
- フォトグラファーが RAW ファイルを使用している場合、JPG ファイルの代わりに RAW ファイルが必要になるのはどのタイミングですか?
- 目を閉じた人の顔を持つ画像を破棄する必要があるのはなぜですか。それとも、意図的に行われたものとしてポスト処理する必要があるのでしょうか?
- フォトグラファーが類似の画像を撮影する場合、それらの画像は、フォーカス スタッキング (マクロ)、HDR (横長の向き)、マルチ露出目的 (クリエイティブ)、または単なるイメージのバースト (スポーツ) のスタックメンバーですか、それとも単なる画像のバースト (スポーツ) ですか?
この種の質問の一覧は非常に長いですが、その回答は Camera Futura が機械学習で行いたいものです。フォトグラファーのニーズに合わせてカスタマイズされ、フォトグラファーが手動で行ったワークフローの一部のステップを置き換えることができる "スマート アシスタント" から多くの付加価値が得られますが、機械学習の助けを借りなければ、これは不可能です。 そこで、Futura Photo は画像分類を使用して、グループから最適な画像を選択するなど、画像カリングと組織のプロセスでフォトグラファーを支援することにしました。
ML.NET を選ぶ理由
Camera Futura が、Futura Photo ソフトウェアで機械学習機能の電源を投入するために ML.NET wp選択した理由はいくつかあります。
まず、Camera Futura は .NET を使用してアプリケーションを構築し、ML.NET を使用することで、会社は別の言語でコードを実行したり .NET framework 以外のものと統合したりしなくても、.NET エコシステムを維持できるようになりました。これによって、新しい言語の学習に関するオーバーヘッドがなくなり、.NET tech 以外のアプリケーションと .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 の使用は簡単です。フォトグラファーはルールを構成し、画像をアップロードし、結果を確認し、それらを適用して写真を適切なフォルダーに移動します。
ユーザーは 3 つのメイン ウィンドウ間を移動します。次の図に示すように、最初のウィンドウでは、適用するルールの管理と構成、画像のメイン ギャラリーの表示、分析中の進行状況の表示、各写真の結果の表示を行います。
分析が完了したら、別のウィンドウを開いて、ルールによって結果を確認できます。
必要に応じて 3 つ目のウィンドウを開いて、全画面表示の写真ビューアーで各写真の結果を詳しく調べることができます:
データとトレーニング
現在、Futura Photo では、同社の画像とデータをトレーニングに使用しています。データセットのサイズはモデルごとに異なりますが、通常、モデルごとに 10,000 - 50,000 個のイメージを使用してローカルでトレーニングを行います。モデルをトレーニングして評価した後、WPF アプリケーションと共にモデルをデプロイします。
現在、運用環境には 4 つのモデルがあり、そのうち 3 つが Visual Studio の ML.NET Model Builder の画像分類シナリオを使ってビルドされています。クラスター モデルである最後のモデルは、ML.NET API を使用してビルドされました。
イメージの分類のシナリオは、イメージに特定の機能があるかどうかを判断するために使用されます。この機能は、数学モデルで正式に記述できないものであってもかまいません。
たとえば、モデルの 1 つは、ホワイトバランス機能を調べて、画像に適切なホワイトバランスがあるかどうか、適切でない場合はその理由 (緑が多すぎる、黄色が多すぎる) を判断するのに役立ちます。
次の例では、ホワイトバランスがカメラによって明確に定義されています:
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 では、画像が十分に鮮明な場合に、極めて低い偽陽性と偽陰性の割合を判断できます。
最後のモデルは、教師なしの機械学習を使用してイメージを 'Pass' グループ (要求された機能を持つイメージ) または 'Fail' グループ (要求された機能のないイメージ)にグループ化するクラスター化モデルです。
カメラ Futura の今後
Camera Futura のビジョンは、モバイル アプリを使用したイメージの読み込み、Azure でのソフトウェアの実行、デスクトップ アプリでの写真カリングの最終処理など、クラウドベースのソリューションを利用することです。すなわち撮影者は、すべての写真がデスクトップ コンピューターで撮影後すぐに、後処理の準備ができるようになります。
Camera Futura は現在、画像分類、オブジェクト検出、回帰シナリオなど、いくつかのモデルを開発しています。
Futura Photo のエンドユーザーは現在、写真のカリングまたは後処理前の写真撮影の整理のためのモデルのみを使用していますが、Camera Futura では、さらに優れたモデルのために独自のデータを使用してモデルをローカルでトレーニングできるように実験しようとしています。
準備はできましたか?
このステップ バイ ステップ チュートリアルは、あなたのコンピューターで ML.NET を実行するのに役立ちます。