从FiftyOne上传15GB大数据集到CVAT遇504超时及注解上传失败如何解决
FiftyOne向CVAT上传大数据集遇504超时、注解加载失败的可行解决方案
- 调整CVAT网关超时配置,从根源解决504错误
504 Gateway Time-Out本质是CVAT入口代理的等待响应时长不足以支撑大体积数据集的上传处理。如果是Docker部署的CVAT,修改traefik或nginx服务的响应超时、读写超时配置到300s以上,调整完成后重启代理服务再重试上传,注解可随样本一同正常写入CVAT任务,无需后续额外适配。 - 拆分媒体与注解的上传逻辑,降低单请求耗时
调用FiftyOne的annotate()函数时分两步操作:第一次调用时设置upload_annotations=False,仅上传媒体文件,确认CVAT侧任务生成、样本全部可查后,第二次调用同一任务时设置upload_media=False, upload_annotations=True,已存在的媒体文件会被CVAT跳过,仅处理注解写入逻辑,请求耗时大幅缩短不会触发超时,两次调用需保持task_id、dataset、label_field参数完全一致,不会生成新任务。 - 手动映射注解同步回FiftyOne,无需依赖annotate全流程上传
load_annotations并非必须通过annotate全流程上传才可调用:先调用fiftyone.utils.cvat.get_task_info(task_id)获取CVAT任务样本ID与FiftyOne样本ID的映射关系,再从CVAT导出已修正的注解为COCO/VOC等标准格式,最后通过dataset.add_annotations()按样本ID匹配写入本地数据集,该方案不需要重新上传媒体,也不会生成冗余任务,可直接完成注解同步。 - 调小作业拆分粒度避免请求超时,优化任务命名规则解决管理问题
你当前的每50个样本拆分为作业的粒度偏大,可将annotate()的batch_size参数调整为10-20,单批次处理样本量减少后单请求耗时降低,基本不会触发网关超时;任务命名可增加批次编号后缀(如[数据集标识] 修正标注_批次X),不会出现同名任务管理混乱的问题。
内容的提问来源于stack exchange,提问作者IBer
相关产品推荐
相关产品推荐

