草庐IT

CVAT安装及图片标注使用详细教程[含踩坑记录]

问题多多快快改 2023-04-22 原文

      cvat是一个图像标注工具,记录一下安装和使用过程:

目录

一、CVAT安装

step1 安装docker

step2 获取权限

step3 获取权限

step4 克隆cvat源代码

step5 构建docker镜像

step6 运行Docker容器这一步要下载公共docker映像,耗时看网速,但是不会太久。

step6 创建管理员用户

step7 关闭cvat服务

二、CVAT安装及图片标注使用教程

1. 注册

2. 基本标注

2.1 创建Task

2.2 Task列表页面

2.3 Task内页

2.4 标注页面

2.5 标注小技巧

3.下载标注结果


 主要借鉴了以下几篇文章:

[常用工具] cvat安装说明

CVAT使用说明

CVAT使用的一点总结

一、CVAT安装

step1 安装docker

        cvat在docker下运行,要先安装docker。

sudo apt-get update
sudo apt-get --no-install-recommends install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
sudo apt-get update
sudo apt-get --no-install-recommends install -y docker-ce docker-ce-cli containerd.io


step2 获取权限

        在没有root权限的情况下运行docker需要获取权限,获取权限后务必重启系统

sudo groupadd docker
sudo usermod -aG docker $USER


step3 获取权限

        安装docker-compose(1.19.0或更高版本)。Compose是用于定义和运行多容器Docker应用程序的工具。

sudo apt-get --no-install-recommends install -y python3-pip python3-setuptools
sudo python3 -m pip install setuptools docker-compose

这一步可能会出现报错:

aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Kylin/kylin

这是因为安装优麒麟的软件后系统/etc/lsb-release的文件信息被改了,输入指令:

 sudo gedit /etc/lsb-release

发现文件是这个样子的:

改为: 

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"

重新执行 step3 获取权限 ,应该就没什么问题了。


step4 克隆cvat源代码

        官方github仓库很慢,所以我就用了gitee镜像。

sudo apt-get --no-install-recommends install -y git
git clone https://gitee.com/luohenyueji/cvat
cd cvat


step5 构建docker镜像

        这一步是最难也是耗时最长的一步,会下载很多东西包括一堆python库,所以慢慢等待。对于python库得安装建议使用镜像。具体做法,打开上一步下载的源代码目录cvat/Dockerfile文件,找到Install requirements这项。然后修改并添加相应的python镜像。我用的是阿里云镜像,可以换成别的。

#RUN DATUMARO_HEADLESS=1 python3 -m pip install --no-cache-dir -r /tmp/requirements/${DJANGO_CONFIGURATION}.txt
RUN DATUMARO_HEADLESS=1 python3 -m pip install -r /tmp/requirements/${DJANGO_CONFIGURATION}.txt -i https://mirrors.aliyun.com/pypi/simple/


        然后在cvat目录输入以下指令就慢慢等待吧,如果中途安装失败,再次输入指令就好了,注意要使用sudo。

sudo docker-compose build


step6 运行Docker容器
这一步要下载公共docker映像,耗时看网速,但是不会太久。

docker-compose up -d


这一步结束后,就能打开你的cvat网站,但是需要用谷歌浏览器使用。安装过了谷歌浏览器就不用管,没有见安装方法ubuntu18.10安装chrome浏览器。

这时候谷歌浏览器打开localhost:8080就能够看到cvat页面,如下所示


点击creaate an account就能够创建普通用户,但是第一次使用最好创建管理员账户,具体看下一步。

step6 创建管理员用户

输入以下命令,然后有提示创建管理员账户密码就行了。

docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'


step7 关闭cvat服务

运行step6后,哪怕重启服务器,cvat服务还是继续运行的。要关闭在cvat目录输入以下指令:

docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'


要重新开启就重复step6。

二、CVAT安装及图片标注使用教程

1. 注册

  • 第一次使用CVAT时需要注册,
  • 用户注册完就可以去创建标注任务了

2. 基本标注

