TorchVision Transforms API 大升级,支持目标检测、实例/语义分割及视频类任务

Pytorch Mask R-CNN 实例分割 Mask R-CNN通过在 Faster-RCNN 的基础上添加一个分支网络,在实现目标检测的同时,把目标像素分割出来 阅读详情

内容导读:TorchVision Transforms API 扩展升级,现已支持目标检测、实例及语义分割以及视频类任务。新 API 尚处于测试阶段,开发者可以试用体验。

本文首发自微信公众号:PyTorch 开发者社区

在这里插入图片描述

TorchVision 现已针对 Transforms API 进行了扩展, 具体如下:

  • 除用于图像分类外,现在还可以用其进行目标检测、实例及语义分割以及视频分类等任务;

  • 支持从 TorchVision 直接导入 SoTA 数据增强,如 MixUp、 CutMix、Large Scale Jitter 以及 SimpleCopyPaste。

  • 支持使用全新的 functional transforms 转换视频、Bounding box 以及分割掩码 (Segmentation Mask)。

Transforms 当前的局限性

稳定版 TorchVision Transforms API,也也就是我们常说的 Transforms V1,只支持单个图像,因此,只适用于分类任务:

from torchvision import transforms
trans = transforms.Compose([
   transforms.ColorJitter(contrast=0.5),
   transforms.RandomRotation(30),
   transforms.CenterCrop(480),
])
imgs = trans(imgs)

上述方法不支持需要使用 Label 的目标检测、分割或分类 Transforms, 如 MixUp 及 cutMix。这使分类以外的计算机视觉任务都不能用 Transforms API 执行必要的扩展。同时,这也加大了用 TorchVision 原语训练高精度模型的难度。

为了克服这个局限性,TorchVision 在其 reference script 中提供了自定义实现, 用于演示所有任务中的增强是如何执行的。

尽管这种做法使得开发者能够训练出高精度的分类、目标检测及分割模型,但做法比较粗糙,TorchVision 二进制文件中还是不能导入 Transforms。

全新的 Transforms API

Transforms V2 API 支持视频、bounding box、label 以及分割掩码, 这意味着它为许多计算机视觉任务提供了本地支持。新的解决方案是一种更为直接的替代方案:

from torchvision.prototype import transforms
# Exactly the same interface as V1:
trans = transforms.Compose([
    transforms.ColorJitter(contrast=0.5),
    transforms.RandomRotation(30),
    transforms.CenterCrop(480),
])
imgs, bboxes, labels = trans(imgs, bboxes, labels)

全新的 Transform Class 无需强制执行特定的顺序或结构,就可以接收任意数量的输入:

# Already supported:
trans(imgs)  # Image Classification
trans(videos)  # Video Tasks
trans(imgs_or_videos, labels)  # MixUp/CutMix-style Transforms
trans(imgs, bboxes, labels)  # Object Detection
trans(imgs, bboxes, masks, labels)  # Instance Segmentation
trans(imgs, masks)  # Semantic Segmentation
trans({"image": imgs, "box": bboxes, "tag": labels})  # Arbitrary Structure
# Future support:
trans(imgs, bboxes, labels, keypoints)  # Keypoint Detection
trans(stereo_images, disparities, masks)  # Depth Perception
trans(image1, image2, optical_flows, masks)  # Optical Flow

functional API 已经更新,支持所有输入必要的 signal processing kernel,如 resizing, cropping, affine transforms, padding 等:

from torchvision.prototype.transforms import functional as F
# High-level dispatcher, accepts any supported input type, fully BC
F.resize(inpt, resize=[224, 224])
# Image tensor kernel
F.resize_image_tensor(img_tensor, resize=[224, 224], antialias=True)
# PIL image kernel
F.resize_image_pil(img_pil, resize=[224, 224], interpolation=BILINEAR)
# Video kernel
F.resize_video(video, resize=[224, 224], antialias=True)
# Mask kernel
F.resize_mask(mask, resize=[224, 224])
# Bounding box kernel
F.resize_bounding_box(bbox, resize=[224, 224], spatial_size=[256, 256])

API 使用 Tensor subclassing 来包装输入,附加有用的元数据,并 dispatch 到正确的内核。 利用 TorchData Data Pipe 的 Datasets V2 相关工作完成后,就不再需要手动包装输入了。目前,用户可以通过以下方式手动包装输入:

from torchvision.prototype import features
imgs = features.Image(images, color_space=ColorSpace.RGB)
vids = features.Video(videos, color_space=ColorSpace.RGB)
masks = features.Mask(target["masks"])
bboxes = features.BoundingBox(target["boxes"], format=BoundingBoxFormat.XYXY, spatial_size=imgs.spatial_size)
labels = features.Label(target["labels"], categories=["dog", "cat"])

除新 API 之外,PyTorch 官方还为 SoTA 研究中用到的一些数据增强提供了重要实现,如 MixUp、 CutMix、Large Scale Jitter、 SimpleCopyPaste、AutoAugmentation 方法以及一些新的 Geometric、Colour 和 Type Conversion transforms。

该 API 继续支持 single image 或 batched input image 的 PIL 和 Tensor 后端,并在 functional API 上保留了 JIT-scriptability。这使得图像映射得以从 uint8 延迟到 float, 带来了性能的进一步提升。

它目前可以在 TorchVision 的原型区域 (prototype area) 中使用,并且支持从 nightly build 版本中导入。经验证,新 API 与先前实现的准确性一致。

当前的局限性

functional API (kernel) 仍然保持 JIT-scriptable 及 fully-BC,Transform Class 提供了相同的接口,却无法使用脚本。

这是因为 Transform Class 使用的是张量子类 (Tensor Subclassing),且接收任意数量的输入,这是 JIT 所不支持的。该局限将在后续版本中不断优化。

一个端到端示

以下是一个新 API 示例,它可以同时使用 PIL 图像和张量。

测试图片:

在这里插入图片描述
代码示例:

import PIL
from torchvision import io, utils
from torchvision.prototype import features, transforms as T
from torchvision.prototype.transforms import functional as F
# Defining and wrapping input to appropriate Tensor Subclasses
path = "COCO_val2014_000000418825.jpg"
img = features.Image(io.read_image(path), color_space=features.ColorSpace.RGB)
# img = PIL.Image.open(path)
bboxes = features.BoundingBox(
    [[2, 0, 206, 253], [396, 92, 479, 241], [328, 253, 417, 332],
     [148, 68, 256, 182], [93, 158, 170, 260], [432, 0, 438, 26],
     [422, 0, 480, 25], [419, 39, 424, 52], [448, 37, 456, 62],
     [435, 43, 437, 50], [461, 36, 469, 63], [461, 75, 469, 94],
     [469, 36, 480, 64], [440, 37, 446, 56], [398, 233, 480, 304],
     [452, 39, 463, 63], [424, 38, 429, 50]],
    format=features.BoundingBoxFormat.XYXY,
    spatial_size=F.get_spatial_size(img),
)
labels = features.Label([59, 58, 50, 64, 76, 74, 74, 74, 74, 74, 74, 74, 74, 74, 50, 74, 74])
# Defining and applying Transforms V2
trans = T.Compose(
    [
        T.ColorJitter(contrast=0.5),
        T.RandomRotation(30),
        T.CenterCrop(480),
    ]
)
img, bboxes, labels = trans(img, bboxes, labels)
# Visualizing results
viz = utils.draw_bounding_boxes(F.to_image_tensor(img), boxes=bboxes)
F.to_pil_image(viz).show()

—— 完 ——

计算机视觉实验全流程:从环境搭建到图像分类与目标检测实战 计算机视觉作为人工智能的核心分支,旨在赋予机器“看懂”图像与视频的能力。其基本原理是通过算法处理像素数据,提取边缘、角点等特征,进而识别、定位与理解视觉内容。这一技术的核心价值在于将非结构化的视觉信息转化为结构化数据,为自动化决策提供支持。在工程实践中,以卷积神经网络为代表的深度学习模型,通过局部连接、权重共享和池化等机制,实现了对图像特征的层次化提取与高效学习。结合PyTorch、OpenCV等成熟工具链,开发者能够快速搭建实验环境,构建从数据预处理、模型训练到评估部署的完整流程。典型的应用场景广泛,例如 阅读详情

相关推荐

计算机视觉十大经典算法实战:从OpenCV到YOLO的完整学习路径

