今天,我们宣布了对多个 PyTorch 库的更新,同时发布了 PyTorch 1.8 版本。这些更新包括领域库的新版本,如 TorchVision、TorchText 和 TorchAudio,以及 TorchCSPRNG 的新版本。这些发布包括许多新功能和改进,并且与 PyTorch 1.8 版本一起,为 PyTorch 社区提供了广泛的新更新,以便构建和利用。
一些亮点包括:
- TorchVision - 增加了 PyTorch Mobile 的支持,包括 Detectron2Go(D2Go)、训练期间的数据自动增强、即时类型转换和 AMP 自动转换。
- TorchAudio - 对 I/O 进行了重大改进,包括默认使用 sox_io 后端和文件对象支持。增加了 Kaldi 音高特征,并支持基于 CMake 的构建,使 TorchAudio 更好地支持无 Python 环境。
- TorchText - 更新了数据集加载 API,使其与标准的 PyTorch 数据加载工具兼容。
- PyTorch 的 TorchCSPRNG - 现已稳定支持用于 PyTorch 的加密伪随机数生成器,新增了 AES128 ECB/CTR API 和 Windows 上的 CUDA 支持。
请注意,从 PyTorch 1.6 版本开始,功能被分为稳定版、测试版和原型版。原型功能不包括在二进制发行版中,而是可以通过从源代码构建、使用夜间构建或通过编译器标志来获取。您可以在此处查看详细公告。
TorchVision 0.9.0
[稳定版] TorchVision Mobile:算子、Android 二进制文件和教程
我们非常高兴地宣布,PyTorch 领域库的首个设备端支持和二进制文件。我们观察到,在研究和工业界对设备端视觉支持的需求都非常旺盛,这可以提供低延迟、隐私友好和资源高效的移动视觉体验。您可以遵循这个新的教程来构建自己的 Android 目标检测应用程序,使用 TorchVision 操作符、D2Go 或您自己的自定义操作符和模型。

