当前位置: 首页 > news >正文

InstantMesh模型构建指南

一、介绍

InstantMesh 是一个由腾讯 ARC 实验室推出的创新项目,该项目旨在通过单张图像快速生成高质量的三维网格模型。

image.png

1. 项目背景与意义

随着 3D 内容在游戏、动画、虚拟现实等领域的广泛应用,传统的 3D 模型制作流程繁琐且耗时,需要专业人员投入大量时间和精力。InstantMesh 项目的出现,极大地简化了 3D 内容创作流程,提高了工作效率,降低了技术门槛,使得更多的人能够参与到 3D 内容的创作中来。

2. 核心技术

InstantMesh 采用了前馈框架,结合了多视图扩散模型和基于大规模重建模型(LRM)的稀疏视图重建技术。具体来说,它首先利用一个预训练的多视角扩散模型,从单张输入图像中生成多张 3D 一致的视角图像。然后,使用一个基于 LRM 架构的稀疏视角重建模型,从多视角图像中直接生成 3D 网格。此外,InstantMesh 还引入了可微分等值面提取模块 FlexiCubes,直接从 3D 隐式场中提取网格表面,并应用深度和法线等几何信息进行监督,进一步提升了网格模型的精度和光滑度。

3. 项目特点

快速生成 :InstantMesh 能够在极短的时间内(约 10 秒)完成从图像到 3D 网格的转换,这在 3D 建模领域是一个巨大的时间节省。

高质量输出 :尽管生成速度快,但 InstantMesh 生成的 3D 模型质量高,满足专业应用的需求。

易于使用 :InstantMesh 提供了命令行工具,并支持多种功能,如视频保存、前景分割、导出带有顶点颜色的.obj 网格或带有纹理映射的模型等。此外,它还提供了在线 Demo 和 Jupyter Notebook,方便用户无需复杂安装即可立即尝试。

广泛应用 :InstantMesh 适用于游戏开发、动画制作、建筑可视化、AR/VR 内容创作、教育和研究等多个领域。

4. 项目评估与性能

InstantMesh 在 Google Scanned Objects (GSO) 和 OmniObject3D (Omni3D) 两个公开数据集上进行了评估,结果显示,在 2D 视觉质量和 3D 几何质量方面均显著优于其他 SOTA 方法。具体来说,在 2D 新视角合成任务中,InstantMesh 在 SSIM 和 LPIPS 指标上显著优于其他方法;在 3D 几何质量评估中,InstantMesh 在 Chamfer Distance (CD)和 F-Score (FS)指标上也显著优于其他方法。

5. 项目影响与展望

InstantMesh 的出现,为 3D 建模和可视化领域带来了新的变革。它不仅提高了 3D 内容创作的效率和质量,还降低了技术门槛,使得更多的人能够参与到 3D 内容的创作中来。未来,随着技术的不断发展和完善,InstantMesh 有望在更多领域发挥重要作用,推动 3D 内容创作的快速发展。

6. 项目资源

  • GitHub 地址 :https://github.com/TencentARC/InstantMesh
  • 论文地址 :https://arxiv.org/abs/2404.07191

二、容器构建说明

由于模型较大建议使用两张RTX3090 +24G显卡(该项目支持在两个 GPU 上运行 gradio demo 以节省内存),或者使用单张高于RTX3090+24G性能的显卡。

1. 安装 miniconda

进入 Anaconda 官网:

Miniconda — Anaconda 文档

找到快速命令行安装,选择 Linux 系统,复制代码进入终端进行安装。

image.png

image.png

等待安装完成。

2. 安装并更新基础命令,让后续使用更快捷: unzip、lsof、git、git-lfs

apt-get update
apt-get install -y unzip
apt-get install -y lsof
apt-get install -y git
apt-get install -y git-lfs

image.png

3. 克隆项目仓库,并打开文件

git clone https://github.com/TencentARC/InstantMesh.git
cd InstantMesh

4. 创建 python 为 3.10 版本的虚拟环境,名称为instantmesh

conda create --name instantmesh python=3.10

5. 激活虚拟环境instantmesh

conda activate instantmesh

6. 通过 pip 安装所需的 torch 环境(国内镜像源快一些,以下使用了清华源)

pip install -U pip
conda install cuda -c nvidia/label/cuda-12.1.0
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121 -i https://pypi.tuna.tsinghua.edu.cn/simple

7. 安装项目依赖文件及相应包

为了安装速度更快可以将 pip 进行永久换源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt
conda install Ninja
pip install xformers==0.0.22.post7
pip install triton

该项目最后运行时会出现下载不了模型的问题,是因为库太老了,提前升级一下库即可

pip install -U huggingface_hub

8. 更改代码,删减端口部分,否则该项目gradio界面显示不出

找到/InstantMesh/app.py最后几行代码,根据下图所示进行删减

删减为

image.png

9. 指定端口,运行 py 文件(运行项目,首次运行会自动下载模型参数,需要保证网络通畅,以下使用了国内镜像下载模型速度快些)

export HF_ENDPOINT=https://hf-mirror.com
export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=8080
python app.py

耐心等待,若网络不畅通出现下载中断的情况,就重新运行继续下载。

image.png

出现以下界面即为运行成功

image.png

三、网页演示

运行成功后获取访问链接,即可进入 webUI 界面(还需下载模型):

image.png

此时点击“生成”按钮,终端会自动下载模型,需要关闭代理连接至github继续下载,或者下载后上传

image.png

运行成功也就代表着webUI也相应出现运行结果

image.png

image.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue:通过js控制css变量 - 一键修改全局样式
  • 深度学习实践:理解理论背后的机制,体会理论与实际应用中的差距
  • 如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南
  • 设计模式-行为型模式-备忘录模式
  • Vue3如何查看项目是否安装了vue-router路由依赖,及安装方法
  • 数据结构与算法-17高级数据结构_图论(迪杰斯特拉算法)
  • 《黑神话:悟空》本地存档误删了怎么恢复?三种方法!
  • PHP7 json_encode() 浮点小数溢出错误
  • 攻防世界 ics-05
  • 【原创】java+swing+mysql项目管理系统设计与实现
  • OPENAIGC开发者大赛高校组银奖 | LonAC中小学编程学习平台
  • 借助MoAiStudio不写一行代码,完成页面开发
  • Redis的IO模型
  • 如何使用UWA Gears连接模拟器进行性能测试
  • Spring部分常见面试题
  • [数据结构]链表的实现在PHP中
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • css系列之关于字体的事
  • docker python 配置
  • Java教程_软件开发基础
  • JSDuck 与 AngularJS 融合技巧
  • Laravel 实践之路: 数据库迁移与数据填充
  • SpringBoot 实战 (三) | 配置文件详解
  • swift基础之_对象 实例方法 对象方法。
  • 离散点最小(凸)包围边界查找
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端设计模式
  • 人脸识别最新开发经验demo
  • 入手阿里云新服务器的部署NODE
  • 一个完整Java Web项目背后的密码
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Nginx实现动静分离
  • Python 之网络式编程
  • ​configparser --- 配置文件解析器​
  • ​Java并发新构件之Exchanger
  • ​Java基础复习笔记 第16章:网络编程
  • ​你们这样子,耽误我的工作进度怎么办?
  • (c语言)strcpy函数用法
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (含笔试题)深度解析数据在内存中的存储
  • (理论篇)httpmoudle和httphandler一览
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 控制台应用程序读取配置文件app.config
  • .Net Winform开发笔记(一)
  • .net 程序发生了一个不可捕获的异常