画像分類タスク がぞうぶんるいたすく
画像分類画像認識ImageNetCNN深層学習ラベル予測
画像分類タスクについて教えて
簡単に言うとこんな感じ!
画像分類は「この画像は何か?(猫・犬・車・花など)」という質問にAIが答えるタスクだよ。コンピュータービジョンで最も基本的なタスクで、ここで培われた技術(CNN・転移学習など)が物体検出やセグメンテーションなどの応用タスクの基盤になっているんだ!
画像分類タスクとは
画像分類(Image Classification) は、入力画像を事前に定義されたクラス(カテゴリ)のいずれかに割り当てるタスクです。コンピュータービジョンのタスクの中で最も基本的なもので、「1枚の画像全体に対して1つ(またはTop-K個)のラベルを予測」します。
画像分類の研究はImageNet(120万枚以上・1000クラスの大規模画像データセット)とその年次コンテスト「ILSVRC」によって急速に発展しました。2012年のAlexNetがSigmoidからReLUへ・浅いネットから深いネットへという転換点を作り、それ以降每年モデルが改良され続けています。
「猫か犬か」という2クラス分類から、「1000種類の生物を見分ける」大規模多クラス分類まで幅広く応用されています。実務では転移学習を使い、ImageNetで事前学習したモデルを自社データで微調整することが一般的です。
主要な画像分類データセット
| データセット | 画像数 | クラス数 | 特徴 |
|---|---|---|---|
| MNIST | 7万 | 10 | 手書き数字。入門用 |
| CIFAR-10/100 | 6万 | 10/100 | 小さい画像(32×32)の多クラス |
| ImageNet(ILSVRC) | 128万 | 1000 | 深層学習競争の中心 |
| Places365 | 180万 | 365 | 場所・シーン分類 |
| iNaturalist | 240万 | 8000以上 | 生物種の細粒度分類 |
歴史と背景
- 2009年:Fei-Fei LiらがImageNetを公開
- 2010年:ILSVRCコンテスト開始。手作り特徴量が主流
- 2012年:AlexNetがエラー率を26%→15%に改善。深層学習革命の始まり
- 2015年:ResNetが人間の認識精度(5%)を初めて下回る3.57%を達成
- 2020年以降:Vision Transformerなどが台頭するが、CNNも改良が続く
画像分類の実装例
import torchvision.models as models
import torchvision.transforms as transforms
from PIL import Image
# 学習済みモデルをロード
model = models.resnet50(pretrained=True)
model.eval()
# 画像の前処理
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
# 推論
image = Image.open("photo.jpg")
input_tensor = transform(image).unsqueeze(0) # バッチ次元を追加
output = model(input_tensor)
predicted_class = output.argmax().item() # 最も確率の高いクラス
コンピュータービジョンタスクの難易度
| タスク | 入力 | 出力 | 難しさ |
|---|---|---|---|
| 画像分類 | 画像1枚 | クラスラベル | 低い |
| 物体検出 | 画像1枚 | クラス+矩形の複数 | 中程度 |
| セマンティックセグメンテーション | 画像1枚 | 全ピクセルのクラス | 高い |
| インスタンスセグメンテーション | 画像1枚 | 個体ごとのマスク | 非常に高い |
関連用語
- CNN(畳み込みニューラルネットワーク) — 画像分類で使われる主要アーキテクチャ
- 転移学習 — 画像分類の事前学習モデルを活用する手法
- AlexNet — 深層学習による画像分類のブレイクスルーモデル
- 物体検出 — 画像分類の次のステップとなるタスク