2.1 创建Task

  • 登录后会看到如下图界面,CVAT的标注最小单位是Task,每个Task为一个标注任务。点击Task按钮可以看到已创建的task, 点击创建新task。
  • 创建新任务的页面如下,按照如下标识的步骤,第一步填写任务名称,要关联的Project名称(可选),第二步设置标签,第三步选择标注数据来源,第四步选择高级设置参数,第五步提交。
  • label 标签详解
    • 添加label标签有两种模式:Raw和Constructor,Constructor是可以逐一添加、调整label设置的,设置新增标签名称、颜色、属性等。假如要使用筛选功能,可在此处添加“selected”标签,后续可根据此标签对标注数据进行筛选。
    • Raw则是可以一键复制所以label设置的json格式的文件,此功能在多个任务对应标签一致时,可以很方便的设置多个标签。Raw示例内容如下图所示,json内容可以通过Copy按钮复制内容用于新任务label设置,粘贴后点击Done保存当前设置,Reset则是维持原来的设置,比如新任务中某标签颜色改变,更改后发现新设置不合适,Reset可以一键还原原始设置。
  • 高级配置 Advanced configuration很多参数目前阶段用不到,以下仅对几个常用的参数进行说明:

    • Use zip chunks: 针对视频数据,压缩成zip格式
    • Use cache: 数据缓存
    • Image quality: 用于指定上传的图片质量,当高分辨率图片上传太慢时可以降低分辨率提速,但上一步选择从服务器读取数据的话,图片读取速度会大大提升。
    • Overlap size:把目前的数据分成N个Job进行标注时,每个Job之间重复的帧数;
    • Segment size: 把目前的数据分为N个Job,N就是这里的值,主要用于图片太多,需要多个人一起标注的场景,每个人标一个Job,用此参数将数据分块;
    • Start frame: 采集的视频数据可能并不需要全部标注,比如目标帧可能仅仅只是其中第20-100帧,此参数用于设置从第几帧开始标;
    • Stop frame: 跟Start frame对应,这是结束帧位置;
    • Frame step: 可能不需要每帧都标,比如每隔M帧标一帧,M即是此处的值;
    • 其他参数暂不需要,详见官方文档。

2.2 Task列表页面

  • 创建好的Task长这样
    • Actions中展开:
      • Upload annotations: 支持标签导入,比如在Crowdhuman公开数据集已有的人头和人体标签前提下,想继续标注此数据集中的车辆,用于人头、行人、车三类目标的训练集,就可以使用此功能将人头和人体标签导入,仅用CVAT标注车辆标签即可。具体操作移步本教程第5章“标签导入”。
      • Export task dataset: 下载数据集标签到本地。
      • Automatic annotation: 半自动标注,CVAT支持用预训练模型对数据集在线生成标签,如此可以大大提升标注效率,详见第6章“半自动标注”。
      • Export task: 支持导入或导出一个已有的task, 详见此处
      • Move to project: 顾名思义,移动本task到另一个project中,移动过程中出现的标签属性变化和标签不匹配问题需要重新对应修改标签设置。
      • Delete: 删除本task。

2.3 Task内页

  • Task内页如下图所示,在Task内页中,可以对task的一些基本信息进行修改,也可以对任务进行分配,多人协同标注时,查看标注进度等。说明如下:
      1. 任务名称,可修改
      2. 此Actions同2.2节的Actions说明
      3. Issue Tracker,一般不用,暂时不管
      4. 标签设置,可修改
      5. 将此Task分配给某个成员
      6. 将此Job分配给某个成员进行标注
      7. 确定质检员,由谁来质检标注数据质量

2.4 标注页面

  • 点击相应Job,就会进入标注界面。界面分为5个部分,如下图所示:
    • Header: 主要包括CVAT的几个基本功能导航,以及当前用户相关设置, 基本功能包括Project\Tasks\Cloud Storages\Models,分别表示标注项目、标注任务、云存储、预训练模型。
    • Top panel: 主要包括图片导航(选择图片)、Menu、保存、撤销/恢复、全屏、标注结果统计、mode切换。
    • Workspace: 工作区,图像所在区域。
    • Controls sidebar: 控制相关命令侧边栏,包括设置图片大小、位置,创建shape、编辑tracks等标注基本功能。
    • Object sidebar: 标签相关侧边栏,包括两个选项(objects和labels),还有 appearance 相关设置(就是各类标签的展示颜色、透明度等)。

  • Navigation 相关
    • CVAT提供选择上一帧、下一帧、以step为单位,跳转至下(上)一帧,顺序播放每一帧、跳转至开始、结尾帧等功能。
    • 选中帧后,要选择图像的位置以及缩放有以下几个基本操作:
      • 移动图像/选择中心位置:使用第一张图的选项。
      • 另外两个功能是:使图像适应屏幕大小/选择一块区域放大。

2.5 标注小技巧

  • 标注过程中的快捷键可以省很多力气,以下是比较常用的几个,更多请见官方文档此处
    • 保存: Ctrl + S
    • 删除: Delete
    • 缩放:鼠标滚轴,往上放大,向下缩小
    • 拖动:鼠标左键点击并拖动图片,调整位置
    • 下一帧:F
    • 上一帧:D
    • 向后跳十张: Shift+Ctrl + V
    • 向前跳十张: Shift+Ctrl + C
    • 复制框:Ctrl + C
    • 粘贴框:Ctrl + V
    • 重复上一次标注框参数:N,比如连续标一类头框,那么每次重复标时按N可以直接标下一个头框
    • 对选定对象连续标注接下来所有帧内此对象:Ctrl + B
    • 转换标签:Ctrl+(0..9)

3.下载标注结果

有关CVAT安装及图片标注使用详细教程[含踩坑记录]的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