{"record":{"id":"46d36a36dd380dbb","repo":"WZMIAOMIAO/deep-learning-for-image-processing","slug":"vocdevkit-dose-not-in-path-46d36a","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/train_mobilenetv2.py","lineNumber":65,"sourceCode":"\n    # 检查保存权重文件夹是否存在，不存在则创建\n    if not os.path.exists(\"save_weights\"):\n        os.makedirs(\"save_weights\")\n\n    data_transform = {\n        \"train\": transforms.Compose([transforms.ToTensor(),\n                                     transforms.RandomHorizontalFlip(0.5)]),\n        \"val\": transforms.Compose([transforms.ToTensor()])\n    }\n\n    VOC_root = \"./\"  # VOCdevkit\n    aspect_ratio_group_factor = 3\n    batch_size = 8\n    amp = False  # 是否使用混合精度训练，需要GPU支持\n\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    # load train data set\n    # VOCdevkit -> VOC2012 -> ImageSets -> Main -> train.txt\n    train_dataset = VOCDataSet(VOC_root, \"2012\", data_transform[\"train\"], \"train.txt\")\n    train_sampler = None\n\n    # 是否按图片相似高宽比采样图片组成batch\n    # 使用的话能够减小训练时所需GPU显存，默认使用\n    if aspect_ratio_group_factor >= 0:\n        train_sampler = torch.utils.data.RandomSampler(train_dataset)\n        # 统计所有图像高宽比例在bins区间中的位置索引\n        group_ids = create_aspect_ratio_groups(train_dataset, k=aspect_ratio_group_factor)\n        # 每个batch图片从同一高宽比例区间中取\n        train_batch_sampler = GroupedBatchSampler(train_sampler, group_ids, batch_size)\n\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","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/blob/1ec3fe6f374fc9969973a61f819de25658595afa/pytorch_object_detection/faster_rcnn/train_mobilenetv2.py#L47-L83","documentation":"train_mobilenetv2.py validates the dataset root before training: if `<VOC_root>/VOCdevkit` does not exist, it raises FileNotFoundError. This guards against a wrong or unextracted VOC dataset path.","triggerScenarios":"Running train_mobilenetv2.py with --data-path (or VOC_root) pointing to a directory that does not directly contain the VOCdevkit folder, or to the VOCdevkit folder itself instead of its parent.","commonSituations":"Forgetting to download/extract the VOC2012 dataset; passing the path of VOCdevkit rather than its parent; typo or relative path resolved from a different working directory.","solutions":["Download and extract the VOC2012 dataset so that `<data_path>/VOCdevkit` exists","Pass the PARENT directory of VOCdevkit as --data-path (e.g. not .../VOCdevkit but .../VOCdevkit's parent)","Verify the dataset is the expected layout: VOCdevkit/VOC2012/ImageSets/Main/train.txt"],"exampleFix":"# before\npython train_mobilenetv2.py --data-path ./VOCdevkit\n# after\npython train_mobilenetv2.py --data-path .   # directory that contains VOCdevkit/","handlingStrategy":"validation","validationCode":"import os\nvoc_root = \"./data\"\nassert os.path.exists(os.path.join(voc_root, \"VOCdevkit\")), f\"VOCdevkit missing under {voc_root}\"","typeGuard":null,"tryCatchPattern":"try:\n    run_training(voc_root)\nexcept FileNotFoundError as e:\n    if \"VOCdevkit\" in str(e):\n        download_and_extract_voc2012(voc_root)\n        run_training(voc_root)","preventionTips":["Download and extract VOC2012 before training","Pass the parent directory of VOCdevkit as the data path","Use absolute paths to avoid working-directory surprises"],"tags":["python","filenotfound","dataset","environment"],"backgroundTag":"missing-dataset-path","analyzedSha":"1ec3fe6f374fc9969973a61f819de25658595afa","analyzedAt":"2026-08-30T09:19:11.901Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}