精华内容
下载资源
问答
  • DensePose: Dense Human Pose Estimation In The Wild Rıza Alp Güler, Natalia Neverova, Iasonas Kokkinos [densepose.org] [arXiv] [BibTeX] Dense human pose estimation aims at mapping all human pixels of...
  • densepose的标注问题,一直困扰着我,在这里认真研读论文相关部分,以求得线索。 2. COCO-DensePose Dataset Gathering rich, high-quality training sets has been a catalyst for progress in the ...

    densepose的标注问题,一直困扰着我,在这里认真研读论文相关部分,以求得线索。


    2. COCO-DensePose Dataset

    Gathering rich, high-quality training sets has been a catalyst for progress in the classification [38], detection and segmentation [8, 26] tasks. There currently exists no manually collected ground truth for dense human pose estimation for real images. The works of [22] and [43] can be used as surrogates, but as we show in Sec. 4 provide worse supervision.

    收集丰富,高质量的训练集已成为分类[38],检测和分割[8,26]任务取得进展的催化剂。 当前不存在用于实际图像的密集人体姿势估计的手动收集的ground truth。 [22]和[43]的成果可以用作替代品,但正如我们在第四部分展示的,它提供较差的监督。

    In this Section we introduce our COCO-DensePose dataset, alongside with evaluation measures that allow us to quantify progress in the task in Sec. 4. We have gathered annotations for 50K humans, collecting more than 5 million manually annotated correspondences.

    在本节中,我们介绍了COCO-DensePose数据集,以及评估方法,使我们在第四部分能够量化回归。 我们收集了5万个人的标注,收集了超过500万个手动标注的对应关系。

    We start with a presentation of our annotation pipeline, since this required several design choices that may be more generally useful for 3D annotation. We then turn to an analysis of the accuracy of the gathered ground-truth, alongside with the resulting performance measures used to assess the different methods.

    我们从标注流程的表示开始,因为这需要一些对3D标注更通用的设计选择。 然后,我们转向对收集的ground-trut 的精确性的分析,以及用于评估不同方法所产生的性能指标。

    2.1. Annotation System

    In this work, we involve human annotators to establish dense correspondences from 2D images to surface-based representations of the human body. If done naively, this would require ‘hunting vertices’ for every 2D image point, by manipulating a surface through rotations - which can be frustratingly inefficient. Instead, we construct an annotation pipeline through which we can efficiently gather anno tations for image-to-surface correspondence.

    在这项工作中,我们引入人类标注器,建立从2D图像到基于表面的人体表示的密集对应关系。 如果天真地做,这将需要通过旋转一个表面操作来为每个2D图像点提供“狩猎顶点”,这可能会令人沮丧地效率低下。 取而代之的是,我们构造了一条标注流程,通过该流程我们可以有效地收集图像到表面的对应关系的标注。

    As shown in Fig. 2, in the first stage we ask annotators to delineate regions corresponding to visible, semantically defined body parts. These include Head, Torso, Lower/Upper Arms, Lower/Upper Legs, Hands and Feet. In order to use simplify the UV parametrization we design the parts to be isomorphic to a plane, partitioning the limbs and torso into lower-upper and frontal-back parts.

    如图2所示,在第一阶段,我们要求标注器描绘的语义定义身体部位区域是可见的。 这些包括头,躯干,下/上臂,下/大腿,手和脚。 为了简化UV参数化,我们将身体部位设计与一个平面同构,将肢体和躯干分为上下、前后部分。

    For head, hands and feet, we use the manually obtained UV fields provided in the SMPL model [27]. For the rest of the parts we obtain the unwrapping via multi dimensional scaling applied to pairwise geodesic distances.The UV fields for the resulting 24 parts are visualized in Fig. 1 (right).

    对于头,手和脚,我们手动获得的UV区域,它由SMPL模型[27]提供的。 对于其余的身体部位,我们获得展开,这个展开通过应用于成对测地距离的多维比例缩放获得。图1(右)显示了生成的24个身体部位的UV区域。

    We instruct the annotators to estimate the body part behind the clothes, so that for instance wearing a large skirt would not complicate the subsequent annotation of correspondences. In the second stage we sample every part region with a set of roughly equidistant points obtained via k-means and request the annotators to bring these points in correspondence with the surface. The number of sampled points varies based on the size of the part and the maximum number of sampled points per part is 14. In order to simplify this task we ‘unfold’ the part surface by providing six pre-rendered views of the same body part and allow the user to place landmarks on any of them Fig. 3. This allows the annotator to choose the most convenient point of view by selecting one among six options instead of manually rotating the surface.

    我们指示标注器估算衣服后面的身体部位,以便不会使随后的对应标注复杂化,例如穿着大裙子。 在第二阶段中,我们通过k均值获得一组大致等距的点来对每个身体部位进行采样,并要求标注器将这些点与表面相对应。 采样点的数量根据身体部位的大小和采样点最大数量而有所不同,每个部位的采样点数最大为14。为简化任务,我们通过提供六个相同人体部位的预渲染视图来“呈现”身体部位表面,并允许用户在其中任何一个上放置landmarks(图3)。 允许标注器通过从六个视图中选择一个来选择最方便的视角,而不是手动旋转曲面。

    As the user indicates a point on any of the rendered part views, its surface coordinates are used to simultaneously show its position on the remaining views – this gives a global overview of the correspondence. The image points are presented to the annotator in a horizontal/vertical succession, which makes it easier to deliver geometrically consistent annotations by avoiding self-crossings of the surface.This two-stage annotation process has allowed us to very efficiently gather highly accurate correspondences. If we quantify the complexity of the annotation task in terms of the time it takes to complete it, we have seen that the part segmentation and correspondence annotation tasks take approximately the same time, which is surprising given the more challenging nature of the latter task. Visualizations of the collected annotations are provided in Fig. 4, where the partitioning of the surface and U, V coordinates are shown in Fig. 1.

    当用户在任何渲染的身体部位视图上标记一个点时,其表面坐标同时显示其在其余视图上(这将提供对应关系的全局概览)。 图像点以水平/垂直连续的方式显示给标注器,从而避免了表面的自相交,从而更易于传递几何上一致的标注。此两阶段注释过程使我们能够非常有效地收集高度准确的对应关系。 如果我们根据完成标注任务的时间来量化标注任务的复杂性,就会发现身体部位分割和对应关系标注任务花费的时间大约是相同的,考虑到对应关系标注任务更具挑战性,这是令人惊讶的。 图4提供了所收集标注的可视化,其中图1显示了表面和U,V坐标的划分。

     


    可以发现annotator标注器是个关键工具。


     

     

     

    展开全文
  • DensePose: Dense Human Pose Estimation In The Wild Rıza Alp G¨uler, Natalia Neverova, Natalia Neverova DensePose-COCO: a large-scale ground-truth dataset with image-to-surface correspondences ...

    DensePose: Dense Human Pose Estimation In The Wild

    Rıza Alp G¨uler, Natalia Neverova, Natalia Neverova
    这里写图片描述
    DensePose-COCO: a large-scale ground-truth dataset with image-to-surface correspondences manually annotated on 50K COCO images(标数据的难度可想而知)
    DensePose-RCNN: densely regress part-specific UV coordinates within every human region at multiple frames per second(居然还是使用回归这么原始的方法?还R-CNN?)

    Abstract

    dense human pose estimation: dense correspondences between an RGB image and a surface-based representation of the human body
    可想而知即使是标一张数据的难度也是较大的,因此作者介绍了一种有效的标注方法
    in the wild: in the presence of background, occlusions and scale variations,这样的数据标注更困难,遑论预测

    Introduction

    二维图像的理解和三维重建密切相关的
    基于DenseReg,用CNN回归3D模型与RGB图像间点的对应关系。但是这里的问题相比于DenseReg更困难,因为in the wild,人的姿势变化更剧烈。
    contributions:
    1. introduce the first manually-collected ground truth dataset for the task, by gathering dense correspondences between the SMPL model and persons appearing in the COCO dataset
    2. use the resulting dataset to train CNN-based systems that deliver dense correspondence ‘in the wild’, by regressing ody surface coordinates at any image pixel, observing a superiority of region-based models over fully-convolutional networks
    3. use sparse correspondences defined over a randomly chosen subset of image pixels per training sample to ‘inpaint’ the supervision signal in the rest of the image domain

    COCO-DensePose Dataset

    Head, Torso, Lower/Upper Arms, Lower/Upper Legs, Hands and Feet
    head, hands and feet: use the manually obtained UV fields provided in the SMPL model
    rest of the parts: obtain the unwrapping via multidimensional scaling applied to pairwise geodesic distances

    Accuracy of human annotators

    人标记的数据也是有误差的,尤其是对于比较精细的部位,如头、手脚等

    Evaluation Measures

    Pointwise evaluation: evaluates correspondence accuracy over the whole image domain through the Ratio of Correct Point (RCP) correspondences (a correspondence is declared correct if the geodesic distance is below a certain threshold). 对于不同阈值t计算AUC(Area Under the Curve)

    AUCa=1a0af(t)dt

    Per-instance evaluation: geodestic point similarity
    GPSj=1PjpPjexp(g(ip,i^p)22κ2)

    Learning Dense Human Pose Estimation

    DensePose-RCNN: combining the DenseReg approach(FCN) with the Mask-RCNN architecture. proposing regions-of-interest (ROI), extracting region-adapted features through ROI pooling and feeding the resulting features into a region-specific branch
    如下图一,类似Faster R-CNN,先提取特征,获取RoI proposal并进行RoI pooling,将特征继续进行卷积,获得类别和patch。将得到的patch输入图二中类似Mask R-CNN的multi-task模型中,得到最终结果。其中应用了cross cascading
    这里写图片描述
    这里写图片描述

    展开全文
  • 部署Dense Pose

    千次阅读 2018-08-09 17:17:24
    部署Dense Pose(源码编译过程适用于服务器) 2018年07月26日 18:05:41 阅读数:126 ...# 由于编译densepose过程中需要cmake>=3.5,所以我下载了cmake3.12的源码,而编译cmake3.12需要gcc-5...

    部署Dense Pose(源码编译过程适用于服务器)

    2018年07月26日 18:05:41

    阅读数:126

    部署Dense Pose(源码编译过程适用于服务器)

    • 系统:Ubuntu 14.04

    • 显卡:GTX1060 6GB

    # 由于编译densepose过程中需要cmake>=3.5,所以我下载了cmake3.12的源码,而编译cmake3.12需要gcc-5和g++-5,所以我就sudo升级了一下gcc和g++的版本。
    # 由于我的系统是Ubuntu 14.04才需要这一步,如果你们的Linux系统自带gcc-5和g++-5可不必考虑这一步
    # 升级gcc和g++
    sudo add-apt-repository ppa:ubuntu-toolchain-r/test  
    sudo apt-get update
    sudo apt-get install gcc-5 g++-5  
    cd /usr/bin  
    sudo rm -rf gcc g++
    sudo ln -s gcc-5 gcc
    sudo ln -s g++-5 g++ 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 本地安装路径 /home/michael/local,一些内容较多(除了bin,lib,include,share)等程序我会再新建个文件夹放进去,比如cuda
    # PS:手动安装NVIDIA driver并cuda_8.0.61(如果是自己本机(Ubuntu Desktop)英伟达驱动没有安装的话可以参照这一步安装,驱动已安装可以略过)
    vim /etc/modprobe.d/blacklist.conf
    # 在最下方添加 blacklist nouveau 
    # 屏蔽 nouveau 并更新内核,修改系统设置需要sudo权限
    sudo update-initramfs -u
    # 重启一下,将cuda_8.0.61_375.26_linux.run放在主文件夹下以便于寻找
    # 按 Ctrl + Alt + F1 进入命令行界面,执行下面语句关闭X Server,需要sudo权限
    sudo /etc/init.d/lightdm stop
    # 执行安装过程
    chmod a+x cuda_8.0.61_375.26_linux.run
    ./cuda_8.0.61_375.26_linux.run #加载需要时间,得等一下
    # 加载出来后长按空格跳过前面的简介
    
    Do you accept the previously read EULA?
    accept/decline/quit: accept
    
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
    (y)es/(n)o/(q)uit: yes
    
    Install the CUDA 8.0 Toolkit?
    (y)es/(n)o/(q)uit: yes
    
    Enter Toolkit Location
     [ default is /usr/local/cuda-8.0 ]: /home/michael/local/cuda_8.0.61
    
    # 过程中提示安装OpenGL选择no不用安装,然后耐心等待,等待安装完成,执行下面语句恢复X Server界面显示
    sudo /etc/init.d/lightdm restart
    # 此时输入nvidia-smi即可看到驱动程序安装成功并显示显卡信息,到这里驱动安装就算是OK的了,下下面的配置cuda_8.0.61这一步还是要看的
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    
    # PS:当你执行上面那一步之后出现分辨率变成640x480的时候需要看这一步,否则请略过
    # 修改一下显示参数并重启即可,需要权限sudo
    sudo gedit /etc/X11/xorg.conf
    # 可直接将内容替换如下,其实改动就三处,如下
    Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
    EndSection
    
    Section "Files"
    EndSection
    
    Section "InputDevice"
        # generated from default
        Identifier     "Mouse0"
        Driver         "mouse"
        Option         "Protocol" "auto"
        Option         "Device" "/dev/psaux"
        Option         "Emulate3Buttons" "no"
        Option         "ZAxisMapping" "4 5"
    EndSection
    
    Section "InputDevice"
        # generated from default
        Identifier     "Keyboard0"
        Driver         "kbd"
    EndSection
    
    Section "Monitor"
        Identifier     "Monitor0"
        VendorName     "Unknown"
        ModelName      "Unknown"
        HorizSync       31.5 - 61.0 # 第一处修改
        VertRefresh     50.0 - 75.0 # 第二处修改
        Option         "DPMS"
    EndSection
    
    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        SubSection     "Display"
            Depth       24
        Modes "1920×1080"  # 第三处修改
        EndSubSection
    EndSection
    # 到这里就OK,保存并重启分辨率即可恢复正常
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    # 配置cuda_8.0.61
    chmod a+x cuda_8.0.61_375.26_linux.run
    ./cuda_8.0.61_375.26_linux.run
    # 安装cuda_8.0.61到指定路径  /home/michael/local/cuda_8.0.61
    # 安装完成之后为cuda8.0.61添加本地环境变量
    vim ~/.bashrc
    # 在末尾添加
    export PATH=/home/michael/local/cuda_8.0.61/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/home/michael/local/cuda_8.0.61/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export C_INCLUDE_PATH=/home/michael/local/cuda_8.0.61/include${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}
    export CPLUS_INCLUDE_PATH=/home/michael/local/cuda_8.0.61/include${CPLUS_INCLUDE_PATH:+:${CPLUS_INCLUDE_PATH}}
    # 然后刷新环境变量
    source ~/.bashrc
    # 使用 nvcc -V 可以查看cuda环境变量是否配置成功
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    # 配置cudnn6.0
    tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz #解压出来的文件夹名称就叫cuda
    cd cuda/include
    cp cudnn.h /home/michael/local/cuda_8.0.61/include
    cd ../lib64
    cp -a lib* /home/michael/local/cuda_8.0.61/lib64
    # 到这里cudnn就已经加入到cuda的包含目录里面了,也可以不放进cuda里面,放外面之后要改环境变量比较麻烦
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 编译opencv3.3
    unzip opencv-3.3.0.zip
    cd opencv-3.3.0 
    mkdir build
    cd build
    # 下面这一大段可以直接复制粘贴
    cmake \
    -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/home/michael/local \
    -D WITH_TBB=ON \
    -D BUILD_NEW_PYTHON_SUPPORT=ON \
    -D WITH_V4L=ON \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D WITH_QT=ON \
    -D WITH_OPENGL=ON ..
    # 从上面到这里
    make -j4
    make install
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    # 添加环境变量以便于在全局能够调用opencv,另外是安装到local中的,所以这个环境变量配置一次其他编译安装到这个路径下的文件可以不用重新配置
    vim ~/.bashrc # 在末尾添加
    export PATH=/home/michael/local/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/home/michael/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export C_INCLUDE_PATH=/home/michael/local/include${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}
    export CPLUS_INCLUDE_PATH=/home/michael/local/include${CPLUS_INCLUDE_PATH:+:${CPLUS_INCLUDE_PATH}}
    export PKG_CONFIG_PATH=/home/michael/local/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}
    # 然后刷新环境变量
    source ~/.bashrc
    # 使用 opencv_version 可以查看opencv环境变量是否配置成功
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 编译cmake3.12
    tar -zxvf cmake-3.12.0.tar.gz
    cd cmake-3.12.0
    ./bootstrap --prefix=/home/michael/local/ 
    make -j4 
    make install
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # 安装Anaconda2,因为Anaconda是python都是可以本地安装的,而系统的python需要权限,所以我们都使用Anaconda即可
    sh Anaconda2-5.0.1-Linux-x86_64.sh
    # 输入本地路径 /home/michael/local/anaconda2,它会自己创建所以不需要我们创建路径
    # 过程中记得选择yes将Anaconda2添加到~/.bashrc环境变量,这样子就我们使用Python的时候优先使用Anaconda而不是系统的Python
    # 安装完成之后修改pip源,使用国内的pip源可以极大地提高pip下载速度,可以省去不少时间
    # 这里我更换了清华大学的pip源,Anaconda和系统的python都是通用的,做法如下:
    cd ~/ && mkdir .pip && cd .pip && vim pip.conf
    # 然后输入:
    [global]  
    index-url=https://pypi.tuna.tsinghua.edu.cn/simple
    [install]  
    trusted-host=pypi.tuna.tsinghua.edu.cn 
    disable-pip-version-check = true  
    timeout = 6000
    # 然后保存即可,我安装完成之后就直接安装之后需要的一些Densepose和Caffe2的python依赖包,执行单句语句
    pip install --ignore-installed -U pip numpy pyyaml matplotlib setuptools Cython mock scipy typing future protobuf opencv-python memory-profiler
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    # 由于在服务器上没有sudo权限,所以平时一句sudo apt-get install XXX 就能安装的包外面都要下载它们的源码下来,采用源码编译的方式来安装
    # 以下是诸多的依赖包,也可以自行从网上下载下来
    
    # zlib
    # 因为使用Anaconda的缘故所以Ubuntu需要编译zlib,我从Ubuntu官网下载了zlib的源码zlib_1.2.11.dfsg.orig.tar.xz并手动编译。
    # 解压zlib_1.2.11.dfsg.orig.tar.xz,并进入zlib-1.2.11,并执行
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # cocoapi
    git clone --recursive https://github.com/cocodataset/cocoapi.git
    cd cocoapi/PythonAPI && make && make install
    # 使用python运行import pycocotools.coco没有报错即cocoapi安装成功
    
    # openblas
    tar -zxvf OpenBLAS-0.2.20.tar.gz
    cd OpenBLAS-0.2.20/
    make -j4 && make PREFIX=/home/michael/local install
    
    # snappy
    tar -zxvf snappy-1.1.4.tar.gz
    cd snappy-1.1.4/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # gtest
    tar -zxvf gtest-1.5.0.tar.gz
    cd gtest-1.5.0/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # glog
    tar -zxvf glog-0.3.3.tar.gz
    cd glog-0.3.3/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # leveldb
    unzip leveldb-1.20.zip
    cd leveldb-1.20/
    make -j4
    cd include/
    cp -r leveldb/ /home/michael/local/include
    cd ..
    cd out-shared/
    cp -a lib* /home/michael/local/lib/
    
    # hdf5
    tar -zxvf hdf5-1.8.17.tar.gz
    cd hdf5-1.8.17/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # lmdb
    tar -zxvf lmdb-LMDB_0.9.22.tar.gz
    cd lmdb-LMDB_0.9.22/libraries/liblmdb
    vim Makefile
    # 修改为 prefix  = /home/michael/local
    make -j4
    make install 
    
    # gflag
    unzip gflags-master.zip
    cd gflags-master/
    mkdir build
    cd build
    cmake -D CMAKE_INSTALL_PREFIX=/home/michael/local ..
    make -j4
    make install
    
    # protobuf
    tar -zxvf protobuf-cpp-3.5.0.tar.gz
    cd protobuf-3.5.0/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # openmpi
    tar -zxvf openmpi-3.1.1.tar.gz
    cd openmpi-3.1.1/
    ./configure --prefix=/home/michael/local
    make -j4
    make install
    
    # caffe2
    git clone --recursive https://github.com/pytorch/pytorch.git 
    cd pytorch 
    git submodule update --init 
    mkdir build 
    cd build
    # 新建/home/michael/local/caffe2路径,因为我怕caffe2生成的链接库和我之后的caffe框架混乱了,所以就不把caffe2路径和其他文件放在一起了
    cmake -D CMAKE_INSTALL_PREFIX=/home/michael/local/caffe2 ..
    make install -j4
    # 添加PYTHON环境变量
    vim ~/.bashrc
    export PYTHONPATH=/home/michael/pytorch/build${PYTHONPATH:+:${PYTHONPATH}}
    # 验证caffe2是否能正确调用GPU
    michael@hp:~/pytorch/build$ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
    Success #输出Success
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    # densepose
    git clone --recursive https://github.com/facebookresearch/densepose
    cd densepose
    make -j4
    python detectron/tests/test_spatial_narrow_as_op.py
    #提示OK
    make ops -j4
    #报错,找不到caffe2,另外,由于服务器原本安装了cuda9和cudnn7,和densepose要求的cuda8与cudnn6不符,所以在make ops这个环节手动make。
    cd build #在第一步make的时候生成了build
    #指定所有变量所在
    cmake \
    -D CUDA_TOOLKIT_ROOT_DIR=/home/michael/local/cuda_8.0.61 \
    -D CUDNN_INCLUDE_DIR=/home/michael/local/cuda_8.0.61/include \
    -D CUDNN_LIBRARY=/home/michael/local/cuda_8.0.61/lib64/libcudnn.so \
    -D CMAKE_PREFIX_PATH=/home/michael/local/caffe2 ..
    make -j4
    cd ..
    python detectron/tests/test_zero_even_op.py
    #提示OK,到此densepose的配置就已经结束了,接下来需要拷贝一些模型和数据才能够运行demo
    
    # 模型和数据
    DensePose_ResNet101_FPN_s1x-e2e.pkl
    DensePoseData/eval_data   #由DensePoseData/get_eval_data.sh下载并解压得到
    DensePoseData/UV_data    #由DensePoseData/get_densepose_uv.sh下载并解压得到
    
    # 然后到densepose主目录下方执行下方语句即可成功运行demo
    python2 tools/infer_simple.py \
        --cfg configs/DensePose_ResNet101_FPN_s1x-e2e.yaml \
        --output-dir DensePoseData/infer_out/ \
        --image-ext jpg \
        --wts DensePose_ResNet101_FPN_s1x-e2e.pkl \
        DensePoseData/demo_data/demo_im.jpg
    # 若提示 X Server的问题是因为服务器不提供显示作用,代码里面的imshow等语句去掉即可
    # 执行完即在DensePoseData/infer_out里面生成 demo_im_INDS.png  demo_im_IUV.png  demo_im.jpg.pdf
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wuzebiao2016/article/details/81225015

    展开全文
  • DensePose 估计旨在完成从 RGB图像中所有的人体像素 到 人体3D表面 的映射。 相关构成,用文中的话即为(Mask-RCNN + DenseReg) 二、主要工作 主要工作可以总结为三点: 1.通过收集SMPL与COCO中人的密集坐标对应...

    个人的一些拙见,欢迎批评指正,欢迎互相交流…

    一、概述预览
    DensePose 估计旨在完成从 RGB图像中所有的人体像素 到 人体3D表面 的映射。
    相关构成,用文中的话即为(Mask-RCNN + DenseReg)

    二、主要工作
    主要工作可以总结为三点:
    1.通过收集SMPL与COCO中人的密集坐标对应,手动标注建立标注了DensePose COCO数据集。
    2.设计了一个可以用于输出uv坐标的框架。
    3.训练了一个‘teacher’网络模型,来补齐稀疏点图像到密集监督信号。

    三、相关知识
    个人认为,要理解整篇文章需要的知识储备,涉及的比较多

    1.UV纹理贴图坐标:
    请参考:

    https://www.cnblogs.com/jenry/p/4083415.html

    2.Mask-RCNN

    https://blog.csdn.net/linolzhang/article/details/71774168

    3.DenseReg
    没有找到相关的介绍教程,可以看看原论文,或者过些日子写一篇关于DenseReg的个人理解。

    4.Detectron
    和Mask-RCNN一样都是在FaceBook的Detectron平台上实现。

    https://github.com/facebookresearch/Detectron

    四、具体任务解析

    1.COCO-DensePose Dataset
    挑选了50K个人,手动标注了近5百万标注点
    Fig2:
    Task1:通过让注释者将图像分割成语义区域来标注图像和3D表面模型之间的密集对应。Task2:然后对任意点上的每个采样点进行相应的表面点定位渲染部分的图像。“红叉”指出当前的注释点。已渲染的表面坐标,将收集2D点在3D模型上的定位。

    Fig3:
    (待补图)
    用于收集各部分对应的用户界面注解:我们为注解者提供了六个预先录制好的注解身体部分的视图,使整个部分表面是可见的。一旦对某一目标点进行了注释,则点同时显示在所有渲染的图像上。

    对于每一张图像k,利用di,k来估计正确表面点 i 与人工标注者估计的对应点 i^ 的测量距离。g(·,·)表示了两个测量点之间的距离。
    (补公式)

    对于任何图像k,只注释 和 估计错误 在一组随机抽样的曲面点上Sk 和 内插表面其余部分的误差。最后, 我们对所有用于评估的K个示例中的错误进行平均注释器的性能。
    Fig5:
    (补图)
    注释错误非常小的在表面上有明显的特征,可以帮助定位(脸,手,脚),而在比较大的时候通常被衣服覆盖的区域(躯干,后面,臀部)注释器错误可以变得更大。

    2.网络结构
    在densepose这部分采用了FCN结构,这一点也是因为以前有人证明过卷积核拥有着不错的分类功能。在网络的细节上,采用了局部化处理回归,首先进行二分类,得出前景与背景,然后将前景再进行细分成各个不同的身体部位进行分别回归,因此也会建立局部的二维坐标系。
    第一个步骤先要去进行身体部位的回归分类,分为了24+1类,然后再对每一个去回归出U,V两个feature maps。
    由于人体结构复杂,因此作者将其分解为多个独立的部分,并使用局部二维坐标系对每个部分进行参数化,以识别该表面部分上任何节点的位置。

    2.2 Region based Dense Pose Regression
    fig7

    2.3 Multitask cascaded architectures
    fig8
    利用了多任务的Multi-task cascaded architectures结构,将 mask 和 keypoint的输出特征 与 densepose 的特征 互相融合训练。而且也可以看出来使用了多stage的思想,进行“中继监督”训练。

    四、实验部分
    1.teacher net
    尽管目标是在测试时进行密集的姿态估计时间,在每一个训练样本中,只标注了稀疏像素的子集,每个人大约100-150。这并不一定会在训练中造成问题,因为可以进行分类/回归loss忽略了基本GT对应的坐标没有收集到,,只要不把它们包含在求和里在单像素损失。
    但是,作者在实验椎中观察们通过“inpainting”获得了更好的结果。
    特别地,我们只保留网络对被标记为前景的预测,以忽略网络错误在背景区域。

    2.Conclusion
    table 1

    展开全文
  • Densepose安装教程

    2019-09-26 17:37:35
    densepose的安装过程 可参考https://blog.csdn.net/FatMigo/article/details/88648107 https://github.com/facebookresearch/DensePose densepose-RCNN系统是在detectron框架下实现的 需要硬件基础 Nvidia GPU、...
  • DensePose即Dense Human Pose Estimation In The Wild 主页 Github代码 安装 (1)安装参考 a.《[MineSweeping] The Long Struggle of DensePose Installation》 b.初版《densepose吐血安装之路》+升级版...
  • DensePose小结

    2019-11-30 11:27:41
    配好densepose 所需要的环境后,就可以运行项目了。 python2 tools/infer_simple.py --cfg configs/DensePose_ResNet101_FPN_s1x-e2e.yaml --output-dir DensePoseData/infer_out/ --image-ext jpg --wts ...
  • 安装DensePose 因为安装DensePose很难,所以我提供了一个基于和所提供的的简单安装guid。 要求: NVIDIA GPU,Linux,Python2 Caffe2,各种标准Python软件包和COCO API; 有关安装这些依赖项的说明,请参见下文 ...
  • densepose应用

    2020-07-06 21:22:49
    Dense Pose 系统则可以根据顾客提供的这些信息,产生出一张合成的图片,显示顾客「试穿」服装后的姿态。 另一个应用方向则是,远程视频诊断背部痛疾。就诊者按照医生的要求,穿戴一套专用的传感器,并依次完成一系列...
  • 1.新建conda环境-densepose 创建一个新的conda虚拟环境,方便管理。 # 如果没有添加镜像源可能下载速度会比较慢,添加中科大镜像源 conda config --set show_channel_urls yes # 创建densepose环境 conda create -n...
  • 又战densepose

    2020-07-03 23:38:56
    还记得上次配置densepose是2018年底前,那是一个冬天,当时我连linux是什么都不知道就去了公司实习,由于天生迟钝,配了两个星期,当然里面还做了其他的事情,系统坏了就重装,当然那个时候确实把装系统给整的明明白...
  •  Facebook AI Research(FAIR)开源了一项将2D的RGB图像的所有人体像素实时映射到3D模型的技术(DensePose)。支持户外和穿着宽松衣服的对象识别,支持多人同时识别,并且实时性良好。  本研究的目的是通过建立从...
  • 个人的一些拙见,欢迎批评指正,...DensePose 估计旨在完成从 RGB图像中所有的人体像素 到 人体3D表面 的映射。 相关构成,用文中的话即为(Mask-RCNN + DenseReg) 二、主要工作 主要工作可以总结为三点: 1.通过...
  • 一、本文主要是Facebook AI 和INRIA 联合出品,基于RCNN架构,以及Mask RCNN的多任务结构,开源http://densepose.org二、主要工作分为两点1:标注了一个新的数据集,基于coco数据集,增加了uv标注,该数据集开源。2...
  • ubuntu16.04 + cuda9.0+cudnn7.3.1 安装densepose 文章目录ubuntu16.04 + cuda9.0+cudnn7.3.1 安装densepose准备工作第一步安装pytorch第二步安装detectorn第三步安装cocoapi第四步安装densepose(hard级别)参考...
  • DensePose阅读笔记

    2020-06-25 14:39:29
    论文贡献: 1.数据集的制作:通过收集SMPL模型和COCO数据集中出现的人之间的密集对应关系的数据;...2.数据集的介绍:DensePose-COCO Dataset 2.1 Annotation System(注释系统) 第一阶段,注释者标
  • 1.新建conda环境-densepose # 如果没有添加镜像源可能下载速度会比较慢,添加中科大镜像源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ # 创建densepose环境 conda create -n ...
  • ubuntu16.04安装densepose模型

    千次阅读 2018-10-31 16:58:39
    densepose是一个比较先进的3D姿态估计模型,很厉害,具体可以见官网:http://densepose.org/ 了解链接:http://tech.ifeng.com/a/20180619/45030393_0.shtml 一,安装caffe2和Detectron: 好的教程如下:...
  • DensePose:姿态转换模型

    千次阅读 2018-10-16 16:06:07
    DensePose 是 Facebook 研究员 Natalia Neverova、Iasonas Kokkinos 和法国 INRIA 的 Rıza Alp Guler 开发的一个令人惊叹的人体实时姿势识别系统,它在 2D 图像和人体3D 模型之间建立映射,最终实现密集人群的实时...
  • Densepose安装教程--依据Github官方教程成功安装写在前面我的系统环境 写在前面 安装densepose花了我接近一周的时间,首先感谢实验室师姐的大力相助,帮助我解决了好多bug,虽然踩了好多坑,但好在最后成功搭建了...
  • densepose安装过程记录

    千次阅读 2018-11-08 14:19:37
    Table of Contents   1.配置 2.CAFFE2安装 2.1 安装过程 ...参考:https://github.com/facebookresearch/DensePose/blob/master/INSTALL.md 2.CAFFE2安装 参考官网:https://caffe2.ai/docs/g...
  • Facebook开源基于Caffe2的2D图片实时3D姿态估计 - DensePose
  • 安装densepose的全部过程

    千次阅读 2019-01-26 16:34:12
    Installation ...preface: during the installation of densepose, we met with many kind of problems,so I write this Installation instructions Environment requirements: os: Linux ubuntu 16.04 NV...
  • DensePose文章理解以及项目使用

    千次阅读 2018-11-05 17:38:03
    DensePose文章内容 模型目的: 将人体2D图像转化成一个3D图像 使用数据库: COCO dataset 具体操作: 1. 先手动标注, 在COCO dataset上语义分割,然后均匀取点, 人工标注出每个点在三维模型上的位置,从而得到2D...
  • Densepose代码和论文理解

    千次阅读 2018-11-08 11:46:59
    代码: 训练:同FRCNN 测试: 同FRCNN 可视化: ...DensePose-RCNN-Visualize-Results 论文: 网络结构 网络结构:1.先用Faster-RCNN检测,得到人物区域检测图。2.先用传统神经网络分块。3...
  • 问题1  执行下面命令是出现问题:Detectron ops lib not found; make sure that your Caffe2 ...python2 $DENSEPOSE/detectron/tests/test_zero_even_op.py    解决方法: 跟踪问题,出现在detectron/util...
  • 数据集:densepose_coco_2014_valminusminival.json backbone:ResNet50 " AP Multi-Tasks" body_uv box keypoint mask body_uv_only 30.98 45.25 41.48 — keyp...
  • 安装densepose #安装caffe2: 验证caffe是否装成功

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 440
精华内容 176
关键字:

densepose