2401_84390965 2025-07-15 10:34 采纳率: 0%
浏览 7

人体骨骼关键的点提取以及行为识别算法运用

#有偿解决以下问题:
如何在autodl云服务器上使用openpose和ST-GCN训练自制数据集进行动态行为识别?目前遇到的问题:1.使用openpose提取人体骨骼关键点时调用OpenPoseDemo.exe时出现错误,云服务器上是Ubuntu系统,无法执行.exe文件,该如何解决?

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-07-15 10:35
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    在AutoDL云服务器上使用OpenPose和ST-GCN进行人体骨骼关键点提取与行为识别是一个典型的计算机视觉任务。以下是详细的解决方案,帮助你解决无法运行.exe文件的问题并顺利进行后续训练。


    一、问题分析

    你遇到的错误是:无法执行.exe文件,因为你在Ubuntu系统上运行了Windows可执行文件(.exe),这在Linux系统中是不支持的


    二、解决方案

    1. 替换为Linux版本的OpenPose

    ✅ 解决方案:

    • 下载适用于Linux系统的OpenPose版本(推荐使用OpenPose官方GitHub)。
    • 安装依赖项后编译OpenPose。

    🔧 步骤:

    1.1 安装依赖

    sudo apt-get update
    sudo apt-get install -y build-essential cmake git libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libx11-dev libx11-xcb-dev libxcb-glx0-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev libxcb-sync-dev libxfixes-dev libxdamage-dev libxshmfence-dev libglvnd-dev libglu1-mesa-dev libglew-dev libglfw3-dev libpng-dev libjpeg-dev libtiff-dev libwebp-dev libopenblas-dev liblapack-dev
    

    1.2 克隆OpenPose仓库

    git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
    cd openpose
    

    1.3 编译OpenPose(建议使用CPU模式)

    make clean
    make -j$(nproc)
    

    ⚠️ 如果你的服务器有GPU,可以使用CUDA编译,但需要安装NVIDIA驱动和CUDA工具包。

    1.4 运行OpenPose(示例)

    ./build/examples/openpose/openpose.bin --image_dir ./examples/media/ --output_dir ./output/
    

    这将对指定目录下的图像进行骨骼关键点检测,并输出到./output/


    2. 使用Python调用OpenPose(推荐)

    如果你希望在Python中调用OpenPose,可以使用其Python绑定(如pyopenpose)。

    2.1 安装PyOpenPose

    pip install pyopenpose
    

    2.2 示例代码(使用OpenPose提取关键点)

    import pyopenpose as op
    
    # 配置参数
    params = {
        "model_folder": "/path/to/openpose/models/",
        "net_resolution": "128x128",
        "number_people_max": 1,
    }
    
    opWrapper = op.WrapperPython()
    opWrapper.configure(params)
    opWrapper.start()
    
    # 加载图像
    image_path = "your_image.jpg"
    image = cv2.imread(image_path)
    
    # 推理
    datum = op.Datum()
    datum.cvImageOriginal = image
    opWrapper.emplaceAndPop([datum])
    
    # 获取关键点数据
    keypoints = datum.poseKeypoints
    print("Key points:", keypoints)
    

    注意:你需要下载OpenPose模型文件(如pose_coco_2017.pth等)并放在指定路径。


    3. 使用ST-GCN进行行为识别

    3.1 数据准备

    • 使用OpenPose提取出的骨骼关键点数据,格式通常是 [帧数, 关键点数, 坐标]
    • 每个动作应对应一个标签(如“走路”、“坐下”等)。

    3.2 构建ST-GCN输入格式

    ST-GCN通常要求输入格式为 [T, V, M, C],其中:

    • T: 时间步长(帧数)
    • V: 关键点数(如18)
    • M: 人数(通常为1)
    • C: 坐标通道(x, y, confidence)

    3.3 示例数据处理(Python)

    import numpy as np
    
    # 假设我们有一个50帧的视频,每帧有18个关键点(x,y,confidence)
    data = np.random.rand(50, 18, 3)  # [T, V, C]
    
    # 转换为 [T, V, M, C]
    data = data.reshape(50, 18, 1, 3)
    

    3.4 使用ST-GCN模型(基于PyTorch)

    你可以使用开源的ST-GCN实现(例如:ST-GCN-PyTorch)。

    3.5 修改配置文件(如config.py

    确保模型输入维度正确:

    input_size = (1, 18, 3)  # [M, V, C]
    

    3.6 训练模型

    python train.py --config config.yaml
    

    config.yaml 中需定义数据路径、模型结构、损失函数等。


    三、完整流程总结

    | 步骤 | 内容 | |------|------| | 1 | 在AutoDL云服务器上安装Ubuntu系统 | | 2 | 安装OpenPose的Linux版本并编译 | | 3 | 使用OpenPose提取关键点(支持图像或视频) | | 4 | 将关键点数据转换为ST-GCN所需的输入格式 | | 5 | 使用ST-GCN模型进行行为识别训练 |


    四、常见问题及解决方法

    | 问题 | 解决方案 | |------|----------| | 无法运行.exe | 使用Linux版本的OpenPose替代 | | OpenPose编译失败 | 确保所有依赖已安装,尝试使用make clean重新编译 | | ST-GCN输入格式错误 | 确保数据格式为 [T, V, M, C] | | GPU未启用 | 安装CUDA和cuDNN,修改代码中的设备设置 |


    五、参考资源


    如果你有具体的数据集或代码片段,我可以进一步帮你调整模型结构和数据预处理部分。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 7月15日