创建具有不同比例 PyTorch 的多个图像
Create multiple images with different ratio PyTorch
我正在尝试使用 PyTorch 执行一些数字识别。我实现了大小为 32x32 的滑动 window 的卷积版本。这使我能够识别图片中这个大小范围的数字。
但是现在让我们假设我有一个尺寸为 300x300 的图像,其中一个数字占据了整个图像。我永远无法识别它...
我看到有人说图像需要重新缩放和调整大小。这意味着我需要创建初始图像的各种缩放版本,然后将这些 "new" 图像提供给我的网络。
有人知道我该怎么做吗?
这是我的代码的一部分,如果它可以帮助..
# loading dataset
size=200
height=200
width= 300
transformer_svhn_test = transforms.Compose([
transforms.Grayscale(3),
transforms.Resize((height, width)),
transforms.CenterCrop((size, size)),
transforms.ToTensor(),
transforms.Normalize([.5,.5,.5], [.5,.5,.5])
])
SVHN_test = SVHN_(train=False, transform=transformer_svhn_test)
SVHN_test_loader = DataLoader(SVHN_test, batch_size=batch_size, shuffle=False, num_workers=3)
#loading network
model = Network()
model.to(device)
model.load_state_dict(torch.load("digit_classifier_gray_scale_weighted.pth"))
# loading one image and feeding the model with it
image = next(iter(SVHN_test_loader))[0]
image_tensor = image.unsqueeze(0) # creating a single-image batch
image_tensor = image_tensor.to(device)
model.eval()
output = model(image_tensor)
如果我对你的问题理解有误,请指正:
你的网络将大小为 300x300 的图像作为输入,并在你的模型中进行 32x32 滑动 window 操作,并输出输入图像中任何数字的位置?在此设置中,您将此问题定义为对象检测任务。
我正在想象您的训练数据中的数字具有类似于 32x32 的大小,并且您想使用多尺度评估来确保测试图像上的数字也具有与训练数据中的数字相似的大小。至于目标检测网络,你的网络的输入大小是不固定的。
所以你需要的东西实际上叫做多尺度evaluation/testing,你会发现它在计算机视觉任务中很常见。
一个好的起点是 HERE
我正在尝试使用 PyTorch 执行一些数字识别。我实现了大小为 32x32 的滑动 window 的卷积版本。这使我能够识别图片中这个大小范围的数字。
但是现在让我们假设我有一个尺寸为 300x300 的图像,其中一个数字占据了整个图像。我永远无法识别它...
我看到有人说图像需要重新缩放和调整大小。这意味着我需要创建初始图像的各种缩放版本,然后将这些 "new" 图像提供给我的网络。
有人知道我该怎么做吗?
这是我的代码的一部分,如果它可以帮助..
# loading dataset
size=200
height=200
width= 300
transformer_svhn_test = transforms.Compose([
transforms.Grayscale(3),
transforms.Resize((height, width)),
transforms.CenterCrop((size, size)),
transforms.ToTensor(),
transforms.Normalize([.5,.5,.5], [.5,.5,.5])
])
SVHN_test = SVHN_(train=False, transform=transformer_svhn_test)
SVHN_test_loader = DataLoader(SVHN_test, batch_size=batch_size, shuffle=False, num_workers=3)
#loading network
model = Network()
model.to(device)
model.load_state_dict(torch.load("digit_classifier_gray_scale_weighted.pth"))
# loading one image and feeding the model with it
image = next(iter(SVHN_test_loader))[0]
image_tensor = image.unsqueeze(0) # creating a single-image batch
image_tensor = image_tensor.to(device)
model.eval()
output = model(image_tensor)
如果我对你的问题理解有误,请指正:
你的网络将大小为 300x300 的图像作为输入,并在你的模型中进行 32x32 滑动 window 操作,并输出输入图像中任何数字的位置?在此设置中,您将此问题定义为对象检测任务。
我正在想象您的训练数据中的数字具有类似于 32x32 的大小,并且您想使用多尺度评估来确保测试图像上的数字也具有与训练数据中的数字相似的大小。至于目标检测网络,你的网络的输入大小是不固定的。
所以你需要的东西实际上叫做多尺度evaluation/testing,你会发现它在计算机视觉任务中很常见。
一个好的起点是 HERE