用Shap-E生成3D模型

Shap-E 是 OpenAI 开发的突破性模型,它使用文本或图像作为输入生成一系列 3D 对象,以其创新方法改变了 3D 应用领域。 这项非凡的技术可以在 GitHub 上免费获取,允许用户在计算机上无缝运行它,而无需 OpenAI API 密钥或互联网连接。

Shap-E 真正引人注目的是它的多功能性:生成的 3D 对象可以在 Microsoft Paint 3D 等软件中打开,甚至可以转换为 STL 文件以进行 3D 打印。 凭借其独特的功能,Shap-E 正在重新定义我们处理文本到 3D 和图像到 3D 生成的方式,以及由此产生的人工智能应用的创造性可能性。
在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

在本教程中,我们将学习如何在 Google Colab 中创建笔记本、设置和使用 OpenAI 的 Shape-E 模型来生成 3D 模型并使用 Blender Studio 对其进行自定义。

在开始之前,请访问 Blender.org 并下载与你的操作系统兼容的 Blender Studio。

1、设置Colab项目

让我们首先在 Google Colab 中创建新的笔记本。

转到 Google Colab 并创建新笔记本。
在这里插入图片描述

2、克隆存储库

现在,我们需要将 Shape 存储库克隆到你的 Google Colab Notebook。

!git clone https://github.com/openai/shap-e

进入 shap-e目录并安装依赖包:

%cd shap-e
!pip install -e .

3、实施和烘焙 3D 模型。

添加新的代码单元格 code cell。

在这里我们将导入所有必需的库。

import torchfrom shap_e.diffusion.sample import sample_latents
from shap_e.diffusion.gaussian_diffusion import diffusion_from_config
from shap_e.models.download import load_model, load_config
from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, gif_widget

单击“run”按钮或 CMD/CTRL + Enter 运行单个代码单元。

Coooooooooooooooooooool!

添加新的代码单元格。

在这里,我们将设备设置为 cuda(如果可用),否则设置为 cpu。

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

单击“run”或 CMD/CTRL + Enter。

添加新的代码单元格。

在这里我们将加载模型和权重。

xm = load_model('transmitter', device=device) 
model = load_model('text300M', device=device) 
diffusion = diffusion_from_config(load_config('diffusion')) 

单击“run”或 CMD/CTRL + Enter。

请耐心等待,加载模型和权重需要一些时间。 对我来说大约需要 5 分钟。 是的,当然这取决于你的互联网连接速度。

添加新的代码单元格。

在这里我们将生成 3D 模型。

batch_size = 1 # this is the size of the models, higher values take longer to generate.
guidance_scale = 15.0 # this is the scale of the guidance, higher values make the model look more like the prompt.
prompt = "a donut" # this is the prompt, you can change this to anything you want.latents = sample_latents(batch_size=batch_size,model=model,diffusion=diffusion,guidance_scale=guidance_scale,model_kwargs=dict(texts=[prompt] * batch_size),progress=True,clip_denoised=True,use_fp16=True,use_karras=True,karras_steps=64,sigma_min=1E-3,sigma_max=160,s_churn=0,
)

单击“run”或 CMD/CTRL + Enter。

生成 3D 模型需要一些时间,具体取决于你的批大小,较高的批大小将需要更长的时间来生成 3D 模型。 对我来说,生成 batch_size=1 的 3D 模型大约需要 22 秒。

添加新的代码单元格。

在这里,我们将渲染 3D 模型,使用 render_mode = ‘nerf’ 神经辐射场 (NeRF) 来渲染 3D 模型。 你可以将其更改为 render_mode = ‘stf’ 以使用风格传递函数 (STF) 渲染模式渲染 3D 模型。

render_mode = 'nerf' # you can change this to 'stf'
size = 64 # this is the size of the renders, higher values take longer to render.cameras = create_pan_cameras(size, device)
for i, latent in enumerate(latents):images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)display(gif_widget(images))

单击“run”或 CMD/CTRL + Enter。

