DUICUO

PyTorch 実装、GitHub で 4000 個のスター: これは、Microsoft のオープンソース コンピューター ビジョン ライブラリです。

近年、コンピュータービジョンの分野は急速に進歩し、顔認識、画像理解、検索、ドローン、マッピング、半自律走行・自律走行といった幅広い分野で応用されています。これらのアプリケーションの中核を成すのは、画像分類、物体検出、画像類似性といった視覚認識タスクです。

コンピューター ビジョンのモデルとアプリケーションが急増する中、開発のトレンドを把握し、この分野の最先端を維持するにはどうすればよいでしょうか。Microsoft は、コンピューター ビジョン システムを構築するための豊富な例とベスト プラクティス ガイドラインを提供するライブラリを作成しました。

プロジェクトアドレス: https://github.com/microsoft/computervision-recipes

このライブラリは、コンピューター ビジョン アルゴリズム、ニューラル アーキテクチャ、システム操作の最近の進歩を活用したツールと例の包括的なコレクションを構築することを目的としています。

このライブラリは、ゼロから構築するのではなく、既存の最先端(SOTA)ライブラリをベースに開発されており、画像データの読み込み、モデルの最適化と評価、クラウドへの拡張のためのユーティリティ関数が追加されています。さらに、Microsoftチームは、このプロジェクトを通じて、コンピュータービジョン分野における一般的な疑問に答え、頻繁に発生する問題点を指摘し、モデルのトレーニングと展開にクラウドを活用する方法を示すことを期待していると述べています。

このライブラリのすべての例は、Jupyterノートブックと一般的なユーティリティ関数として提供されています。すべての例では、基盤となるディープラーニングライブラリとしてPyTorchを使用しています。

  • Jupyter ノートブックは次の場所にあります: https://github.com/microsoft/computervision-recipes/blob/master/scenarios
  • ユーティリティ関数は次の場所にあります: https://github.com/microsoft/computervision-recipes/blob/master/utils_cv

対象グループ

このライブラリは、コンピュータービジョンの知識を持つデータサイエンティストや機械学習エンジニアを対象としています。コンテンツはソースコードのみの形式で提供され、カスタム機械学習モデリングをサポートします。このライブラリで提供されるユーティリティ関数と例は、現実世界のビジョン問題の解決を加速するように設計されています。

このライブラリは、次の例に示すように、単一の画像での実行など、さまざまなコンピューター ビジョン シナリオをサポートしています。

あるいは、ビデオシーケンスに基づくアクション認識などのシナリオでは、次の例になります。

シーン

このライブラリは、一般的なコンピューター ビジョンのシナリオをカバーしており、次のカテゴリが含まれます。

各メインシナリオ(ベース)において、プロジェクトはユーザーが効率的に独自のモデルを構築できるツールを提供します。ユーザーは、独自のデータに基づいてモデルを微調整するといった単純なタスクから、ハードサンプルマイニングやモデルのデプロイメントといった複雑なタスクまで、様々なタスクを完了する必要があります。

1. 画像分類タスク

このカタログには、画像分類システムを構築するための例とベスト プラクティスが記載されており、ユーザーが独自のデータセットで高精度の分類器を簡単かつ迅速にトレーニングできるように設計されています。

ここで提供されるサンプルノートブックには、事前定義されたデフォルトパラメータが含まれており、複数のデータセットで問題なく動作します。このディレクトリには、よくある落とし穴やベストプラクティスに関する詳細なドキュメントも用意されています。

さらに、このライブラリは、Microsoft の Azure クラウド コンピューティング プラットフォームを使用して、大規模なデータセットのトレーニングを加速したり、モデルを Web サービスとして展開したりする方法を示します。

2. 画像の類似性

このカタログは、ユーザーが独自のデータセットに基づいて高精度モデルを簡単かつ迅速にトレーニングできるようにすることを目的とした、画像類似性システムを構築するための例とベストプラクティスを提供します。

以下の画像は画像検索の例です。左側の画像がクエリ画像で、右側の画像が最も類似した 6 つの画像です。

