全网最详细yolo-pose数据集制作

  • 导读
  • 标注工具
  • 导出数据集
  • 附上一个可视化的代码

导读

最近在搞yolo-pose姿态识别算法,现成的模型已经挺好用了,但是在某些特定的场景下,还是识别不准。所以想着自己搞搞数据,查了网上相关的博客,基本思路都是先按照coco格式来标,然后再转化成yolo格式。不废话,直接说咋干。

标注工具

这里推荐使用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个点,分别为:“nose”,“left_eye”, “right_eye”,“left_ear”, “right_ear”,“left_shoulder”, “right_shoulder”,“left_elbow”, “right_elbow”,“left_wrist”, “right_wrist”,“left_hip”, “right_hip”,“left_knee”, “right_knee”,“left_ankle”, “right_ankle”。


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

创建好的任务列表如下,点击OPEN按钮,就可以打开任务,进行标注:

点击Job,就可以进入到标注界面:

标注界面如下,如果非连续帧,可以选择shape按钮进行单帧标注。如果是视频连续帧,可以选择track按钮进行连续帧标注,按照coco数据集的顺序,把17个点按顺序进行标注,顺序不能错。如果点被遮挡了,可以在这个点上,右键,修改为遮挡属性,即coco数据集中V的值等于1,如果点被截断了,可以在这个点上,右键,修改为截断属性,即coco数据集中V的值等于0,其他可见的点V值都为2:

导出数据集

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

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

附上一个可视化的代码

网上搜到的代码,好多都有问题。。我也是参照别人的代码,改了改,遍历目录下所有的图片,逐个进行可视化。

# -*- coding:utf-8 -*-
import os
import numpy as np
from pycocotools.coco import COCO
import cv2def plow_show(imgIds):img = coco.loadImgs(imgIds)[0]matImg = cv2.imread('%s/%s' % (img_prefix, img['file_name']))annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)# 通过注释的id,得到注释的信息anns = coco.loadAnns(annIds)for ann in anns:kp = np.array(ann['keypoints'])x = kp[0::3]y = kp[1::3]v = kp[2::3]for sk in sks:c = aColor[np.random.randint(0, 4)]# 画连接线if np.all(v[sk] > 0):cv2.line(matImg, (round(x[sk][0]), round(y[sk][0])), (round(x[sk][1]), round(y[sk][1])), c, 1)# 画关键点for i in range(x.shape[0]):c = aColor[np.random.randint(0, 4)]if np.all(v[i] > 0):cv2.circle(matImg, (int(x[i]), int(y[i])), 2, c, lineType=1)cv2.imshow("show", cv2.resize(matImg, (1280, 720)))cv2.waitKey(0)if __name__ == '__main__':annFile = r'C:\Users\37452\Downloads\123\annotations\person_keypoints_default.json'img_prefix = r'C:\Users\37452\Downloads\123\images'sks = np.array([[16, 14], [14, 12], [17, 15], [15, 13], [12, 13], [6, 12], [7, 13], [6, 7],[6, 8], [7, 9], [8, 10], [9, 11], [2, 3], [1, 2], [1, 3], [2, 4], [3, 5], [4, 6], [5, 7]]) - 1aColor = [(0, 255, 0, 0), (255, 0, 0, 0), (0, 0, 255, 0), (0, 255, 255, 0)]coco = COCO(annFile)# getCatIds(catNms=[], supNms=[], catIds=[])catIds = coco.getCatIds(catNms=['person']) # getImgIds(imgIds=[], catIds=catIdfor imgIds in (range(1, len(os.listdir(img_prefix)) +1)):plow_show(imgIds)

