Python PyTorch 深度学习库 包 timm

发布于:2025-07-01 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到