huggingface/pytorch-image-models

The largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 & V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more

PyTorch Image Models (timm) とは?

timm は、PyTorch 上に構築されたすぐに使えるコンピュータビジョンモデルのライブラリです。以下が含まれます:

  • 数百の最先端の画像アーキテクチャ – 古典的な ConvNets(ResNet、EfficientNet、MobileNet)から、現代の Vision Transformers(ViT、EVA、BEiT、ConvNeXt など)まで。
  • 事前学習済みの重み – ほとんどのモデルに事前学習済みの重みが用意されており、通常は ImageNet-1k でトレーニングされているため、すぐに推論やファインチューニングに使用できます。
  • ユーティリティコード – レイヤー、オプティマイザ、学習率スケジューラ、データローダー、拡張パイプライン、および公開された結果を最小限の設定で再現できる参照用のトレーニング/検証スクリプト。
  • トレーニング支援ツール – ハイパーパラメータスイープ用の新しい sweep.py、再開、マルチ GPU 実行、マルチラベル分類、カスタム損失関数などをサポートする柔軟な train.py。

要するに、timm は、各アーキテクチャをゼロから再実装することなく、さまざまな画像モデルを必要とする研究者やエンジニアにとってのワンストップショップです。


誰にとって役立つか?

対象 重要性
ML 研究者 大規模な SOTA ビジョンモデルのカタログ上で新しいアイデアを迅速にプロトタイプし、結果を比較できます。
実務者/エンジニア 単一のインポートで事前学習済みモデルを本番パイプラインに組み込み、カスタムデータセットでファインチューニングできます。
学生/愛好家 クリーンでドキュメントが整った PyTorch コードを読むことで、現代のビジョンアーキテクチャを学べます。
ベンチマークチーム 提供されたトレーニングスクリプトとベンチマーク CSV を使用して、さまざまな GPU での速度と精度を測定できます。

コア機能(README に記載されている通り)

機能 詳細
モデル動物園 300 を超えるアーキテクチャがあり、それぞれにバリアント固有の事前学習済み重みがあります。ConvNets、Transformers、ハイブリッドモデル、および低消費電力デバイス向けの CPUBone などのニッチなバックボーンが含まれます。
トレーニングスクリプト train.py と validate.py は、再開、エポック停止、マイルストーンチェックポイント、YAML 設定の検証、マルチラベルタスク、カスタム損失関数、混合精度をサポートします。
ハイパーパラメータスイープ 新しい sweep.py は、任意の train.py 引数に対してグリッド検索またはランダム検索を実行し、ローカル GPU にジョブを分散し、中断されたスイープを再開できます。
オプティマイザとスケジューラ RMSpropTF、LaProp、LAMB、LARS、AdaBelief、NovoGrad、Muon などの更新された実装に加え、warmup-stable-decay (WSD) 学習率スケジューラが含まれます。
データユーティリティ 柔軟な画像データセット、マルチラベルサポート、Mixup/CutMix、AugMix、および非正方形または単一チャンネルの画像の自動処理。
モデルサイズ変更 set_input_size() により、ほとんどのモデルがさまざまな画像解像度に即座に適応でき、ウィンドウ化された Vision Transformers には特別な処理が行われます。
エクスポートと推論 ONNX エクスポート互換性、自動入力サイズ選択を備えた inference.py、Torch-compile と CUDA graphs のサポート。
ドキュメント モデル API ページ、トレーニングガイド、および厳選された PyTorch リソースのリスト。
ライセンスと引用 各モデルの明確なライセンス情報と、ライブラリの引用方法に関する説明。

はじめ方(クイックスタート手順)

  1. インストール
    pip install timm
    
  2. モデルをロード(例:事前学習済みの EfficientNet-B0)
    import timm
    model = timm.create_model('efficientnet_b0', pretrained=True)
    model.eval()
    
  3. 推論を実行
    from torchvision import transforms
    from PIL import Image
    
    preprocess = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406],
                             std=[0.229, 0.224, 0.225]),
    ])
    
    img = Image.open('my_image.jpg')
    input_tensor = preprocess(img).unsqueeze(0)  # batch dim
    with torch.no_grad():
        logits = model(input_tensor)
    
  4. ファインチューニング – 提供された train.py スクリプトを使用し、データセットを指定して、必要に応じてスイープを実行します:
    python train.py --model efficientnet_b0 --data-dir /path/to/data --epochs 30
    python sweep.py --config my_sweep.yaml
    

代替案を検討すべき場合

  • 非ビジョンモデル(LLM、オーディオ、強化学習エージェント)が必要な場合、timm はこれらの領域をカバーしていません。
  • 超大規模トレーニング(数十億の画像)の場合、timm と統合できる専用の分散トレーニングフレームワーク(例:DeepSpeed、Lightning)が必要になるかもしれませんが、追加のスケーリング機能が提供されます。
  • デバイス上での推論(モバイル/組み込み)が必要な場合、CPUBone や MobileNet-V2 などの軽量バックボーンを検討してください。ただし、モデルを ONNX/TFLite に変換する必要がある場合があります。

TL;DR – timm は、PyTorch 用の包括的で積極的にメンテナンスされている画像モデルとトレーニングユーティリティのコレクションであり、最先端のコンピュータビジョンアーキテクチャを実験またはデプロイしたい人に最適です。

関連

  • Dispatch
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト