2026-04-30·実装·⏱ 約 5 分
コンピュータビジョン 入門 ─ CNN から ViT まで
画像認識・物体検出・セグメンテーションの基礎。CNN・ResNet・YOLO・Vision Transformer の主要アーキテクチャを実装視点で整理します。
コンピュータビジョン(CV) は画像 ・ 動画から情報を抽出する分野。スマホのカメラ ・ 自動運転 ・ 医用画像 ・ 顔認証など応用範囲は広大です。
4 つの基本タスク
- 画像分類(Classification): 1 枚 → 1 ラベル(犬/猫)
- 物体検出(Detection): 1 枚 → 複数のバウンディングボックス + ラベル
- セグメンテーション(Segmentation): ピクセル単位の分類
- 画像生成(Generation): GAN ・ Diffusion で新しい画像を作る
歴史 ─ アーキテクチャの進化
- LeNet(1998): 手書き数字認識、CNN の元祖
- AlexNet(2012): ImageNet で衝撃的勝利、DL ブーム到来
- VGG(2014): 3×3 畳み込みの繰り返し、シンプルで強い
- ResNet(2015): 残差接続で 100 層超え、現在も主流
- ViT(2020): Transformer で画像を処理、スケール則が CNN を超える
- SAM / DINO(2023〜): 大規模事前学習による汎用ビジョンモデル
ResNet の本質 ─ 残差接続
層を深くするほど勾配消失で学習困難になる問題を、スキップ接続 で解決。100 層・200 層が現実的に。
ResNet ブロック
import torch.nn as nn
class ResBlock(nn.Module):
def __init__(self, ch):
super().__init__()
self.conv1 = nn.Conv2d(ch, ch, 3, padding=1)
self.conv2 = nn.Conv2d(ch, ch, 3, padding=1)
self.bn1 = nn.BatchNorm2d(ch)
self.bn2 = nn.BatchNorm2d(ch)
def forward(self, x):
identity = x
out = nn.functional.relu(self.bn1(self.conv1(x)))
out = self.bn2(self.conv2(out))
return nn.functional.relu(out + identity) # スキップ接続Vision Transformer(ViT)
画像を 16×16 のパッチ に分割 → トークン列として Transformer に入れる。スケールしやすく、十分なデータがあれば CNN を上回る。
- ViT-Base: 86M parameters
- ViT-Huge: 632M parameters
- 事前学習: JFT-300M(Google 内部、3 億画像)
物体検出 ─ YOLO
YOLO(You Only Look Once) は画像を 1 回で処理してバウンディングボックスを出力。リアルタイム物体検出の代表。
- YOLOv1(2016) → YOLOv8(2023)まで進化
- アンカーフリー化で簡略化
- ultralytics/yolov8 が現在の業界標準
セグメンテーション ─ U-Net / SAM
- U-Net: 医用画像で標準のエンコーダ・デコーダ構造
- Mask R-CNN: 検出 + セグメンテーションの両刀
- SAM(Segment Anything): 2023 Meta、ゼロショットでセグメント
実装の最短路 ─ 転移学習
PyTorch で 5 行転移学習
from torchvision import models
import torch.nn as nn
model = models.resnet50(weights='IMAGENET1K_V2')
model.fc = nn.Linear(model.fc.in_features, 10) # 自分のクラス数に
# あとは fine-tune するだけ🛠 実務 Tips
ゼロから学習せずに、ImageNet 事前学習済みモデルを fine-tune する方が圧倒的に早く高精度に。データ 1000 枚でも実用レベル。
学習リソース
- [E 資格 教科書](/certs/e-shikaku/textbook) ─ CNN ・ ViT の章
- [Transformer の数学](/blog/transformer-math) ─ ViT の前提
- [scikit-learn 入門](/blog/sklearn-introduction)
- [線形代数を AI 視点で](/blog/linear-algebra-for-ai)
Related Articles
関連記事
- 2026-04-30実装OpenAI API 実装入門 ─ Chat / Embeddings / Function CallingOpenAI API を使ったプロダクション開発の基礎。Chat Completion・Embedding・Function Calling・ストリーミング・コスト管理まで実装パターンを網羅。
- 2026-04-30実装Vercel で AI アプリをデプロイする ─ Next.js + AI SDK 入門Vercel にデプロイする最短ルート。Next.js の AI SDK + AI Gateway で OpenAI/Claude を統合し、ストリーミングチャット UI を 1 時間で公開する手順。
- 2026-04-30実装Streamlit で 1 時間で ML デモアプリ ─ 転職に効くポートフォリオPython だけで動くインタラクティブな ML デモを Streamlit で作る方法。データ可視化・ファイルアップロード・モデル予測 UI までの最小実装。