[深入浅出pytorch]最后一章

PyTorch生态

torchvision

torchvision包含了在计算机视觉中常常用到的数据集,模型和图像处理的方式,我们经常会用到torchvision来调用预训练模型,加载数据集,对图片进行数据增强的操作。

具体来说,torchvision包括了以下这几部分(*表示经常会使用到)

torchvision.datasets*

torchvision.datasets主要包含了一些我们在计算机视觉中常见的数据集,torchvision==0.10.0中包括了UCF101数据集,这里是官方文档

orchvision.datasets.UCF101(root: str, 
annotation_path: str, 
frames_per_clip: int, 
step_between_clips: int = 1, 
frame_rate: Optional[int] = None, 
fold: int = 1, 
train: bool = True, 
transform: Optional[Callable] = None, 
_precomputed_metadata: Optional[Dict[str, Any]] = None, 
num_workers: int = 1, 
_video_width: int = 0, 
_video_height: int = 0, 
_video_min_dimension: int = 0, 
_audio_samples: int = 0)

其中root为根目录,annotation_path是划分的文件的路径,frames_per_clip是每个样本含有的帧数,step_between_clips是隔几帧取一帧

这些操作使用VideoClips对象来完成

torchvision.transforms*

transforms主要是对图片类型的数据进行一些预处理的操作,如归一化、大小缩放、数据增强等,具体操作可以参考这个这里

torchvision.models

PyTorch官方提供了一些预训练好的模型,具体来说,涉及到视频的模型还可以在Video Model ZooPySlowFast中看看

目前视频分类模型有三个:ResNet 3D 18, ResNet MC 18, ResNet (2+1) D,他们均是在Kinetics-400数据集上进行训练的,准确率都不太高的亚子(Kinetics-400 acc@1-54%; acc@5-76%)

torchvision.io

torchvision.io提供了视频、图片和文件的 IO 操作的功能,它们包括读取、写入、编解码处理操作,但是在使用的过程中,我们要注意以下几点:

  1. 不同版本之间,torchvision.io有着较大变化,使用时,需要查看当前版本是否有想要的方法
  2. 除了read_video()等方法,torchvision.io为我们提供了一个细粒度的视频API torchvision.io.VideoReader() ,它具有更高的效率并且更加接近底层处理。但是需要先安装ffmpeg然后从源码重新编译torchvision才能使用这些方法
  3. 在使用Video相关API时,最好提前安装好PyAV这个库
torchvision.ops

orchvision.ops 为我们提供了许多计算机视觉的特定操作,包括但不仅限于NMS,RoIAlign(MASK R-CNN中应用的一种方法),RoIPool(Fast R-CNN中用到的一种方法),更多的函数介绍点击这里

torchvision.utils

torchvision.utils 为我们提供了一些可视化的方法,可以帮助我们将若干张图片拼接在一起、可视化检测和分割的效果。具体方法可以点击这里进行查看

PyTorchVideo

有关视频的深度学习模型仍然有着许多缺点:

  1. 计算资源耗费更多,并且没有高质量的model zoo,不能像图片一样进行迁移学习和论文复现
  2. 数据集处理较麻烦,但没有一个很好的视频处理工具
  3. 随着多模态越来越流行,亟需一个工具来处理其他模态

为了解决这些问题,Meta推出了PyTorchVideo深度学习库,这是一个专注于视频理解工作的深度学习库,提供了加速视频理解研究所需的可重用、模块化和高效的API,支持不同的深度学习视频组件,如视频模型、视频数据集和视频特定转换,最重要的是,PytorchVideo也提供了model zoo,使得人们可以使用各种先进的预训练视频模型及其评判基准。

PyTorchVideo中的组件

亮点如下:

  1. 基于PyTorch
  2. PyTorchVideo的model zoo调用与PyTorch Hub做了整合,大大简化模型调用
  3. 支持UCF101等主流数据集和相应的数据预处理,支持randaug, augmix等数据增强trick
  4. 提供许多模块方便用户调用修改,在PyTorchVideo中具体来说包括data, transforms, layer, model, accelerator等模块,方便用户进行调用和读取
  5. 现在对多模态的支持包括了visual和audio
  6. 支持针对移动端模型的部署优化
使用

使用pip install pytorchvideo来安装,但是要注意:

Model zoo和benchmark

PyTorchVideo提供了三种使用Model zoo的方法, 并且给每一种都配备了tutorial

  1. TorchHub,这些模型都已经在TorchHub存在。我们可以根据实际情况来选择需不需要使用预训练模型。除此之外,官方也给出了TorchHub使用的 tutorial
  2. PySlowFast,使用 PySlowFast workflow 去训练或测试PyTorchVideo models/datasets
  3. PyTorch Lightning建立一个工作流进行处理,点击查看官方 tutorial

总的来说,PyTorchVideo的使用与torchvision的使用方法类似,具体的我们可以通过查看官方文档和一些例程来了解使用方法

问题:

  1. PyTorchVideo中没有基于UCF101训练的数据集,只有Kinetics 400等
  2. PyTorchVideo可以导入UCF101进行训练,目前的想法是把之前的视频分类模型弄懂,然后想办法加到ART攻击框架里去
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值