deeppose_tf, 在TensorFlow上,原始纸张 http,DeepPose实现

分享于 

6分钟阅读

GitHub

  繁體 雙語
DeepPose implementation on TensorFlow. Original Paper http://arxiv.org/abs/1312.4659
  • 源代码名称:deeppose_tf
  • 源代码网址:http://www.github.com/asanakoy/deeppose_tf
  • deeppose_tf源代码文档
  • deeppose_tf源代码下载
  • Git URL:
    git://www.github.com/asanakoy/deeppose_tf.git
    Git Clone代码到本地:
    git clone http://www.github.com/asanakoy/deeppose_tf
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/asanakoy/deeppose_tf
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    TensorFlow上的 DeepPose ( stg-1 )

    附注:这不是正式的实现。 原始纸张是 DeepPose: 基于深度神经网络的人位估计方法。

    这是 DeepPose ( stg-1 )的实现。
    代码包括对 2位流行姿势基准的培训和测试: LSP扩展数据集MPII人姿势数据集。

    在Imagenet和finetuned上 Alexnet pretrained的性能与原始纸张中报告的性能接近。

    要求

    • python 2.7
      • TensorFlow r1.0
      • Chainer 1.17.0 + ( 仅用于后台数据处理)
      • numpy 1.12 +
      • OpenCV 2.4.8 +
      • tqdm 4.8.4 +

    对于tensorflow版本 0.11.0 rc0和 0.12.0 rc0 checkout分支 r0.12

    内存需求

    需要大约 10 Gb的免费内存。

    安装依赖项

    • 安装 TensorFlow
    • 通过 pip 安装其他依赖。
      pip install chainer numpy opencv tqdm
    • scripts/config.py 中,将 ROOT_DIR 设置为指向项目的root 目录。
    • 下载 alexnet pretrained在 Imagenet bvlc_alexnet.tf 上的权重,并将它们放入 weights/

    数据集准备

    cd datasets
    bash download.shcd.. 
    python datasets/lsp_dataset.py
    python datasets/mpii_dataset.py

    培训

    示例/ 提供了几个用于在 LSP + LSP_EXT和MPII上进行培训的脚本:

    示例:bash examples/train_lsp_alexnet_scratch.sh

    所有这些脚本调用 train.py
    要检查它接受哪些选项以及设置了哪些默认值,请查看 cmd_options.py

    • 网络使用Adagrad优化器和学习速率 0.0005 来训练,如本文所示。
    • 对于训练我们使用裁剪 pearsons ( 不是完整的图像)。
    • 要使用自己的网络 architecure,请在 scripts/regressionnet.py 中相应地设置。

    网络wiil在训练期间进行测试,你将在每次迭代时看到以下输出:

    
    8it [00:06, 1.31it/s] 
    
    
    Step 0 test/pose_loss = 0.116
    
    
    Step 0 test/mPCP 0.005
    
    
    Step 0 test/parts_PCP:
    
    
    Head Torso U Arm L Arm U Leg L Leg mean
    
    
    0.000 0.015 0.001 0.003 0.013 0.001 0.006
    
    
    Step 0 test/mPCKh 0.029
    
    
    Step 0 test/mSymmetricPCKh 0.026
    
    
    Step 0 test/parts_mSymmetricPCKh:
    
    
    Head Neck Shoulder Elbow Wrist Hip Knee Ankle
    
    
    0.003 0.016 0.019 0.043 0.044 0.028 0.053 0.003
    
    
    
    

    在这里你可以看到,PCP和PCKh在步骤( 迭代) 0.
    test/METRIC_NAME 表示度量值是在测试集中计算的。
    val/METRIC_NAME 表示度量是在验证集上计算的。 为了检查 LSP,我从训练中获得了第一张 1000图像作为验证。

    pose_loss 是联合预测的回归损失,
    mPCP 指的是所有sticks的pcp@0.5 分数
    parts_PCP 是pcp@0的。5 得分。
    mRelaxedPCP 是一个松松的pcp@0.5 分,当两个节点的平均误差小于阈值( 0.5 ) 时,棒具有正确的位置。
    mPCKh 是所有关节的平均PCKh分数,
    mSymmetricPCKh 是所有关节的平均PCKh得分,其中对称左/右关节的得分是平均的,

    测试

    要测试模型,请使用 tests/test_snapshot.py

    • 脚本将生成 pcp@0.5 和 pckh@0.5 分数,这些分数应用于已经裁剪的pearsons。
    • 为不同的作物计算 wiil。
    • BBOX EXTENSION=1表示pearson被严密裁剪
      BBOX extension=1.5 意味着该人的边界框被放大 1.5次,然后图像被裁剪。

    用法:python tests/test_snapshot.py DATASET_NAME SNAPSHOT_PATH ,

    • 其中 DATASET_NAME'lsp' 或者 'mpii'
    • SNAPSHOT_PATH 是快照的路径。

    示例:python tests/test_snapshot.py lsp out/lsp_alexnet_scratch/checkpoint-10000

    结果

    结果在随机初始化和Alexnet初始化的基础上,采用部分有序集的方法,实现了对深度无监督的。 使用初始化和shuffle&学习初始化,查看论文的更多结果。

    pcp@0.5 随机初始化。 Alexnet
    躯干87.392.8
    上腿52.368.1
    小腿小腿35.453.0
    上臂25.439.8
    Lower7.617.5
    头部44.062.8
    总计42.055.7
    MPII pckh@0.5 随机初始化。 Alexnet
    头部79.587.2
    颈部87.193.2
    LR肩71.685.2
    LR弯头52.169.6
    LR手腕34.652.0
    LR Hip64.181.3
    LR膝部58.369.7
    LR踝部51.262.0
    胸腔85.593.4
    骨盆70.186.6
    总计65.478.0

    注释

    如果你使用这里代码,请引用 repo。

    许可证

    gnu 通用公共许可证


    IMP  Implementation  HTTP  DEEP