IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 菜鸡尝试:pytorch姿态估计hourglass模型(LSP数据集) -> 正文阅读

[人工智能]菜鸡尝试:pytorch姿态估计hourglass模型(LSP数据集)

所有参考网址

数据集及处理

  • https://blog.csdn.net/weixin_42216109/article/details/115269420

  • https://blog.csdn.net/weixin_30387339/article/details/94832887?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.control&spm=1001.2101.3001.4242

模型

  • https://blog.csdn.net/qq_38308388/article/details/112554972
  • https://blog.csdn.net/shenxiaolu1984/article/details/51428392/?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.control&spm=1001.2101.3001.4242
  • https://blog.csdn.net/baolinq/article/details/84575381?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162678690316780261943465%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162678690316780261943465&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-9-84575381.first_rank_v2_pc_rank_v29&utm_term=hourglass&spm=1018.2226.3001.4187
  • https://blog.csdn.net/weixin_52668444/article/details/116578345?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162678612816780262518435%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162678612816780262518435&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-25-116578345.first_rank_v2_pc_rank_v29&utm_term=hourglass&spm=1018.2226.3001.4187
  • https://blog.csdn.net/shenxiaolu1984/article/details/51428392

可视化

  • https://zhuanlan.zhihu.com/p/225494133

GitHub参考代码

  • https://github.com/carloscz25/PytorchPoseEstimationLeedsSports
  • https://github.com/bearpaw/pytorch-pose
  • https://github.com/princeton-vl/pytorch_stacked_hourglass
  • https://github.com/Spandana-K-R/DeepPose

一、LSP数据集

LSP数据集包括如下图文件,其中images文件夹包括2000张照片,visualized文件夹则是关节点可视化后的照片,joints文件储存着关节点的坐标信息

  • 样本数:2000
  • 关节点数:14

1.1数据集处理

1.1.1关节点标签处理

  • 加载joints.mat文件可以看到,形状为(3, 14, 2000),其中3为x和y和一个二进制的值,14为14个关节点标记,2000为2000张图片。另外二进制值是标明是否被遮挡,0为未被遮挡,1为被遮挡

        self.annotationmat = scipy.io.loadmat(labelsfilepath)
        # print(self.annotationmat) #加载.mat文件的数据

        joints = self.annotationmat['joints']
        # print(joints) # 只加载'joints'键的数据
