#python #pytorch
Вопрос:
Вот полная ошибка: стоит отметить, что входное изображение имеет размер 480 на 721.
Traceback (most recent call last):
File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 222, in <module>
output = model(images)
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 180, in forward
pyr_A = self.lap_pyramid.pyramid_decom(img=real_A_full)
File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 65, in pyramid_decom
filtered = self.conv_gauss(current, self.kernel)
File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 58, in conv_gauss
out = torch.nn.functional.conv2d(img, kernel, groups=img.shape[1])
RuntimeError: Given groups=721, expected weight to be at least 721 at dimension 0, but got weight of size [3, 1, 5, 5] instead
Я пытаюсь выполнить вывод по модели LPTN (сеть трансляции пирамид Лапласа).
model = LPTN()
state_dict = torch.load('/home/amir/PycharmProjects/LPTN/experiments/pretrained_models/net_g_FiveK_numhigh3.pth',
map_location='cpu')
model.load_state_dict(state_dict, strict=False)
model.eval()
img = cv2.imread("/home/amir/PycharmProjects/LPTN/scripts/data_preparation/datasets/FiveK/FiveK_480p/train/A/2.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
images = torch.from_numpy(np.asarray([img])).float()
output = model(images)
prediction = torch.argmax(output)
Вот функция, в которой возникает ошибка:
def conv_gauss(self, img, kernel):
padding = (2, 2, 2, 2)
img = torch.nn.functional.pad(img, padding, mode='reflect')
out = torch.nn.functional.conv2d(img, kernel, groups=img.shape[1])
Комментарии:
1. Я думаю, что вам не хватает измерения пакета, видел, как ваш код передавал одно изображение, вы пытались отменить запрос изображения??
2. Что вы имеете в виду, говоря о том, чтобы не подвергать сомнению изображение? Должен ли я это делать?
Ответ №1:
Ну, на самом деле у меня нет кода или чего-то еще, но я делаю предположение, основанное на том, что вы показали
import cv2
import torch
img = cv2.imread("/home/amir/PycharmProjects/LPTN/scripts/data_preparation/datasets/FiveK/FiveK_480p/train/A/2.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # H, W, C
img_tensor = torch.tensor(img, dtype=torch.float32) # Convert to torch tensor
img_tensor = img_tensor / 255. # Normalize [0 - 1] range (but depends on the model)
img_tensor = img_tensor.permute(2, 1, 0) # Reorder to C, H, W (torch requires this format)
img_tensor = img_tensor.unsqueeze(0) # Becomes this format B, C, H, W
# Set model to eval mode
model.eval()
# Run forward pass
with torch.no_grad(): # Dont run your gradients, speeds up inference
predictions = model(img_tensor) # Get back predictions from model