yolov8-pose姿态估计数据集制作(一)相关推荐

  1. 2D与3D人体姿态估计数据集(统计)

    2D与3D人体姿态估计数据集(统计) 图像级2D单人数据集 Leeds Sports Pose (LSP) Dataset Frames Labeled in Cinema (FLIC) Datase ...

  2. 使用Python分析姿态估计数据集COCO的教程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 当我们训练姿势估计模型,比较常用的数 ...

  3. 物体姿态估计数据集介绍

    1.LINEMOD数据集: 2012发布,严重杂乱场景下的无纹理物体. 15件无纹理家居用品,具有明显的颜色.形状和大小. 2.Linemod-Occluded数据集: 3.T-LESS数据集: 30 ...

  4. 人脸关键点检测和头部姿态估计数据集整理

    1. 300W数据集简介 300W数据集是一个非常通用的人脸对齐数据集,也是近年来凡paper,都要出指标比对的必然数据集. 下载链接:https://ibug.doc.ic.ac.uk/resour ...

  5. 目标检测算法——人体姿态估计数据集汇总(附下载链接)

  6. 论文阅读笔记--Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods 人体姿态估计综述

    趁着寒假有时间,把之前的论文补完,另外做了一点点笔记,也算是对论文的翻译,尝试探索一条适合自己的论文阅读方法. 这篇笔记基本按照原文的格式来,但是有些地方翻译成中文读起来不太顺,因此添加了一些自己的理 ...

  7. 人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码

    人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码 目录 人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码 1.人体姿态估计2D Pose方法 2.人体姿 ...

  8. Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)

    目录 1.人体姿态估计简介 2.人体姿态估计数据集 3.OpenPose库 4.实现原理 5.实现神经网络 6.实现代码 1.人体姿态估计简介 人体姿态估计(Human Posture Estimat ...

  9. CVPR2019|微软、中科大开源基于深度高分辨表示学习的姿态估计算法

    作者 | 周强(CV君) 来源 | 我爱计算机视觉(公众号id:aicvml) 如何挑战百万年薪的人工智能! https://edu.csdn.net/topic/ai30?utm_source=cs ...

最新文章

  1. 如果现在只能用汇编和 Goto 编程......
  2. IBM大裁70% 员工,撕掉了国内大批伪AI企业最后一块遮羞布!
  3. 【数学与算法】奇异矩阵、奇异值、奇异值分解、奇异性
  4. SAP ABAP常用正则表达式大全
  5. java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
  6. matlab2018b中svm无法运行,关于matlab2018a版本错误使用 svmclassify 分类器
  7. java中typeof_JS typeof的用法
  8. linux如何检查uwsgi安装成功,linux安装uwsgi出错
  9. 江苏计算机云服务,云呐|江苏企业机房环境动环监控服务商系统智能监测
  10. How do I filtered TextBox with an Integer Data Type
  11. php基础教程 第五章,php基础教程——5数据库总结_PHP教程
  12. 文件批量改名-bat操作
  13. 傲梅轻松备份linux,傲梅轻松备份官方下载_傲梅轻松备份最新版_傲梅轻松备份5.7免费版-华军软件园...
  14. gpx读写java_GPX Parser for Java?
  15. SmartNIC — Overview
  16. NBMA网络OSPF路由协议配置
  17. iphone同步android短信,如何从iPhone导入短信到Android手机?
  18. 人工智能——线性回归(Python实现)
  19. Jupyter Notebook 修改默认打开的文件夹的位置 jupyter_notebook_config.py改不了默认配置文件更改
  20. 最新中国移动光猫改桥接方式(中兴ZXHN F663NV9)地域:贵州 适用于动态超密

热门文章

  1. python中unicode编码怎么用_详解Python2.x中对Unicode编码的使用
  2. iden中html中表格自动生成,JS实现动态生成html table表格的方法分析
  3. EVPN L2VPN
  4. The Byzantine Generals Problem 全文要点翻译及理解
  5. Cesium教程(十三):几何形体选取
  6. Ubuntu 硬盘扩容
  7. 基于Python实现个人手机定位分析
  8. Tile推出失物招领标签,但 Find My 才是防丢技术的王者
  9. 认可放心的python培训课程
  10. python中小学生培训小学生都能学