• 工場や街中カメラは低解像度が主流
  • ViT は 14×14 パッチを前提に学習
  • パッチを 8×8 など小さくすると小さな欠陥も見えやすい

パッチサイズとは?

  • 画像を タイル状に切り分ける 1 片の大きさ(例: 14×14 px)
  • パッチサイズ ↓ ⇒ パッチ枚数 ↑ ⇒ 細部まで観察できる
  • バッチサイズ(GPU に投げる画像枚数)とは別パラメータ
  • 例: 224×224 px 画像を 14 px で切ると 16×16=256 枚、8 px で切ると 28×28=784 枚

コード例(PyTorch)

from torchvision.models import vit_b_16
model = vit_b_16(patch_size=8)  # デフォルト14→8

なぜ効く?

ジグソーパズルを細かく砕くほど欠けたピースは目立つ

自己注意が細かなパッチ間の差異を総当たりで比較し、微小な傷や汚れをハイライトしてくれます。

ワン・クラス異常検知の流れ

  1. 正常画像のみを使って ViT を事前学習し、特徴ベクトルを取得
  2. マハラノビス距離で外れ値を判定
    • 多次元版の z スコア。平均との差だけでなく特徴間の相関も考慮
    • 正常データを包む“楕円体”からの距離を測るイメージ
    • たとえ話: 身長と体重の健康診断。150 cm 80 kg は異常、190 cm 80 kg は正常──2 変数の相関込みで離れ具合を評価
    • 距離が 0 に近いほど平均的、大きいほど“珍しい”サンプル
  3. 距離が閾値を超えたサンプルを 異常 としてフラグ

音も扱うなら

  • torchaudio.transforms.MelSpectrogram で音を画像化
  • 画像と同じ ViT に入力 → 視覚 + 聴覚を同時解析

実践 Tips

  • torch.cuda.amp + torch.compile でメモリ節約 & 高速化
  • パッチを小さくすると計算量↑。GPU メモリと相談しながらバッチサイズを調整

投稿者 kojiro777

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です