torchvision包含了在计算机视觉中常常用到的数据集,模型和图像处理的方式,我们经常会用到torchvision来调用预训练模型,加载数据集,对图片进行数据增强的操作。
具体来说,torchvision包括了以下这几部分(*表示经常会使用到)
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
对象来完成
transforms主要是对图片类型的数据进行一些预处理的操作,如归一化、大小缩放、数据增强等,具体操作可以参考这个和这里
PyTorch官方提供了一些预训练好的模型,具体来说,涉及到视频的模型还可以在Video Model Zoo和PySlowFast中看看
目前视频分类模型有三个:ResNet 3D 18, ResNet MC 18, ResNet (2+1) D,他们均是在Kinetics-400数据集上进行训练的,准确率都不太高的亚子(Kinetics-400 acc@1-54%; acc@5-76%)
torchvision.io
提供了视频、图片和文件的 IO 操作的功能,它们包括读取、写入、编解码处理操作,但是在使用的过程中,我们要注意以下几点:
torchvision.io
有着较大变化,使用时,需要查看当前版本是否有想要的方法read_video()
等方法,torchvision.io为我们提供了一个细粒度的视频API torchvision.io.VideoReader()
,它具有更高的效率并且更加接近底层处理。但是需要先安装ffmpeg然后从源码重新编译torchvision才能使用这些方法orchvision.ops 为我们提供了许多计算机视觉的特定操作,包括但不仅限于NMS,RoIAlign(MASK R-CNN中应用的一种方法),RoIPool(Fast R-CNN中用到的一种方法),更多的函数介绍点击这里
torchvision.utils 为我们提供了一些可视化的方法,可以帮助我们将若干张图片拼接在一起、可视化检测和分割的效果。具体方法可以点击这里进行查看
有关视频的深度学习模型仍然有着许多缺点:
model zoo
,不能像图片一样进行迁移学习和论文复现为了解决这些问题,Meta推出了PyTorchVideo
深度学习库,这是一个专注于视频理解工作的深度学习库,提供了加速视频理解研究所需的可重用、模块化和高效的API,支持不同的深度学习视频组件,如视频模型、视频数据集和视频特定转换,最重要的是,PytorchVideo也提供了model zoo,使得人们可以使用各种先进的预训练视频模型及其评判基准。
亮点如下:
使用pip install pytorchvideo
来安装,但是要注意:
PyTorchVideo提供了三种使用Model zoo的方法, 并且给每一种都配备了tutorial
总的来说,PyTorchVideo的使用与torchvision的使用方法类似,具体的我们可以通过查看官方文档和一些例程来了解使用方法
问题: