首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

关键点检测(1)——标注关键点检测数据(labelme和CVAT)

编程知识
2024年07月21日 21:59

  关键点检测,作为计算机视觉领域的重要分支,广泛应用于人体姿态估计、面部表情识别、手部动作分析等多个场景。其核心在于从图像中准确检测并定位特定的关键点位置。然而,高效的模型训练离不开大量高质量的标注数据。本文将详细介绍关键点检测数据的标注方法,包括标注工具的选择、标注流程以及注意事项,帮助自己深入理解并掌握关键点检测数据标注的全过程。

   在开始数据标注之前,选择一款合适的标注工具至关重要。目前市面上有多种标注工具可供选择,如LabelMe、VGG Image Annotator (VIA)等。这些工具均支持关键点检测标注,但功能和易用性有所差异。例如,LabelMe提供了丰富的交互式标注界面,适合复杂场景下的多目标标注;而VIA则以其简洁的界面和灵活的配置选项受到开发者青睐。根据项目需求和个人偏好选择最合适的工具,可以显著提高标注效率。

  我这里就使用开源工具Labelme 来制作关键点检测数据集。

1 安装Labelme

  首先,我们需要安装Labelme工具,很简单,直接pip就可以。

pip install labelme

   但是请确保你已经安装了Python和pip。如果还没有安装,请先安装Python,然后再安装pip。

  然后在python环境直接输入 labelme。即可出现下面页面,即安装成功:

 

2  labelme标注关键点的流程

  在使用labelme进行标注之前,我们需要创建一个标签,用于存放物体类别名称和关键点名称。你可以在任意位置创建一个名为labels.txt的文本文件,并在其中添加你的标签名称,比如:

person,head,neck,body,hand,foot

  文件如下:

   上述内容表示我们要标注的物体类别是person,并且标注的关键点有head, neck, body, hand 和 foot。(具体你想标注什么,都取决于自己的需求,按照自己的要求写即可,也不可以这样做,直接启动即可)

  现在我们就可以使用Labelme来标注关键点了,在命令行中输入以下命令启动Labelme:

labelme --labels labels.txt

   注意:labels.txt的目录一定要正确。

   Labelme将打开一个图形界面。点击界面左侧的Open Dir按钮,选择包含您要标注的图像的文件夹。然后,您可以在右侧看到文件夹中的图像列表。按下键盘上的A键或D键可以切换到上一张或下一张图片。

  要开始标注关键点,请右键点击图像,选择Create Point。然后,左键点击图像中要标注的关键点位置,并输入关键点的名称。例如,如果您要标注颈部的关键点,可以输入neck。重复此步骤,直到您标注完所有需要的关键点。

   注意:创建矩形框有快捷键,你也可以设置其他快捷键,比如创建关键点。

 

  完成标注后,点击界面上方的File菜单,选择Save保存标注结果。Labelme将在图像所在的文件夹中创建一个与图像同名的JSON文件,用于存储标注信息。

  我们可以查看保存标定后的数据,数据如下:

  值得一提的是,我们可以点击Open Dir打开需要标注的图像文件夹,点击File,取消保存图片数据,取消对号(这样做的目的就是减少保存图像,这样可以降低json的大小),另外也可以进行其他设置。

   

   我这里做一个对比,就是取消保存标注后的数据和不取消,大家可以看看其JSON的大小。

   其中主要是下面的差距:

 

   所以说建议取消保存图片数据。这样可以节省空间。我们从上面也看到了一个JSON文件可以节省84KB(当然这个取决于图像大小)。对于大量图像的标注任务而言,取消保存图像可以节省大量的空间。当然在一些情况下,图像可能包含敏感信息。保存图像数据可能涉及隐私问题。取消保存图像也可以避免泄露敏感信息的风险。最后就是不保存图像可以减少标注过程中的数据处理时间。

  那么取消保存图片数据意味着在以后使用标注数据时需要同时保存原始图像数据,以便在需要时进行匹配。

  这里展示一下标注的效果:

  注意2:尽量让标注文件与对应的图片位于同一文件夹下,否则ImagePath将不止是文件名,可能会影响后续操作,特别是对初学者来说。

3 CVAT的简单介绍

   GitHub地址为:https://github.com/opencv/cvat

  官方说明文档:https://opencv.github.io/cvat/docs/

  部署安装就不多介绍了,我想官网的文档肯定更加清晰。 安装完成后,在浏览器中登录CVAT平台,如下图:

   CVAT的使用逻辑是,先创建一个organization(组织),在组织里创建一个project(项目),然后在project里面创建一个task(任务),创建任务时,需要创建一个可以认为是模板的东西,把人体的基本结构画出来,然后在标注的时候,直接通过挪动点的位置的方法,来进行标注。(这样某种程度上可以减少标注的时间,但前提是标注的点差异不是很大,不然全部要挪动)。

  在创建任务的时候,点击Setup Skeleton。

   比如说标注人体数据,我们可以先上传一张正面 人体全身照(做参照来设置关键点),因为是人体关键点,所以标签设置为“person”, 再选择点标注,然后绘制区域将人体的点画出来。我们总共是标注了17个点。按照coco keypoints的要求来标17个点哈。

   这个设置好之后,点击done,完成。

  然后就可以上传图像,发布任务了,点击+ 号,可以一次创建一张图,可以一次创建多张图,或者视频,创建完之后,就可以在这个页面看到刚发布的任务了。

 

   在标注完成之后,点击menu按钮,export job dataset,选择 COCO keypoints 1.0格式,点击OK即可。

 导出的数据格式只有一个json文件,后续就可以拿这个数据集来搞自己的事情了。

 

