如何将CVAT已有非示例项目导入FiftyOne作为数据集?
报错根因
fo.load_dataset()的作用是加载已持久化保存在本地FiftyOne内置数据库中的数据集,执行该方法时不会主动请求CVAT服务器检索远程资源。你在CVAT端创建的import_test项目从未被同步导入到本地FiftyOne数据库,因此触发找不到数据集的报错,该报错和CVAT项目是否存在、服务连通性是否正常无直接关联。
核心结论
- 支持直接加载CVAT端原生创建的已有项目,无“数据集必须由FiftyOne初始创建”的限制,该操作完全可行。
- 定位CVAT资源不依赖项目名称,必传核心参数为目标项目的数字ID(可在CVAT项目详情页的URL中获取),同时需要传入CVAT服务的认证凭证,其余参数为可选配置。
正确实现代码
通过FiftyOne的CVAT集成模块直接拉取远程项目,示例代码如下:
import fiftyone as fo import fiftyone.utils.cvat as fouc # 导入CVAT端已有项目到本地FiftyOne dataset = fouc.import_project( project_id=123, # 替换为你的CVAT项目数字ID # 替换为你的CVAT登录凭证 username="your_cvat_username", password="your_cvat_password", # 私有部署CVAT需传入对应服务地址,使用官方公开CVAT服务可省略该参数 # server_url="https://your-private-cvat-host.com", # 可选:是否同步下载CVAT项目中的原图到本地,默认False仅拉取标注信息 download_media=True, # 可选:指定本地存储下载数据的路径 # dataset_dir="./local_data_path" ) # 如需后续直接通过fo.load_dataset()加载该数据集,可将数据集持久化到本地库 dataset.name = "import_test" dataset.persistent = True dataset.save()
若CVAT账号开启双因素认证,无需传入用户名密码,改用
api_key参数传入个人设置页生成的API Key即可完成认证。
常见误区说明
你之前检索到的两类示例均为FiftyOne基础入门场景,不涉及CVAT自定义项目导入逻辑:
- 加载内置zoo数据集的流程是FiftyOne自动下载公开示例数据到本地,再将标注推送到CVAT做功能演示,本身不包含拉取CVAT端已有自定义项目的逻辑;
fo.Dataset.from_dir()仅支持读取本地磁盘存储的标准格式数据集,无法直接对接远程CVAT服务。
完成上述导入流程后,后续即可直接通过fo.load_dataset("import_test")加载已同步到本地的数据集。
内容的提问来源于stack exchange,提问作者MosQuan
相关产品推荐
相关产品推荐

