gpt4 book ai didi

python - 如何更改 Pytorch CNN 来拍摄彩色图像而不是黑白图像?

转载 作者:行者123 更新时间:2023-12-01 08:35:00 25 4
gpt4 key购买 nike

This code我发现有一个神经网络可以拍摄黑白图像。 (这是一个暹罗网络,但那部分不相关)。当我将其更改为拍摄图像而不将它们转换为黑白时,我收到如下所示的错误。
我尝试将第一个 Conv2d 第六行从 1 更改为 3

class SiameseNetwork(nn.Module):
def __init__(self):
super(SiameseNetwork, self).__init__()
self.cnn1 = nn.Sequential(
nn.ReflectionPad2d(1),
# was nn.Conv2d(1, 4, kernel_size=3),
nn.Conv2d(3, 4, kernel_size=3),
nn.ReLU(inplace=True),
nn.BatchNorm2d(4),

nn.ReflectionPad2d(1),
nn.Conv2d(4, 8, kernel_size=3),
nn.ReLU(inplace=True),
nn.BatchNorm2d(8),

nn.ReflectionPad2d(1),
nn.Conv2d(8, 8, kernel_size=3),
nn.ReLU(inplace=True),
nn.BatchNorm2d(8))

self.fc1 = nn.Sequential(
nn.Linear(8*300*300, 500),
nn.ReLU(inplace=True),

nn.Linear(500, 500),
nn.ReLU(inplace=True),

nn.Linear(500, 5))

def forward_once(self, x):
output = self.cnn1(x)
output = output.view(output.size()[0], -1)
output = self.fc1(output)
return output

def forward(self, input1, input2):
output1 = self.forward_once(input1)
output2 = self.forward_once(input2)
return output1, output2

当图像没有转换为黑白并保持彩色时我的错误。

RuntimeError: invalid argument 0: Sizes of tensors must match  
except in dimension 0. Got 3 and 1 in dimension 1 at
/opt/conda/conda-bld/pytorch-nightly_1542963753679/work/aten/src/TH/generic/THTensorMoreMath.cpp:1319

我检查了图像的形状作为数组(就在它们进入模型之前)作为黑白与彩色......

黑白

torch.Size([1, 1, 300, 300])

彩色

torch.Size([1, 3, 300, 300])

这里是我正在使用的整个原始代码的 Jupyter Notebook 的链接... https://github.com/harveyslash/Facial-Similarity-with-Siamese-Networks-in-Pytorch/blob/master/Siamese-networks-medium.ipynb

编辑:更新:我似乎已经通过在代码的 SiameseNetworkDataset 部分将图像转换为 RBG 来解决它

img0 = img0.convert("L")

更改为

img0 = img0.convert("RGB")

我之前刚刚注释掉了该行,并认为这会将其保留在 RGB 中,但这是模型无法理解的其他内容。此外,还需要更改 OP。

nn.Conv2d(1, 4, kernel_size=3),

更改为

nn.Conv2d(3, 4, kernel_size=3),

如果您想回答并解释模型正在做什么,以清楚地表明我会给您打绿色勾。不太了解nn.Conv2d

最佳答案

错误似乎出现在下面的完全连接部分:

self.fc1 = nn.Sequential(
nn.Linear(8*100*100, 500),
nn.ReLU(inplace=True),

nn.Linear(500, 500),
nn.ReLU(inplace=True),

nn.Linear(500, 5))

cnn 的输出似乎是形状 [8,300,300]而不是[8,100,100]

要解决此问题,请将输入图像更改为 [n_channel, 100,100]或者将 fc-layer 的输入大小更改为 8*300*300

关于python - 如何更改 Pytorch CNN 来拍摄彩色图像而不是黑白图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com