利用detectron2实现密集人体姿态姿态估计(Densepose)

基于图表的 DensePose 方法的目标是建立密集对应关系 通过将图像像素和 3D 对象网格拆分为图表并进行估计对于每个检测到的对象,模型都会预测 其粗分割(2 或 15 个通道:前景/背景或 背景 + 14 个预定义的身体部位)、精细分割(25 个通道: 背景 + 24 个预定义的身体部位)和局部图表坐标】

首先cuda、pytorch深度学习的环境是必不可少的

http://git clone https://github.com/facebookresearch/detectron2.git python -m pip install -e detectron2

git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2

(源码安装)

Densepose是采用的smpl模型:

Densepose是采用U、V贴面来实现:

UV" 这里是指u,v纹理贴图坐标的简称(它和空间模型的X, Y, Z轴是类似的). 它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图.  

UV坐标是一种在计算机图形学中用于纹理映射(Texture Mapping)的坐标系统。它用于将二维图像(纹理)精确地映射到三维模型的表面上。UV坐标在某种程度上类似于在三维空间中的X、Y、Z坐标,但它们专门用于定义纹理在模型表面的定位。

UV 坐标的基本概念
二维纹理图像:纹理图像是一个二维平面,它由像素点构成,每个像素点具有颜色信息。这些像素点的坐标通常用U和V来表示。

U 坐标:表示图像的水平轴,范围通常是 [0, 1],从左到右。
V 坐标:表示图像的垂直轴,范围通常是 [0, 1],从下到上(有时从上到下,具体取决于坐标系统的定义)。
三维模型:三维模型由顶点(vertex)和面(face)构成。顶点在三维空间中有X、Y、Z坐标,定义了模型的形状。

映射过程:UV映射是指将每个三维顶点与一个二维纹理坐标(UV坐标)关联起来。这个过程通常通过UV展开(Unwrapping)来完成。展开过程将三维模型的表面展开成一个平面,使得每个顶点在这个平面上都有一个对应的UV坐标。

UV 坐标的作用
UV坐标的主要作用是为三维模型的每个顶点提供一个在二维纹理图像上的对应位置。这样,当纹理图像被贴到模型上时,可以准确地定位每个像素,从而在模型表面生成细腻、逼真的纹理效果。

UV 映射的步骤
模型准备:首先准备一个三维模型,定义其顶点和面。
UV展开:将模型表面展开到一个平面上,确定每个顶点在纹理图像上的位置。
纹理贴图:将二维纹理图像贴到展开的UV坐标上。这样,图像上的每个点都可以精确对应到模型表面上。
纹理插值:在实际渲染时,软件会对模型表面上的点进行纹理插值处理,使得纹理在模型表面上显示得更加平滑和自然。
UVW 坐标
除了UV坐标,还有UVW坐标,它在UV坐标的基础上增加了一个维度W。UVW坐标用于更复杂的纹理映射需求,比如三维纹理(体纹理)和动画控制等。W坐标可以表示第三维度的纹理位置或动画时间参数,进一步扩展了纹理映射的能力。

以下是不同情况下的姿态估计,其中有些模型需要自己下载,如果遇到问题,可以评论,我遇到过一些问题就不一一说明了

1,显示边界框和分割 

python apply_net.py show configs/densepose_rcnn_R_50_FPN_s1x.yaml \
https://dl.fbaipublicfiles.com/densepose/densepose_rcnn_R_50_FPN_s1x/165712039/model_final_162be9.pkl \
image.jpg bbox,dp_segm -v

                                                  

2,显示身体部位的边界框和估计的 U 坐标 

python apply_net.py show configs/densepose_rcnn_R_50_FPN_s1x.yaml  \
https://dl.fbaipublicfiles.com/densepose/densepose_rcnn_R_50_FPN_s1x/165712039/model_final_162be9.pkl \
image.jpg bbox,dp_u -v

                                                    

3,显示身体部位的边界框和估计的 V 坐标

python apply_net.py show configs/densepose_rcnn_R_50_FPN_s1x.yaml  \
https://dl.fbaipublicfiles.com/densepose/densepose_rcnn_R_50_FPN_s1x/165712039/model_final_162be9.pkl \
image.jpg bbox,dp_v -v

                                              

4,通过等值线图显示边界框并估计 U 和 V 坐标

python apply_net.py show configs/densepose_rcnn_R_50_FPN_s1x.yaml  \
https://dl.fbaipublicfiles.com/densepose/densepose_rcnn_R_50_FPN_s1x/165712039/model_final_162be9.pkl \
image.jpg dp_contour,bbox -v

                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值