GroundingDINOによる検出 Colab プログラム

【概要】GroundingDINOを用いた物体検出システムの利用ガイドと技術解説。建築異常、道路インフラ、医療・安全設備など6つの専門分野に特化した検出モードを提供し、Google Colab上で画像から対象物を自動検出する。テキストプロンプトによるゼロショット物体検出により、事前学習なしで任意の物体を検出可能。実験・研究の基礎スキルと実践的なレポート作成方法も解説する。

【概要説明】 [PDF], [パワーポイント]

Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1ANPMe_8lkV5V-sa6fe7miJHDO546Uzlf?usp=sharing

GroundingDINO検出システムのイメージ図

【目次】

  1. プログラム利用ガイド
  2. プログラムコードの説明
  3. 実験・研究スキルの基礎

プログラム利用ガイド

1. このプログラムの利用シーン

建物の保守点検、道路インフラの維持管理、施設内の安全設備配置確認、飲食店の衛生検査など、専門的な検査業務を画像から自動化するためのツールである。検出対象となる物体や状態を事前に学習させる必要がなく、6つの専門分野から選択するだけで、該当する異常や設備を自動検出できる。Google Colab上で動作するため、特別なソフトウェアのインストールは不要である。

2. 主な機能

3. 基本的な使い方

  1. Colabページでコードセルを実行

    Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1ANPMe_8lkV5V-sa6fe7miJHDO546Uzlf?usp=sharing

    セルを順番に実行する。実行すると6つの検出モードのメニューが表示される。

  2. 検出モードの選択:

    表示されたメニューから1から6の数字を入力し、Enterキーを押す。例えば、建築物の劣化を調べたい場合は「1」を入力する。

  3. ライブラリのインストール待機:

    必要なライブラリとモデルファイルが自動的にダウンロードされる。この処理には数分かかる場合がある。

  4. サンプル画像での動作確認:

    選択したモードに対応するサンプル画像が自動的に読み込まれ、検出結果が表示される。元画像と検出結果の2つの画像が左右に並んで表示される。

  5. ユーザー画像のアップロード:

    「ファイルを選択」ボタンが表示されるので、検出したい画像ファイル(JPEG、PNGなど)を選択してアップロードする。

  6. 結果の確認:

    アップロードした画像に対する検出結果が表示される。画像の下に統計情報(検出数、クラス別集計、詳細リスト)が出力される。

4. 便利な機能

プログラムコードの説明

1. 概要

このプログラムは、Google Colab環境で動作するGroundingDINOベースの物体検出システムである。6つの専門領域(建築異常、道路インフラ、医療・安全設備、セキュリティ・防災、飲食店衛生、有用情報)に特化した検出モードを備え、テキストプロンプトによって任意の物体を検出する。ユーザーはモード選択後、サンプル画像またはアップロード画像から対象物体を自動検出し、バウンディングボックス付きの可視化結果と統計情報を得ることができる。

2. 主要技術

GroundingDINO

IDEA Researchが2023年に発表したオープンセット物体検出モデルである[1]。Transformerベースの検出器DINOに言語モデルを統合し、テキストによる物体指定を可能にした。画像とテキストのモダリティ融合により、事前学習に含まれない任意のカテゴリを検出できる。特徴強化器、言語誘導クエリ選択、クロスモダリティデコーダの3段階アーキテクチャを採用し、COCOデータセットにおけるゼロショット転移で52.5 APを達成した[1]。

ゼロショット物体検出

学習時に観測されなかったクラスを推論時に検出する技術である[2]。従来の物体検出が固定されたクラスセットに限定されるのに対し、ゼロショット検出は補助情報(テキスト記述や属性)を通じて未知クラスを認識する。GroundingDINOはこの手法を採用し、自然言語による物体記述を入力として受け付けることで、事前定義されたカテゴリに依存しない汎用的な検出を実現している。

3. 技術的特徴

4. 実装の特色

プログラムはGoogle Colab環境に最適化されており、以下の機能を実装している:

