目录

模型和预训练权重

The torchvision.models 子包包含针对不同任务的模型定义,包括:图像分类、像素级语义分割、目标检测、实例分割、人体关键点检测、视频分类和光流。

注意

向后兼容性保证了加载序列化的 state_dict 到使用旧版本 PyTorch 创建的模型。 相反,加载整个保存的模型或序列化的 ScriptModules(使用旧版本的 PyTorch 序列化) 可能无法保留历史行为。请参阅以下 文档

分类

模型子包包含以下图像分类模型架构的定义:

你可以通过调用其构造函数来构建一个具有随机权重的模型:

import torchvision.models as models
resnet18 = models.resnet18()
alexnet = models.alexnet()
vgg16 = models.vgg16()
squeezenet = models.squeezenet1_0()
densenet = models.densenet161()
inception = models.inception_v3()
googlenet = models.googlenet()
shufflenet = models.shufflenet_v2_x1_0()
mobilenet_v2 = models.mobilenet_v2()
mobilenet_v3_large = models.mobilenet_v3_large()
mobilenet_v3_small = models.mobilenet_v3_small()
resnext50_32x4d = models.resnext50_32x4d()
wide_resnet50_2 = models.wide_resnet50_2()
mnasnet = models.mnasnet1_0()
efficientnet_b0 = models.efficientnet_b0()
efficientnet_b1 = models.efficientnet_b1()
efficientnet_b2 = models.efficientnet_b2()
efficientnet_b3 = models.efficientnet_b3()
efficientnet_b4 = models.efficientnet_b4()
efficientnet_b5 = models.efficientnet_b5()
efficientnet_b6 = models.efficientnet_b6()
efficientnet_b7 = models.efficientnet_b7()
regnet_y_400mf = models.regnet_y_400mf()
regnet_y_800mf = models.regnet_y_800mf()
regnet_y_1_6gf = models.regnet_y_1_6gf()
regnet_y_3_2gf = models.regnet_y_3_2gf()
regnet_y_8gf = models.regnet_y_8gf()
regnet_y_16gf = models.regnet_y_16gf()
regnet_y_32gf = models.regnet_y_32gf()
regnet_y_128gf = models.regnet_y_128gf()
regnet_x_400mf = models.regnet_x_400mf()
regnet_x_800mf = models.regnet_x_800mf()
regnet_x_1_6gf = models.regnet_x_1_6gf()
regnet_x_3_2gf = models.regnet_x_3_2gf()
regnet_x_8gf = models.regnet_x_8gf()
regnet_x_16gf = models.regnet_x_16gf()
regnet_x_32gf = models.regnet_x_32gf()
vit_b_16 = models.vit_b_16()
vit_b_32 = models.vit_b_32()
vit_l_16 = models.vit_l_16()
vit_l_32 = models.vit_l_32()
convnext_tiny = models.convnext_tiny()
convnext_small = models.convnext_small()
convnext_base = models.convnext_base()
convnext_large = models.convnext_large()

我们提供预训练模型,使用PyTorch torch.utils.model_zoo。 这些可以通过传递pretrained=True来构建:

import torchvision.models as models
resnet18 = models.resnet18(pretrained=True)
alexnet = models.alexnet(pretrained=True)
squeezenet = models.squeezenet1_0(pretrained=True)
vgg16 = models.vgg16(pretrained=True)
densenet = models.densenet161(pretrained=True)
inception = models.inception_v3(pretrained=True)
googlenet = models.googlenet(pretrained=True)
shufflenet = models.shufflenet_v2_x1_0(pretrained=True)
mobilenet_v2 = models.mobilenet_v2(pretrained=True)
mobilenet_v3_large = models.mobilenet_v3_large(pretrained=True)
mobilenet_v3_small = models.mobilenet_v3_small(pretrained=True)
resnext50_32x4d = models.resnext50_32x4d(pretrained=True)
wide_resnet50_2 = models.wide_resnet50_2(pretrained=True)
mnasnet = models.mnasnet1_0(pretrained=True)
efficientnet_b0 = models.efficientnet_b0(pretrained=True)
efficientnet_b1 = models.efficientnet_b1(pretrained=True)
efficientnet_b2 = models.efficientnet_b2(pretrained=True)
efficientnet_b3 = models.efficientnet_b3(pretrained=True)
efficientnet_b4 = models.efficientnet_b4(pretrained=True)
efficientnet_b5 = models.efficientnet_b5(pretrained=True)
efficientnet_b6 = models.efficientnet_b6(pretrained=True)
efficientnet_b7 = models.efficientnet_b7(pretrained=True)
regnet_y_400mf = models.regnet_y_400mf(pretrained=True)
regnet_y_800mf = models.regnet_y_800mf(pretrained=True)
regnet_y_1_6gf = models.regnet_y_1_6gf(pretrained=True)
regnet_y_3_2gf = models.regnet_y_3_2gf(pretrained=True)
regnet_y_8gf = models.regnet_y_8gf(pretrained=True)
regnet_y_16gf = models.regnet_y_16gf(pretrained=True)
regnet_y_32gf = models.regnet_y_32gf(pretrained=True)
regnet_x_400mf = models.regnet_x_400mf(pretrained=True)
regnet_x_800mf = models.regnet_x_800mf(pretrained=True)
regnet_x_1_6gf = models.regnet_x_1_6gf(pretrained=True)
regnet_x_3_2gf = models.regnet_x_3_2gf(pretrained=True)
regnet_x_8gf = models.regnet_x_8gf(pretrained=True)
regnet_x_16gf = models.regnet_x_16gf(pretrainedTrue)
regnet_x_32gf = models.regnet_x_32gf(pretrained=True)
vit_b_16 = models.vit_b_16(pretrained=True)
vit_b_32 = models.vit_b_32(pretrained=True)
vit_l_16 = models.vit_l_16(pretrained=True)
vit_l_32 = models.vit_l_32(pretrained=True)
convnext_tiny = models.convnext_tiny(pretrained=True)
convnext_small = models.convnext_small(pretrained=True)
convnext_base = models.convnext_base(pretrained=True)
convnext_large = models.convnext_large(pretrained=True)

实例化一个预训练模型会将其权重下载到缓存目录中。 此目录可以通过TORCH_HOME环境变量进行设置。详情请参见torch.hub.load_state_dict_from_url()

一些模型使用具有不同训练和评估行为的模块,例如批处理归一化。要在这两种模式之间切换,请根据需要使用model.train()model.eval()。有关详细信息,请参阅train()eval()

所有预训练模型都期望输入图像进行相同的归一化处理, 即形状为(3 x H x W)的3通道RGB图像的小批量, 其中H和W至少为224。 图像需要加载到[0, 1]范围内,然后使用mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225]进行归一化。 你可以使用以下转换来进行归一化:

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

一个这样的归一化示例可以在ImageNet示例中找到 这里

获取meanstd值的过程大致相当于:

import torch
from torchvision import datasets, transforms as T

transform = T.Compose([T.Resize(256), T.CenterCrop(224), T.ToTensor()])
dataset = datasets.ImageNet(".", split="train", transform=transform)

means = []
stds = []
for img in subset(dataset):
    means.append(torch.mean(img))
    stds.append(torch.std(img))

mean = torch.mean(torch.tensor(means))
std = torch.mean(torch.tensor(stds))

不幸的是,所使用的具体 subset 已经丢失。有关更多信息,请参见 此讨论这些实验

EfficientNet模型的大小取决于变体。有关确切的输入大小,请点击此处

ImageNet 单crop 错误率

模型

Acc@1

Acc@5

AlexNet

56.522

79.066

VGG-11

69.020

88.628

VGG-13

69.928

89.246

VGG-16

71.592

90.382

VGG-19

72.376

90.876

带批归一化的 VGG-11

70.370

89.810

带批归一化的 VGG-13

71.586

90.374

带批归一化的 VGG-16

73.360

91.516

带批归一化的 VGG-19

74.218

91.842

ResNet-18

69.758

89.078

ResNet-34

73.314

91.420

ResNet-50

76.130

92.862

ResNet-101

77.374

93.546

ResNet-152

78.312

94.046

