目标检测之标注工具

标签: 无 分类: 未分类 创建时间:2024-10-23 09:51:25 更新时间:2024-11-15 10:49:45

1.前言

开始我用的是 labelimg ,后来发现越来越多的其他的标注工具,于是就一一整理了下。

1.labelimg

(1)安装

1
2
3
4
5
6
# 安装
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

# 进入数据标注文件 labeldata 文件夹并启动
cd “labeldata”
labelimg images classes.txt

(2)标记图片
打开 labelimg 工具,使用矩形框进行数据标注,然后保存为 Yolo 格式。yolo 格式是txt,VOC格式是xml。

(3)保存
使用 矩形框 标注之后,点击保存,将标注好的 txt 文件保存到 labels 文件夹下。

参考文章:
【1】.13个最受欢迎的图像标注工具【机器学习】 V7、Labelbox、Scale AI、SuperAnnotate、DataLoop、Playment、Supervise.ly、Hive Data、CVAT(英特尔免费的)、LabelMe、Labelimg、VoTT(微软免费)、ImgLab
【2】.目标检测—利用labelimg制作自己的深度学习目标检测数据集 这里介绍了 labelimg 的使用
【3】.CVAT标注平台导出格式转YOLOv8格式 但是我这里的YOLO格式导出后txt里面没有标注内容,不知道为什么,因此采用了先转COCO格式,再手动代码转YOLO格式。
【4】.标注工具labelimg和cvat
【6】.LabelImg、VoTT、Labelme、CVAT四个图像标注工具的优缺点 1.LabelImg:适合轻量级、小型项目,主要用于简单的边界框标注,界面直观,易于上手。2.VoTT:适合对多种标注类型和半自动化标注有需求的项目,适合中型项目,但对系统资源要求较高。3.Labelme:适合需要灵活标注类型和自定义属性的用户,开源的特点使其适合需要定制化的项目。4.CVAT:适合大规模、多用户协作的项目,功能强大,适应复杂的标注需求,适合在服务器环境下部署和运行。

2.VoTT

VoTT是微软的一个标注工具,一个exe文件,后来我发现好像不更新了。

参考文章:
【1】.VoTT视觉目标标注工具使用笔记 1.能够标注图像,也能支持从单独视频中标志。2.使用Camshift跟踪算法对视频中的对象进行计算机辅助标记和跟踪,不用每一帧每一帧的标注。3.能够导出CNTK、tesnorflow(VOC)和YOLO等各种格式的标注数据用于训练。
【2】.探索智能标注新纪元:微软的Visual Object Tagging Tool(VoTT)
【3】.2022年10 款最佳计算机视觉开源数据标注工具 1.LABEL STUDIO;2.DIFFGRAM;3.LABELIMG;4.CVAT;5.IMAGETAGGER;6.LABELME;7.VIA;8.MAKE SENSE;9.COCO ANNOTATOR;10.DATATURKS;
【4】.视频标注工具介绍
【5】.15个值得推荐的开源免费图像标注工具 1.Makesense.ai;2.Labelme;3.Xtreme1;4.Label Studio;5.LOST;6.CVAT;7.Gromit-MPX;8.MyVision;9.LabelImg;10.Coco Annotator;11.Universal Data Tool;12.RectLabel;13.OpenLabeling;14.bbox-visualizer;15.PixelAnnotationTool;

3.Label Studio

因为我目前主要用的是 Label Studio 进行手动和自动标注,于是我就单独开出来了一篇文章 目标检测之LabelStudio,可以作为参考。

4.Make Sense

makesense.ai可以在线网页打标签,无需安装,开源使用,支持YOLO、VOCXML、VGG JSON、CSV标签导出格式,点、线、框等多种标注类型,而且还可借助已经训练好了的目标检测模型SSD辅助我们进行人工标注,数据安全保密,提高我们工作的生产力。

5.CVAT

