Toon3D
人类可以从非3D一致的图像中感知3D世界,为什么机器不能呢? 这个项目实现了对非几何一致场景(如卡通)的3D重建。我们从卡通中选取几张图片并将其重建为3D。我们的项目页面在https://toon3d.studio/。
图像 1 | 图像 2 | 图像 3 |
---|---|---|
环境设置
创建一个conda环境并安装Toon3D。
pip install -e .
下载Toon3D数据集场景
从这里下载Toon3D数据集,并将数据集文件夹放在data/processed
中。
运行完整的SfM流程(可选,用于自定义数据)
本节将指导您从一小组图像开始,对其进行标注,并运行我们的自定义SfM来创建初始数据集。这就是我们创建上面提供的预处理数据集的方式。
获取图像
您可以从这个Google Drive链接下载我们的一个图像集,或者直接使用您自己的图像。将图像放在父目录下的文件夹中,如data/images/[dataset]
,其中[dataset]是数据集名称。开始时,下载bobs-burgers-dining
图像并按照以下说明操作。
处理数据
此步骤运行深度估计和Segment Anything (SAM)。
安装方法:
pip install segment_anything @ git+https://github.com/facebookresearch/segment-anything.git
使用tnd-download-data sam
下载SAM权重。
现在,您可以运行
tnd-process-data initialize --dataset [dataset] --input_path [input_path]
其中input_path
是您图像的源文件夹,而dataset
是将输出到data/processed/[dataset]
的数据集名称
例如,
tnd-process-data initialize --dataset bobs-burgers-dining --input_path data/images/bobs-burgers-dining
如果您想在初始化后向数据集添加更多图像,运行以下命令
tnd-process-data add --dataset bobs-burgers-dining --input_path data/images/more-bobs-burgers-dining-photos
标注图像
您可以使用labeler.toon3d.studio。
您有两种方法将数据导入查看器。
(1) 上传ZIP文件夹
您可以上传已压缩的处理数据文件夹或仅选择一些图像。如果只有图像,功能会更有限(没有深度图像或SAM掩码)。
(2) 无上传版本,用于更快速的开发
将处理后的数据公开到一个公共URL。这里是我们脚本的一个例子,允许任何来源的CORS。您可以更改端口或托管文件的相对目录。
tnd-server --path data/processed --port 8000
现在,打开您处理好的数据集并进行标注。
在这种情况下,导航到https://labeler.toon3d.studio/?path=http://localhost:8000/[dataset]。
例如:https://labeler.toon3d.studio/?path=http://localhost:8000/bobs-burgers-dining
运行结构光法!
现在我们可以运行我们的方法来获得用于新视角合成的密集3D重建。
例如,
tnd-run --dataset bobs-burgers-dining
运行密集重建!
例如,
ns-train toon3d --data data/nerfstudio/bobs-burgers-dining
渲染您创建的相机路径
tnd-render camera-path --load-config [load-config] --camera-path-filename [camera-path-filename] --output-path [output-path].mp4
在训练视图之间渲染视频
tnd-render interpolate --load-config [load-config] --output-path [output-path]
项目结构
outputs
文件夹根据进行的实验类型进行组织。
outputs/[dataset]/run/[timestamp] # 用于SfM实验
outputs/[dataset]/toon3d/[timestamp] # 用于MVS实验
引用
如果您发现这些代码或数据对您的研究有用,请考虑引用以下论文:
@inproceedings{weber2023toon3d,
title = {Toon3D: Seeing Cartoons from a New Perspective},
author = {Ethan Weber* and Riley Peterlinz* and Rohan Mathur and
Frederik Warburg and Alexei A. Efros and Angjoo Kanazawa},
booktitle = {arXiv},
year = {2024},
}