我正在尝试使用PyTorch进行数字识别。我已经实现了大小为32x32的卷积版本的滑动窗口。这使我能够识别图片中此大小范围的数字。
但是现在让我们想象一下,我有一个尺寸为300x300的图像,其中一个数字占据了整个图像。我将永远无法识别它...
我见过有人说图像需要重新缩放和调整大小。这意味着我需要创建各种缩放版本的初始图像,然后使用这些“新”图像为网络提供数据。
有人知道我该怎么做吗?
如果可以帮助的话,这是我的代码的一部分。
# 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)
答案 0 :(得分:0)
如果我理解您的问题不对,请纠正我:
您的网络将300x300大小的图像作为输入,并且在模型内是否进行32x32滑动窗口操作,并输出输入图像中任何数字的位置?在此设置中,您将此问题视为对象检测任务。
我正在成像训练数据中的数字,其大小类似于32x32,并且您想使用多尺度评估来确保测试图像上的数字也具有与训练数据中的数字相似的大小。对于对象检测网络,网络的输入大小不是固定的。
因此,您实际上需要的东西称为多尺度评估/测试,并且在Computer Vision任务中您会发现它很常见。
一个好的起点是HERE