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)
- 模型种类多、覆盖广
- 社区活跃,维护频繁
- 适合科研和工程落地结合使用