计算机视觉作为人工智能的核心领域,其基础在于图像处理与特征提取算法。这些算法通过卷积、滤波等操作,将原始像素数据转化为高层语义信息,为后续的目标检测、图像分割等高级任务奠定基础。在工程实践中,OpenCV作为经典算法库,提供了从灰度化、滤波到特征提取(如SIFT、ORB)的完整实现,而深度学习框架如PyTorch、TensorFlow则推动了YOLO等现代目标检测模型的发展。这些技术的价值在于能够自动化处理海量图像数据,广泛应用于自动驾驶、医疗影像分析、安防监控等场景。本文以YOLO目标检测和图像分割为例,

weixin_30240349的博客 406

Pytorch更新版本与卸载常用指令

使用conda安装指定版本。使用pip安装指定版本。

厚积而薄发 1万+

PyTorch interpolate函数详解:从原理到实战避坑指南

在深度学习与计算机视觉中,张量尺寸变换是基础且关键的操作,其核心在于插值算法。插值通过数学方法在已知数据点之间估算新值,常见算法包括最近邻、双线性和双三次插值等,它们通过不同的加权平均策略平衡计算效率与输出质量。理解插值原理对于实现高质量的特征图缩放、图像尺寸对齐和多尺度特征融合至关重要,能有效提升模型在语义分割、目标检测等任务中的性能。本文聚焦PyTorch中的`torch.nn.functional.interpolate()`函数,深入解析其**align_corners参数**的几何对齐机制与**插

weixin_33871366的博客 478

Pytorch如何更新版本与卸载

一、更新Pytorch和torchvision 使用pip,conda更新Pytorch和torchvision

wanttifa的博客 5万+

计算机视觉数据标注入门:LabelImg、LabelMe与X-AnyLabeling工具全解析

数据标注是人工智能与机器学习领域的基础性工作,其核心原理是为原始数据(如图像、文本)添加结构化标签,为模型训练提供监督信号。这项技术的价值在于,它是构建高质量数据集、决定模型性能上限的关键环节,广泛应用于自动驾驶、安防监控、医疗影像分析等计算机视觉场景。在实操中,选择合适的标注工具至关重要。本文聚焦于开源工具,深入对比了经典的矩形框标注工具LabelImg、功能全面的瑞士军刀LabelMe,以及集成AI辅助标注能力的下一代工具X-AnyLabeling。通过分析其核心功能、输出格式及适用场景,旨在帮助读者建

weixin_33896726的博客 447

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4732

【PyTorch教程】04-详解torchvision 0.13中的预训练模型加载的更新及报错的解决方法 (2022年最新)

解决UserWarning: The parameter 'pretrained' is deprecated since 0.13 and will be removed in 0.15, please use 'weights' instead. 解决UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15.

Sihang_Xie的博客 2万+

语义分割系列7-Attention Unet(pytorch实现)

本文介绍了AttentionUnet模型和其主要中心思想,并在pytorch框架上构建了Attention Unet模型,构建了Attention gate模块,在数据集Camvid上进行复现。

yumaomi的博客 2万+

【笔记】更新Pytorch和torchvision,以及如何查看当前python版本

最近Pytorch从v0.1.12更新到了v0.2/v0.3,支持了很多方法,如果大家想知道详细内容可以去Pytorch v0.2版本发布--高阶梯度,分布式PyTorch,广播,高级索引,新图层等查看,以及Pytorch v0.3.0版本发布--pytorch性能优化提速,支持ONNX,高阶梯度以及SparseAdam优化器,好的,我们今天主要讲解如何升级Pytorch以及如何卸载Pytorch。 一、更新Pytorch和torchvision 我们主要讲解如何所以pip,conda更新Pyto...

nyist_yangguang的博客 8311

Orange:一个基于 Python 的数据挖掘和机器学习平台

Orange是一个开源的数据挖掘和机器学习平台,采用可视化编程方式,用户可通过拖拽组件构建数据分析工作流。它支持交互式数据探索、多种机器学习算法,并允许Python脚本扩展。Orange特别适合教育和研究,提供直观的界面和丰富的可视化工具。最新版本为3.39.0,支持Windows、macOS和Linux系统。作为GPL许可的免费工具,它既能满足初学者需求,又能通过Python集成实现高级功能。

likuoelie的博客 1435

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 564

