不均衡なデータセットの不具合を検出する方法

この記事は、medium.com に公開されている「How to Detect Defects with an Imbalanced Dataset」https://medium.com/openvino-toolkit/how-to-detect-defects-with-an-imbalanced-dataset-63460c177c8b の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。

***************************************************************************
この記事の PDF 版は下記からご利用になれます。
https://www.isus.jp/wp-content/uploads/pdf/openvino_02_how-to-detect-defects-with-an-imbalanced-dataset.pdf

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/99b58ecd-fb2f-7498-b7bd-2187b1ff1877.png)

Paula Ramos インテル コーポレーション AI エバンジェリスト
Zhuo Wu インテル コーポレーション AI エバンジェリスト
Samet Akcay インテル コーポレーション AI リサーチエンジニア/サイエンティスト

私 (Paula Ramos) は、開発者が AI アプリケーションを改善し、現実世界の問題を解決する新しいソリューションを作成できるように支援する方法を常に求めています。2022 年のコンピューター・ビジョンとパターン認識に関する会議 (英語) https://paularamo.github.io/cvpr-2022/ では、AI 開発者がエッジ・アプリケーション向けのパフォーマンスの高いモデルを迅速かつ簡単に開発できる方法を示した、さまざまなチュートリアルと演習を紹介しました。

この会議のプレゼンテーションで最も印象に残ったライブラリーの 1 つが、OpenVINO™ 中間表現にエクスポートしてインテルのハードウェアにデプロイできる、異常検出アルゴリズムのベンチマークと開発向けのディープラーニング・ライブラリー、Anomalib でした。

この記事では、インテルの AI リサーチエンジニア/サイエンティストであり、Anomalib リポジトリーのオーナーの 1 人である Sameet Akcay と、同じくインテルの AI エバンジェリストの Zhuo Wu とともに、Anomalib とは何なのか、何が特別なのか、そして開発者はどうすれば入手できるのかを説明します。

では、Anomalib について説明しましょう。 🙂 — Paula Ramos

品質管理と品質保証は、企業の評判と顧客体験を左右する重要な要素です。例えば、製造業では、生産ラインの異常を検出することにより、最高の品質の製品のみ出荷されることを保証できます。また、医療業界では、医療用画像処理の初期段階で異常を検出することにより、医師が患者を正確に診断するのに役立ちます。

これらのシナリオのいずれかで問題が発生した場合、重大な結果が生じる可能性があります。そのため、多くの業界では、主観的で間違いが発生しやすい手動の検査と保守を廃止し、コンピューター・ビジョンとディープラーニング・テクノロジーの進歩がもたらした、自動異常検出を利用するようになりました。

しかし、AI が品質管理と品質保証の知識を強化するためには、バランスの取れたデータセットを活用できる必要があります。現在は、優れたデータサンプルが大量に入手できるようになりましたが、産業および医療業界で正確かつ効率の良い予測を行うには、必ずしも十分ではありません。さらに、大規模製造と産業オートメーションの発展により、品質検査官が大量の製品を処理することが困難になっています。

【データセットの課題を克服する】

通常、適切な異常検出結果を取得するには、注釈付きの異常サンプルを活用する教師あり学習ベースのアプローチが使用されます。しかし、業界標準が、特異なクラスの代表的なサンプルを欠いた不均衡なデータセットの場合はどうなるでしょうか? また、不具合がさまざまなタイプの形状の場合、異常の境界をどのように定義すればよいでしょうか?

これらの問題に対処する 1 つの方法は、注釈をほとんどまたは全く必要としない教師なし異常検出を使用することです。教師なし異常検出は、トレーニング段階では正常なサンプルのみに依存しており、学習した正常なデータの分布と比較することにより異常サンプルを特定できます。

オープンソースのエンドツーエンド・ライブラリー Anomalib (英語)https://github.com/openvinotoolkit/anomalib は、特定のユースケースや要件に合わせてカスタマイズできる最先端の異常検出アルゴリズムを提供する、教師なし異常検出および位置特定モデルです。

【製造業における Anomalib】
例として、色付きの立方体を使用した生産ラインを見てみましょう (図 1)。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/837b98f4-05ec-326f-d4ca-2adae442ad4c.png)

不具合のある色付きの立方体を検出して、生産ラインに入るのを防ぐため、色付きの立方体の状態を監視するカメラを設置し、監視結果に基づいてロボットのアームを動作させます (図 2)。
![wV9kJBiMWG3KQ0AhLEP51688306052-1688306061.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/45124904-6956-863d-ea2a-b5468daa4278.gif)

このシナリオの異常検出では、エッジでモデルをトレーニングするハードウェア・アクセラレーターはありません。エッジでのトレーニング向けに収集された画像、特に不具合のある画像が数千枚あると想定することもできません。さらに、現実の製造シナリオではよくあることですが、多くの不具合が発生することは予想されていません。

これらの初期条件を考慮して、ここでの目標の 1 つを、エッジでのトレーニング・プロセスを高速化して、高精度かつ効率の良い異常検出を実行することとします。照明、カメラ、異常など、外部条件が変化する場合はモデルの再トレーニングを行う必要があるため、多くの労力を要しない再トレーニング・プロセスが必要になることに注意してください。最後に、モデルを実際の製造のユースケースで活用するには、異常検出モデルによる推論の結果が正確であることを保証する必要があります。

Anomalib の広範なライブラリーを利用して、データ収集からエッジまで教師なし異常検出モデルを設計、実装、デプロイすることにより、すべての要件を満たすことができました。

【Anomalib の仕組み】
Anomalib ライブラリーは、画像全体の異常を計算できるアルゴリズムと、トレーニング、評価、テスト、ベンチマーク、ハイパーパラメーターの最適化によりこれらのアルゴリズムを実行するツールを提供します。モジュールはすでにアルゴリズムとツールを提供していて、カスタム・アルゴリズム設計にも使用できます。

図 3 では、ツールとモジュールの一部としてデプロイメントが含まれていますが、この部分もライブラリーにより解決されることを示します。
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/f5325e60-6d01-2e7d-4088-8f9abfac590b.png)

図 4 は、トレーニングからデプロイメントまでのワークフロー・プロセスの高レベルの概要です。トレーニングとテストには PyTorch* Lighting、最適化には ONNX* および OpenVINO™ https://www.xlsoft.com/jp/products/intel/openvino/index.html を使用しました。デプロイメントには TensorFlow*、PyTorch* および OpenVINO™ を使用できます。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/23031d40-4e29-a45e-ec47-367c82b598ab.png)

【更なる詳細】
実習: Anomalib を使用して不具合検出を自動実行する方法 (英語) https://medium.com/openvino-toolkit/hands-on-lab-how-to-perform-automated-defect-detection-using-anomalib-5c1cfed666b4 では、Anomalib ライブラリーでカスタム・データセットとユースケースを使用する方法の例を説明しています。Anomalib を試すには、このサンプル (英語)https://github.com/openvinotoolkit/anomalib/blob/main/notebooks/000_getting_started/001_getting_started.ipynb をダウンロードしてインストールし、確認してください。

各自の AI アプリケーションで Anomalib を使用するには、OpenVINO™ ノートブックのリポジトリー (英語) https://github.com/openvinotoolkit/openvino_notebooks のクローンを作成して、Open Model Zoo (英語) https://github.com/openvinotoolkit/open_model_zoo の 270 を超えるディープラーニング・モデルを使用します。

【著者紹介】
Paula Ramos (英語) https://www.linkedin.com/in/paula-ramos-41097319/ は、2000年代初めから、コロンビアで、主に農業に適用するコンピューター・ビジョン、ロボット工学、マシンラーニングなどの新しい統合エンジニアリング・テクノロジーを開発してきました。博士課程および大学院での研究中に、コンピューター・ビジョン・システムの専門知識がない農家などでも運用できる、複数の低コストのスマートエッジ IoT コンピューティング・テクノロジーをデプロイしました。これらの発明は、照明制御がない、日射量が強い、温度が非常に高い農業や屋外環境など、過酷で危険な条件の下で実行されています。現在は、インテルの AI エバンジェリストとして、現実世界のニーズを解決するため、我々の周囲の視覚的な世界を理解して再作成できるインテリジェントなシステム/マシンを開発しています。

Samet Akcay (英語) https://www.linkedin.com/in/sametakcay/ は、AI リサーチエンジニア/サイエンティストです。主な研究対象は、リアルタイム画像分類、検出、異常検出、およびディープラーニング/マシンラーニング・アルゴリズムによる教師なし特徴の学習です。最近、この分野で最大の異常検出ライブラリーの 1 つである Anomalib を共同で開発し、オープンソース化しました。英国ダラム大学のコンピューター・サイエンス学部で博士号を、米国ペンシルベニア州立大学電気工学部のロバスト・マシン・インテリジェンス・ラボで修士号を、それぞれ取得しています。著名なコンピューター・ビジョンおよびマシンラーニング/ディープラーニングの会議やジャーナルに 30 以上の学術論文を発表しています。

Zhuo Wu は、OpenVINO™ ツールキット担当のインテルの AI エバンジェリストです。研究対象はディープラーニング・テクノロジーから 5G 無線通信技術まで多岐にわたり、コンピューター・ビジョン、マシンラーニング、エッジ・コンピューティング、IoT システム、無線通信物理層アルゴリズムに貢献してきました。これまで、自動車、銀行、保険などさまざまな業界の企業に、エンドツーエンドのマシンラーニングおよびディープラーニング・ベースのソリューションを提供してきました。4G-LTE および 5G 無線通信システムに関する広範な研究も行っており、中国のベル研究所で研究員として勤務していたときに複数の特許を取得しています。上海大学の准教授時代には、主任研究者としていくつかの研究プロジェクトを先導しました。

OpenVINO™ ツールキットとは

AI を加速する無償のツールである OpenVINO™ ツールキットは、インテルが無償で提供しているインテル製の CPU や GPU、VPU、FPGA などのパフォーマンスを最大限に活用して、コンピューター・ビジョン、画像関係をはじめ、自然言語処理や音声処理など、幅広いディープラーニング・モデルで推論を最適化し高速化する推論エンジン / ツールスイートです。

OpenVINO™ ツールキットページでは、ツールの概要、利用方法、導入事例、トレーニング、ツール・ダウンロードまで様々な情報を提供しています。ぜひ特設サイトにアクセスしてみてください。

https://www.intel.co.jp/content/www/jp/ja/internet-of-things/openvino-toolkit.html

＜法務上の注意書き＞

インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。

絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。

実際の費用と結果は異なる場合があります。

インテルは、サードパーティーのデータについて管理や監査を行っていません。ほかの情報も参考にして、正確かどうかを評価してください。

インテルは、明示されているか否かにかかわらず、いかなる保証もいたしません。ここにいう保証には、商品適格性、特定目的への適合性、および非侵害性の黙示の保証、ならびに履行の過程、取引の過程、または取引での使用から生じるあらゆる保証を含みますが、これらに限定されるわけではありません。

本資料は、(明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず) いかなる知的財産権のライセンスも許諾するものではありません。

© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。