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 是研究人员和工程师的一站式商店,他们需要各种图像模型,而无需从头开始重新实现每个架构。
谁会觉得它有用?
| 对象 | 重要性 |
|---|---|
| 机器学习研究人员 | 在大型 SOTA 视觉模型目录上快速原型化新想法,并比较结果。 |
| 实践者/工程师 | 通过单一导入将预训练模型拉入生产管道,然后在自定义数据集上微调。 |
| 学生/爱好者 | 通过阅读干净、文档完善的 PyTorch 代码来学习现代视觉架构。 |
| 基准测试团队 | 使用提供的训练脚本和基准 CSV 来测量不同 GPU 上的速度和准确度。 |
核心功能(如 README 所述)
| 功能 | 详细说明 |
|---|---|
| 模型动物园 | 超过 300 种架构,每种都有特定变体的预训练权重。包括 ConvNets、Transformers、混合模型,以及像 CPUBone 这类用于低功耗设备的利基主干网络。 |
| 训练脚本 | train.py 和 validate.py 支持恢复、epoch 停止、里程碑检查点、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 资源列表。 |
| 许可与引用 | 每个模型的明确许可信息,以及如何引用此库的说明。 |
如何开始(快速入门步骤)
- 安装
pip install timm - 加载模型(例如,预训练的 EfficientNet-B0)
import timm model = timm.create_model('efficientnet_b0', pretrained=True) model.eval() - 执行推理
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) - 微调 – 使用提供的
train.py脚本,指向您的数据集,并可选择执行扫描:python train.py --model efficientnet_b0 --data-dir /path/to/data --epochs 30 python sweep.py --config my_sweep.yaml
何时考虑替代方案
- 如果您需要非视觉模型(LLM、音频、强化学习代理),
timm不涵盖这些领域。 - 对于超大规模训练(数十亿张图像),您可能需要一个专门的分布式训练框架(例如 DeepSpeed、Lightning),它可以与
timm集成,但提供额外的扩展功能。 - 如果您需要设备端推理(移动设备/嵌入式),请查看像 CPUBone 或 MobileNet-V2 这类轻量级主干网络,但您可能仍需要将模型转换为 ONNX/TFLite。
TL;DR – timm 是一个全面、积极维护的图像模型和训练工具集合,适用于 PyTorch,非常适合任何想要实验或部署最先进计算机视觉架构的人。
相关
- Dispatch
- Dispatch
- 项目
- 项目
- 项目