首页 > 其他分享 >关键点检测(1)——标注关键点检测数据(labelme和CVAT)

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

时间:2024-07-21 23:08:41浏览次数:12  
标签:CVAT 创建 检测 可以 点击 图像 关键点 标注

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

   在开始数据标注之前,选择一款合适的标注工具至关重要。目前市面上有多种标注工具可供选择,如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,每一个关键点必须且只能落入一个框中,不落入第二个框中。

 

标签:CVAT,创建,检测,可以,点击,图像,关键点,标注
From: https://www.cnblogs.com/wj-1314/p/18313325

相关文章

  • 神经架构搜索:目标检测的未来
    神经架构搜索:目标检测的未来在深度学习领域,神经架构搜索(NeuralArchitectureSearch,NAS)是一种自动化设计神经网络结构的技术。它通过机器学习的方法来探索最优的网络结构,从而提高模型的性能。在目标检测任务中,NAS的应用尤为显著,因为它可以帮助研究人员和开发者快速找到适......
  • 追踪动态世界:视频流中的目标跟踪及其与目标检测的紧密联系
    追踪动态世界:视频流中的目标跟踪及其与目标检测的紧密联系在视频监控、自动驾驶、体育分析等领域,视频流中的目标跟踪是一项至关重要的技术。它不仅能够识别视频中的物体,还能在视频帧序列中持续追踪这些物体的位置和运动。目标跟踪与目标检测密切相关,目标检测是跟踪过程的起......
  • 超好用!空号检测接口使用与调用示例
    空号检测接口是通过调用第三方提供的API接口,实现对手机号码是否为空号的检测服务。它可以帮助快速、准确地识别出无效号码,避免无效的通信,提高通信效率,适用于短信群发、电话营销、注册验证等场景。一、在选择空号检测接口时,你可以考虑以下因素:1.数据准确性:确保接口提供的检......
  • 探索未知:无监督目标检测的前沿之旅
    探索未知:无监督目标检测的前沿之旅在机器视觉领域,目标检测是核心任务之一,它涉及识别图像中的对象并确定它们的位置。传统的目标检测方法依赖于大量标注数据,这不仅成本高昂,而且限制了模型在新场景中的应用能力。无监督目标检测(UnsupervisedObjectDetection)作为一种新兴技......
  • 网络编程必备:Python中Paramiko和FTP的文件夹与文件检测技巧
    哈喽,大家好,我是木头左!Paramiko是一个用于进行SSH连接的Python库,它支持以加密的形式进行远程命令执行、文件传输等操作。另一方面,FTP即文件传输协议,用于在网络上进行文件的传输。Python中的ftplib模块允许实现FTP客户端的功能,包括列出目录内容、上传和下载文件等。检查文件夹......
  • Python中的Paramiko与FTP文件夹及文件检测技巧
    哈喽,大家好,我是木头左!Python代码的魅力与实用价值在当今数字化时代,编程已成为一种不可或缺的技能。Python作为一种简洁、易读且功能强大的编程语言,受到了全球开发者的喜爱。它不仅适用于初学者入门,也为专业开发者提供了丰富的库和框架,以解决各种复杂问题。在这篇文章中,将重点......
  • 驱动LSM6DS3TR-C实现高效运动检测与数据采集(10)----融合磁力计进行姿态解算
    驱动LSM6DS3TR-C实现高效运动检测与数据采集.10--融合磁力计进行姿态解算概述视频教学样品申请源码下载硬件准备DataLogFusion磁力计校准过程初始化磁力计MFX_Arithmetic_Init卡尔曼滤波算法演示概述MotionFX库包含用于校准陀螺仪、加速度计和磁力计传感器的例程。......
  • <数据集>学生课堂行为识别数据集<目标检测>
    数据集格式:VOC+YOLO格式图片数量:13899张标注数量(xml文件个数):13899标注数量(txt文件个数):13899标注类别数:8标注类别名称:['js','tt','dk','zt','dx','zl','jz','xt']#举手   js   #抬头听课   tt   #低头看书   ......
  • 豪猪中的唤醒词检测
    我正在尝试在python中实现豪猪唤醒词,并按照此处的说明进行操作,我有以下代码:importpvporcupine###Porcupinewakewordhandle=pvporcupine.create(keywords=['computer','jarvis'])defget_next_audio_frame():passwhileTrue:keyword_index......
  • 深度学习印章检测(自动生成数据集+yolov5)
    目录1概述1.1简介1.2演示2软件安装3数据集3.1生成随机字符3.2生成印章图片3.3生成word文件3.4Word转PDF文件3.5PDF转图像4labelme标记5yolov5训练1概述本文将从代码层面的角度来剖析印章数据集如何自动生成,以及如何进行训练与测试,如果希望获取直......