You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch人脸识别报错:get_val_data()参数不匹配(1参传2个)

问题原因

调用get_val_data时传入了2个参数(数据路径和TARGET),但utils.py中该函数的定义仅接受1个参数data_path,参数数量不匹配导致报错。

修复方案

根据你想测试指定TARGET数据集的需求,提供两种修复方式:

方式1:临时修改函数调用(测试所有数据集)

如果不需要指定单个TARGET,直接只传数据路径,同时调整后续处理逻辑适配原函数的返回格式:

# 仅传入数据路径,去掉TARGET参数
vers = get_val_data('/home/cvpr/Documents/OPVT/eval/')
# 拆分原函数返回的数据集与对应issame标记
datasets = [vers[0], vers[1], vers[2], vers[3], vers[4], vers[5], vers[6]]
issames = [vers[7], vers[8], vers[9], vers[10], vers[11], vers[12], vers[13]]
dataset_names = ['lfw', 'cfp_ff', 'cfp_fp', 'agedb_30', 'calfw', 'cplfw', 'vgg2_fp']

# 遍历所有数据集测试
for name, data_set, issame in zip(dataset_names, datasets, issames):
    time = test_forward(DEVICE, model, data_set)
    print(f"{name}: {time}")

方式2:修改get_val_data函数(推荐,适配指定TARGET需求)

修改utils.py中的函数,让它支持传入target参数,仅返回你需要的目标数据集:

def get_val_data(data_path, target=None):
    # 获取所有数据集及对应issame标记
    lfw, lfw_issame = get_val_pair(data_path, 'lfw')
    cfp_ff, cfp_ff_issame = get_val_pair(data_path, 'cfp_ff')
    cfp_fp, cfp_fp_issame = get_val_pair(data_path, 'cfp_fp')
    agedb_30, agedb_30_issame = get_val_pair(data_path, 'agedb_30')
    calfw, calfw_issame = get_val_pair(data_path, 'calfw')
    cplfw, cplfw_issame = get_val_pair(data_path, 'cplfw')
    vgg2_fp, vgg2_fp_issame = get_val_pair(data_path, 'vgg2_fp')
    
    # 用字典存储数据集映射
    data_mapping = {
        'lfw': (lfw, lfw_issame),
        'cfp_ff': (cfp_ff, cfp_ff_issame),
        'cfp_fp': (cfp_fp, cfp_fp_issame),
        'agedb_30': (agedb_30, agedb_30_issame),
        'calfw': (calfw, calfw_issame),
        'cplfw': (cplfw, cplfw_issame),
        'vgg2_fp': (vgg2_fp, vgg2_fp_issame)
    }
    
    if target:
        # 指定TARGET时,返回对应数据集(格式匹配原代码循环逻辑)
        return [(target, data_mapping[target][0], data_mapping[target][1])]
    else:
        # 未指定时返回所有数据集
        return [
            ('lfw', lfw, lfw_issame),
            ('cfp_ff', cfp_ff, cfp_ff_issame),
            ('cfp_fp', cfp_fp, cfp_fp_issame),
            ('agedb_30', agedb_30, agedb_30_issame),
            ('calfw', calfw, calfw_issame),
            ('cplfw', cplfw, cplfw_issame),
            ('vgg2_fp', vgg2_fp, vgg2_fp_issame)
        ]

修改后,原代码中的vers = get_val_data('/home/cvpr/Documents/OPVT/eval/', TARGET)可以正常运行,后续循环逻辑无需改动。

内容的提问来源于stack exchange,提问作者Khawar Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:40:24