【DSW Gallery】基于Top Down的关键点检测示例

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以关键点检测为例,为您介绍如何在PAI-DSW中使用EasyCV。

直接使用

请打开基于Top Down的关键点检测示例,并点击右上角 “ 在DSW中打开” 。

image.png

EasyCV关键点检测-TOP-DOWN

  关键点检测任务是计算机视觉任务领域的基础任务之一,包括人脸关键点、人体关键点以及特定物体(如手掌)关键点检测等,在姿态估计、行为识别、人机交互、虚拟现实以及无人驾驶等领域有重要的应用价值。

  本文将介绍如何在pai-dsw基于EasyCV快速进行人体关键点检测模型的训练和推理。

运行环境要求

PAI-Pytorch 1.7/1.8镜像, GPU机型 P100 or V100, 内存 32G

安装依赖包

注:在PAI-DSW docker中无需安装相关依赖,可跳过此1,2步骤, 在本地notebook环境中执行1,2 步骤安装环境

1、获取torch和cuda版本,并根据版本号修改mmcv安装命令,安装对应版本的mmcv和nvidia-dali

import torch
import os
os.environ['CUDA']='cu' + torch.version.cuda.replace('.', '')
os.environ['Torch']='torch'+torch.version.__version__.replace('+PAI', '')
!echo $CUDA
!echo $Torch
[2023-02-03 16:42:27,634.634 dsw-16577-67c64db7b-kslkp:5077 INFO utils.py:30] NOTICE: PAIDEBUGGER is turned off.
cu101
torch1.8.2
# install some python deps
! pip install --upgrade tqdm
! pip install mmcv-full==1.4.4 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
! pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl

2、安装EasyCV算法包 注:在PAI-DSW docker中预安装了pai-easycv库,可跳过该步骤,若训练测试过程中报错,尝试用下方命令更新easycv版本

#pip install pai-easycv
! echo y | pip uninstall pai-easycv easycv
!pip install pai-easycv
from easycv.apis import *

正式开始

数据准备

本案例我们提供了小型关键点检测的数据集,以便你快速跑通,你可以下载链接数据

图片文件夹结构示例如下, 文件夹路径为./pose

pose/
├── images
    ├── 0001.jpg
    ├── 0002.jpg
    ├── 0003.jpg
    |...
└── train_200.json
└── val_20.json

 执行如下命令下载解压

! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/configs/keypoint/pose_coco.tar.gz && tar -xpf pose_coco.tar.gz

训练模型

这个demo中我们采用litehrnet作为主干网络去进行训练

# 下载config文件
! wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/configs/keypoint/litehrnet_30_coco_384x288.py 

为了缩短训练时间,打开配置文件 litehrnet_30_coco_384x288.py,修改total_epoch参数为10, 每隔1次迭代打印一次日志。

# runtime settings
total_epochs = 10
# log config
log_config=dict(interval=1)
# 查看easycv安装位置
import easycv
print(easycv.__file__)
/home/pai/lib/python3.6/site-packages/easycv/__init__.py
!python -m easycv.tools.train litehrnet_30_coco_384x288.py --work_dir work_dir/pose/litehrnet_30_coco

模型导出