Torchvision 0.26:深度学习视觉库全面解析

Torchvision 0.26是PyTorch生态中的核心计算机视觉库,提供六大功能模块:1)数据增强Transforms支持多模态处理;2)Models提供主流视觉架构及预训练权重,采用新版Weights API管理模型版本;3)Datasets集成常见视觉数据集;4)Operators包含高效底层算子;5)IO模块实现高速数据读取;6)Training References提供官方训练脚本。文档特别详解了VGG架构,作为经典CNN代表,其3×3卷积堆叠设计至今仍是重要基准,同时介绍了新版中模型加载方式

2401_88013682的博客 516

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5933

终极指南:pit_s_distilled_224.in1k在计算机视觉任务中的5大应用场景

想要快速部署高效的计算机视觉模型吗?pit_s_distilled_224.in1k作为Pooling-based Vision Transformer(PiT)的蒸馏版本,在ImageNet-1k数据集上训练而成,提供了24.0M参数、2.9 GMACs计算量的轻量级解决方案。这款基于Transformer架构的视觉模型通过token-based蒸馏技术优化,在保持高性能的同时大幅减少了计算开销

gitblog_00428的博客 1004

动态表单设计

自定一表单数据结构。内容展示如有必要行转列。前端根据题目类型自定义组件后端跟俊题目类型用策略模式校验各种类型这样有统计功能的简单动态问卷就可以了展示时可能某些场景需要行转列。大概估摸使用的话有可能kmic_form_data_detail表的记录数比较大,后期再考虑数据或者表迁移或拆分。

zquwei的博客 3457

论文阅读:Universal and Transferable Adversarial Attacks on Aligned Language Models. LLM Attacks

因为“即开即用”的大型语言模型能够生成大量令人反感的内容,近期的工作集中在对这些模型进行对齐,以防止不受欢迎的生成。尽管在规避这些措施方面取得了一些成功——即所谓的针对大型语言模型(LLMs)的“越狱”——这些攻击需要大量的人类智慧,并且在实践中很脆弱。自动对抗性提示生成的尝试也取得了有限的成功。在本文中,我们提出了一种简单有效的攻击方法,可以导致对齐的语言模型生成令人反感的行为。

CSPhD-winston的博客 1418

计算机视觉十大经典算法:从图像处理到目标检测与分割的完整指南

计算机视觉作为人工智能的核心领域,旨在让机器具备理解和分析图像内容的能力。其技术原理主要围绕特征提取、模式识别和深度学习展开,通过算法模型从像素数据中学习语义信息。这一技术的核心价值在于将非结构化的视觉数据转化为可理解、可操作的洞察,极大地提升了自动化水平和决策效率。在应用场景上,计算机视觉已广泛应用于工业质检、自动驾驶、医疗影像分析、安防监控和增强现实等领域。本文聚焦于计算机视觉的经典算法体系,系统梳理了从基础的图像处理与特征提取(如SIFT、HOG),到核心的目标检测(如YOLO系列),再到高级的图像分

weixin_30765505的博客 283

秋招突击——笔试整理——8/25——拼多多笔试整理

继续加油! 转变思维,有简单到复杂,由直观到抽象,这种贪心模拟的题目一直是这样的!

Blackoutdragon的博客 2400

SAM 2:图像与视频分割基础模型技术解析与应用实践

SAM 2(Segment Anything Model 2)是Meta AI发布的新一代视觉分割基础模型,将图像分割能力扩展到视频领域,实现了图像与视频的统一分割框架。该模型基于Transformer架构设计,引入流式内存机制支持实时视频处理,并在全球最大的视频分割数据集SA-V上进行训练,为计算机视觉研究者和开发者提供了强大的分割工具。 ## 技术架构与核心创新 ### 统一的分割架构设计

gitblog_00611的博客 771

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MaxViT-Large TF 224.in1k开发者指南:API参考、参数配置和自定义模型的完整手册

MaxViT-Large TF 224.in1k是一款官方MaxViT图像分类模型,由论文作者在ImageNet-1k数据集上使用TensorFlow训练,并由Ross Wightman移植到PyTorch。它结合了卷积和注意力机制,适用于各种计算机视觉任务,是开发者构建高效图像识别系统的强大工具。 ## 模型核心参数配置详解 🛠️ ### 基础架构参数 `config.json`文件定义了

