- github:: https://github.com/openvinotoolkit/cvat
- docs:: https://openvinotoolkit.github.io/cvat/docs/
数据标注工具。
安装
先安装 [[Docker]] 和 [[pip]],然后从 [[Git]] 克隆后,通过 [[Docker Compose]] 方式运行:
# 克隆到本地git clone https://github.com/opencv/cvat && cd cvat# 配置 HOST 让其他服务器也能访问(如果存在多个 IP,建议用域名)export CVAT_HOST=10.1.1.22# 运行(关闭使用 docker-compose down)docker-compose up -d# 创建管理帐号(邮箱可省略)docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'
然后访问 10.1.1.22:8080 端口即可。
自定义
主要是增加存储地址
运行
修改 docker-compose.yml
8081:8080 # 默认对外为 8080,修改为 8081 避免冲突
因为 override 方式只是合并两个配置,相同的配置 override 优先,但是端口无法替换,所以需要在源文件上修改。
新增 docker-compose.override.yml
主要作用:
- 配置共享地址,非必选 (中文目录会报错)
- 修改默认访问 IP,配置后无需另外设置
export CVAT_HOST=<ip>
version: "3.3"
services: cvat: environment: CVAT_SHARE_URL: "Mounted from /data/images host directory" labels: - traefik.http.routers.cvat.rule=Host(`${CVAT_HOST:-10.1.1.67}`) && PathPrefix(`/api/`, `/git/`, `/opencv/`, `/static/`, `/admin`, `/documentation/`, `/django-rq`) volumes: - cvat_share:/home/django/share:ro
cvat_ui: labels: - traefik.http.routers.cvat-ui.rule=Host(`${CVAT_HOST:-10.1.1.67}`)
volumes: cvat_share: driver_opts: type: none device: /data/images o: bind
使用:登录后 -> Tasks -> Create a new task(创建任务) -> Select files -> Connected file shar
完成
同样使用 docker-compose up -d
运行,override 会替换默认配置
连接 MinIO
连接 [[MinIO]] OSS 前需要配置 [[JSON]] 文件 manifest.jsonl
# 先安装依赖pip3 install av opencv-python pillow pqdm natsort# 生成 manifest.jsonlpython create.py --output-dir /data/images /data/images
接口
命令行
# 安装pip3 install cvat-cli
# 使用本地图片上传cvat-cli --server-host <ip>:<port> --auth <user>:<passwd> create "<task_name>" --labels '[{"name": "标签"}]' local local_img1.jpg local_img2.jpg
SDK
[[Python]] SDK 接口
from cvat_sdk import make_clientfrom cvat_sdk.core.proxies.tasks import ResourceType
with make_client(host="http://10.1.1.22:8080", credentials=('username', 'password')) as client: # 任务信息 task_spec = { "name": "Test", "labels": [ {"name": "test"} ], } images = ['local local_img1.jpg', 'local_img2.jpg'] # 创建任务 task = client.tasks.create_from_data( spec=task_spec, # 任务信息 resource_type=ResourceType.LOCAL, # 资源类型 resources=images, # 资源清单 ) # 获取所有任务信息 for task in client.tasks.list(): print(task)
问题
- 如果 CVAT_HOST 未配置,只能本机访问,外网访问时报错: 404 page not found.
如果想同时使用多个 IP/域名访问,可以使用 Nginx 代理跳转。