pytorch11——pytorch生态
Pytorch是一个十分强大的深度学习领域框架,Pytorch的强大并不仅局限于自身的易用性,更在于开源社区围绕Pytorch所产生的一系列工具包(一般是Python package)和程序,这些强大的工具包极大的方便了Pytorch在特定领域的使用。比如对于计算机视觉,有TorchVision、TorchViedo等用于图片和视频处理;对于自然语言处理,有torchtext;对于图卷积网络,有Pytorch Geometric......。这里只是举例,每个领域还有很多优秀的工具包供社区使用。这些工具包共同构成了PyTorch的生态(EcoSystem)。
1.torchvison
PyTorch之所以会在短短的几年时间里发展成为主流的深度学习框架,除了本身框架的优势之外,还在于有良好的生态圈。
1.1torchvision简介
torchvison包含了在计算机视觉中常常用到的数据集,模型和图像处理的方式,而具体的torchvision则包括了下面这几部分,带*****的部分是我们经常会使用到的一些库,所以在下面的部分我们对这些库进行一个简单的介绍:
- torchvision.datasets*
- torchvision.models*
- torchvision.transforms*
- torchvision.io
- torchvision.ops
- torchvision.utils
1.2torchvision.datasets
torchvision.datasets主要包含了一些我们在计算机视觉中常见的数据集,在0.10.0版本的torchvision下,有以下的数据集:
1.3 torchvision.transforms
我们知道在计算机视觉中处理的数据集有很大一部分都是图片类型的,如果获取的数据是格式或者大小不一的图片,则需要进行归一化和大小缩放等操作,这些是常用的数据预处理方法。除此之外,当图片数据有限时,可以进行数据增强来扩充数据集。而torchvision.transforms中就包含了许多这样的操作。之前第四章的Fashion-mnist实战中的数据的处理时我们就用到了torchvision.transformer:
from torchvision import transforms
data_transform = transforms.Compose([
transforms.ToPILImage(), # 这一步取决于后续的数据读取方式,如果使用内置数据集则不需要
transforms.Resize(image_size),
transforms.ToTensor()
])
1.4 torchvision.models
为了提高训练效率,减少不必要的重复劳动,Pytorch官方也提供了一些预训练好的模型供我们使用。现有的预训练好的模型可以分为以下几类:
-
Classfication
在图像分类里面,Pytorch官方提供了以下模型,并在不断增多。
这些模型都是在ImageNet-1k进行预训练好的。 -
Semantic Segmentation
语义分割的预训练模型是在COCO train2017的子集上进行训练的,提供了二十个类别,包括background, aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa,train, tvmonitor。
-
Object Detection,instance Segmentation and Keypoint Detection
物体检测,实例分割和人体关键点检测的模型我们同样是在COCO train2017进行训练的,在下方我们提供了实例分割的类别和人体关键点检测类别:
COCO_INSTANCE_CATEGORY_NAMES = [
'__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus','train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A', 'N/A','handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball','kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket','bottle', 'N/A', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl','banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza','donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'N/A', 'dining table','N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'N/A', 'book','clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']
COCO_PERSON_KEYPOINT_NAMES =['nose','left_eye','right_eye','left_ear','right_ear','left_shoulder','right_shoulder','left_elbow','right_elbow','left_wrist','right_wrist','left_hip','right_hip','left_knee','right_knee','left_ankle','right_ankle']
- video classfication
视频分类模型实在Kinetics-400上进行预训练的。
1.5 torchvision.io
torchvision.io提供了视频、图片、文件的io操作功能,包括读写,编解码等处理操作。
1.6 torchvision.ops
提供了许多计算机视觉的特定操作,避免重复造轮子
1.7 torchvision.utils
提供了一些可视化方法。
总结:
torchvision的出现帮助我们解决了常见的计算机视觉中一些重复且耗时的工作,并在数据集的获取,数据增强,模型预训练等方面大大降低了我们工作难度。
本文来自博客园,作者:TCcjx,转载请注明原文链接:https://www.cnblogs.com/tccjx/articles/16043647.html