zoukankan      html  css  js  c++  java
  • CMU mocap数据集

    信息

    链接:http://mocap.cs.cmu.edu/

    Wentao Zhu等人的2016 AAAI论文:

    • We have categorized the CMU motion capture dataset into 45 classes for the purpose of skeleton based action recognition.
    • The categorized dataset contains 2,235 sequences (987,341 frames after down-sampling).
    • CMU subset: we have chosen 8 representative action categories containing 664 sequences (125,667 frames after down-sampling), with actions of jump, walk back, run, sit, getup, pickup, basketball, cartwheel.

    骨架连接图:

    可视化程序

    下面的程序把txt文件中的骨架坐标数据用三维动图的方式可视化。

    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    data = np.loadtxt(r"E:CSaction_researchcmu_mocapwenjuncmudatasetpart482_09.txt", dtype=np.float32, delimiter=',')
    T, J = data.shape
    data = data.reshape([T, int(J/3), 3])
    print(data.shape)
    
    xmax = np.max(data[:, :, 0]) + 0.5
    xmin = np.min(data[:, :, 0]) - 0.5
    ymax = np.max(data[:, :, 1]) + 10
    ymin = np.min(data[:, :, 1]) - 10
    zmax = np.max(data[:, :, 2])
    zmin = np.min(data[:, :, 2])
    
    # 相邻各节点列表,用来画节点之间的连接线
    arms = [12, 11, 10, 9, 8, 7, 17, 0, 1, 2, 3, 4, 5]
    rightHand = [10, 13]
    leftHand = [3, 6]
    legs = [30, 29, 28, 27, 26, 14, 21, 22, 23, 24, 25]
    trunk = [14, 15, 16, 17, 18, 19, 20]
    
    # 3D展示------------------------------------------------------------------------
    n = 0   # 从第n帧开始展示
    m = T   # 到第m帧结束,n<m<T
    fig = plt.figure()   # 先生成一块画布,然后在画布上添加3D坐标轴
    plt.ion()
    for i in range(n, m):
        fig.clf()
        ax = Axes3D(fig, azim=-25, elev=10)
        ax.scatter(data[i, :, 2], data[i, :, 0], data[i, :, 1], c='red', s=40.0)
        ax.plot(data[i, arms, 2], data[i, arms, 0], data[i, arms, 1], c='green', lw=2.0)
        ax.plot(data[i, rightHand, 2], data[i, rightHand, 0], data[i, rightHand, 1], c='green', lw=2.0)
        ax.plot(data[i, leftHand, 2], data[i, leftHand, 0], data[i, leftHand, 1], c='green', lw=2.0)
        ax.plot(data[i, legs, 2], data[i, legs, 0], data[i, legs, 1], c='green', lw=2.0)
        ax.plot(data[i, trunk, 2], data[i, trunk, 0], data[i, trunk, 1], c='green', lw=2.0)
        ax.text(xmax-0.8, ymax-0.2, zmax-0.2, 'frame {}/{}'.format(i, T))
    #    ax.text(xmax-0.8, ymax-0.4, zmax-0.4, 'label: ' + str(label[i]))
        ax.set_xlabel("Z")
        ax.set_ylabel("X")
        ax.set_zlabel("Y")
        ax.set_xlim(zmin, zmax)
        ax.set_ylim(xmin, xmax)
        ax.set_zlim(ymin, ymax)
        plt.pause(0.1)
        
    plt.ioff()
    plt.show()
    
    
    # 2D展示------------------------------------------------------------------------
    #n = 0  # 从第n帧开始展示
    #m = T  # 到第m帧结束,n<m<T
    #plt.figure()
    #plt.ion()
    #for i in range(n, m):
    #    plt.cla()
    #    plt.scatter(data[i, :, 0], data[i, :, 1], c='red', s=40.0)
    #    plt.plot(data[i, arms, 0], data[i, arms, 1], c='green', lw=2.0)
    #    plt.plot(data[i, rightHand, 0], data[i, rightHand, 1], c='green', lw=2.0)
    #    plt.plot(data[i, leftHand, 0], data[i, leftHand, 1], c='green', lw=2.0)
    #    plt.plot(data[i, legs, 0], data[i, legs, 1], c='green', lw=2.0)
    #    plt.plot(data[i, trunk, 0], data[i, trunk, 1], c='green', lw=2.0)
    #    
    #    plt.text(xmax - 9.5, ymax - 2.5, 'frame: {}/{}'.format(i, T - 1))
    #    # plt.text(xmax-0.8, ymax-0.4, 'label: ' + str(label[i]))
    #    plt.xlim(xmin, xmax)
    #    plt.ylim(ymin, ymax)
    #    plt.pause(0.1)
    #
    #plt.ioff()
    #plt.show()

    运行结果:

  • 相关阅读:
    [loss]Triphard loss优雅的写法
    [Pytorch]Pytorch中tensor常用语法
    [pytorch]pytorch loss function 总结
    [Pytorch]Pytorch的tensor变量类型转换
    [Pytorch]Pytorch中图像的基本操作(TenCrop)
    caffe深度学习网络(.prototxt)在线可视化工具:Netscope Editor
    samba网络共享
    openwrt开发笔记三:uci移植及API调用
    openwrt开发笔记二:树莓派刷openwrt
    git跟踪忽略规则文件.gitignore
  • 原文地址:https://www.cnblogs.com/picassooo/p/14290223.html
Copyright © 2011-2022 走看看