你看到模型在旋转吗? 很酷,对吧?

我们继续吧。

添加新的代码单元格。

在这里,我们将 3D 模型保存为 .ply 和 .obj 文件。

注意: .obj,稍后我们将使用它在 Blender Studio 中进行自定义。

# Example of saving the latents as meshes.
from shap_e.util.notebooks import decode_latent_meshfor i, latent in enumerate(latents):t = decode_latent_mesh(xm, latent).tri_mesh()with open(f'example_mesh_{i}.ply', 'wb') as f: # this is three-dimensional geometric data of model.t.write_ply(f)with open(f'example_mesh_{i}.obj', 'w') as f: # we will use this file to customize in Blender Studio later.t.write_obj(f)

单击“run”或 CMD/CTRL + Enter。

将选项卡切换到文件并点击刷新。 你将看到 example_mesh_0.ply 和 example_mesh_0.obj 文件。

在这里插入图片描述

将 .obj 文件下载到本地计算机。

4、在 Blender Studio 中自定义 3D 模型

打开 Blender Studio 并创建新项目。
在这里插入图片描述

删除默认的立方体。
在这里插入图片描述

单击File > Import > Wavefront (.obj)。 选择你从 Google Colab 下载的 .obj 文件。
在这里插入图片描述

应该在中心看到 3D 模型。

在这里插入图片描述

哇!,它本身看起来很酷,不是吗? 顺便说一句,Shap-E 做得很好。

你可以根据需要自定义 3D 模型。

为了演示目的,我简单地将配料涂成粉红色,将甜甜圈涂成棕色。
在这里插入图片描述


原文链接:用Shap-E生成3D模型 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/81574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023华数杯数学建模C题思路分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护, 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、 压力等,可能会对婴儿的认知、情…

桌面端UI自动化测试如何让SplitButtonControl展开

原始SplitButtonControl图 从图中鼠标所指的控件属性为: ControlType(控件类型): SplitButtonControl ClassName(类名): SplitButton AutomationId(自动化ID): esri_geoprocessing_Pyt…

【Go】Go数据操作 - 处理JSON文件

目录 何为JSON 编码JSON 实践时刻 解码JSON 实践时刻 延伸拓展 何为JSON JSON (JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。JSON最初是 JavaScript的一部分,后由于便于快速编写的特性,被开发者独立出来。基本上所有的…

灵活利用ChatAI,减轻工作任务—语言/翻译篇

前言 ChatAI在语言和翻译方面具有重要作用。它能够帮助用户进行多语言交流、纠正错误、学习新语言、了解不同文化背景,并提供文本翻译与校对等功能。通过与ChatAI互动,我们能够更好地利用技术来拓展自己在语言领域的能力和知识,实现更加无障…

React Dva 操作models中的subscriptions讲述监听

接下来 我们来看一个models的属性 之前没有讲到的subscriptions 我们可以在自己有引入的任意一个models文件中这样写 subscriptions: {setup({ dispatch, history }) {console.log(dispatch);}, },这样 一进来 这个位置就会触发 这里 我们可以写多个 subscriptions: {setup…

编写简单的.gitlab-ci.yml打包部署项目

服务器说明: 192.168.192.120:项目服务器 192.168.192.121:GitLab 为了可以使用gitlab的cicd功能,我们需要先安装GitLab Runner 安装GitLab Runner参考: GitLab实现CICD自动化部署_gitlab cidi_程序员xiaoQ的博客-CS…

【资料分享】全志科技T507-H开发板规格书

1 评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产…

数据库SQL优化技巧

作为程序员,主要的工作任务就是curd,和数据库打交道是无可避免的。掌握一些数据库的优化技巧是非常有必要的 一、减少数据访问 1、使用索引   索引的原理是利用额外的空间建立了一个平衡的搜索树,大大缩短了查询的时间,使得查…

STM32单片机蓝牙APP宠物自动喂食器定时语音提醒喂食系统设计

实践制作DIY- GC00162---蓝牙APP宠物自动喂食器 一、功能说明: 基于STM32单片机设计---蓝牙APP宠物自动喂食器 二、功能说明: STM32F103C系列最小系统板LCD1602显示器DS1302时钟模块5个按键语音播报模块ULN2003步进电机模块LED灯板HC-05蓝牙模块&#x…

企升编辑器word编写插件

面向用户群体招投标人员,用统一的模板来编写标书,并最终合并标书。项目经理,编写项目开发计划书,项目验收文档等。开发人员,编写项目需求规格说明书、设计说明书、技术总结等文档。其他文档编写工作量较多的岗位人员。…

用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能

一、实践发现了bug和不足 今天用了公文一键排版系统对几个PDF文件格式的材料进行文字识别后再重新排版,处理效果还是相当不错的,节约了不少的时间。 但是也发现了三个需要改进的地方: (一)发现了两个bug:…

智能优化算法——灰狼优化算法(PythonMatlab实现)

目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物 2.3 狩猎 2.4 攻击猎物 2.5 寻找猎物 3 实现步骤及程序框图 3.1 步骤 3.2 程序框图 4 Python代码实现 ​ 5 Matlab实现 1 灰狼优化算法基本思想 灰狼优化算法是一种群智能优化算法&a…

Flutter(八)事件处理与通知

1.原始指针事件处理 一次完整的事件分为三个阶段:手指按下、手指移动、和手指抬起,而更高级别的手势(如点击、双击、拖动等)都是基于这些原始事件的。 Listener 组件 Flutter中可以使用Listener来监听原始触摸事件 Listener({…

本地化部署自建类ChatGPT服务远程访问

本地化部署自建类ChatGPT服务远程访问 文章目录 本地化部署自建类ChatGPT服务远程访问前言系统环境1. 安装Text generation web UI2.安装依赖3. 安装语言模型4. 启动5. 安装cpolar 内网穿透6. 创建公网地址7. 公网访问8. 固定公网地址 🍀小结🍀 前言 Te…

基于gpt4all的企业内部知识问答服务应用搭建

文章目录 痛点项目缘起技术选型fine-tuningfew shot prompt engineering选定方案的特征描述 模型赛马gpt4all调优部署时踩坑python3.9 header缺失 -- 安装下缺失的就行运行时参数调优 代码分析项目代码库代码 效果展示例子1例子2 附录:所用的公司内部API文档例子&am…

c#设计模式-行为型模式 之 观察者模式

定义: 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者 对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自 …

angular-mat-select 多选 实现按选择顺序排序

mat-select 正常情况下,多选后,已选项是按列表顺序进行排序,如果我想实现按照点击项目的顺序进行排序,我该如何做呢? [参考网址](Angular order of selected option in multiple mat-select - Stack Overflow) sortComparator是Angular Material中mat-select组件的一个属…

深度学习中的优化算法

文章目录 前言一、优化和深度学习1.1 优化的目标1.2 深度学习中的优化挑战1.2.1 局部最小值1.2.2 鞍点1.2.3 梯度消失 二、梯度下降2.1 一维梯度下降2.1.1 学习率 2.2 多元梯度下降2.3 自适应方法2.3.1 牛顿法2.3.2 其他自适应方法 三、随机梯度下降3.1 随机梯度更新3.2 动态学…

Flutter iOS 集成使用 flutter boost

在 Flutter项目中集成完 flutter boost,并且已经使用了 flutter boost进行了路由管理,这时如果需要和iOS混合开发,这时就要到 原生端进行集成。 注意:之前建的项目必须是 Flutter module项目,并且原生项目和flutter m…

Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动该地区金融平等

流支付正在成为一种全新的支付形态,Zebec Protocol 作为流支付的主要推崇者,正在积极的推动该支付方案向更广泛的应用场景拓展。目前,Zebec Protocol 成功的将流支付应用在薪酬支付领域,并通过收购 WageLink 将其纳入旗下&#xf…