实战Detectron2— 训练人体关键点检测
Detectron2作为一个成熟的目标检测框架,其官方的tutorials有详细的文档说明。本文按照官方指导文档基于COCO2017数据集,使用一个GPU,型号为 TITAN RTX(24G显存),花费了4天左右的时间训练了人体关键点检测模型。
步骤如下:
1. Detectron2 代码库安装
按照官方的 install指导命令,安装十分简单。我是采用本地源代码安装方式。
git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2
上面的第一条命令运行后本地会从github上clone一个代码库目录结构如下
detectron2
├── configs
├── datasets
├── demo
├── detectron2
├── dev
├── docker
├── docs
├── GETTING_STARTED.md
├── INSTALL.md
├── LICENSE
├── MODEL_ZOO.md
├── output
├── projects
├── README.md
├── setup.cfg
├── setup.py
├── tests
└── tools
2.人体关键点数据集下载
首先打开COCO数据集官方下载链接。
正常打开后见下图橙色框标注的Images和Annotations分别表示图片和标注文件。
对于Images一栏的绿色框需要下载三个大的文件,分别对应的是训练集,验证集和测试集:
2017 Train images [118K/18GB]
2017 Val images [5K/1GB]
2017 Test images [41K/6GB]
对于Annotations一栏绿色框需要下载一个标注文件:
2017 Train/Val annotations [241MB] 如果将这个文件解压后,可以得到如下目录结构:
其中的person_keypoints_train2017.json 和person_keypoints_val2017.json 分别对应的人体关键点检测对应的训练集标注文件是我们真正需要的文件。
annotations
├── captions_train2017.json
├── captions_val2017.json
├── instances_train2017.json
├── instances_val2017.json
├── person_keypoints_train2017.json 人体关键点检测对应的训练集标注文件
└── person_keypoints_val2017.json 人体关键点检测对应的验证集标注文件
在本地代码库datasets目录下面新建立coco目录
将上面的训练集,验证集以及标注文件放到本地代码的coco目录下面
datasets
├── coco
│ ├── annotations
│ ├── test2017
│ ├── train2017
│ └── val2017
3. 环境配置与模型训练
训练时先进入到代码库的detectron2目录下面
python tools/train_net.py --config-file ./configs/COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.0025
经过4天左右的训练时间,如果顺利会得到如下训练结果:
[07/19 03:54:17] d2.evaluation.evaluator INFO: Total inference pure compute time: 0:05:37 (0.067663 s / iter per device, on 1 devices)
[07/19 03:54:17] d2.evaluation.coco_evaluation INFO: Preparing results for COCO format ...
[07/19 03:54:17] d2.evaluation.coco_evaluation INFO: Saving results to ./output/inference/coco_instances_results.json
[07/19 03:54:19] d2.evaluation.coco_evaluation INFO: Evaluating predictions with unofficial COCO API...
[07/19 03:54:19] d2.evaluation.fast_eval_api INFO: Evaluate annotation type *bbox*
[07/19 03:54:19] d2.evaluation.fast_eval_api INFO: COCOeval_opt.evaluate() finished in 0.77 seconds.
[07/19 03:54:19] d2.evaluation.fast_eval_api INFO: Accumulating evaluation results...
[07/19 03:54:19] d2.evaluation.fast_eval_api INFO: COCOeval_opt.accumulate() finished in 0.10 seconds.
[07/19 03:54:19] d2.evaluation.coco_evaluation INFO: Evaluation results for bbox:
| AP | AP50 | AP75 | APs | APm | APl |
|:------:|:------:|:------:|:------:|:------:|:------:|
| 55.244 | 83.255 | 60.158 | 36.447 | 63.029 | 72.722 |
[07/19 03:54:20] d2.evaluation.fast_eval_api INFO: Evaluate annotation type *keypoints*
[07/19 03:54:25] d2.evaluation.fast_eval_api INFO: COCOeval_opt.evaluate() finished in 5.44 seconds.
[07/19 03:54:25] d2.evaluation.fast_eval_api INFO: Accumulating evaluation results...
[07/19 03:54:25] d2.evaluation.fast_eval_api INFO: COCOeval_opt.accumulate() finished in 0.03 seconds.
[07/19 03:54:25] d2.evaluation.coco_evaluation INFO: Evaluation results for keypoints:
| AP | AP50 | AP75 | APm | APl |
|:------:|:------:|:------:|:------:|:------:|
| 63.696 | 85.916 | 69.254 | 59.249 | 72.083 |
[07/19 03:54:25] d2.engine.defaults INFO: Evaluation results for keypoints_coco_2017_val in csv format:
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: Task: bbox
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: AP,AP50,AP75,APs,APm,APl
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: 55.2440,83.2547,60.1577,36.4470,63.0290,72.7224
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: Task: keypoints
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: AP,AP50,AP75,APm,APl
[07/19 03:54:25] d2.evaluation.testing INFO: copypaste: 63.6964,85.9162,69.2536,59.2487,72.0832
最终在detectron2/output 目录下生成了如下模型文件:
config.yaml inference model_0034999.pth model_0084999.pth model_0134999.pth model_0184999.pth model_0234999.pth
events.out.tfevents.1626131087.ubuntu.23424.0 last_checkpoint model_0039999.pth model_0089999.pth model_0139999.pth model_0189999.pth model_0239999.pth
events.out.tfevents.1626131279.ubuntu.24690.0 log.txt model_0044999.pth model_0094999.pth model_0144999.pth model_0194999.pth model_0244999.pth
events.out.tfevents.1626218003.ubuntu.28190.0 metrics.json model_0049999.pth model_0099999.pth model_0149999.pth model_0199999.pth model_0249999.pth
events.out.tfevents.1626218189.ubuntu.29394.0 model_0004999.pth model_0054999.pth model_0104999.pth model_0154999.pth model_0204999.pth model_0254999.pth
events.out.tfevents.1626218366.ubuntu.30715.0 model_0009999.pth model_0059999.pth model_0109999.pth model_0159999.pth model_0209999.pth model_0259999.pth
events.out.tfevents.1626218400.ubuntu.30986.0 model_0014999.pth model_0064999.pth model_0114999.pth model_0164999.pth model_0214999.pth model_0264999.pth
events.out.tfevents.1626218466.ubuntu.31493.0 model_0019999.pth model_0069999.pth model_0119999.pth model_0169999.pth model_0219999.pth model_0269999.pth
events.out.tfevents.1626218502.ubuntu.31791.0 model_0024999.pth model_0074999.pth model_0124999.pth model_0174999.pth model_0224999.pth model_final.pth
events.out.tfevents.1626262859.ubuntu.20243.0 model_0029999.pth model_0079999.pth model_0129999.pth model_0179999.pth model_0229999.pth
我们以最后一次生成的模型做推理,测试下训练的模型效果,从下面三张图片看起来,非常棒的.
cd ./detectron2/demo
python demo.py --config-file ../configs/COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml --output ./output --input ./keypoints_input/000000000552.jpg ./keypoints_input/000000001152.jpg ./keypoints_input/000000581918.jpg --opts MODEL.WEIGHTS ../output/model_final.pth
实战Detectron2— 训练人体关键点检测相关推荐
- 人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码
人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码 目录 人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码 1.人体姿态估计2D Pose方法 2.人体姿 ...
- VideoPose3D:基于视频的3D人体关键点检测
1. 概述 Dario Pavllo等人于2019年提出了VideoPose3D模型,旨在把输入视频转换成人体各关键点相对于根关节的相对三维位置.为了实现这一目的,作者采取的是两步走的策略.首先要利用 ...
- 基于MindStudio的3D人体关键点检测
3D人体关键点检测 1 任务介绍 人体关键点检测插件基于 MindX SDK 开发,在昇腾芯片上进行人体关键点和骨架检测,将检测结果可视化并保存.输入一幅图像,可以检测得到图像中所有行人的关键点并连接 ...
- OpenMMLab-AI实战营第二期——2-1.人体关键点检测与MMPose
文章目录 1. 人体姿态估计的介绍和应用 2-1. 2D姿态估计概述 2.1 任务描述 2.2 基于回归 2.3 基于热力图 2.3.1 从数据标注生成热力图(高斯函数) 2.3.2 使用热力图训练模 ...
- 基于Tkinter和百度Aip的人体关键点检测
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-104.html 最近某些项目需要用到人体姿势识别.当前有很多著 ...
- 基于深度学习目标检测和人体关键点检测的不健康坐姿检测
基于深度学习目标检测和人体关键点检测的不健康坐姿检测 代码下载链接:下载地址 0.实验结果
- 基于百度AL平台人体检测实现人体关键点检测代码
本文通过OpenCV模块调用摄像头,利用百度开放的人体关键点检测API,实现了实时对人体的关键点检测. 一.百度API获取 使用百度的API,首先要在百度AI的官网上注册帐号,然后在人体关键点识别功能 ...
- 人体姿态估计(人体关键点检测)分类与经典方法分析(附GitHub地址)
人体姿态估计(Human Pose Estimation)也称为人体关键点检测(Human Keypoints Detection).对于人体姿态估计的研究,大致可做如下分类. 1. RGB vs R ...
- OpenPose实现人体姿态估计(人体关键点检测)
转载:Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)_不脱发的程序猿-CSDN博客_python人体姿态识别
- Pytorch+Python实现人体关键点检测
用Python+Pytorch工程代码对人体进行关键点检测和骨架提取,并实现可视化. 使用背景: 物体检测为许多视觉任务提供动力,如实例分割.姿态估计.跟踪和动作识别.它在监控.自动驾驶和视觉答疑中有 ...
最新文章
- 经典排序算法之直接选择排序
- Ajax-简单的HelloWorld实例,使用了XMLHttpRequest(two)
- iOS快速开发框架Bee-Framework应用和解析(三) - Message, Model, Signal
- Android中提示:Service Intent must be explicit:Intent
- docker迁移与备份
- linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
- html lineheight div,html – Chrome上的文本输入:line-height似乎有最小值
- css如何让背景透明,文字不透明
- 2022年JDK-8下载方法
- 属于计算机审计中测试信息系统的方法是,审计信息化问题浅析论文
- 外贸网站 | 在NameCheap或NameSilo购买网站域名
- 下划线与连字符(中划线)
- 衣带渐宽终不悔为伊消得人憔悴,土蜂蜜科技终成正果
- 树莓派4b ubuntu 设置屏幕热插拔
- 计算机考试93781试题及答案,黄南州中小学教师2016年招聘笔试加分人员名单(3 )...
- 使用一片通用四运放芯片LM324组成电路(采用Multisim 进行的仿真)
- 晋南讲堂之Spring—(二) IOC和DI
- win10彻底关闭自动更新方法步骤:
- 第五届湖南省机器人大赛暨第十四届湖南省智能汽车大赛名单
- 【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取
热门文章
- excel合并两列内容_办公教程:Excel如何快速将两列内容合并成一列
- C#开发串口调试助手的详细教程
- python运行报错,系统找不到指定的文件
- 博士申请 | 香港科技大学(广州)王林助理教授招收计算机视觉博士生
- 华中师范大学计算机专业有博士点吗,【考博】华中师范大学有没有计算机方面的博士点?...
- 如何在中国大陆三大运营商申请公网IPV4地址
- 计算机报名照片像素大小,证件照尺寸怎么修改-三种方法搞定证件照要求,让你不用再为图像分辨率和大小发愁!...
- NRF52832-DFU升级-蓝牙抓包数据解析
- 猴子摘香蕉问题python_猴子搬香蕉问题的C语言解
- 2022年5月4号SSM框架整合学习一: