基于像素映射的单图人体重建模型
单图人体重建模型使用单张全身人像作为输入,使用生成式模型辅助进行结构恢复与纹理恢复,输出3D人体重建mesh。
纹理渲染效果展示:
生成白模效果展示:
模型描述
改人体重建模型以PIFU原理为基础,进行了以下改进:
- 借助生成式模型辅助产生结构信息,生成细节法向图;
- 在backbone引入多层注意力模块,使图像细节特征可以保留至模型最后,提升重建精度;
- 借助像素映射在多层中提取3D特征并进行整合,提高纹理重建精度;
- 引入相机光照损失和人体pose损失,减少因拍摄引起的畸变;
期望模型使用方式以及适用范围
适用方式:
- 可直接使用pipeline进行推理,算法最终会生成一个obj文件并返回相应顶点、面片及纹理信息;
适用范围:
- 包含全身人像的图像,其中人体部分清晰可见且分辨率在500x500以上,整体分辨率小于5000x5000;
如何使用
本模型基于pytorch进行训练和推理,安装基础的modelscope环境,提供相应输入图像,即可调用pipeline来重建人体;
环境准备
python3.8
pip install 'numpy<=1.22.0' 'pandas<1.4.0'
python3.10
pip install -U 'numpy<1.24.0' 'pandas<1.4.0'
代码范例
建议在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以及太复杂的衣物重建效果欠佳。
评论