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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
919 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
7月前
|
Android开发
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
296 1
|
7月前
|
计算机视觉
在ModelScope中,如果您使用图像分类模型进行推理并返回识别的坐标位置
在ModelScope中,如果您使用图像分类模型进行推理并返回识别的坐标位置
189 3
|
7月前
|
机器学习/深度学习 人工智能 文字识别
通用场景OCR文本识别任务-baseline学习(PaddleOCR)
通用场景OCR文本识别任务-baseline学习(PaddleOCR)
288 0
|
机器学习/深度学习 并行计算 数据可视化
【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图像语义分割示例
|
算法 PyTorch 算法框架/工具
【DSW Gallery】基于EasyCV的视频分类示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以视频分类为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】基于EasyCV的视频分类示例
|
人工智能 并行计算 算法
【DSW Gallery】基于MOCOV2的自监督学习示例
EasyCV是基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具,并包含图像分类,度量学习,目标检测,姿态识别等视觉任务的SOTA算法。本文以自监督学习-MOCO为例,为您介绍如何在PAI-DSW中使用EasyCV。
【DSW Gallery】基于MOCOV2的自监督学习示例

热门文章

最新文章