SqueezeNet 1.0模型

58.092

80.420

SqueezeNet 1.1版本

58.178

80.624

Densenet-121

74.434

91.972

Densenet-169

75.600

92.806

Densenet-201

76.896

93.370

Densenet-161

77.138

93.560

Inception V3模型

77.294

93.450

GoogleNet

69.778

89.530

ShuffleNet V2 x1.0

69.362

88.316

ShuffleNet V2 x0.5

60.552

81.746

MobileNet V2

71.878

90.286

MobileNet V3 大型版

74.042

91.340

MobileNet V3 小型版

67.668

87.402

ResNeXt-50-32x4d

77.618

93.698

ResNeXt-101-32x8d

79.312

94.526

宽残差网络50-2

78.468

94.086

宽残差网络-101-2

78.848

94.284

MNASNet 1.0

73.456

91.510

MNASNet 0.5

67.734

87.490

EfficientNet-B0

77.692

93.532

EfficientNet-B1

78.642

94.186

EfficientNet-B2

80.608

95.310

EfficientNet-B3

82.008

96.054

EfficientNet-B4

83.384

96.594

EfficientNet-B5

83.444

96.628

EfficientNet-B6

84.008

96.916

EfficientNet-B7

84.122

96.908

regnet_x_400mf

72.834

90.950

regnet_x_800mf

75.212

92.348

regnet_x_1_6gf

77.040

93.440

regnet_x_3_2gf

78.364

93.992

regnet_x_8gf

79.344

94.686

regnet_x_16gf

80.058

94.944

regnet_x_32gf

80.622

95.248

regnet_y_400mf

74.046

91.716

regnet_y_800mf

76.420

93.136

regnet_y_1_6gf

77.950

93.966

regnet_y_3_2gf

78.948

94.576

regnet_y_8gf

80.032

95.048

regnet_y_16gf

80.424

95.240

regnet_y_32gf

80.878

95.340

vit_b_16

81.072

95.318

vit_b_32

75.912

92.466

vit_l_16

79.662

94.638

vit_l_32

76.972

93.070

convnext_tiny

82.520

96.146

convnext_small

83.616

96.650

convnext_base

84.062

96.870

convnext_large

84.414

96.976

Alexnet

alexnet([预训练, 进度])

AlexNet模型架构来自“一个奇怪的技巧…”论文。

VGG

vgg11([预训练, 进度])

VGG 11层模型(配置“A”)来自“非常深的卷积网络用于大规模图像识别”

vgg11_bn([pretrained, progress])

VGG 11层模型(配置“A”)带有批量归一化 “非常深的卷积网络用于大规模图像识别”

vgg13([预训练, 进度])

VGG 13层模型(配置“B”)“用于大规模图像识别的非常深的卷积网络”

vgg13_bn([pretrained, progress])

VGG 13层模型(配置“B”)带有批量归一化 “非常深的卷积网络用于大规模图像识别”

vgg16([预训练, 进度])

VGG 16层模型(配置“D”)“用于大规模图像识别的非常深的卷积网络”

vgg16_bn([pretrained, progress])

VGG 16层模型(配置“D”)带批量归一化 “非常深的卷积网络用于大规模图像识别”

vgg19([预训练, 进度])

VGG 19层模型(配置“E”)“用于大规模图像识别的非常深的卷积网络”

vgg19_bn([pretrained, progress])

VGG 19层模型(配置‘E’)与批量归一化 “非常深的卷积网络用于大规模图像识别”

ResNet

resnet18([预训练, 进度])

ResNet-18 模型来自 “Deep Residual Learning for Image Recognition”

resnet34([预训练, 进度])

ResNet-34 模型来自 “Deep Residual Learning for Image Recognition”

resnet50([预训练, 进度])

ResNet-50模型来自“深度残差学习用于图像识别”

resnet101([预训练, 进度])

ResNet-101 模型来自 “Deep Residual Learning for Image Recognition”

resnet152([预训练, 进度])

ResNet-152 模型来自 “Deep Residual Learning for Image Recognition”

SqueezeNet

squeezenet1_0([pretrained, progress])

SqueezeNet模型架构来自“SqueezeNet: 与AlexNet相当的准确性,但参数减少50倍且模型大小<0.5MB”论文。

squeezenet1_1([pretrained, progress])

SqueezeNet 1.1 模型来自 官方 SqueezeNet 仓库

DenseNet

densenet121([预训练, 进度])

Densenet-121模型来自“密集连接的卷积网络”

densenet169([预训练, 进度])

Densenet-169模型来自“密集连接的卷积网络”

densenet161([预训练, 进度])

Densenet-161模型来自“密集连接的卷积网络”

densenet201([预训练, 进度])

Densenet-201模型来自“密集连接的卷积网络”

Inception v3

inception_v3([pretrained, progress])

Inception v3 模型架构来自 “重新思考计算机视觉中的 Inception 架构”

GoogLeNet

googlenet([预训练, 进度])

GoogLeNet (Inception v1) 模型架构来自 “通过卷积网络深入研究”

ShuffleNet v2

shufflenet_v2_x0_5([pretrained, progress])

构建具有0.5x输出通道的ShuffleNetV2,如在“ShuffleNet V2: 实用指南用于高效的CNN架构设计”中所述。

shufflenet_v2_x1_0([pretrained, progress])

构建了一个具有1.0x输出通道的ShuffleNetV2,如“ShuffleNet V2:高效CNN架构设计的实际指南”中所述。

shufflenet_v2_x1_5([pretrained, progress])

构建了一个具有1.5倍输出通道的ShuffleNetV2,如“ShuffleNet V2:高效CNN架构设计的实际指南”中所述。

shufflenet_v2_x2_0([pretrained, progress])

构建具有2.0x输出通道的ShuffleNetV2,如在“ShuffleNet V2: 实践指南用于高效的CNN架构设计”中所述。

MobileNet v2

mobilenet_v2([pretrained, progress])

构建了一个基于“MobileNetV2: Inverted Residuals and Linear Bottlenecks”的MobileNetV2架构。

MobileNet v3

mobilenet_v3_large([pretrained, progress])

构建一个大型的MobileNetV3架构,来自“搜索MobileNetV3”

mobilenet_v3_small([pretrained, progress])

构建了一个小型的MobileNetV3架构,来自“搜索MobileNetV3”

ResNext

resnext50_32x4d([pretrained, progress])

ResNeXt-50 32x4d 模型来自 “聚合残差变换用于深度神经网络”

resnext101_32x8d([pretrained, progress])

ResNeXt-101 32x8d 模型来自 “聚合残差变换用于深度神经网络”

宽残差网络

wide_resnet50_2([pretrained, progress])

Wide ResNet-50-2 模型来自 “Wide Residual Networks”

wide_resnet101_2([pretrained, progress])

Wide ResNet-101-2 模型来自 “Wide Residual Networks”

MNASNet

mnasnet0_5([pretrained, progress])

MNASNet,深度乘数为0.5,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”

mnasnet0_75([pretrained, progress])

MNASNet,深度乘数为0.75,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”

mnasnet1_0([pretrained, progress])

MNASNet,深度乘数为1.0,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”

mnasnet1_3([pretrained, progress])

MNASNet,深度乘数为1.3,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”

EfficientNet

efficientnet_b0([pretrained, progress])

构建了EfficientNet B0架构,来自“EfficientNet: 重新思考卷积神经网络的模型缩放”

efficientnet_b1([pretrained, progress])

构建了来自“EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks”的EfficientNet B1架构。