3. ターゲット検出

このカタログは、オブジェクト検出システムを構築するための例とベストプラクティスを提供し、ユーザーが独自のデータセットに基づいて高精度のモデルを簡単かつ迅速にトレーニングできるようにすることを目的としています。

このライブラリは、幅広いコンピューター ビジョンの問題を適切に処理できることが実証されている、torchvision の Faster R-CNN 実装を使用します。

プロジェクトの著者は、GPUを搭載したマシンでサンプルを実行することを推奨しています。GPUは技術的には必須ではありませんが、GPUなしでは数十枚の画像でも学習プロセスが非常に遅くなります。

4. キーポイント検出

このカタログには、キーポイント検出システムを構築するための例とベストプラクティスのガイドラインが含まれており、事前トレーニング済みのモデルを使用して人間の姿勢を推定する方法が示されています。

このカタログは、物体とそのキーポイントを同時に検出できるMask R-CNNの拡張版を使用しています。その基盤となる技術は、前述の物体検出手法と同様、TorchvisionのMask R-CNNに基づいています。

5. 画像セグメンテーション

このカタログは、ユーザーが独自のデータセットに基づいて高精度のモデルを簡単かつ迅速にトレーニングできるようにすることを目的とした、画像セグメンテーション システムを構築するための例とベスト プラクティスを提供します。

ここでの実装では fastai の UNet モデルを使用します。このモデルでは、CNN バックボーン (ResNet など) が ImageNet データセットで事前トレーニングされているため、ユーザーは微調整するために少数のラベル付きトレーニング サンプルのみを必要とします。

6. 行動認識

このカタログには、ビデオベースのアクション認識システムを構築するために必要なリソースが含まれており、ユーザーがカスタム データセットで高速モデルを高精度に簡単かつ迅速にトレーニングできるように設計されています。

アクション認識(「アクティビティ認識」とも呼ばれる)では、一連のフレームから「読む」や「飲む」などのさまざまなアクションを分類します。

行動認識は人気の研究分野であり、毎年数多くの手法が発表されています。中でも特に注目すべき手法の一つがR(2+1)Dモデルで、高い精度と他の手法よりも大幅に高速化を実現しています。(論文「ビデオ行動認識のための大規模弱教師付き事前学習」を参照)

このディレクトリ内の実装と事前学習済みの重みは、GitHubリポジトリ(https://github.com/moabitcoin/ig65m-pytorch)に基づいており、カスタムモデルの学習と評価をよりユーザーフレンドリーにするための機能が追加されています。事前学習にはIG-Kineticsデータセットを使用しています。

7. マルチターゲットトラッキング

このカタログには、カスタム データセットに基づいて高精度の追跡モデルを簡単にトレーニングできるように設計されています。

このライブラリには、最近の MOT ベンチマーク テストで強力な追跡パフォーマンスを実証し、高速な推論速度も実現した FairMOT 追跡アルゴリズムが統合されています。

8. 群衆カウント

このカタログには、一貫した API セットに統合された、いくつかの群衆カウント アルゴリズムの製品版バージョンが用意されています。

専用データセットに基づく複数の群衆カウントモデルの実装を評価した後、プロジェクトは選択肢を2つに絞り込みました。マルチカラムCNNモデル(MCNN)とOpenPoseモデルです。どちらも速度要件を満たしていました。

  • 高密度の群衆を含む画像の場合、MCNN モデルは良好な結果を達成しました。
  • OpenPose は、低密度のシナリオで優れたパフォーマンスを発揮します。
  • 群衆密度が不明な場合、このプロジェクトではヒューリスティックなアプローチを採用しています。OpenPoseの予測値が20以上かつMCNNの予測値が50以上の場合、MCNNによる予測が用いられます。それ以外の場合は、OpenPoseによる予測が用いられます。モデルの閾値は、ユーザーのシナリオに応じて調整可能です。

さらに、カタログには依存関係、インストール プロセス、テスト、パフォーマンスも表示されます。