torchvision中的transforms

来源:互联网 发布:淘宝怎么上传模板 编辑:程序博客网 时间:2024/05/16 23:43

torchvision.transforms提供了很多数据增强的方法,如下:
- Compose:统一的接口,用来方便组合各种不同的数据增强方法
- ToTensor
- ToPILImage
- Normalize
- Resize
- Scale
- Pad
- CenterCrop
- FiveCrop
- TenCrop
- RandomCrop
- RandomHorizontalFlip
- RandomVerticalFlip
- RandomRotation
- RandomResizedCrop
- RandomSizedCrop
- LinearTransformation
- ColorJitter
- Grayscale
- RandomGrayscale
- Lambda

torchvision使用PIL.Image作为核心数据结构,并没有使用cv2,想必是因为cv2不够pythonic.

一般在代码中,transforms处于的角色是,把dataset的输出值,变成网络直接的输入值,中间的桥梁是由transforms来完成。因为一般dataset主要负责读取各种各样形式的数据,然后在__getitem__里面,调用transformtarget_transform,把原始数据,变成网络的输入数据。遵循unix的每次只做一件事的风格。

所以,transforms需要具备如下特点:
1. 统一使用Compose组合所有的操作,方便使用。
2. 同时提供traintest两种接口(因为像RandomHorizontalFlip这样的方法,在推断的时候,不用使用)。
3. 针对不同的问题,比如classification可能只针对输入图像操作,object detection可能还要对2组坐标点处理,saliency可能需要定义各种groundtruth的形式,提供不同的接口操作。
4. 所有的代码,均要测试。
5. 每一类操作的接口,都必须是相同的,如果不同,有两种可能:
- 它是其他类型的操作。
- 它应该在dataset中被实现。

一个合理的写代码的流程是:
1. 针对具体数据集形式,写dataset类,留好transforms和target_transforms接口。
2. 设计transforms和target_transforms分别要做的事情。
3. 在augmentation.py中写各个操作的接口。
4. gen-test生成测试脚本,写测试脚本。
5. 实现augmentation.py中写各个操作,并通过测试。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 维生素b6的作用及功能 ai 800a在线800在线播放 中文字幕a在线播放瑶 维生素a a3纸尺寸 9游 s9八强抽签 ig晋级s9 s9全球总决赛 重阳节手抄报 重阳节 98年小可爱毛还没长齐 97韩网剧手机板 97韩网剧网 亚洲逼院 91助手 启辰t90 90后假装学习日常 足球即时比分 90分钟 90vs足球即时比分 坐88路车回家 80手机电机影网 tube8 奔腾 红米 v iphone6s存在故障 69er体验区试看 6一9岁幻女bb 9920y国产69 69 沃尔沃s60 美国60分钟床上 库里 5g套餐或于10月开售 曝联通5g套餐资费 5g基站建设时间表 智联 顺风车