模型和预训练权重¶
The torchvision.models 子包包含针对不同任务的模型定义,包括:图像分类、像素级语义分割、目标检测、实例分割、人体关键点检测、视频分类和光流。
注意
向后兼容性保证了加载序列化的
state_dict 到使用旧版本 PyTorch 创建的模型。
相反,加载整个保存的模型或序列化的
ScriptModules(使用旧版本的 PyTorch 序列化)
可能无法保留历史行为。请参阅以下
文档
分类¶
模型子包包含以下图像分类模型架构的定义:
Inception v3
ShuffleNet v2
你可以通过调用其构造函数来构建一个具有随机权重的模型:
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示例中找到 这里
获取mean和std值的过程大致相当于:
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模型架构来自“一个奇怪的技巧…”论文。 |
VGG¶
|
VGG 11层模型(配置“A”)来自“非常深的卷积网络用于大规模图像识别”。 |
|
VGG 11层模型(配置“A”)带有批量归一化 “非常深的卷积网络用于大规模图像识别”。 |
|
VGG 13层模型(配置“B”)“用于大规模图像识别的非常深的卷积网络”。 |
|
VGG 13层模型(配置“B”)带有批量归一化 “非常深的卷积网络用于大规模图像识别”。 |
|
VGG 16层模型(配置“D”)“用于大规模图像识别的非常深的卷积网络”。 |
|
VGG 16层模型(配置“D”)带批量归一化 “非常深的卷积网络用于大规模图像识别”。 |
|
VGG 19层模型(配置“E”)“用于大规模图像识别的非常深的卷积网络”。 |
|
VGG 19层模型(配置‘E’)与批量归一化 “非常深的卷积网络用于大规模图像识别”。 |
ResNet¶
|
ResNet-18 模型来自 “Deep Residual Learning for Image Recognition”。 |
|
ResNet-34 模型来自 “Deep Residual Learning for Image Recognition”。 |
|
ResNet-50模型来自“深度残差学习用于图像识别”。 |
|
ResNet-101 模型来自 “Deep Residual Learning for Image Recognition”。 |
|
ResNet-152 模型来自 “Deep Residual Learning for Image Recognition”。 |
SqueezeNet¶
|
SqueezeNet模型架构来自“SqueezeNet: 与AlexNet相当的准确性,但参数减少50倍且模型大小<0.5MB”论文。 |
|
SqueezeNet 1.1 模型来自 官方 SqueezeNet 仓库。 |
DenseNet¶
|
Densenet-121模型来自“密集连接的卷积网络”。 |
|
Densenet-169模型来自“密集连接的卷积网络”。 |
|
Densenet-161模型来自“密集连接的卷积网络”。 |
|
Densenet-201模型来自“密集连接的卷积网络”。 |
Inception v3¶
|
Inception v3 模型架构来自 “重新思考计算机视觉中的 Inception 架构”。 |
GoogLeNet¶
|
GoogLeNet (Inception v1) 模型架构来自 “通过卷积网络深入研究”。 |
ShuffleNet v2¶
|
构建具有0.5x输出通道的ShuffleNetV2,如在“ShuffleNet V2: 实用指南用于高效的CNN架构设计”中所述。 |
|
构建了一个具有1.0x输出通道的ShuffleNetV2,如“ShuffleNet V2:高效CNN架构设计的实际指南”中所述。 |
|
构建了一个具有1.5倍输出通道的ShuffleNetV2,如“ShuffleNet V2:高效CNN架构设计的实际指南”中所述。 |
|
构建具有2.0x输出通道的ShuffleNetV2,如在“ShuffleNet V2: 实践指南用于高效的CNN架构设计”中所述。 |
MobileNet v2¶
|
构建了一个基于“MobileNetV2: Inverted Residuals and Linear Bottlenecks”的MobileNetV2架构。 |
MobileNet v3¶
|
构建一个大型的MobileNetV3架构,来自“搜索MobileNetV3”。 |
|
构建了一个小型的MobileNetV3架构,来自“搜索MobileNetV3”。 |
ResNext¶
|
ResNeXt-50 32x4d 模型来自 “聚合残差变换用于深度神经网络”。 |
|
ResNeXt-101 32x8d 模型来自 “聚合残差变换用于深度神经网络”。 |
宽残差网络¶
|
Wide ResNet-50-2 模型来自 “Wide Residual Networks”。 |
|
Wide ResNet-101-2 模型来自 “Wide Residual Networks”。 |
MNASNet¶
|
MNASNet,深度乘数为0.5,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”。 |
|
MNASNet,深度乘数为0.75,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”。 |
|
MNASNet,深度乘数为1.0,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”。 |
|
MNASNet,深度乘数为1.3,来自“MnasNet: Platform-Aware Neural Architecture Search for Mobile”。 |
EfficientNet¶
|
构建了EfficientNet B0架构,来自“EfficientNet: 重新思考卷积神经网络的模型缩放”。 |
|
构建了来自“EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks”的EfficientNet B1架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B2 架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B3 架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B4 架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B5 架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B6 架构。 |
|
构建了来自“EfficientNet: 重新思考卷积神经网络的模型缩放”的 EfficientNet B7 架构。 |
RegNet¶
|
构建了一个来自“设计网络设计空间”的RegNetY_400MF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_800MF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_1.6GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_3.2GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_8GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_16GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_32GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetY_128GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_400MF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_800MF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_1.6GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_3.2GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_8GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_16GF架构。 |
|
构建了一个来自“设计网络设计空间”的RegNetX_32GF架构。 |
VisionTransformer¶
|
从 “一张图片值16x16个词:大规模图像识别中的Transformer” 构建vit_b_16架构。 |
|
从“一张图片值16x16个词:大规模图像识别中的Transformer”构建vit_b_32架构。 |
|
从“一张图片值16x16个词:大规模图像识别中的Transformer”构建vit_l_16架构。 |
|
从 “一张图片值16x16个词:大规模图像识别中的Transformer” 构建vit_l_32架构。 |
ConvNeXt¶
|
ConvNeXt Tiny模型架构来自“2020年代的ConvNet”论文。 |
|
ConvNeXt Small模型架构来自“2020年代的ConvNet”论文。 |
|
ConvNeXt 基础模型架构来自 “2020年代的ConvNet” 论文。 |
|
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 |
全卷积网络¶
构建一个具有 ResNet-50 主干网络的全卷积网络模型。 |
|
构建一个具有 ResNet-101 主干网络的全卷积网络模型。 |
DeepLabV3¶
构建一个具有 ResNet-50 主干网络的 DeepLabV3 模型。 |
|
构建一个具有 ResNet-101 主干网络的 DeepLabV3 模型。 |
|
|
构建一个具有 MobileNetV3-Large 主干网络的 DeepLabV3 模型。 |
LR-ASPP¶
|
构建一个具有 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¶
构建一个具有 ResNet-50-FPN 主干网络的 Faster R-CNN 模型。 |
|
|
构建一个高分辨率的Faster R-CNN模型,采用MobileNetV3-Large FPN主干网络。 |
|
构建一个低分辨率的Faster R-CNN模型,采用经过移动设备用例调优的MobileNetV3-Large FPN主干网络。 |
FCOS¶
构建一个带有 ResNet-50-FPN 主干网络的 FCOS 模型。 |
RetinaNet¶
构建一个具有 ResNet-50-FPN 主干网络的 RetinaNet 模型。 |
SSD¶
构建一个输入大小为 300x300 并基于 VGG16 主干网络的 SSD 模型。 |
SSDlite¶
|
构建一个输入大小为320x320且具有MobileNetV3 Large主干的SSDlite模型,如“搜索MobileNetV3”和“MobileNetV2:倒置残差和线性瓶颈”中所述。 |
Mask R-CNN¶
构建一个带有 ResNet-50-FPN 主干网络的 Mask R-CNN 模型。 |
关键点R-CNN¶
构建一个具有 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 ¶
构建具有18层的Resnet3D模型,参见https://arxiv.org/abs/1711.11248 |
ResNet 混合卷积¶
18层混合卷积网络的构造函数,详见https://arxiv.org/abs/1711.11248 |
ResNet (2+1)D¶
构造18层深R(2+1)D网络,详见https://arxiv.org/abs/1711.11248 |