当前位置:   article > 正文

CVAT——2. CVAT简单使用

cvat

基本使用

以下测试均建立在 github上 CVAT Release 1.0.0版本上

管理员界面登录

在上篇配置好CVAT后,可以使用类似:http://localhost:8080/admin来登录 (localhost换成自己的服务器ip)

管理用户

添加/删除用户及用户权限管理

主要是 AUTHENTICATION AND AUTHORIZATION 认证和授权 下面可以添加组和用户
在这里插入图片描述
大概就是常规的用户名,密码,确认密码之后就可以 成功注册了新用户了,下面其实还有继续一些权限控制的选项。在这里插入图片描述
这里的三种Permissions分别表示:

  • Activate(活跃用户):指定是否应将此用户视为活动用户,如果想使这个账号暂时失去权限,取消选择就可以,不需要删除。
  • Staff status(员工身份):指定用户是否可以登录此管理站点。
    +Superuser status( 超级用户状态):指定该用户具有所有权限,而无需显式分配它们。
    在这里插入图片描述
组管理

上面那四个原本就有的组,经过2020.7.27测试 (github上 CVAT
Release 1.0.0版本),组是没有权限区别的。

  • 即:你不在annotator,也可以对task进行标注
  • 但是在admin 就是有区别的,这里大概没设计好
  • 在新建组部分,也只有 group name这一个字段,大概CVAT设计人员觉得对用户有权限控制就可以,剩下的就是管理员自行组织相同权限的用户在一个组,所以组没有权限管理

用户管理界面在这里插入图片描述

任务管理

在这里插入图片描述
Engine->Tasks->选择具体的task名称进入,就可以看到该task的相关属性。

  • 其中有一点需要注意:正常情况下,task创建后,除了标签和分配给谁可以改,其他都没法改,也没法再在Web端直接修改。
    • Segment size:一个task无法分配给多个人(assignee),但是可以通过这个参数把一个task分成多个job,每个job再分给不同的人,就可以达到多人共同标注一个task的效果。 PS:虽然这里提供了这个选项,但是实际不生效,
      在这里插入图片描述
      即便改了Segment size ,但是可以看到后面的Segments各种都没有反应。无效,所以如果想要把一个任务分配给多个人,只能在一开始创建任务的时候就全都考虑不好,要么就重新创建。在这里插入图片描述

创建任务和上传标签

进入CVAT界面后,选择新建任务(很简单,填填就好了)

  • 创建任务完成后,如果还需要上传对应的标记文件,则该文件需要是zip格式的。同时,还会提示你:
    在这里插入图片描述
    即:这里上传的标记会将你在CVAT平台上标记的全都覆盖!
    此外,如果上传的标记文件中标签与该task建立时的标签不一致,会报错。且已经创建好的项目的标签无法修改,可以新加,但无法修改之前已经定义的
    上传完毕后显示
    在这里插入图片描述
    然后回到任务面板,打开就可以看到已经标注好的结果了,不错
    在这里插入图片描述

datumaro

这个是基于python的,可以在user-guide中看到 这个datumaro要求是python3.5+的环境。

为此,先查看服务器上python环境的情况

which python
//返回 /usr/bin/python
python --version
2.7.17
  • 1
  • 2
  • 3
  • 4

anaconda安装

环境不太好,所以要安装python3.5的环境,选择anaconda,直接去官网下载linux版本,右键存储链接

wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh 
  • 1

(这个版本是python3.8的 所以安装结束后还要再新建一个python3.5的环境)

下载完之后再进行安装:

bash Anaconda3-2020.07-Linux-x86_64.sh
  • 1

一开始会让你阅读协议,输入yes,然后会让你确定安装位置,记住这个前缀,等一会就安装好了。安装结束后,提示:
For changes to take effect, close and re-open your current shell 所以最好把这个shell连接关闭重启一下(不然无法识别conda命令),重启之后就Ok了,剩下就是anaconda里操作,新建环境安装py36,安装一些必要的包了。

  • !!!!
  • 不要安装py3.5 虽然datumaro写得是 python3.5+ 但是在执行pip git XXX后,当安装 pycocotools时,报错 RuntimeError: Python version >= 3.6 required。所以安装3.6最好
PREFIX=/home/XXX/anaconda3
  • 1
conda create -n py36 python=3.6
conda activate py36
pip list
pip install --upgrade pip
  • 1
  • 2
  • 3
  • 4

环境配好就可以去安装datumaro了

datumaro安装

需要先安装好gcc

> sudo apt update
> sudo apt install build-essential
# 这句会安装 gcc, g++ and make
> sudo apt-get install manpages-dev
# 这个是一些手册
  • 1
  • 2
  • 3
  • 4
  • 5

安装:

pip install 'git+https://github.com/opencv/cvat#egg=datumaro&subdirectory=datumaro'
  • 1

安装这个的过程中会默认安装一些别的依赖包(反正等着就好了,要等挺久,可以在requirements文件中看到)。

