• PyTorch的生态和模型部署


    PyTorch的生态和模型部署

    1. PyTorch生态

    前几章,我们学习了PyTorch的基本使用、能够定义和修改自己的模型、常用的训练技巧和PyTorch的可视化。

    PyTorch的强大,跟PyTorch的活跃的开源社区离不开关系,开源社区围绕PyTorch所生产的一些列工具包和程序,这些优秀的工具包极大地方便了PyTorch在特定领域的使用。比如:

    • TorchVision、TorchVideo:用于图片和视频处理
    • torchtext:用于自然语言处理
    • PyTorch Geometric:图卷积网络

    接下来,会介绍PyTorch针对某个领域(图像、视频、文本等)的其中某一具代表性的工具包进行详细介绍,主要包括工具包的作者、所在机构、数据预处理工具、数据扩增、常用模型结构的预定义、预训练模型权重、常用损失函数、常用评测指标、封装好的训练&测试模块及可视化工具。

    1.1 torchvision

    1.1.1 torchvision简介

    " The torchvision package consists of popular datasets, model architectures, and common image transformations for computer vision. "

    其包括如下库:

    • torchvision.datasets:包含在计算机视觉中的常见数据集
    • torchvision.models:具体的预训练模型查看链接,可分为ClassificationSemantic SegmentationObject Detection、instance Segmentation and Keypoint DetectionVideo Classification
    • torchvision.transforms:针对图片进行一些数据预处理,如放大和缩小、水平或垂直翻转等,其相关操作参考链接,其实战可参考链接
    • torchvision.io:提供了视频、图片和文件的IO操作的功能,包括读取、写入、编解码处理操作。
      • 注:不同版本之间的torchvision.io有较大变化
      • 除了read_video()等方法,torchvision.io提供了一个细粒度的视频API torchvision.VideoReader(),需要安装ffmpeg然后源码重新编译torchvision
      • 使用Video相关API,最好按照PyAV库
    • torchvision.ops:提供了计算机视觉的特定操作,包括但不限于NMS、RolAlign、RolPool,可以参考这里
    • torchvision.utils:提供了一些可视化的方法,如将若干图片拼接、可视化检测和分割等效果,具体参考链接

    1.2 PyTorchVideo

    随着传播媒介和视频平台的发展,视频逐渐成伪新一代的主流媒体,使得视频相关的深度学习模型越来越受关注,但是针对视频的深度学习模型有许多缺点:

    • 计算资源耗费更多,没有高质量的model zoo
    • 数据集处理麻烦,没有很好的视频处理工具
    • 随着多模态的流行,亟需一个工具处理其他模态
    • 模型的部署优化问题

    PyTorchVideo因此而生,提供了加速视频理解研究所需的可重用、模块化和高效的组件,它支持不同的深度学习视频组件,如视频模型、视频数据集和视频特定转换。其组件如下图:

    在这里插入图片描述

    对应的官方链接

    1.2.1 PyTorch的主要部件和亮点

    PyTorchVideo提供了model zoo,使得可以使用各种先进的预训练模型及其评判基准,其亮点如下:

    • 基于PyTorch:使用PyTorch构建,使得PyTorch生态系统组件的使用变得简单
    • Model Zoo:提供了包含I3D、R(2+1)D、SlowFast、X3D、MViT等SOTA模型的高质量model zoo,并且其model zoo与PyTorch Hub做了整合
    • 数据预处理和常见数据:支持Kinetics-400, Something-Something V2, Charades, Ava (v2.2), Epic Kitchen, HMDB51, UCF101, Domsev等主流数据集和相应的数据预处理,同时还支持randaug, augmix等数据增强trick。
    • 模块化设计:提供许多模块方便用户调用修改,在PyTorchVideo中具体来说包括data, transforms, layer, model, accelerator等模块,方便用户进行调用和读取。
    • 支持多模态:对多模态的支持包括了visual和audio,未来会支持更多模态,为多模态模型的发展提供支持。
    • 移动端部署优化:支持针对移动端模型的部署优化(使用前述的PyTorchVideo/accelerator模块),模型经过PyTorchVideo优化了最高达7倍的提速,并实现了第一个能实时跑在手机端的X3D模型(实验中可以实时跑在2018年的三星Galaxy S8上,具体请见
  • 相关阅读:
    顺序表的快慢指针应用:leetcode26、27、88、大数加法989(交换数组)
    Java8 Stream流的合并
    Java中的关键字super
    2022到2023的基于java的毕业设计课题参考
    shell之file命令
    无涯教程-JavaScript - ISODD函数
    element ui框架(第一个element ui程序)
    Go 程序太大了,能要个延迟初始化不?
    《Python魔法大冒险》007 被困的精灵:数据类型的解救
    mysql创建函数实现递归查下级
  • 原文地址:https://blog.csdn.net/weixin_47802917/article/details/127045591