# 查看训练产生的pt文件
! ls  work_dir/pose/litehrnet_30_coco/*pth
work_dir/pose/litehrnet_30_coco/CoCoPoseTopDownEvaluator_AP_best.pth
work_dir/pose/litehrnet_30_coco/epoch_10.pth
! python -m easycv.tools.export  litehrnet_30_coco_384x288.py work_dir/pose/litehrnet_30_coco/CoCoPoseTopDownEvaluator_AP_best.pth work_dir/pose/litehrnet_30_coco/export_best.pth
[2023-02-03 18:20:24,874.874 dsw-16577-67c64db7b-kslkp:6643 INFO utils.py:30] NOTICE: PAIDEBUGGER is turned off.
pose/litehrnet_30_coco_384x288.py
load checkpoint from local path: work_dir/pose/litehrnet_30_coco/CoCoPoseTopDownEvaluator_AP_best.pth

模型预测

  在预测之前、我们还要下载一个目标检测模型,top-Down是直接从单个人体中进行关键点的预测,所以我们需要先将我们输入的图片中的人体先一个个检测出来,然后再一个个人体进行关键点检测模型进行检测关键点

!wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/configs/pose/epoch_300.pt
Will not apply HSTS. The HSTS database must be a regular and non-world-writable file.
ERROR: could not open HSTS store at '/root/.wget-hsts'. HSTS will be disabled.
--2023-02-03 17:54:09--  https://pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com/gl_pp/epoch_300.pt
Resolving pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com (pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com)... 39.98.20.19
Connecting to pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com (pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com)|39.98.20.19|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36133977 (34M) [application/octet-stream]
Saving to: ‘epoch_300.pt’
epoch_300.pt        100%[===================>]  34.46M  16.3MB/s    in 2.1s    
2023-02-03 17:54:11 (16.3 MB/s) - ‘epoch_300.pt’ saved [36133977/36133977]

下面预测过程中如果出现以下报错,请手动卸载mmdet,至终端运行 pip uninstall mmdet

KeyError: 'YOLOXLrUpdaterHook is already registered in hook'
from PIL import Image
import numpy as np
from easycv.predictors.pose_predictor import TorchPoseTopDownPredictorWithDetector
# 修改output_ckpt指向
pose_model_path = 'work_dir/pose/litehrnet_30_coco/export_best.pth'
detection_model_path = 'epoch_300.pt'
model_path = ','.join((pose_model_path, detection_model_path))
model_config={
                'pose': {
                    'bbox_thr': 0.3,
                    'format': 'xywh'
                },
                'detection': {
                    'model_type': 'TorchYoloXPredictor'
                }
            }
fe = TorchPoseTopDownPredictorWithDetector(model_path=model_path, model_config=model_config)
input_img = 'small_coco/images/000000012754.jpg'
input_data_list = [np.asarray(Image.open(input_img))]
results = fe.predict(input_data_list)[0]
print(results['pose_results'])
print(results['pose_results'][0]['keypoints'].shape)
/home/pai/lib/python3.6/site-packages/easycv/predictors/pose_predictor.py:437: DeprecationWarning: Call to deprecated class TorchYoloXPredictor (Please use YoloXPredictor.).
  detection_model_path, model_config=model_config['detection'])
reparam: 0
load checkpoint from local path: epoch_300.pt
/home/pai/lib/python3.6/site-packages/easycv/datasets/detection/pipelines/mm_transforms.py:1447: DeprecationWarning: pad_val of float type is deprecated now, please use pad_val=dict(img=(114.0, 114.0, 114.0), masks=(114.0, 114.0, 114.0), seg=255) instead.
  f'masks={pad_val}, seg=255) instead.', DeprecationWarning)
/home/pai/lib/python3.6/site-packages/easycv/datasets/detection/pipelines/mm_transforms.py:1447: DeprecationWarning: pad_val of float type is deprecated now, please use pad_val=dict(img=(114.0, 114.0, 114.0), masks=(114.0, 114.0, 114.0), seg=255) instead.
  f'masks={pad_val}, seg=255) instead.', DeprecationWarning)
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
388 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
6月前
|
开发工具 数据安全/隐私保护 Android开发
视觉智能平台常见问题之图片解析出的水印图判断是自己添加的水印图如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
6月前
|
小程序 前端开发 JavaScript
视觉智能平台常见问题之调用多器官分割服务时提示所示报错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
6月前
|
机器学习/深度学习 计算机视觉 Python
批量demo推理图片脚本
批量demo推理图片脚本
|
11月前
|
Serverless
函数计算FC图生图中,刚生成的图片,在Image Browse不能查看,是什么原因吖?
函数计算FC图生图中,刚生成的图片,在Image Browse不能查看,是什么原因吖?
45 1
|
6月前
|
XML 前端开发 算法
canvas从基础了解 -- 到算法标注框实现
canvas从基础了解 -- 到算法标注框实现
|
机器学习/深度学习 并行计算 数据可视化
【DSW Gallery】EasyCV-基于关键点的视频分类示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以基于关键点的视频分类为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】EasyCV-基于关键点的视频分类示例
|
算法 PyTorch 算法框架/工具
【DSW Gallery】基于YOLOX模型和iTAG标注数据的图像检测示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文将为您介绍如何在PAI-DSW中使用EasyCV和PAI-iTAG标注的检测数据训练YOLOX模型。
【DSW Gallery】基于YOLOX模型和iTAG标注数据的图像检测示例
|
并行计算 算法 自动驾驶
【DSW Gallery】基于EasyCV的BEVFormer 3D检测示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文将以BEVFormer 3D检测为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】基于EasyCV的BEVFormer 3D检测示例
|
算法 PyTorch 算法框架/工具
【DSW Gallery】基于EasyCV的STDC图像语义分割示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文将为您介绍如何在PAI-DSW中使用EasyCV训练轻量化语义分割模型STDC
【DSW Gallery】基于EasyCV的STDC图像语义分割示例