Cython>=0.27.3 # include before pycocotools
defusedxml>=0.6.0
GitPython>=3.0.8
lxml>=4.4.1
matplotlib<3.1 # 3.1+ requires python3.6, but we have 3.5 in cvat
opencv-python-headless>=4.1.0.25
Pillow>=6.1.0
pycocotools>=2.0.0   # 这个要求python>=3.6
# 这个还要求安装有gcc 安装gcc后再进行安装就没问题了
PyYAML>=5.1.1
scikit-image>=0.15.0
tensorboardX>=1.8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

datumaro基本使用

安好后,就可以开始跟着用户手册继续使用一些基本功能了。重点放在数据增加与合并上。

说明:命令调用语法可能会改变,始终遵循 --help的说明。
datumaro的关键对象是Project,一个Project是一个project自己包含的数据集,大量外部数据资源以及一个环境的组合。可以通过 project create命令来创建一个空的Project,现有的数据集可以使用project import命令导入。最简单的获取任务的方式就是在CVAT的UI中导出task


所以基本可以认为,datumaro的使用需要不断跟CVAT进行导出和导入操作。

支持的格式

-f参数的取值可以有:

  • COCO
  • PASCAL VOC
  • YOLO
  • TF Detection API
  • CVAT

可以在CVAT的tasks面板中看到导出的文件格式有(从名字上来看,最好使用Datumaro):
在这里插入图片描述

查看帮助文件报错

ImportError: libSM.so.6: cannot open shared object file: No such file or directory
解决,参考github issue

>sudo apt-get update
>sudo apt-get install -y libsm6 libxext6 libxrender-dev
//执行完这步 就可以正常查看help文件了 ok 下面那句不用管了
>pip install opencv-python
  • 1
  • 2
  • 3
  • 4
导入projects

从现有的数据集中创建一个project,支持的就是上面的格式。Datumaro数据格式是由Extractors和Importers支持的。提取器产生对应于数据集的数据项目列表,导入器从数据源的位置创建一个项目。支持自定义提取器和导入器,但是需要将二者的实现脚本放入<project_dir>/.datumaro/extractors and <project_dir>/.datumaro/importers文件夹中

导入代码,例如 从一个coco格式的数据集中创建项目:

//先
datum project import --help
// 以help的内容为准,执行时报错,
WARNING: Failed to import module 'tf_detection_api_format.extractor.py': Traceback (most recent call last):File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'tensorflow'

datum project import \
	 -f coco\
     -i /home/coco_dir \
     -o /home/project_dir \  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
数据增加

数据标注

标注面板使用

快捷键
  • 上一张D
  • 下一张F
  • 新建矩形标注框 N
    在这里插入图片描述
左侧工具栏和右侧面板说明

其实就是这个 适应图片 功能比较好。

  • 滑动鼠标滚轮:标注图片缩放(不是网页缩放)
  • 双击图片:图片自适应当前窗口宽度
    在这里插入图片描述
追踪模式Track mode (视频标注使用)

为了使用这一功能,上传了一个 104.5MB的flv文件上去。

  • 创建时注意:
    Advanced configuration中的frame step是控制提取帧的间隔:使用此选项过滤视频帧。 例如,输入25将在视频中每隔第二十五帧或每25幅图像保留一个。
  • 视频和图片要进行压缩上传,所以很慢。。上传过程无法停止,等着吧
  • 14分钟 7500帧 也就是差不多 每秒8帧-10帧左右

依然打开标注面板,这里标注的时候不使用默认的shape 而是选择track。

  • 标记的物体于?帧开始移动,就可以将?帧 打上星号或者点击K将其标记为关键帧。
  • 如果对象开始更改其位置,则需要修改其发生的矩形。 不必更改每个帧上的矩形,只需更新几个关键帧,它们之间的帧就会自动插入。
    • 例如:第0帧上画框,然后到第30帧,把之前那个框的位置进行移动(会自动帮你把这帧标记为关键帧 打上星号)
    • 两帧之间就会根据一个框(一个track)的两个位置 (两个位置框的大小可以不同)来自动进行 插帧标注 效果不错
    • 当标注物体变得很小或者消失的时候,需要选择Outside Property.
      • 跳出之后,从那一帧开始 就不再追踪了。尤其是物体到视频边缘,物体大小持续发生变化,就需要自己慢慢标注了。
    • 如果物体在某几帧消失了然后又出现,这时可以使用 Merge融合特性将不同的tracks融合成一个
      • 在物体可见的时候画一个矩形(使用track方式)
      • 在消失但又出现的地方再画一个矩形(track)
      • 点击 Merge或者按下M键,依次点击第一个track和第二个track等
      • 然后点击完了,再按下 Merge或者M键 使改动生效
        在这里插入图片描述
        0帧在这里插入图片描述
        30帧在这里插入图片描述
        在这里插入图片描述
        如果还想了解更多高级功能,查看 track mode (advanced)

提升标注效率

方式一:视频追踪,自动插帧

就是上面的 追踪模式 Track mode(适用于一个序列的图像,目标追踪类的任务)

方式二:使用模型自动标记

主要参考

参考链接:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/89309
推荐阅读
相关标签
  

闽ICP备14008679号