(1)docker进行安装
能不能安装上,还真是一个大问题,因为总会卡在下载镜像这个步骤上,我总是会出现无法下载的问题,弄了很久,很久才解决了这个问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 下载仓库
git clone https://github.com/cvat-ai/cvat
# 进入目录
cd cvat
# 设置监听地址
export CVAT_HOST=192.168.1.8
# 执行安装并启动
docker compose up -d
# 创建超级管理员用户
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'

# 停止
docker-compose down

(2)修改默认端口
默认的端口是 8080,要修改默认的端口,就需要修改 docker-compose.yml。先把docker-compose.yml复制到cvat目录后命名为docker-compose.override.yml,找到里面的 ports。或者直接修改 docker-compose.yml 的数据。

1
2
3
4
5
6
7
8
9
# 修改
traefik:
ports:
- 10002:8080

# 重新启动
docker compose -f docker-compose.override.yml up -d
#指定文件,重启CVAT
docker compose -f docker-compose.override.yml restart

(3)使用

  • 创建项目,创建了用户名密码之后,可以登陆系统,默认是 8080端口, http://192.168.1.8:10002

  • 进行图片标注,可以在左侧工具栏,找到矩形框,然后选择绘制矩形,就可以实现标注了

  • 标注完成之后,可以导出标签

  • 新建项目,然后创建Task任务,然后创建job,然后将job标注的东西导出,弄完之后再导出。我感觉这样有些累赘了,因为要是一个任务中,我想增加一个图片,就不太好弄了。

参考文章:
【1】.CVAT标注工具—最新安装部署-2023-04-03
【2】.Installation Guide 这是官方的操作指南
【3】.cvat标注工具 docker cvat标注工具分配任务 介绍了cvat的相关的界面操作
【4】.[常用工具] cvat安装与使用指北 这里也基本上是一个官方的翻版,配置了其他机器访问。配置了共享目录。
【5】.CVAT安装及图片标注使用详细教程[含踩坑记录] 这里有说明如何使用cvat。
【6】.2.CVAT—导入导出数据集并上传注释
【7】.CVAT 用户指南 这里有各个细节按钮的说明的地方。
【8】.目标检测数据集标注工具 CVAT 使用方法 这里创建了项目、创建了任务,创建了job,将项目作为数据集,可以通过项目导出整个的数据集。还有就是这里还做了不少的标注,这个倒是可以参考的。

问题:

1.Invalid interpolation format for “no_proxy” option in service “x-backend-env”: “clickhouse,grafana,vector,nuclio,opa,${no_proxy:-}”

【解决方案】
这个问题可能就是因为 docker-compose 版本的问题导致的。

1
2
3
sudo yum install docker-compose-plugin
# 验证
docker compose version
参考文章:
【1】.Execution error ‘docker-compose up -d’ 这里说了一个升级版本的事情
【2】.Install using the repository 安装方法
【3】.docker-compose: 未找到命令的解决方法

2.error pulling image configuration: Get “https://production.cloudflare.docker.com/registry-v2

【尝试方案】
(1) 尝试方案,就是重新修改docker镜像的地址,改为了阿里云的地址,结果不行。

(2) 尝试修改 /etc/resolv.conf,增加了 阿里云的DNS,然后执行:systemctl restart systemd-resolved 重启

1
2
nameserver 223.5.5.5
nameserver 8.8.8.8

(3) 尝试修改 docker-compose.yml,在每一个镜像下面增加 阿里云的镜像地址,这个怎么配置都不行,后来放弃了。

1
2
environment:
- DOCKER_REGISTRY_MIRROR=https://9v4lr2nl.mirror.aliyuncs.com/

(4) 阿里云 的镜像也不行了,可以使用:docker run hello-world 测试镜像地址有没有用。然后我还是修改了镜像地址,结果也还是没有用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerpull.com",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.awsl9527.cn"
]
}
EOF

# 重启
systemctl daemon-reload
systemctl restart docker

