背景
当我们有已经训练好的模型,想利用模型去标注新的致据集,而不想用lableme手动去标注,在这种需求下,cvat就显示出它的作用了,并且cvat可以多人协同标注。
cvat & nulio
opencv组织出品的一个非常优秀的在线图像标注系统。源码下载地址 https://github.com/opencv/cvat
nuclio:一种高并发无服务器的函数操作
什么是无服务器功能,为什么它用于CVAT中的自动标注?让我们假设您有一个DL模型,并希望将其用于人工智能辅助标注。常规的做法是实现一个Python脚本,该脚本使用DL模型来准备一个带有MSCOCO或Pascal VOC等公共格式标注的文件。之后,您可以将标注文件上传到CVAT。它是可以的,但对用户不友好。如何让CVAT为您运行脚本?你可以将带有DL模型的脚本打包到容器中,该容器提供与之交互的标准接口。一种方法是将函数用作服务方法。你的脚本成为云基础设施中的函数,可以通过HTTP调用。Nuclio无服务器平台帮助我们实现和管理这些功能。
搭建方式
Git clone cvat的代码下来,进入到源码根目录下
1.要构建具有无服务器支持的CVAT,需要使用特定的配置文件运行docker compose命令。docker-compose.serverless.yml 描述如何将Nuclio平台构建和部署作为docker容器,并在CVAT使用
docker compose -f docker-compose.yml -f docker-compose.dev.yml-f components/serverless/docker-compose.serverless.yml up -d --build
测试命令:docker compose-f docker-compose.yml-f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml ps
2. Nuclio 下载可执行文件,并且链接到系统里
wget https://github.com/nuclio/nuclio/releases/download//nuctl--linux-amd64
sudo chmod +x nuctl-‹version>-linux-amd64
sudo In -sf $(pwd)/nuctl--linux-amd64 /us/local/bin/nuctl
测试命令:nuctl get functions
3. 部署 nuclio与cvat 模型相关的接口
nuctl create project cvatnuctl deploy -project-name cvat -path “./serverless/pytorch/yolov5” --platform local
4. 模型接口对接
参照官方例子serverless/onnx/WongKinYiu/yolov7/nuclio/function.yaml,最重要的参数是:模型类型(检测/分割),模型路径,模型分类的类别,python的版本号,还有一些必要的依赖库
5. 用户使用常规使用方式:
使用注意点:
目cvat使用方法参考https://blog.csdn.net/ZHUO__zhuo/article/details/125068660
使用总结:
1)目前使用下来,还是需要很多人工操作的地方,比如校验,不正确的标注需要人为删除,重新标注
2) docker有时候需要重启,否则使用出问题
参考文档:https://opencv.github.io/cvat/docs/manual/advanced/serverless-tutorial/
https://opencv.github.io/cvat/docs/administration/advanced/installation_automatic_annotation/