单图人体重建模型
输入一张单人图像,生成对应人像的3Dmesh并返回对应信息。
  • 模型资讯
  • 模型资料

基于像素映射的单图人体重建模型

单图人体重建模型使用单张全身人像作为输入,使用生成式模型辅助进行结构恢复与纹理恢复,输出3D人体重建mesh。

纹理渲染效果展示:

生成白模效果展示:

模型描述

改人体重建模型以PIFU原理为基础,进行了以下改进:

  • 借助生成式模型辅助产生结构信息,生成细节法向图;
  • 在backbone引入多层注意力模块,使图像细节特征可以保留至模型最后,提升重建精度;
  • 借助像素映射在多层中提取3D特征并进行整合,提高纹理重建精度;
  • 引入相机光照损失和人体pose损失,减少因拍摄引起的畸变;

期望模型使用方式以及适用范围

适用方式:

  • 可直接使用pipeline进行推理,算法最终会生成一个obj文件并返回相应顶点、面片及纹理信息;

适用范围:

  • 包含全身人像的图像,其中人体部分清晰可见且分辨率在500x500以上,整体分辨率小于5000x5000;

如何使用

本模型基于pytorch进行训练和推理,安装基础的modelscope环境,提供相应输入图像,即可调用pipeline来重建人体;

代码范例

建议在gpu环境进行试用、测试

from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

human_reconstruction = pipeline(Tasks.human_reconstruction,model='damo/cv_hrnet_image-human-reconstruction')
result = human_reconstruction('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/human_reconstruction.jpg')
mesh = result[OutputKeys.OUTPUT]

本地运行后,运行目录会产生名为human_color.obj的重建mesh文件,可使用meshlab等3d相关软件打开查看,mesh包含顶点、面片、顶点色信息。

模型局限性以及可能的偏差

  • 在图像人体模糊、分辨率小的图像上不能正确重建;
  • 对于人体存在遮挡的情况,重建效果会有缺失;
  • 建议使用A-pose站立在地面的照片进行重建,复杂的pose以及太复杂的衣物重建效果欠佳。