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
连接 OSS 前需要配置 JSON 文件 manifest.jsonl
# 先安装依赖
pip3 install av opencv-python pillow pqdm natsort
# 生成 manifest.jsonl
python 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_client
from 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 代理跳转。