文章目錄
- 📦 主要特點
- 🚀 安裝方式
- 🧪 使用示例
- 示例1:加載一個預訓練模型進行圖像分類
- 示例2:獲取模型結構信息
- 🌐 官方資源
- 🔍 常見用途
- ? 優勢總結
Timm
是一個非常流行且功能強大的 Python 深度學習庫,全稱為:
timm(原名:pytorch-image-models)
它是由 Ross Wightman 維護的開源項目,主要面向 基于 PyTorch 的圖像模型研究與應用。該庫提供了大量 預訓練的計算機視覺模型(vision models),以及靈活的組件,便于研究人員和開發者快速構建、訓練和測試各種圖像分類、檢測、分割等任務中的深度學習模型。
📦 主要特點
特性 | 說明 |
---|---|
模型豐富 | 支持數百種主流視覺模型,包括 ResNet、EfficientNet、Vision Transformer (ViT)、ConvNeXt、Swin Transformer、MobileNet、DeiT 等 |
預訓練權重 | 提供大量 ImageNet 預訓練模型權重,便于遷移學習 |
模塊化設計 | 模型結構清晰,易于修改、組合不同模塊(如 blocks、heads、losses) |
支持多任務 | 不僅支持圖像分類,還支持目標檢測、語義分割、姿態估計等任務 |
訓練工具鏈完善 | 包含數據增強、優化器、學習率調度器、損失函數、混合精度訓練等功能 |
持續更新 | 跟蹤 SOTA(State-of-the-Art)論文,及時加入新模型和新技術 |
🚀 安裝方式
需要手動安裝,否則ModuleNotFoundError: No module named ‘timm’。
你可以通過 pip 快速安裝 timm:
pip install timm
或者從 GitHub 上安裝最新版本(推薦):
pip install git+https://github.com/rwightman/pytorch-image-models
🧪 使用示例
示例1:加載一個預訓練模型進行圖像分類
import torch
import timm
from PIL import Image
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform# 列出所有可用模型
# print(timm.list_models())# 加載預訓練模型(例如 resnet50)
model = timm.create_model('resnet50', pretrained=True)
model.eval()# 獲取模型所需的輸入預處理配置
config = resolve_data_config({}, model=model)
transform = create_transform(**config)# 圖像預處理
img = Image.open('example.jpg').convert('RGB')
tensor = transform(img).unsqueeze(0) # 添加 batch 維度# 推理
with torch.no_grad():out = model(tensor)
probabilities = torch.nn.functional.softmax(out[0], dim=0)# 打印 top-5 分類結果
top5_prob, top5_catid = torch.topk(probabilities, 5)
for i in range(top5_prob.size(0)):print(f"Top {i+1} class: {top5_catid[i]} - Probability: {top5_prob[i].item():.4f}")
示例2:獲取模型結構信息
import timm# 查看支持的所有模型名稱
print(timm.list_models())# 查看某個模型的參數
model = timm.create_model('vit_base_patch16_224', pretrained=True)
print(model)
🌐 官方資源
- GitHub 地址:https://github.com/rwightman/pytorch-image-models
- 文檔地址:https://rwightman.github.io/pytorch-image-models/
- PyPI 頁面:https://pypi.org/project/timm/
🔍 常見用途
- 遷移學習(Transfer Learning)
- 圖像分類(Image Classification)
- 目標檢測(Object Detection)
- 圖像分割(Semantic Segmentation)
- 自監督學習(Self-supervised Learning)
- 模型壓縮與量化(Quantization / Pruning)
? 優勢總結
- 開箱即用(Pretrained Models + Easy API)
- 模型種類多、覆蓋廣
- 社區活躍,維護頻繁
- 適合科研和工程落地結合使用