5. 参考文献

[1] Liu, S., Zeng, Z., Ren, T., Li, F., Zhang, H., Yang, J., Li, C., Yang, J., Su, H., Zhu, J., & Zhang, L. (2023). Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection. arXiv preprint arXiv:2303.05499. https://arxiv.org/abs/2303.05499

[2] Bansal, A., Sikka, K., Sharma, G., Chellappa, R., & Divakaran, A. (2018). Zero-shot object detection. In Proceedings of the European Conference on Computer Vision (ECCV) (pp. 384-400).

実験・研究スキルの基礎:Google Colabで学ぶGroundingDINO実験

1. 実験・研究のスキル構成要素

実験や研究を行うには、以下の5つの構成要素を理解する必要がある。

1.1 実験用データ

このプログラムでは画像ファイルが実験用データである。自分で撮影した建築物、道路、施設などの写真1枚を用意する。

1.2 実験計画

何を明らかにするために実験を行うのかを定める。

入門者向け計画例:

1.3 プログラム

実験を実施するためのツールである。このプログラムはGroundingDINOモデルと6つの専門分野別検出モードを使用している。

1.4 プログラムの機能

このプログラムは検出モードを選択することで、画像から特定の種類の物体を自動検出する。

6つの検出モード:

出力情報:

検出の仕組み:

1.5 検証(結果の確認と考察)

プログラムの実行結果を観察し、各モードの特徴と検出結果の意味を考察する。

基本認識:

観察のポイント:

2. 間違いの原因と対処方法

2.1 プログラムのミス(人為的エラー)

プログラムがエラーで停止する

画像がアップロードできない

モデルのダウンロードに時間がかかる

2.2 期待と異なる結果が出る場合

どのモードでも何も検出されない

明らかに存在する物体が検出されない

存在しない物体が検出された(誤検出)

同じ物体に複数の矩形が表示される

3. 実験レポートのサンプル

注意:以下の実験結果は説明のための架空の例です。実際に実験を行う際は、自分で得た結果を記入してください。

6つの検出モードによる同一画像の分析比較

実験目的:

1枚の建物外観写真を6つの異なる検出モードで処理し、各モードがどのような物体を検出するかを観察することで、モード間の特徴と用途の違いを理解する。

実験計画:

オフィスビルの入口を撮影した写真(看板、防犯カメラ、AED、スロープ、壁面が写っている)を用意し、プログラムを6回実行して各モードでの検出結果を記録する。各モードで検出された物体の種類、数、信頼度を表にまとめ、モード間の違いを分析する。

実験方法:

同じ画像ファイルを使用し、モード選択のみを変更してプログラムを実行する。各実行後に以下を記録する:

実験結果:

モード 検出総数 検出されたクラス 最高信頼度 誤検出 見逃し
1. 建築異常 xxx xxxx(x)、xxxx(x) x.xx xxxx xxxx
2. 道路インフラ xxx xxxx x.xx xxxx xxxx
3. 医療・安全設備 xxx xxxx(x)、xxxx(x) x.xx xxxx xxxx
4. セキュリティ・防災 xxx xxxx(x) x.xx xxxx xxxx
5. 飲食店衛生 xxx xxxx x.xx xxxx xxxx
6. 有用情報 xxx xxxx(x)、xxxx(x)、xxxx(x) x.xx xxxx xxxx

考察:

結論:

(例文)1枚の画像から得られる情報は、使用する検出モードによって大きく異なる。本実験のオフィスビル入口写真では、案内情報の抽出にはモード6、防犯設備の確認にはモード4、バリアフリー設備の確認にはモード3が最も適していた。実際の業務では、目的に応じて適切なモードを選択することが重要である。また、複数のモードを組み合わせることで、1枚の画像から多面的な情報を抽出できる可能性が示された。今後の発展として、検出されなかった物体(例:非常口サイン)を検出するために、MODE_CLASSES辞書に新しいクラスを追加する実験が考えられる。