YOLOv10物体検出実験 Colab プログラム(インタラクティブなパラメータ調整機能付き)による実験・研究スキルの基礎

【概要】Google Colabで動作する物体検出AI(YOLOv10)を使用した実験プログラムである。人物、車両、動物など80種類の物体を検出できる。画像をアップロード後、スライダーで信頼度閾値とIOU閾値を調整し、リアルタイムで検出結果を確認できる。誤検出と見逃しのトレードオフを理解するための教育・研究用ツールとして設計されている。

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

YOLOv10物体検出の実行画面例

【目次】

  1. プログラムの使用法
  2. プログラムの説明
  3. 実験・研究スキルの基礎:Google Colabで学ぶ物体検出実験

プログラムの使用法

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

画像内の物体を自動的に検出し、その位置とクラスを特定する用途に使用される。特に、物体検出の閾値パラメータを調整しながら、その効果をリアルタイムで確認できるため、研究開発、教育、プロトタイピングなど、物体検出技術の実験や検証を必要とする場面で活用できる。

2. 主な機能

画像ファイルのアップロードによる物体検出

自分のパソコンやスマートフォンに保存されている写真を、Google Colabにアップロード(転送)する。プログラムはアップロードされた画像を読み込み、その中に何が写っているかを自動的に探し出す。

80クラスのCOCOデータセット物体の検出

このプログラムは80種類の物体を認識できる。これらの物体は、COCOデータセット(大規模な物体検出用の画像データベース)で定義されている。人物、車両、動物など、日常的に見かける物体が含まれている。下の対応表を参照すること。

インタラクティブなパラメータ調整機能

スライダーを使って、信頼度閾値とIOU閾値を動的に調整できる。スライダーを動かすと、即座に検出が再実行され、結果が更新される。これにより、パラメータが検出結果に与える影響をリアルタイムで確認できる。

検出結果の視覚化(バウンディングボックスとラベル)

プログラムは検出した物体を画像上に表示する。具体的には、物体の周りに緑色の矩形の枠(バウンディングボックス)を描き、その上に物体の名前(ラベル)と信頼度を表示する。元画像と検出結果を並べて表示するため、どこに何が検出されたかを視覚的に比較できる。

検出物体の詳細情報表示(クラス名、信頼度、検出数)

プログラムは検出した物体について、以下の情報を表示する。

