使用单张2D图进行3D重建

举报
HWCloudAI 发表于 2022/12/01 16:39:36 2022/12/01
【摘要】 An Effective Loss Function for Generating 3D Models from Single 2D Image without Rendering论文地址:https://arxiv.org/abs/2103.03390 论文提出了一种新颖的有效损失函数,用于评估重建的 3D 点云的投影覆盖地面实况对象轮廓的程度。然后使用 Poisson Surface R...

An Effective Loss Function for Generating 3D Models from Single 2D Image without Rendering

论文地址:https://arxiv.org/abs/2103.03390 论文提出了一种新颖的有效损失函数,用于评估重建的 3D 点云的投影覆盖地面实况对象轮廓的程度。然后使用 Poisson Surface Reconstruction 将重建的点云转换为 3D 网格。最后,在特定的 3D 网格上执行基于 GAN 的纹理映射,并从单个 2D 图像生成带纹理的 3D 网格。

注意事项:

使用框架**:** PyTorch1.4.0

使用硬件**:** 8 vCPU + 64 GiB + 1 x Tesla V100-PCIE-32GB

运行代码方法**:** 点击本页面顶部菜单栏的三角形运行按钮或按Ctrl+Enter键 运行每个方块中的代码

JupyterLab的详细用法**:** 请参考《ModelAtrs JupyterLab使用指导》

碰到问题的解决办法**:** 请参考《ModelAtrs JupyterLab常见问题解决办法》

1.下载代码和数据集

运行下面代码,进行数据和代码的下载和解压缩

使用CUB-200-2011数据集,数据位于2dto3d/datasets/cub/CUB_200_2011中

import os
# 数据代码下载
!wget https://obs-aigallery-zc.obs.cn-north-4.myhuaweicloud.com/algorithm/2dto3d.zip
# 解压缩
os.system('unzip 2dto3d.zip -d ./')
os.chdir('./2dimageto3dmodel/2dto3d')

2.训练

2.1安装依赖库

kaolin编译安装,https://github.com/NVIDIAGameWorks/kaolin/tree/e7e513173bd4159ae45be6b3e156a3ad156a3eb9

耐心等待,需要一些时间

import os
os.system('pip install -r requirements.txt')
os.system('pip install scipy==1.4.1')
os.system('cd kaolin&&python setup.py install')
os.system('pip install --no-dependencies nuscenes-devkit opencv-python-headless scikit-learn joblib pyquaternion cachetools')
os.system('pip install packaging')
0

2.2训练

用预训练的模型,在2dto3d/gan_weights/pretrained_weights_cub/checkpoint_latest.pth

训练完成后,模型也会更新

这里只训练2个epoch

!python main.py --dataset cub --batch_size 16 --weights pretrained_weights_cub
Time per epoch: 162.517 s
100%|█████████████████████████████████████████| 373/373 [01:25<00:00,  4.79it/s]
FID (training set): 264.43
Texture-only FID (training set): 205.55
Mesh-only FID (training set): 54.65
FID (validation set): 264.48
Texture-only FID (validation set): 205.73
Mesh-only FID (validation set): 55.49


3.模型测试

测试的结果都在2dto3d/results/pretrained_weights_cub/文件夹下

!python main.py --dataset cub --batch_size 16 --weights pretrained_weights_cub --save_results


CUB 200-2011 dataset with 5964 images is successfully loaded.

Evaluating epoch 2

Export of batch with size '16' successfully done.


3.1展示结果

3d网格可以下载之后使用3D查看器来展示,这里只展示2d图像 如果要精确,就需要多训练或者进行调参

import matplotlib.pyplot as plt

img = plt.imread('../2dto3d/results/pretrained_weights_cub/mesh_1.png')
plt.imshow(img)
<matplotlib.image.AxesImage at 0x7f71da1a2750>





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。