{"record":{"id":"e638a4134bc37975","repo":"WZMIAOMIAO/deep-learning-for-image-processing","slug":"vocdevkit-dose-not-in-path-e638a4","errorCode":null,"errorMessage":"VOCdevkit dose not in path:'{}'.","messagePattern":"VOCdevkit dose not in path:'(.+?)'\\.","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"pytorch_object_detection/faster_rcnn/validation.py","lineNumber":111,"sourceCode":"    device = torch.device(parser_data.device if torch.cuda.is_available() else \"cpu\")\n    print(\"Using {} device training.\".format(device.type))\n\n    data_transform = {\n        \"val\": transforms.Compose([transforms.ToTensor()])\n    }\n\n    # read class_indict\n    label_json_path = './pascal_voc_classes.json'\n    assert os.path.exists(label_json_path), \"json file {} dose not exist.\".format(label_json_path)\n    with open(label_json_path, 'r') as f:\n        class_dict = json.load(f)\n\n    category_index = {v: k for k, v in class_dict.items()}\n\n    VOC_root = parser_data.data_path\n    # check voc root\n    if os.path.exists(os.path.join(VOC_root, \"VOCdevkit\")) is False:\n        raise FileNotFoundError(\"VOCdevkit dose not in path:'{}'.\".format(VOC_root))\n\n    # 注意这里的collate_fn是自定义的，因为读取的数据包括image和targets，不能直接使用默认的方法合成batch\n    batch_size = parser_data.batch_size\n    nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8])  # number of workers\n    print('Using %g dataloader workers' % nw)\n\n    # load validation data set\n    val_dataset = VOCDataSet(VOC_root, \"2012\", data_transform[\"val\"], \"val.txt\")\n    val_dataset_loader = torch.utils.data.DataLoader(val_dataset,\n                                                     batch_size=1,\n                                                     shuffle=False,\n                                                     num_workers=nw,\n                                                     pin_memory=True,\n                                                     collate_fn=val_dataset.collate_fn)\n\n    # create model num_classes equal background + 20 classes\n    # 注意，这里的norm_layer要和训练脚本中保持一致\n    backbone = resnet50_fpn_backbone(norm_layer=torch.nn.BatchNorm2d)","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/blob/1ec3fe6f374fc9969973a61f819de25658595afa/pytorch_object_detection/faster_rcnn/validation.py#L93-L129","documentation":"validation.py checks that `<parser_data.data_path>/VOCdevkit` exists before building the validation DataLoader; otherwise it raises FileNotFoundError. It prevents evaluation against a missing dataset.","triggerScenarios":"Running validation.py with --data-path pointing to a directory without the VOCdevkit subfolder, or pointing at VOCdevkit itself instead of its parent.","commonSituations":"Dataset not extracted on the eval machine; wrong --data-path value copied from another script; relative path resolved from unexpected working directory.","solutions":["Extract the VOC2012 dataset so `<data_path>/VOCdevkit` exists","Pass the parent directory containing VOCdevkit as --data-path","Verify VOCdevkit/VOC2012/ImageSets/Main (and Annotations) exist under the given path"],"exampleFix":"# before\npython validation.py --data-path ./data/VOCdevkit\n# after\npython validation.py --data-path ./data  # ./data/VOCdevkit exists","handlingStrategy":"validation","validationCode":"import os\ndata_path = parser_data.data_path\nif not os.path.exists(os.path.join(data_path, \"VOCdevkit\")):\n    raise SystemExit(f\"VOCdevkit not found under {data_path}\")","typeGuard":null,"tryCatchPattern":"try:\n    run_validation(parser_data)\nexcept FileNotFoundError as e:\n    if \"VOCdevkit\" in str(e):\n        print(f\"Dataset missing at {parser_data.data_path}; extract VOC2012 first.\")\n        sys.exit(1)","preventionTips":["Extract VOC2012 under the given data_path before validating","Pass the parent directory of VOCdevkit as --data-path","Verify the dataset layout (VOCdevkit/VOC2012/ImageSets/Main) in a pre-flight check"],"tags":["python","filenotfound","dataset","validation"],"backgroundTag":"missing-dataset-path","analyzedSha":"1ec3fe6f374fc9969973a61f819de25658595afa","analyzedAt":"2026-08-30T09:19:11.901Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}