efficientnet_b2([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B2 架构。

efficientnet_b3([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B3 架构。

efficientnet_b4([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B4 架构。

efficientnet_b5([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B5 架构。

efficientnet_b6([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B6 架构。

efficientnet_b7([pretrained, progress])

构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B7 架构。

RegNet

regnet_y_400mf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_400MF架构。

regnet_y_800mf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_800MF架构。

regnet_y_1_6gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_1.6GF架构。

regnet_y_3_2gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_3.2GF架构。

regnet_y_8gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_8GF架构。

regnet_y_16gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_16GF架构。

regnet_y_32gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_32GF架构。

regnet_y_128gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetY_128GF架构。

regnet_x_400mf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_400MF架构。

regnet_x_800mf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_800MF架构。

regnet_x_1_6gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_1.6GF架构。

regnet_x_3_2gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_3.2GF架构。

regnet_x_8gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_8GF架构。

regnet_x_16gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_16GF架构。

regnet_x_32gf([pretrained, progress])

构建了一个来自“设计网络设计空间”的RegNetX_32GF架构。

VisionTransformer

vit_b_16([pretrained, progress])

“一张图片值16x16个词:大规模图像识别中的Transformer” 构建vit_b_16架构。

vit_b_32([pretrained, progress])

“一张图片值16x16个词:大规模图像识别中的Transformer”构建vit_b_32架构。

vit_l_16([pretrained, progress])

“一张图片值16x16个词:大规模图像识别中的Transformer”构建vit_l_16架构。

vit_l_32([pretrained, progress])

“一张图片值16x16个词:大规模图像识别中的Transformer” 构建vit_l_32架构。

ConvNeXt

convnext_tiny(*[, pretrained, progress])

ConvNeXt Tiny模型架构来自“2020年代的ConvNet”论文。

convnext_small(*[, pretrained, progress])

ConvNeXt Small模型架构来自“2020年代的ConvNet”论文。

convnext_base(*[, pretrained, progress])

ConvNeXt 基础模型架构来自 “2020年代的ConvNet” 论文。

convnext_large(*[, pretrained, progress])

ConvNeXt Large 模型架构来自 “2020年代的ConvNet” 论文。

量化模型

以下架构为 INT8 精度量化模型提供支持。你可以通过调用其构造函数来获取具有随机权重的模型:

import torchvision.models as models
googlenet = models.quantization.googlenet()
inception_v3 = models.quantization.inception_v3()
mobilenet_v2 = models.quantization.mobilenet_v2()
mobilenet_v3_large = models.quantization.mobilenet_v3_large()
resnet18 = models.quantization.resnet18()
resnet50 = models.quantization.resnet50()
resnext101_32x8d = models.quantization.resnext101_32x8d()
shufflenet_v2_x0_5 = models.quantization.shufflenet_v2_x0_5()
shufflenet_v2_x1_0 = models.quantization.shufflenet_v2_x1_0()
shufflenet_v2_x1_5 = models.quantization.shufflenet_v2_x1_5()
shufflenet_v2_x2_0 = models.quantization.shufflenet_v2_x2_0()

获取预训练的量化模型只需几行代码:

import torchvision.models as models
model = models.quantization.mobilenet_v2(pretrained=True, quantize=True)
model.eval()
# run the model with quantized inputs and weights
out = model(torch.rand(1, 3, 224, 224))

我们为以下模型提供预训练的量化权重:

模型

Acc@1

Acc@5

MobileNet V2

71.658

90.150

MobileNet V3 大型版

73.004

90.858

ShuffleNet V2 x1.0

68.360

87.582

ShuffleNet V2 x0.5

57.972

79.780

ResNet 18模型

69.494

88.882

ResNet 50模型

75.920

92.814

ResNeXt 101 32x8d

78.986

94.480

Inception V3模型

77.176

93.354

GoogleNet

69.826

89.404

语义分割

模型子包包含以下语义分割模型架构的定义:

与图像分类模型一样,所有预训练模型都期望输入图像以相同的方式进行归一化。 图像需要加载到[0, 1]的范围内,然后使用 mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225]进行归一化。 它们是在最小尺寸为520的调整大小的图像上进行训练的。

有关如何绘制此类模型的掩码,请参阅 语义分割模型

预训练模型是在COCO train2017数据集的一个子集上进行训练的,该子集包含了Pascal VOC数据集中存在的20个类别。您可以在references/segmentation/coco_utils.py中查看子集是如何选择的。预训练模型输出的类别如下所示:

['__background__', 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus',
 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike',
 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']

在COCO val2017上评估的预训练模型的准确率如下所示:

网络

平均交并比

全局像素级精度

FCN ResNet50模型

60.5

91.4

FCN ResNet101模型

63.7

91.9

DeepLabV3 ResNet50

66.4

92.4

DeepLabV3 ResNet101

67.4

92.4

DeepLabV3 移动网V3-Large

60.3

91.2

LR-ASPP 移动网 V3 大型版

57.9

91.2

全卷积网络

torchvision.models.segmentation.fcn_resnet50([…])

构建一个具有 ResNet-50 主干网络的全卷积网络模型。

torchvision.models.segmentation.fcn_resnet101([…])

构建一个具有 ResNet-101 主干网络的全卷积网络模型。

DeepLabV3

torchvision.models.segmentation.deeplabv3_resnet50([…])

构建一个具有 ResNet-50 主干网络的 DeepLabV3 模型。

torchvision.models.segmentation.deeplabv3_resnet101([…])

构建一个具有 ResNet-101 主干网络的 DeepLabV3 模型。

torchvision.models.segmentation.deeplabv3_mobilenet_v3_large([…])

构建一个具有 MobileNetV3-Large 主干网络的 DeepLabV3 模型。

LR-ASPP

torchvision.models.segmentation.lraspp_mobilenet_v3_large([…])

构建一个具有 MobileNetV3-Large 主干网络的 Lite R-ASPP 模型。

目标检测、实例分割和人体关键点检测

模型子包包含以下检测模型架构的定义:

用于检测、实例分割和关键点检测的预训练模型由 torchvision 中的分类模型初始化。

模型期望一个 Tensor[C, H, W] 的列表,范围在 0-1 之间。 模型内部会调整图像大小,但行为因模型而异。 有关更多信息,请检查模型的构造函数。此类模型的输出格式如 实例分割模型 所示。

对于目标检测和实例分割,预训练模型返回以下类别的预测:

COCO_INSTANCE_CATEGORY_NAMES = [
    '__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
    'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign',
    'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
    'elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A', 'N/A',
    'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
    'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket',
    'bottle', 'N/A', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl',
    'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
    'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'N/A', 'dining table',
    'N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
    'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'N/A', 'book',
    'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush'
]

以下是根据COCO train2017数据集训练并在COCO val2017上评估的模型准确率的总结。

网络

边界框 AP0.5

待翻译文本似乎不完整或有误,请提供完整的待翻译文本以便准确翻译。

关键点 AP3

更快的R-CNN ResNet-50 FPN

37.0

更快的R-CNN MobileNetV3-Large FPN

32.8

更快的 R-CNN 移动网 V3-Large 320 FPN

22.8

FCOS ResNet-50 FPN

39.2

RetinaNet ResNet-50 FPN

36.4

SSD300 VGG16模型

25.1

SSDlite320 MobileNetV3 大型版本

21.3

带掩码的R-CNN基于ResNet-50 FPN模型

37.9

34.6

对于人体关键点检测,预训练模型的准确率如下所示

网络

边界框 AP0.5

待翻译文本似乎不完整或有误,请提供完整的待翻译文本以便准确翻译。

关键点 AP3

关键点 R-CNN 带 ResNet-50 和 FPN

54.6

65.0

对于人体关键点检测,预训练模型以以下顺序返回关键点:

COCO_PERSON_KEYPOINT_NAMES = [
    'nose',
    'left_eye',
    'right_eye',
    'left_ear',
    'right_ear',
    'left_shoulder',
    'right_shoulder',
    'left_elbow',
    'right_elbow',
    'left_wrist',
    'right_wrist',
    'left_hip',
    'right_hip',
    'left_knee',
    'right_knee',
    'left_ankle',
    'right_ankle'
]

运行时特性

目标检测、实例分割和关键点检测模型的实现非常高效。

在下面的表格中,我们使用了8块GPU来报告结果。在训练过程中,对于所有模型,每块GPU的批处理大小为2,除了SSD模型使用4,SSD lite模型使用24。在测试过程中,批处理大小为1。

在测试时,我们报告模型评估和后处理(包括在图像中粘贴掩码)的时间,但不包括计算精确率-召回率的时间。

网络

训练时间(秒/迭代)

测试时间(秒/次)

内存(GB)

更快的R-CNN ResNet-50 FPN

0.2288

0.0590

5.2

更快的R-CNN MobileNetV3-Large FPN

0.1020

0.0415

1.0

更快的 R-CNN 移动网 V3-Large 320 FPN

0.0978

0.0376

0.6

FCOS ResNet-50 FPN

0.1450

0.0539

3.3

RetinaNet ResNet-50 FPN

0.2514

0.0939

4.1

SSD300 VGG16模型

0.2093

0.0744

1.5

SSDlite320 MobileNetV3 大型版本

0.1773

0.0906

1.5

带掩码的R-CNN基于ResNet-50 FPN模型

0.2728

0.0903

5.4

关键点 R-CNN 带 ResNet-50 和 FPN

0.3789

0.1242

6.8

Faster R-CNN

torchvision.models.detection.fasterrcnn_resnet50_fpn([…])

构建一个具有 ResNet-50-FPN 主干网络的 Faster R-CNN 模型。

torchvision.models.detection.fasterrcnn_mobilenet_v3_large_fpn([…])

构建一个高分辨率的Faster R-CNN模型,采用MobileNetV3-Large FPN主干网络。

torchvision.models.detection.fasterrcnn_mobilenet_v3_large_320_fpn([…])

构建一个低分辨率的Faster R-CNN模型,采用经过移动设备用例调优的MobileNetV3-Large FPN主干网络。

FCOS

torchvision.models.detection.fcos_resnet50_fpn([…])

构建一个带有 ResNet-50-FPN 主干网络的 FCOS 模型。

RetinaNet

torchvision.models.detection.retinanet_resnet50_fpn([…])

构建一个具有 ResNet-50-FPN 主干网络的 RetinaNet 模型。

SSD

torchvision.models.detection.ssd300_vgg16([…])

构建一个输入大小为 300x300 并基于 VGG16 主干网络的 SSD 模型。

SSDlite

torchvision.models.detection.ssdlite320_mobilenet_v3_large([…])

构建一个输入大小为320x320且具有MobileNetV3 Large主干的SSDlite模型,如“搜索MobileNetV3”“MobileNetV2:倒置残差和线性瓶颈”中所述。

Mask R-CNN

torchvision.models.detection.maskrcnn_resnet50_fpn([…])

构建一个带有 ResNet-50-FPN 主干网络的 Mask R-CNN 模型。

关键点R-CNN

torchvision.models.detection.keypointrcnn_resnet50_fpn([…])

构建一个具有 ResNet-50-FPN 主干网络的 Keypoint R-CNN 模型。

视频分类

我们提供了在Kinetics-400上预训练的动作识别模型。 它们都是使用references/video_classification中提供的脚本进行训练的。

所有预训练模型都期望输入图像以相同的方式进行归一化处理,即每批包含3个通道的RGB视频,形状为(3 x T x H x W),其中H和W预期为112,T是一个剪辑中的视频帧数。图像必须加载到[0, 1]范围内,然后使用mean = [0.43216, 0.394666, 0.37645]std = [0.22803, 0.22145, 0.216989]进行归一化。

注意

归一化参数与图像分类的不同对应于来自Kinetics-400的均值和标准差。

注意

目前,归一化代码可以在references/video_classification/transforms.py中找到, 参见其中的Normalize函数。请注意,它与标准图像归一化不同, 因为它假设视频是4维的。

Kinetics 数据集 1-crop 准确率(剪辑长度为 16 帧,16x112x112)

网络

剪裁准确率@1

剪裁准确率 top-5

三维残差网络 18 层

52.75

75.45

ResNet 18 多卡版本

53.90

76.29

(2+1)D ResNet

57.50

78.81

三维残差网络 ResNet

torchvision.models.video.r3d_18([…])

构建具有18层的Resnet3D模型,参见https://arxiv.org/abs/1711.11248

ResNet 混合卷积

torchvision.models.video.mc3_18([…])

18层混合卷积网络的构造函数,详见https://arxiv.org/abs/1711.11248

ResNet (2+1)D

torchvision.models.video.r2plus1d_18([…])

构造18层深R(2+1)D网络,详见https://arxiv.org/abs/1711.11248

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源