版权归属:
更多关注:
1 问题
PyTorch实现image-to-image时,需要对image pair进行相同参数的transform(i.e. sync),torchvision已经实现了多种针对single image的transform,但是在使用时input image与target image的transform不一致,上网查阅没有发现好的方法,因此只能自己实现。查看了TorchVision的Transform代码,自己也是可以仿照实现。
2 Random Scale and Crop原理

将原始图片放大scale=r倍,为了满足crop后的图片中间的蓝色区域没有被分割遗漏,就需要满足crop size > min crop size,进而得到r > 2n/(m+n)。
如果将n=256, m=172带入,r大概1.2左右。反过来如果令r在[1.0, 1.2]之间那么m=170.6,实际中取m=170 or 172。
3 实现代码
Talk is cheap, show me the code.
#coding=utf-8
import torchvision.transforms as transforms
import torchvision.transforms.functional as F
import random
import numpy as np
from PIL import Image
import numbers
import collections
import sys
if sys.version_info < (3, 3):
Sequence = collections.Sequence
Iterable = collections.Iterable
else:
Sequence = collections.abc.Sequence
Iterable = collections.abc.Iterable
def get_sync_transform(opt):
transform_list = []
osize = [opt.loadSize, opt.loadSize]
transform_list.append(Resize(osize, Image.BILINEAR))
transform_list.append(RandomScaleCrop())
if opt.isTrain and not opt.no_flip:
transform_list.append(transforms.RandomHorizontalFlip())
transform_list += [ToTensor(),
Normalize(<

本文介绍了在PyTorch中实现image-to-image任务时,如何为输入图像和目标图像同步应用transform。作者详细解析了Random Scale and Crop的原理,并给出了实现代码,以确保图像对在变换过程中的参数一致性。
最低0.47元/天 解锁文章
1421

被折叠的 条评论
为什么被折叠?



