import torch
model = torch.hub.load('XingangPan/IBN-Net', 'resnet50_ibn_a', pretrained=True)
model.eval()

所有预训练模型都要求输入图像进行相同的归一化处理,即形状为 (3 x H x W) 的 3 通道 RGB 图像 mini-batch,其中 HW 预期至少为 224。图像必须加载到 [0, 1] 的范围,然后使用 mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225] 进行归一化。

以下是一个示例执行过程。

# Download an example image from the pytorch website
import urllib
url, filename = ("https://github.com/pytorch/hub/raw/master/images/dog.jpg", "dog.jpg")
try: urllib.URLopener().retrieve(url, filename)
except: urllib.request.urlretrieve(url, filename)
# sample execution (requires torchvision)
from PIL import Image
from torchvision import transforms
input_image = Image.open(filename)
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]),
])
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model

# move the input and model to GPU for speed if available
if torch.cuda.is_available():
    input_batch = input_batch.to('cuda')
    model.to('cuda')

with torch.no_grad():
    output = model(input_batch)
# Tensor of shape 1000, with confidence scores over ImageNet's 1000 classes
print(output[0])
# The output has unnormalized scores. To get probabilities, you can run a softmax on it.
probabilities = torch.nn.functional.softmax(output[0], dim=0)
print(probabilities)
# Download ImageNet labels
!wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt
# Read the categories
with open("imagenet_classes.txt", "r") as f:
    categories = [s.strip() for s in f.readlines()]
# Show top categories per image
top5_prob, top5_catid = torch.topk(probabilities, 5)
for i in range(top5_prob.size(0)):
    print(categories[top5_catid[i]], top5_prob[i].item())

模型描述

IBN-Net 是一种具有领域/外观不变性的 CNN 模型。受风格迁移工作的启发,IBN-Net 精心将实例归一化和批量归一化统一在一个深度网络中。它提供了一种简单的方法来增加建模和泛化能力,而无需增加模型复杂度。IBN-Net 特别适用于跨领域或行人/车辆重识别任务。

使用预训练模型在 ImageNet 数据集上的对应准确率如下所示。

模型名称 Top-1 准确率 Top-5 准确率
resnet50_ibn_a 77.46 93.68
resnet101_ibn_a 78.61 94.41
resnext101_ibn_a 79.12 94.58
se_resnet101_ibn_a 78.75 94.49

在两个 Re-ID 基准数据集 Market1501 和 DukeMTMC-reID 上的 rank1/mAP 如下所示(来自 michuanhaohao/reid-strong-baseline)。

主干网络 Market1501 DukeMTMC-reID
ResNet50 94.5 (85.9) 86.4 (76.4)
ResNet101 94.5 (87.1) 87.6 (77.6)
SeResNet50 94.4 (86.3) 86.4 (76.5)
SeResNet101 94.6 (87.3) 87.5 (78.0)
SeResNeXt50 94.9 (87.6) 88.0 (78.3)
SeResNeXt101 95.0 (88.0) 88.4 (79.0)
ResNet50-IBN-a 95.0 (88.2) 90.1 (79.1)

参考文献