YOLO11によるImageNet画像分類 Colab プログラムによる実験・研究スキルの基礎
【概要】YOLO11の事前学習済みモデルを使用してImageNetの1000クラスに画像を分類するプログラムである。Google Colabで動作し、画像をアップロードすると上位3つの分類結果と信頼度を表示する。実験計画の立て方、結果の考察方法、トラブルシューティングについても解説する。
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1y_GMeDc5ZZvLqOTeDWLT6RMEUrng33ex?usp=sharin
【目次】
プログラム利用ガイド
1. このプログラムの利用シーン
画像に写っている物体が何であるかを自動的に判定するためのツールである。動物、乗り物、日用品など1000種類のカテゴリから、最も当てはまる分類を提示する。写真の整理や分類作業を自動化したい場合や、画像認識技術を試してみたい場合に適している。
2. 主な機能
- 画像分類:入力された画像を解析し、1000種類のカテゴリから最も適したクラスを予測する。
- 信頼度表示:予測されたクラスごとに、モデルがどの程度確信しているかを百分率で示す。
- 上位3クラスの表示:最も確率の高い上位3つのクラスを画像上に重ねて表示する。
- 自動デバイス選択:GPUが利用可能な場合は自動的にGPUで処理し、そうでない場合はCPUで実行する。
- 結果の保存:分類結果が描画された画像をoutputフォルダに保存する。
3. 基本的な使い方
- 環境の準備
Google Colabのコードセルを実行。必要なライブラリは自動的にインストールされる。
- 最初にサンプル画像での分類が行われる。
- 自分の画像をアップロード
「画像ファイルを1つアップロードしてください」というメッセージが表示されたら、分類したい画像ファイルを選択する。
- 結果の確認
画像が表示され、その上に「Top 1」「Top 2」「Top 3」として分類結果が記載される。各クラス名の後ろに信頼度が表示される。
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/1y_GMeDc5ZZvLqOTeDWLT6RMEUrng33ex?usp=sharin
4. 便利な機能
- 複数の画像を連続して試す:アップロードのセルだけを再実行すれば、プログラム全体を実行し直すことなく、異なる画像を次々に分類できる。
- 結果画像の保存:outputフォルダに結果が保存されるため、後から見返すことができる。
- デバイス情報の確認:プログラムの実行時に、GPUとCPUのどちらで処理されているかが表示される。処理速度の参考となる。
- 日本語での説明:分類結果の見方が日本語で説明されるため、初心者でも理解しやすい。
プログラムコードの説明
1. 概要
このプログラムは、YOLO11の事前学習済みモデルを用いて画像分類を行うシステムである。ImageNetデータセットで学習されたモデルにより、入力画像を1000クラスのいずれかに分類し、信頼度の高い上位3クラスを画像上に可視化する。
2. 主要技術
YOLO11画像分類モデル
YOLO11はUltralyticsが開発した物体検出およびコンピュータビジョンのフレームワークであり[1]、物体検出、セグメンテーション、姿勢推定、画像分類など複数のタスクに対応する。画像分類モデル(yolo11n-cls.pt)は、ImageNetデータセットの1000クラスで事前学習されており[2]、改良されたバックボーンアーキテクチャとネック構造により特徴抽出能力が向上している。
ImageNetデータセット
ImageNetは大規模な画像分類用データセットであり[3]、ILSVRC(ImageNet Large Scale Visual Recognition Challenge)では1000クラス、約128万枚の学習画像が使用される。WordNetの階層構造に基づいてカテゴリが整理されており、深層学習モデルの学習と評価における標準的なベンチマークとなっている。
3. 技術的特徴
- 事前学習済みモデルの活用
ImageNetで学習された重みを持つモデルを使用することで、追加の学習なしに1000クラスの画像分類が可能である。
- 信頼度に基づく上位クラスの抽出
ソフトマックス関数により算出された確率分布から、降順ソートにより上位3クラスを取得する。
- GPUとCPUの自動選択
PyTorchのデバイス検出機能により、CUDA対応GPUが利用可能な場合は自動的にGPUを使用し、そうでない場合はCPUで推論を実行する。
- 視覚的な結果表示
OpenCVとMatplotlibを組み合わせ、分類結果を画像上にテキストとして描画し、Jupyter Notebook上で可視化する。
4. 実装の特色
このプログラムは以下の構成で動作する。
- 公式サンプル画像のダウンロードと分類による動作確認
- Google Colabのファイルアップロード機能を用いたユーザー画像の分類
- 分類結果の画像への重畳表示(クラス名と信頼度を含む)
- 処理済み画像のoutputフォルダへの自動保存
- 日本語での結果説明とクラス情報の出力
5. 参考文献
[1] Ultralytics. (2024). YOLO11 Documentation. https://docs.ultralytics.com/models/yolo11/
[2] Ultralytics. (2025). Image Classification - Ultralytics YOLO Docs. https://docs.ultralytics.com/tasks/classify/
[3] Deng, J., Dong, W., Socher, R., Li, L.-J., Li, K., & Fei-Fei, L. (2009). ImageNet: A Large-Scale Hierarchical Image Database. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR). https://image-net.org/
実験・研究スキルの基礎:Google Colabで学ぶ画像分類実験
1. 実験・研究のスキル構成要素
実験や研究を行うには、以下の5つの構成要素を理解する必要がある。
1.1 実験用データ
このプログラムでは画像ファイルが実験用データである。
1.2 実験計画
何を明らかにするために実験を行うのかを定める。
計画例:
- モデルが正しく分類できる画像の特徴を確認する
- 誤分類が発生する条件や画像の特性を調べる
- 信頼度が高い予測と低い予測の違いを比較する
- 複数の物体が写っている画像での分類傾向を調べる
- 特定のカテゴリ(動物、乗り物など)の分類精度を評価する
1.3 プログラム
実験を実施するためのツールである。このプログラムはUltralyticsのYOLO11n-clsモデルとImageNetデータセットで学習された分類器を使用している。
- プログラムの機能を理解して活用することが基本である
- 基本となるプログラムを出発点として、将来、様々な機能を自分で追加することができる
1.4 プログラムの機能
このプログラムは画像分類を実行し、予測結果を提示する。
入力パラメータ:
- 画像ファイル:分類対象となる画像(JPG、PNG等)
出力情報:
- 上位3クラスの予測結果(クラス名と信頼度)
- 予測結果が重畳された画像表示
- 処理結果の説明とクラス情報
プログラムの動作:
- ImageNetの1000クラスから最も確率の高いクラスを予測する
- 信頼度は0.0から1.0の範囲で表示される(百分率で表記される場合もある)
1.5 検証(結果の確認と考察)
プログラムの実行結果を観察し、分類結果の妥当性を考察する。
基本認識:
- 画像が変わると結果が変わる。様々な画像で試すことが実験である
- 「正しい分類」「誤った分類」は画像の内容によって判断する
観察のポイント:
- 1位の予測は画像の内容と一致しているか
- 信頼度の値はどの程度か(高い・低い)
- 2位、3位の予測は妥当か(似たカテゴリか、全く異なるカテゴリか)
- 複数の物体が写っている場合、どの物体を認識しているか
- 誤分類が発生した場合、その理由は推測できるか
2. 間違いの原因と対処方法
2.1 プログラムのミス(人為的エラー)
画像がアップロードできない
- 原因:ファイル形式が対応していない、またはファイルサイズが大きすぎる
- 対処方法:JPGまたはPNG形式の画像を使用する。大きな画像は事前に縮小する
モデルのダウンロードに時間がかかる
- 原因:初回実行時にYOLO11n-clsモデルをダウンロードしている
- 対処方法:これは正常な動作である。ダウンロードが完了するまで待つ
2.2 期待と異なる結果が出る場合
明らかに写っている物体が認識されない
- 原因:その物体のカテゴリがImageNetの1000クラスに含まれていない可能性がある
- 対処方法:ImageNetには日常的な物体が多く含まれるが、すべての物体が含まれるわけではない。これはデータセットの制約である
複数の物体が写っているのに1つしか認識されない
- 原因:画像分類は画像全体を1つのクラスに分類するタスクである
- 対処方法:これは画像分類モデルの仕様である。複数物体の検出には物体検出モデルが必要である
信頼度が低い(例:30%以下)
- 原因:画像が不鮮明、複数の物体が写っている、または学習データに類似画像が少ない
- 対処方法:信頼度が低い場合、モデルが確信を持てていないことを示す。これは実験における重要な観察結果である
似た物体を誤認識する(例:犬を猫と分類)
- 原因:視覚的特徴が類似している、または画像の撮影角度や背景が影響している
- 対処方法:2位や3位の予測を確認する。正解が上位に含まれている場合、特徴の類似性が原因と考えられる
3. 実験レポートのサンプル
注意:以下のサンプルに記載されている数値やクラス名(xxxx、xx%など)は架空の値である。実際の実験では、自分で取得した実測値を記入すること。
画像の特性が分類精度に与える影響
実験目的:
画像の鮮明度や撮影条件が分類結果の信頼度に与える影響を調べる。
実験計画:
同じ物体を異なる条件で撮影した画像を用意し、それぞれの分類結果を比較する。
実験方法:
プログラムを実行し、複数の画像で分類を行い、以下の項目を記録する:
- 1位の予測クラス名
- 1位の信頼度
- 予測の正誤(正解/不正解)
- 画像の特性(鮮明/不鮮明、近距離/遠距離など)
実験結果:
| 画像番号 | 画像の特性 | 1位の予測 | 信頼度 | 正誤 | 備考 |
|---|---|---|---|---|---|
| 画像1 | 鮮明、近距離 | xxxx | xx% | 正解 | 背景なし |
| 画像2 | やや不鮮明 | xxxx | xx% | 正解 | 若干のブレあり |
| 画像3 | 遠距離 | xxxx | xx% | 不正解 | 物体が小さい |
| 画像4 | 複数物体 | xxxx | xx% | 正解 | 最も大きい物体を認識 |
考察:
- (例文)鮮明で近距離から撮影された画像では信頼度がxx%以上となり、正確な分類が行われた
- (例文)不鮮明な画像や遠距離から撮影された画像では信頼度がxx%以下に低下し、誤分類も発生した
- (例文)複数の物体が写っている画像では、画像内で最も大きく写っている物体、または中央に位置する物体が分類される傾向が見られた
- (例文)誤分類が発生した画像では、2位や3位の予測に正解クラスが含まれていることが多く、モデルが複数の候補で迷っていることが推測される
結論:
(例文)本実験により、画像の鮮明度と撮影距離が分類精度に大きく影響することが確認できた。高精度な分類を得るには、物体が明瞭に写った画像を用意する必要がある。また、信頼度が低い場合は上位複数の予測を参考にすることで、より適切な判断が可能である。実用的な応用では、信頼度に基づいて結果を採用するか人間が確認するかを判断する仕組みが有効であると考えられる。