4 标注流程详解

  1. 数据准备:首先,收集并整理待标注的数据集。确保图像清晰无遮挡,关键点可见,以便于后续的标注工作。

  2. 标注规范制定:定义关键点的类型和位置,例如,在人体姿态估计任务中,可能需要标注头部、肩部、肘部、手腕、臀部、膝盖和脚踝等关键点。明确标注标准,如关键点的命名规则、坐标系选择等,以保持标注的一致性和准确性。

  3. 开始标注:使用选定的标注工具,逐一在每张图片上标注出关键点的位置。通常,标注工具会提供画布、放大镜等功能,辅助标注者精确定位。对于每个关键点,需确保其位置精确无误,必要时可利用工具提供的测量功能校正位置。

  4. 质量检查:完成初步标注后,进行质量检查,确保所有关键点都被正确标注,且无遗漏或错误。此步骤可以通过人工复查或使用自动化工具进行。

 

5 标注的注意事项

  1,标注关键点时,要先使用矩形框框出目标,再标注关键点。这样可以确保标注的准确性,避免因为目标位置不正确而导致标注错误。

  2,实际上关键点可以不用固定的顺序,但是每张图都要保持一致。也就是说如果我们在一张图像中将鼻子标注为1号点,那么在所有图像中,1号点都应该是鼻子。

  3,被遮挡的点也应标注出来。在实际应用中,有些关键点可能会被挡住,这时我们需要将其标注出来,以便在模型训练时能够考虑到这种情况。

  4,labelme无法标注关键点是否可见,默认为1.0, 在后续处理中,我们需要将其全部更改为2.0,以符合一些算法(比如YoLov8-Pose)的格式要求。

  5,每一个关键点必须且只能落入一个框中,不落入第二个框中。

 

From:https://www.cnblogs.com/wj-1314/p/18313325
本文地址: http://shuzixingkong.net/article/264
0评论
提交 加载更多评论
其他文章 网络基础 Modbus协议学习总结
协议简介 Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。 Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PL
网络基础 Modbus协议学习总结 网络基础 Modbus协议学习总结 网络基础 Modbus协议学习总结
前端快速处理几十万条数据的方式?
在前端处理大量数据时,可以采用以下几种方式来提高处理速度和性能: 数据分页:将数据分成多个页面,并按需加载。只加载当前页面的数据,而不是一次性加载全部数据。这可以减少初始加载时间和内存占用,并提高用户体验。 虚拟滚动:对于需要展示大量列表或表格数据的情况,可以使用虚拟滚动技术。虚拟滚动只渲染可见区域
MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件
MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件 「一行代码」为「新、旧项目」 添加 Identity 系统跟用户、权限管理网页后台系统 开箱即用,避免打掉重写或是严重耦合情况 Github: https://github.com/mini-softw
MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件 MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件 MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件
Java JVM——13. 垃圾回收算法
1.生存还是死亡? 在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC 才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们称为垃圾标记阶段。 那么在 JVM 中究竟是如何标记
Java JVM——13. 垃圾回收算法 Java JVM——13. 垃圾回收算法 Java JVM——13. 垃圾回收算法
AI时代你应聚焦的领域在哪里
随着AI的飞速发展,把我们带到了一个全新的时代。每个人都应该积极拥抱AI,让AI给我们提效。那不同的人群应该聚焦在哪里呢?
AI时代你应聚焦的领域在哪里
强烈推荐!!!阿里旗下10款顶级开源项目
大家好,我是晓凡 写在前面 如果你是一名Java开发者,下面说到的这些开源项目应该不陌生了。在实际工作中或多或少都用到过。 趁着周末,特地整理下阿里巴巴旗下开源的10款顶级项目 TOP10 rocketmq ① 简介 RocketMQ 是一个分布式消息中间件。专门负责在不同的软件系统之间传递消息 最
强烈推荐!!!阿里旗下10款顶级开源项目 强烈推荐!!!阿里旗下10款顶级开源项目 强烈推荐!!!阿里旗下10款顶级开源项目
【SQL】Lag/Rank/Over窗口函数揭秘,数据分析之旅
七月的夏日,阳光如火,但小悦的心中却是一片清凉与激情。在数据分析项目组的新岗位上,她仿佛找到了自己新的舞台,这里让她得以将深厚的后端技术实力与数据分析的精髓深度融合。每天,她都沉浸在业务需求的分析与数据驱动的决策之中,与业务、产品等多部门紧密合作,共同揭开数据背后的秘密,为企业的发展贡献自己的力量。
如何让 MGR 不从 Primary 节点克隆数据?
问题 MGR 中,新节点在加入时,为了与组内其它节点的数据保持一致,它会首先经历一个分布式恢复阶段。在这个阶段,新节点会随机选择组内一个节点(Donor)来同步差异数据。 在 MySQL 8.0.17 之前,同步的方式只有一种,即基于 Binlog 的异步复制,这种方式适用于差异数据较少或需要的 B