[稳定版] 新增分类、目标检测和语义分割的移动模型
我们已添加对 MobileNetV3 架构的支持,并提供了分类、目标检测和分割的预训练权重。使用这些模型非常简单,只需像导入和加载任何 torchvision
模型一样导入和加载它们即可:
import torch
import torchvision
# Classification
x = torch.rand(1, 3, 224, 224)
m_classifier = torchvision.models.mobilenet_v3_large(pretrained=True)
m_classifier.eval()
predictions = m_classifier(x)
# Quantized Classification
x = torch.rand(1, 3, 224, 224)
m_classifier = torchvision.models.quantization.mobilenet_v3_large(pretrained=True)
m_classifier.eval()
predictions = m_classifier(x)
# Object Detection: Highly Accurate High Resolution Mobile Model
x = [torch.rand(3, 300, 400), torch.rand(3, 500, 400)]
m_detector = torchvision.models.detection.fasterrcnn_mobilenet_v3_large_fpn(pretrained=True)
m_detector.eval()
predictions = m_detector(x)
# Semantic Segmentation: Highly Accurate Mobile Model
x = torch.rand(1, 3, 520, 520)
m_segmenter = torchvision.models.segmentation.deeplabv3_mobilenet_v3_large(pretrained=True)
m_segmenter.eval()
predictions = m_segmenter(x)
这些模型在资源效率、速度和准确性方面与 TorchVision 现有模型具有高度竞争力。请参阅我们的发布说明以获取详细的性能指标。
[稳定] 自动增强
自动增强是一种常见的数据增强技术,可以提高场景分类模型的准确率。尽管数据增强策略与它们的训练数据集直接相关,但经验研究表明,将 ImageNet 策略应用于其他数据集时,可以带来显著的改进。我们实现了在以下数据集上学习的 3 种策略:ImageNet、CIFA10 和 SVHN。这些策略可以单独使用,也可以与现有的转换混合使用:
from torchvision import transforms
t = transforms.AutoAugment()
transformed = t(image)
transform=transforms.Compose([
transforms.Resize(256),
transforms.AutoAugment(),
transforms.ToTensor()])
TorchVision 的其他新特性
- [稳定] io.image 包中的所有读取和解码方法现在支持:
- PNG 解码过程中的调色板、灰度 Alpha 和 RGB Alpha 图像类型
- 读取过程中动态将图像从一种类型转换为另一种类型
- [稳定] WiderFace 数据集
- [稳定] 通过在 RPN 上引入分数阈值来提高 FasterRCNN 的速度和准确性
- [稳定] DeformConv2D 的调制输入
- [稳定] 可将音频写入视频文件选项
- [稳定] 绘制边界框的实用工具
- [测试版] 所有操作符支持自动类型转换,请在此处找到完整的 TorchVision 发布说明。
TorchAudio 0.8.0
I/O 优化
我们继续从上一个版本的工作,以改进 TorchAudio 的 I/O 支持,包括:
- [稳定] 将默认后端更改为“sox_io”(适用于 Linux/macOS),并更新“soundfile”后端接口以与“sox_io”接口保持一致。虽然仍然可以访问旧后端和接口,但强烈建议不要使用它们。
- [稳定] 在“sox_io”后端、“soundfile”后端和 sox_effects 中支持文件-like 对象。
- [稳定] 新增选项以更改保存时的格式、编码和 bits_per_sample。
- [稳定] 在“sox_io”后端添加了对 GSM、HTK、AMB、AMR-NB 和 AMR-WB 格式的支持。
- [测试版] 新增
functional.apply_codec
函数,可以通过在内存中应用“sox_io”后端支持的音频编解码器来降低音频数据。以下是本版本中引入的一些新功能示例:
# Load audio over HTTP
with requests.get(URL, stream=True) as response:
waveform, sample_rate = torchaudio.load(response.raw)
# Saving to Bytes buffer as 32-bit floating-point PCM
buffer_ = io.BytesIO()
torchaudio.save(
buffer_, waveform, sample_rate,
format="wav", encoding="PCM_S", bits_per_sample=16)
# Apply effects while loading audio from S3
client = boto3.client('s3')
response = client.get_object(Bucket=S3_BUCKET, Key=S3_KEY)
waveform, sample_rate = torchaudio.sox_effects.apply_effect_file(
response['Body'],
[["lowpass", "-1", "300"], ["rate", "8000"]])
# Apply GSM codec to Tensor
encoded = torchaudio.functional.apply_codec(
waveform, sample_rate, format="gsm")
查看全新的音频预处理教程,使用 TorchAudio 进行音频处理。
[稳定版] 切换到基于 CMake 的构建
在 TorchAudio 的上一版本中,它使用 CMake 构建第三方依赖项。从 0.8.0 版本开始,TorchAudio 使用 CMake 构建其 C++扩展。这将打开将 TorchAudio 集成到非 Python 环境(如 C++应用程序和移动设备)的大门。我们将继续努力添加示例应用程序和移动集成。
[测试版] 改进和新音频转换
我们在本版本中增加了两个广受欢迎的操作符:频谱质心变换和 Kaldi 音高特征提取(详细内容请见“针对自动语音识别调优的音高提取算法”)。我们还向梅尔变换公开了归一化方法,并向频谱图添加了额外的 STFT 参数。我们希望我们的社区继续提出类似的核心音频处理功能等特性请求!
社区贡献
在本版本中,我们比以往任何时候都收到了来自开源社区的更多贡献,包括几个全新的功能。我们衷心感谢社区。请查看新添加的 CONTRIBUTING.md 文件,了解如何贡献代码,并记住报告错误和请求功能同样有价值。我们将继续发布范围明确的任务项作为标记为“help-wanted”和“contributions-welcome”的问题,供任何希望贡献代码的人使用,并且我们很乐意指导新贡献者通过贡献过程。
在此处找到完整的 TorchAudio 发布说明。
TorchText 0.9.0
[Beta] 数据集 API 更新
在本次版本中,我们更新了 TorchText 的数据集 API,使其与 PyTorch 数据工具(如 DataLoader)兼容,并弃用了 TorchText 的自定义数据抽象(如 Field
)。更新后的数据集是简单的字符串迭代器。有关从旧抽象迁移到使用现代 PyTorch 数据工具的指南,请参阅我们的迁移指南。
以下文本数据集作为本工作的部分进行了更新。有关如何使用这些数据集的示例,请参阅我们的端到端文本分类教程。
- 语言建模:WikiText2,WikiText103,PennTreebank,EnWik9
- 文本分类:AG_NEWS,SogouNews,DBpedia,YelpReviewPolarity,YelpReviewFull,YahooAnswers,AmazonReviewPolarity,AmazonReviewFull,IMDB
- 序列标注:UDPOS,CoNLL2000Chunking
- 翻译:IWSLT2016,IWSLT2017
- 问题回答:SQuAD1,SQuAD2
在此处查找完整的 TorchText 发布说明。
[稳定版] TorchCSPRNG 0.2.0
我们于 2020 年 8 月发布了 TorchCSPRNG,这是一个 PyTorch 的 C++/CUDA 扩展,为 PyTorch 提供加密安全的伪随机数生成器。今天,我们发布了 0.2.0 版本,并将该库指定为稳定版。此版本包括用于加密/解密的新 API,支持 AES128 ECB/CTR,以及 CUDA 11 和 Windows CUDA 支持。
在这里找到完整的 TorchCSPRNG 发布说明。
感谢阅读,如果您对这次更新感到兴奋并想参与 PyTorch 的未来,我们鼓励您加入讨论论坛和提交 GitHub 问题。
喝彩!
PyTorch 团队