[[[ 29.74645941  28.12031897  40.51695761 ... 120.12745241  51.59369452
    44.42209685]
  [ 30.5501068   49.17944312  27.96569031 ... 136.33061847  33.44243044
    42.59402151]
  [ 28.94281202  62.60463477  50.08729892 ... 105.46744503  34.11469948
    42.59402151]
   ...

? 第1列第1个数29.74645941是第一张图片的第1个关节点的x轴的值,同理第2列第1个数30.5501068是第1张图片的第2个关节点的x轴的值

将关节点标签处理为如下使(x,y)代表图片的一个关节点坐标(这里去掉了二进制值)

第二张图片的关节点坐标(注意对比原图区分左右,同时这些坐标是根据原始图像建立坐标轴来标记的)
tensor([[ 28.1203, 166.6551],
        [ 49.1794, 136.6458],
        [ 62.6046,  95.8438],
        [ 80.2417,  96.1070],
        [ 91.5609, 130.8546],
        [ 78.3990, 142.7003],
        [ 61.2884,  78.9965],
        [ 49.9692,  73.7317],
        [ 63.9208,  50.5667],
        [ 98.6684,  53.4623],
        [111.3039,  69.7831],
        [109.4612,  96.3703],
        [ 81.0314,  52.6726],
        [ 83.4005,  30.8238]])

14个关节点按序号分别为:(上面的坐标也对应下面的顺序)

Right ankle     右脚踝
Right knee      右膝盖 
Right hip       右臀部
Left hip        左臀部 
Left knee       左膝盖
Left ankle      左脚踝 

Right wrist     右手腕 
Right elbow     右肘 
Right shoulder  右肩 
Left shoulder   左肩 
Left elbow      左肘 
Left wrist      左手腕 

Neck            颈部 
Head top        头顶

可以分成三部分

即用序号标明为如下图:

在这里插入图片描述

  • 坐标标准化
def standardize_label(label, orim):  #保证了原图像的坐标的准确

    label_std = []
    for idx, _ in enumerate(label):
        labelX = label[idx][0] / orim.size[0] #x的值除于原始图像的宽
        labelY = label[idx][1] / orim.size[1] #y的值除于原始图像的高
        label_std.append([labelX, labelY])
    label_std = np.array(label_std)
    # print(label_std)
    return label_std

? 处理为(x,y)后再让x除以原图像的宽,y除以原图像的高,这样可以防止缩放原图像造成的关节点坐标丢失。
(!!!注意:这个方法是参考https://github.com/carloscz25/PytorchPoseEstimationLeedsSports中的处理方法处理的,这样做也是为了方便后面可以在原始图像上对关节点坐标可视化,所以其严谨性有待考证)

1.1.2图像处理

  • 原图像的处理则采用常规处理

    image_size = 196
    
    
    transforms = Compose([
        Resize((image_size,image_size)),
        ToTensor(),  #张量化
        #ToTensor()能够把灰度范围从0-255变换到0-1之间,
        # 而transform.Normalize()则把0-1变换到(-1,1).具体地说,对每个通道而言
        Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
    ])
    

二、模型

2.1沙漏模型

沙漏模型在上面的参考网址中有很多讲得很详细,下面只是一些个人总结

  • 首先完整沙漏模型如像下图:

    可以看到,联级沙漏模型就是由多个沙漏状的hourglass模型首尾连接而成

  • 单个沙漏(hourglass)模型

    ? 如上图就是单个沙漏模型,红色部分就是沙漏对称的两个部分,这两个部分无论是batch_size,还是图像尺寸都是对称的,蓝色部分则是残差模型的一部分,与红色部分共同组成了残差模型

    ? 所以可以看到送进单个沙漏模型的图像经历了下采样和上采样,形状像沙漏,其中还做了残差模型

  • 联级沙漏模型

    ? 原论文中说到相互关键点之间是有关系的,知道了一个关节点的坐标可以更好地预测其他关节点的位置,每一个hourglass模型中都做了一个热力图预测,并且输入到下一个hourglass模型,这样上一个 hourglass模型学习到的信息可以辅助下一个 hourglass模型的预测

三、检验与可视化

  • 首先上面1.1已经采取了坐标标准化,就是为了防止对原始图片放缩后关节点坐标丢失(LSP数据集每张图片大小不一样),若缩放图像并输进网络中,预测出的关节点坐标是根据缩放后的图像建立坐标轴得到的数据,所以标准化(x除以宽,y除以高)后可以保存准确信息,无论原始图像缩放到什么尺寸都不会丢失

  • 而关于检验,个人用了距离公式来进行检验,比如在以原始关节点为圆心画任意半径的圆(半径自定义),若预测的关节点坐标落在圆内则正确

  • 另外坐标标准化还可以方便检验时直接在原图像上建立坐标轴,只需将预测得到的标准化关节点坐标分别乘以对应的宽和高即可

    由于计算资源限制,下图是使用迁移学习方法,用CPU跑了1个epoch的预测效果

    至于点与点的划线可以根据上面1.1的关节点的按序号进行划线

四、代码

  • 完整代码已经上传到GitHub个人仓库https://github.com/Hopelht/PoseEstimation

最后,个人觉得沙漏模型比较复杂,无论是模型本身还是代码,我都看得云里雾里,我这个菜鸡目前能搞懂的层次只是浅层。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:49:09  更:2021-08-02 10:50:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:23:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码