【解决方案】
其实尝试了这么多,最后还是会报错,但是实际上最后经过多轮尝试之后,竟然安装成功了。

参考文章:
【1】.Docker CentOS7 - error pulling image configuration
【2】.docker拉取镜像报错:docker: error pulling image configuration: Get https://production.cloudflare.docker.com vim /etc/docker/daemon.json 将这个文件里面的内容清空替换成,多个镜像地址,可以了。
【3】.目前国内可用Docker镜像源汇总(截至2024年8月) 这里换了镜像加速列表
【4】.docker pull error pulling image configuration 我们需要检查从哪个Docker镜像仓库拉取镜像。通常,我们使用Docker Hub作为默认镜像仓库。你可以使用以下命令确认Docker Hub是否可用:docker run hello-world
【5】.Docker Compose
【6】.docker compose换源 在上述配置中,我们通过DOCKER_REGISTRY_MIRROR环境变量设置了阿里云镜像源的地址,xxxxxx需要替换为你的阿里云镜像源地址。这个没有用。
【7】.拉取 Dockerhub 镜像,无法连接 Cloudflare 修改 DNS 地址;本地与服务器时间偏差过大;配置镜像加速。Cloudflare 的 IP 被禁

4.无法从网站上提取文件

导出文件的时候,就出现了这个问题

【解决方案】
在一台电脑上进行导出的时候,会弹出迅雷,后来我换了一个浏览器,就没有这个问题了。

5.500 (Internal Server Error)

创建任务的时候,总是报这个错误,真是挺烦的。

参考文章:
【1】.500 (Internal Server Error)

6.Roboflow

Roboflow网站,是专门为 YOLOv8设计的自动化数据工具。后来我去看了下,好像不太好用,本来我想着要去搜索数据的,但是没有好的数据集,但是能进行数据标注和格式下载。

参考文章:
【1】.Roboflow Datasets 您现在可以使用 Roboflow 来组织、标记、准备、版本化和托管数据集以训练 YOLOv5 模型。如果您公开工作空间,Roboflow 可以免费与 YOLOv5 一起使用。
【2】.用YOLOv8推荐的Roboflow工具来训练自己的数据集 Roboflow是一款专为YOLOv8设计的自动化训练数据工具,它为YOLOv8提供了一种更便捷、更快速的方式来准备训练数据。它能够自动从开发者提供的原始图像数据中提取所需的信息,并将其转换为YOLOv8可以直接使用的格式。Roboflow还提供了一种独特的标记方式,让开发者更轻松地为图像中的物体设定标签,以便YOLOv8能够更有效地识别它们。本文将为大家介绍如何使用Roboflow来训练YOLOv8自定义数据集。本文还提供了数据导出、模型训练以及预测的方法。
【3】.深度学习(10)之Roboflow 使用详解:数据集标注、训练 及 下载

7.LabelU

这个工具有些不好用,就是当我用测试页面进行测试的时候,我始终找不到哪里可以导出数据,直到我注册了账号,然后用了在线的标注,最后才出来了一个标注完成按钮,点击标注完成,就可以退出标注,然后有一个导出选项,可以选择导出数据。

而且这个工具导出功能,只包含了一个json文件,没有包含数据,无法转成 yolo 的格式。导出的json是Label U 标准格式,包含任务id、标注结果、url、fileName字段。

参考文章:
【1】.labelu 开源的多模态数据标注工具。
【2】.产品简介 LabelU是一个开源的数据标注工具,它可以帮助用户快速、准确、高效地对数据进行标注,从而提高机器学习模型的性能和质量。
【3】.安装 这是本地部署的步骤。
【4】.小小视频-文本标注,LabelU轻松拿下! 首先,得承认,LabelU可能不是专业数据标注团队的首选,毕竟它没有那些花里胡哨的协同标注、团队管理功能。但是,对于那些算法工程师、开发者、大学生,特别是那些想要自己动手丰衣足食的朋友们,LabelU简直就是个宝藏工具!
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。