oke电脑网站(重磅更新TorchVision最新013版本发布)
来源:峰值财经 发布时间:2023-04-21 浏览量:次
PyTorch是由Facebook AI研究实验室开发的一个基于Python的深度学习框架,也是业界十分流行的深度学习框架(PyTorch 详情 | 数据学习(DataLearner))。
PyTorch最新的1.12版本已经在前天发布。而其中TorchVision是基于PyTorch框架开发的面向CV解决方案的一个PyThon库,其最主要的特点是包含了很多流行的数据集、模型架构以及预训练模型等。本次也随着PyTorch1.12的发布更新到了v0.13。此次发布包含几个非常好的提升,值得大家关注。
- 一、多权重的支持(Multi-weight support API)
- 二、新的架构和模型变体(New architectures and model variants)
- 2.1、分类模型
- 2.2、对象检测和实例分割
- 2.3、新的预训练权重
- 2.4、模型刷新(Model Refresh)
- 三、新的增强、Layers和损失函数(New Augmentations, Layers and Losses)
一、多权重的支持(Multi-weight support API)
TorchVision有一个新的向后兼容的API,用于建立支持多权重的模型。新的API允许在同一个模型变体上加载不同的预训练权重,跟踪重要的元数据,如分类标签,并包括使用模型所需的预处理转换。
目前,TorchVision提供了预训练的模型,这些模型可以作为转移学习的起点,也可以在计算机视觉应用中原样使用。但是上述方法有一些局限性。
- 无法支持多个预训练的权重。由于预训练的变量是布尔值,我们只能提供一组权重。当我们大幅提高现有模型的准确性,并希望将这些改进提供给社区时,这就造成了严重的限制。这也阻止了我们在不同的数据集上提供同一模型变体的预训练权重。
- 缺少推理/预处理的转换。用户被迫在使用模型之前定义必要的转换。推理变换通常与训练过程和用于估计权重的数据集有关。这些转换中的任何微小差异(如插值、调整大小/裁剪大小等)都会导致精度的大幅降低或模型无法使用。
- 缺少元数据。与权重有关的关键信息对用户来说是不可用的。例如,人们需要从外部来源和文档中寻找诸如类别标签、训练配方、准确度指标等信息。
新的API解决了上述限制,减少了标准任务所需的模板代码量。具体可以参考:https://pytorch.org/blog/introducing-torchvision-new-multi-weight-support-api/
二、新的架构和模型变体(New architectures and model variants)
TorchVision在这个版本中增加了很多新的模型供大家使用。主要包括以下几点。
2.1、分类模型
Swin Transformer和EfficienetNetV2是两个流行的分类模型,经常被用于下游的视觉任务。这个版本包括6个预训练的权重,用于它们的分类变体。下面是如何使用这些新模型的方法。
import torchfrom torchvision.models import *image = torch.rand(1, 3, 224, 224)model = swin_t(weights="DEFAULT").eval()prediction = model(image)image = torch.rand(1, 3, 384, 384)model = efficientnet_v2_s(weights="DEFAULT").eval()prediction = model(image)
除此以外,我们还为现有架构提供了新的变体,如ShuffleNetV2、ResNeXt和MNASNet。在ImageNet-1K上获得的所有新的预训练模型的准确率如下所示。
2.2、对象检测和实例分割
我们为RetinaNet、FasterRCNN和MaskRCNN引入了3个新的模型变体,其中包括一些论文后的架构优化和改进的训练配方。所有模型都可以类似地使用。
import torchfrom torchvision.models.detection import *images = [torch.rand(3, 800, 600)]model = retinanet_resnet50_fpn_v2(weights="DEFAULT")# model = fasterrcnn_resnet50_fpn_v2(weights="DEFAULT")# model = maskrcnn_resnet50_fpn_v2(weights="DEFAULT")model.eval()prediction = model(images)
2.3、新的预训练权重
ViT和RegNet模型的变体提供了新的预训练的SWAG(来自hashtAGs的监督弱化)权重。其中最大的一个模型在ImageNet-1K上达到了惊人的88.6%的准确率。我们目前提供两个版本的权重。1)在ImageNet-1K上的微调端到端权重(最高精度);2)在ImageNet-1K上的冻结主干权重与线性分类器拟合(非常适合转移学习)。
SWAG的权重是在Attribution-NonCommercial 4.0国际许可证下发布的。我们要感谢Laura Gustafson、Mannat Singh和Aaron Adcock在为TorchVision提供权重方面的工作和支持。
2.4、模型刷新(Model Refresh)
多重支持API的发布使我们能够刷新最受欢迎的模型并提供更准确的权重。我们将每个模型平均提高了~3分。所用的新配方是在ResNet50的基础上学习的。
三、新的增强、Layers和损失函数(New Augmentations, Layers and Losses)
这个版本带来了一堆新的基元,可用于制作SOTA模型。一些亮点包括增加了AugMix数据增强方法、DropBlock层、cIoU/dIoU损失等。我们要感谢Aditya Oke、Abhijit Deo、Yassine Alouini和Hu Ye对项目的贡献,并帮助我们保持TorchVision的相关性和新鲜感。