Closed Linsongrong closed 4 years ago
哦哦,这样子的。train_root
下面都是一些文件夹,每个文件夹可以认为是一个类,所以数据和标签都有了。但在测试的时候,需要两两对比来评判准确度,所以就需要一个list
谢谢您的回复,现在又出现了个问题,我更改了config里的embedding_size,改成256,因为我想获得256维的特征,还把输入改成了3112112的格式,但运行时出现了 这该怎么解决?还有我现在没有测试的数据集,可以不填写test_root和test_list吗。
有两个要注意的点,一是改成[3, 112, 112]
的话,在预处理的T.Grayscale()
要去掉;二是要重新匹配一下模型中全连接层的维度。比如,在fmobilenet.py
中,模型的Linear层的输入要改一下。
class FaceMobileNet(nn.Module):
def __init__(self, embedding_size):
super().__init__()
# ...
self.linear = nn.Linear(2048, embedding_size, bias=False)
# ...
现在可以不填 test 相关的东西。
谢谢!我会按照您的提示修改的。我测试用自己数据训练得到的模型时出现了这样的情况: 准确率100% 阈值却是负数,这正常吗。我的测试集也是自己的,里面有点id目录下只有1张图片,而我制作Paris_list时,是忽略只有1张的情况的。请问我需要删除测试数据集里只有1张图片的ID吗?
图片看不到。
测试的时候,只有一张图片的ID也是可以的呀。测试有两个要测的:一是相同人脸能不能识别,二是不同人脸能不能识别。项目中附加的有6000对,其中3000对测相同人脸,3000对测不同人脸。
理解了这一点,就可以明白,只有一张图片的ID,只能用来制作第二种测试。
您好,我改了网络,改成输入为3x112x112的图片,但我测试是出现了问题,我已经把test_transform里的T.Grayscale()去掉了,但还是出现’RuntimeError: Given groups=1, weight of size 64 3 3 3, expected input[192, 1, 112, 112] to have 3 channels, but got 1 channels instead ‘的错误,您觉得是什么问题?
这里的意思是,你输入的图片似乎只有1个通道?
train_transform
的去掉了吗?
去掉了
我网络结构改了,self.conv1 = ConvBnPrelu(3, 64, kernel=(3, 3), stride=2, padding=1)
debug发现在断点处变了通道,之前是3通的,到了这之后变成单通
原来是test.py
。嗯,应该是这里了。因为我之前设置的是单通道的。下次提问记得说清楚是在跑哪个脚本啊
您知道怎么改吗
data = torch.cat(res, dim=0) # shape: (batch, 128, 128)
你检查一下这一行的输出。如果已经是3通道的,就把下面那行去掉就好了。
@siriusdemon 您好,感谢您的工作。我对训练过程感到困惑, 这里面只加载了webface的目录,没看到它对应的list加载。请问这个list不需要吗,还是在别的地方加载了。期待您的回复。