gitblog_00595的博客 615

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

微信聊天记录导出完整指南:WeChatMsg 十分钟免费教程

换手机前清了缓存,几年的对话说没就没。WeChatMsg 是免费的微信聊天记录导出工具:提取电脑微信本地数据库里的全部对话,导出成 HTML、Word、CSV,全程本地运行,数据不上传。 ## 工具档案 先记住三个关键词:**免费、MIT、数据不出本机**。 | 项目 | 说明 | | --- | --- | | 项目名 | WeChatMsg | | 开源协议 | MIT | | 支持平台

gitblog_00109的博客 829

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深度学习视觉项目实战:从环境搭建到模型部署全流程指南

1. 先搞清楚“深度学习基础”到底要学到什么程度 很多人一上来就想直接跑YOLO、UNet这些模型,结果卡在环境配置、数据准备和代码理解上。这个主题的核心,不是让你从零推导数学公式,而是让你能 独立完成一个视觉项目的完整流程 :从环境搭建、数据准备、模型选择与训练,到结果评估和部署。它适合两类人:一是刚接触AI,想找个靠谱的起点切入的开发者;二是学过一些理论,但没亲手跑通过一个完整项目,对细节感到模糊的学习者。 最关键的价值在于 打通“知道”和“做到”之间的壁垒 。你会发现,很多论文里一笔带过的“我们采用了

368

掌握timm库使用技巧:如何用focalnet_large_fl4.ms_in22k模型快速构建视觉应用

timm库(PyTorch Image Models)是构建计算机视觉应用的强大工具,而focalnet_large_fl4.ms_in22k作为其中的明星模型,凭借23930万参数和105.2 GMACs的计算能力,为图像分类、特征提取等任务提供了高效解决方案。本文将带您快速掌握使用该模型构建视觉应用的核心技巧。 ## 📋 模型核心特性速览 focalnet_large_fl4.ms_in

gitblog_00344的博客 340

全维度解析 AI 开发核心工具:智能编码 / 数据标注 / 模型训练平台

AI技术工业化落地依赖三大核心工具协同运作:智能编码工具(如GitHub Copilot)提升代码生产效率40%-70%,通过自然语言注释生成可运行代码;数据标注工具(如LabelImg/Doccano)为模型训练提供高质量标注数据,数据质量直接决定模型效果;模型训练平台(如Google Colab)提供算力支持,实现从数据到模型的转化。三者形成"代码开发→数据加工→模型构建"的完整闭环,个人开发者可零成本使用开源方案,企业级项目则需私有化部署方案。

zzywxc787的博客 1268

计算机视觉学习笔记:从CNN到YOLO,构建知识体系与实战指南

计算机视觉作为人工智能的核心领域,其基础在于让机器理解和处理图像信息。其核心原理涉及从图像中提取特征并进行识别与理解,深度学习模型,尤其是卷积神经网络(CNN),通过模拟生物视觉机制,实现了特征学习的自动化,极大地推动了该领域的发展。这项技术的价值在于能够高效处理海量视觉数据,广泛应用于自动驾驶、医疗影像分析、安防监控和工业质检等场景。本文以一份系统的学习笔记为载体,深入解析了目标检测等关键任务,并对比了YOLO、Faster R-CNN等主流模型的演进与选型,同时分享了深度学习训练中的调参经验与实战避坑指

weixin_30540691的博客 440

用ACE-Step 1.5生成你的第一首歌:Gradio界面新手入门一步步指南

ACE-Step 1.5 是目前最强的本地音乐生成模型之一,音质超越大多数商业音乐AI,并支持 Mac、AMD、Intel 与 CUDA 设备。本文带你一步步通过它的 Gradio 网页界面完成安装、启动和创作,从零生成你的第一首 AI 歌曲。 ACE-Step 1.5 音乐生成功能与应用架构总览图 ## 一、为什么选择 ACE-Step 1.5? 和普通"一键生成"的在线平台不同,ACE-

gitblog_00428的博客 847
上一篇: 教程详解 | 用 PaddleOCR 进行集装箱箱号检测识别
下一篇: 闭眼推荐,9 个不能错过的机器学习数据集
HyperAI超神经
博客等级 码龄7年 8872粉丝 1753原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值