使用Roboflow API上传YOLOv8数据集时同名重复文件夹问题的修复咨询
问题描述
我拥有YOLOv8检测项目的付费账户,在AWS云环境的VSCode中编写了Python代码,通过Roboflow API直接将图片上传至项目文件夹,代码整体运行正常,但偶尔会有1-2张图片被上传到同名的新文件夹中(如图所示)。尝试在代码不同位置添加time.sleep(),但并未解决问题,请问该如何修复?
def upload_dataset(i): batch_name=(f'{str(i)}_24_04_24') print(batch_name) workspace = rf.workspace("my_workspace") workspace.upload_dataset( project_name="my_project", dataset_path='/home/ubuntu/images/dataset', num_workers=25, project_license="MIT", project_type="object-detection", batch_name=batch_name)

修复方案
1. 降低并发上传数
当前设置的num_workers=25并发量过高,Roboflow API在高并发场景下可能出现批次识别的竞态问题,导致部分请求误创建新批次。建议将并发数降至5-10区间测试,例如修改为:
num_workers=8
2. 上传前检查并确认批次存在
在上传操作前,先查询项目内是否已存在目标批次,避免重复创建。修改后的代码示例:
def upload_dataset(i): batch_name = f'{str(i)}_24_04_24' print(batch_name) workspace = rf.workspace("my_workspace") project = workspace.project("my_project") # 检查目标批次是否已存在 existing_batches = project.list_batches() target_batch_exists = any(batch.name == batch_name for batch in existing_batches) # 若不存在则提前创建批次 if not target_batch_exists: project.create_batch(batch_name) workspace.upload_dataset( project_name="my_project", dataset_path='/home/ubuntu/images/dataset', num_workers=8, project_license="MIT", project_type="object-detection", batch_name=batch_name)
3. 校验数据集目录结构
Roboflow对数据集目录结构和文件匹配有严格要求,若部分图片缺少对应标注文件、标注格式错误或图片损坏,可能触发异常上传逻辑。检查/home/ubuntu/images/dataset目录:
- 图片与标注文件一一对应(如
xxx.jpg对应xxx.txt) - 标注文件符合YOLOv8格式规范
- 无损坏、无法读取的图片文件
4. 添加异常捕获与重试机制
针对上传过程中可能出现的网络波动或API响应异常,添加重试逻辑,避免单次异常导致的批次错位:
import time def upload_dataset(i): batch_name = f'{str(i)}_24_04_24' print(batch_name) workspace = rf.workspace("my_workspace") max_retries = 3 for attempt in range(max_retries): try: workspace.upload_dataset( project_name="my_project", dataset_path='/home/ubuntu/images/dataset', num_workers=8, project_license="MIT", project_type="object-detection", batch_name=batch_name) break except Exception as e: print(f"上传失败,重试第{attempt+1}次:{str(e)}") time.sleep(2)
内容的提问来源于stack exchange,提问作者Krilaria
相关产品推荐
相关产品推荐

