PyTorch又一个利好消息!torchvision 0.3发布了!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Francisco Massa

编译:ronghuaiyang

导读

torchvision 0.3中提供了更多的分割,检测模型,更多的数据集,还有更多新特性,喜欢用PyTorch的小伙伴们一定不能错过!


torchvision这样的PyTorch库提供了对公共数据集和模型的方便访问,可以用来快速创建最先进的基线。此外,它们还提供通用的抽象类,以减少用户重复编写的样板代码的工作。torchvision 0.3版本带来了几个新特性,包括用于语义分割、对象检测、实例分割和人关键点检测的模型,以及特定于计算机视觉的自定义c++ / CUDA操作。

640?wx_fmt=png

新特性包括:

参考训练/评估脚本:torchvision现在在references/文件夹下提供了用于训练和评估以下任务的脚本:分类、语义分割、物体检测、实例分割和人关键点检测。这些日志记录了如何训练特定的模型,并提供了基线训练和评估脚本来快速引导研究。

torchvision操作符: torchvision现在包含自定义c++ / CUDA操作符。这些操作符是特定于计算机视觉的,可以更容易地构建目标检测模型。这些操作符目前不支持PyTorch脚本模式,但是计划在下一个版本中支持它。所支持的一些操作包括:

  • roi_pool (以及模型版本的RoIPool)

  • roi_align (以及模型版本的RoIAlign)

  • nms,包围框的非极大值抑制

  • box_iou,计算两组包围框的交并比

  • box_area,计算一组包围框的面积

下面是使用torchvision操作符的几个例子:

import torch	
import torchvision	
# create 10 random boxes	
boxes = torch.rand(10, 4) * 100	
# they need to be in [x0, y0, x1, y1] format	
boxes[:, 2:] += boxes[:, :2]	
# create a random image	
image = torch.rand(1, 3, 200, 200)	
# extract regions in `image` defined in `boxes`, rescaling	
# them to have a size of 3x3	
pooled_regions = torchvision.ops.roi_align(image, [boxes], output_size=(3, 3))	
# check the size	
print(pooled_regions.shape)	
# torch.Size([10, 3, 3, 3])	
# or compute the intersection over union between	
# all pairs of boxes	
print(torchvision.ops.box_iou(boxes, boxes).shape)	
# torch.Size([10, 10])

新的模型和数据集: torchvision现在增加了对物体检测、实例分割和人关键点检测模型的支持。此外,还添加了几个流行的数据集。注意:该API目前处于试验阶段,可能会在torchvision的未来版本中进行更改。新模型包括:

分割模型

0.3版还包含了对图像进行密集像素预测的模型。它添加了FCN和DeepLabV3分割模型,使用了一个ResNet50和ResNet101骨干网络。ResNet101骨干网络的预训练权重是可用的,并已在COCO train2017的子集上进行了训练,其中包含与Pascal VOC相同的20个类别。

经过预训练的模型给出了以下关于COCO val2017子集的结果,其中包含与Pascal VOC相同的20个类别:

Networkmean IoUglobal pixelwise acc
FCN ResNet10163.791.9
DeepLabV3 ResNet10167.492.4

检测模型

Networkbox APmask APkeypoint AP
Faster R-CNN ResNet-50 FPN trained on COCO37.0

Mask R-CNN ResNet-50 FPN trained on COCO37.934.6
Keypoint R-CNN ResNet-50 FPN trained on COCO54.6
65.0

特别是在训练过程中,目标检测、实例分割和关键点检测模型的实现速度较快。

在下表中,我们使用8个V100 gpu,CUDA 10.0和CUDNN 7.4报告结果。在训练中,我们使用每个GPU的批大小为2,在测试中使用批大小为1。

对于测试时间,我们报告了模型评估和后处理的时间(包括图像中的掩模粘贴),但没有报告计算精度-召回率的时间。

Networktrain time (s / it)test time (s / it)memory (GB)
Faster R-CNN ResNet-50 FPN0.22880.05905.2
Mask R-CNN ResNet-50 FPN0.27280.09035.4
Keypoint R-CNN ResNet-50 FPN0.37890.12426.8

你可以用几行代码加载和使用预训练的检测和分割模型

import torchvision	
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)	
# set it to evaluation mode, as the model behaves differently	
# during training and during evaluation	
model.eval()	
image = PIL.Image.open('/path/to/an/image.jpg')	
image_tensor = torchvision.transforms.functional.to_tensor(image)	
# pass a list of (potentially different sized) tensors	
# to the model, in 0-1 range. The model will take care of	
# batching them together and normalizing	
output = model([image_tensor])	
# output is a list of dict, containing the postprocessed predictions

分类模型

增加了以下分类模型:

  • GoogLeNet (Inception v1)

  • MobileNet V2

  • ShuffleNet v2

  • ResNeXt-50 32x4d and ResNeXt-101 32x8d

数据集

添加了下面的数据集:

  • Caltech101,,Caltech256, and CelebA

  • ImageNet Dataset(在ImageFolder上做了提升,提供了类别字符串)

  • Semantic Boundaries Dataset

  • VisionDataset作为所有数据集的基类

此外,我们还添加了更多的图像转换、一般性的改进和bug修复,以及改进的文档。

请查看完整的发布说明以及谷歌Colab入门教程,该教程描述了如何在自定义数据集上微调自己的实例分割模型。

640?wx_fmt=png— END—

英文原文:https://pytorch.org/blog/torchvision03/

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值