3. 基本的な使い方

  1. 処理画像を準備しておく
  2. Colabのページを開く(https://colab.research.google.com/drive/1YBmft77poFgRnc6K9VFMm89SKP1ZNKwo?usp=sharing
  3. セルを実行する
  4. 表示されるファイル選択ダイアログから検出対象の画像ファイルを選択する
  5. モデルの読み込みが完了すると、スライダーが表示される
  6. スライダーを動かして信頼度閾値とIOU閾値を調整し、検出結果の変化を確認する

4. 便利な機能

5. パラメータの説明

信頼度(Confidence)とは

物体検出の信頼度とは、AIモデルがその物体を正しく認識している確信の度合いを0から1の数値で表したものである。1に近いほど確信度が高い。

IOU(Intersection over Union)とは

IoUは、2つの矩形領域(バウンディングボックス)の重なり具合を表す指標である。以下の式で計算される。

$$\text{IoU} = \frac{\text{重なり領域の面積}}{\text{結合領域の面積}}$$

IoUの値は0から1の範囲を取り、0は全く重ならない状態、1は完全に一致する状態を表す。例えば、IoUが0.7であれば、2つのボックスが70%の割合で重なっていることを意味する。同じ物体に対する重複検出を除去する際に使用される。

信頼度閾値(Confidence Threshold)

検出結果をフィルタリングする基準となる値である。この値より高い信頼度を持つ検出のみが表示される。

IOU閾値(Intersection over Union Threshold)

重複する検出結果を除去する基準となる値である。同じ物体に対して複数の検出があった場合、IOU値がこの閾値を超える重複を除去する。

プログラムの説明

概要

このプログラムは、Google Colab環境でYOLOv10nモデルを使用した物体検出を実行する。ユーザーがアップロードした画像に対して、スライダーで調整可能な閾値パラメータを用いて物体検出を行い、検出結果をリアルタイムで視覚化して表示する機能を提供する。

主要技術

YOLOv10 (You Only Look Once version 10)

物体検出アルゴリズムである[1]。従来のYOLOシリーズで必要だったNMS(Non-Maximum Suppression)後処理を不要とするEnd-to-Endヘッドを導入している。このプログラムでは、最も軽量なnano(n)モデルを使用し、高速な推論を実現している。

Ultralytics

YOLOモデルの実装と展開を支援するPythonパッケージである[2]。YOLOv3からYOLO12まで複数のYOLOバージョンをサポートし、訓練、検証、推論、エクスポートの機能を統合したフレームワークを提供する。

ipywidgets

Jupyter NotebookやGoogle Colabでインタラクティブなウィジェット(スライダー、ボタンなど)を提供するライブラリである。このプログラムでは、信頼度閾値とIOU閾値を動的に調整するためのスライダーUIを実装している。

技術的特徴

インタラクティブなパラメータ調整

ipywidgetsの@interactデコレータを使用し、スライダーによるリアルタイムなパラメータ調整機能を実装している。スライダーを動かすと即座に検出が再実行され、結果が更新される。これにより、パラメータの影響を直感的に理解できる。

明示的な閾値設定

信頼度閾値(conf)とIOU閾値(iou)の両方を明示的に指定している。ユーザーは0.0から1.0の範囲で自由に調整でき、極端な値での動作も確認できる。これにより、閾値パラメータの理解を深めることができる。

軽量モデルによる高速処理

YOLOv10n(nano)モデルを使用することで、CPUでも高速な推論を実現している。スライダー調整時の待ち時間を最小化し、快適な体験を提供する。

視覚的な比較表示

matplotlibを使用し、元画像と検出結果を並べて表示している。検出された物体にはバウンディングボックスとラベル(クラス名、信頼度)を描画し、視覚的に分かりやすい形で結果を提示する。

実装の特色

Google Colab環境に特化した実装として、以下の機能を備える。

参考文献

[1] Wang, A., Chen, H., Liu, L., Chen, K., Lin, Z., Han, J., & Ding, G. (2024). YOLOv10: Real-Time End-to-End Object Detection. arXiv preprint arXiv:2405.14458. https://arxiv.org/abs/2405.14458

[2] Jocher, G., & Qiu, J. (2024). Ultralytics YOLO11 (Version 11.0.0) [Computer software]. https://github.com/ultralytics/ultralytics

実験・研究スキルの基礎:Google Colabで学ぶ物体検出実験

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

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

1.1 実験用データ

このプログラムでは画像ファイルが実験用データである。

1.2 実験計画

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

計画例:

1.3 プログラム

実験を実施するためのツールである。このプログラムはUltralyticsのYOLOv10nモデルとipywidgetsのinteract関数を使用している。

1.4 プログラムの機能

このプログラムは2つのパラメータで物体検出を制御する。

入力パラメータ:

出力情報:

スライダーの動作:

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

プログラムの実行結果を観察し、パラメータの影響を考察する。

基本認識:

観察のポイント:

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

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

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

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

パラメータを変えても検出数が変化しない

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

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

誤検出が多すぎる

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

誤検出と見逃しのバランス調整

実験目的:

テスト画像内の人物を確実に検出しながら、誤検出を最小化するための最適な信頼度閾値を見つける。

実験計画:

IOU閾値を0.45に固定し、信頼度閾値を変化させて最適値を探す。

実験方法:

プログラムを実行し、スライダーを操作しながら以下の基準で評価する。

実験結果:

信頼度閾値 検出総数 正検出数 誤検出数 見逃し数 総合評価
0.10 x x x x x
0.25 x x x x x
0.50 x x x x x
0.70 x x x x x

考察:

結論: