OpenAI新作Shap-e算法使用教程

news2024/11/20 19:45:28

一、知识点

  Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司(chatgpt,Dell-E2)开发、开源的。Shap-e生成的速度非常快,输入关键词即可生成简单模型(限于简单单体模型)。

二、环境

  • PyCharm2023.1.1
  • Python 3.11.3
  • Blender 3.5
  • Windows11

相关环境、软件的安装、配置就不在此文赘述了,本文核心是shap-e算法的使用。

三、安装和使用

1.拉取项目到本地

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

在这里插入图片描述

2.安装相关模块依赖

Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

PS D:\shap-e-main> .\venv\Scripts\activate	//激活虚拟venv环境,便于打包项目
(venv) PS D:\shap-e-main> python -V			//确认python版本是否为3.11.x
Python 3.11.3
(venv) PS D:\shap-e-main> pip install -e .	//安装shap-e环境,必须可以访问github.com
Obtaining file:///D:/shap-e-main
  Preparing metadata (setup.py) ... done
Collecting clip@ git+https://github.com/openai/CLIP.git
  Cloning https://github.com/openai/CLIP.git to c:\users\mr.wangxk\appdata\local\temp\pip-install-fgr41dyt\clip_e64fda89d6014713a948df91c66d07cf
  Running command git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\Mr.Wangxk\AppData\Local\Temp\pip-install-fgr41dyt\clip_e64fda89d6014713a948df91c66d07cf'
  Resolved https://github.com/openai/CLIP.git to commit a9b1bf5920416aaeaec965c25dd9e8f98c864f16
  Preparing metadata (setup.py) ... done
Requirement already satisfied: filelock in c:\users\mr.wangxk\appdata\local\programs\python\python311\lib\site-packages (from shap-e==0.0.0) (3.12.0)
Collecting Pillow
  Downloading Pillow-9.5.0-cp311-cp311-win_amd64.whl (2.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 1.5 MB/s eta 0:00:00
Collecting torch
  Downloading torch-2.0.1-cp311-cp311-win_amd64.whl (172.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 172.3/172.3 MB 3.3 MB/s eta 0:00:00
Collecting fire
  Downloading fire-0.5.0.tar.gz (88 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.3/88.3 kB 5.2 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting humanize
  Downloading humanize-4.6.0-py3-none-any.whl (109 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.0/110.0 kB 3.2 MB/s eta 0:00:00
Collecting requests
  Downloading requests-2.30.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 kB 3.3 MB/s eta 0:00:00
Collecting tqdm
  Downloading tqdm-4.65.0-py3-none-any.whl (77 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.1/77.1 kB 4.5 MB/s eta 0:00:00
Collecting matplotlib
  Downloading matplotlib-3.7.1-cp311-cp311-win_amd64.whl (7.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.6/7.6 MB 5.2 MB/s eta 0:00:00
Collecting scikit-image
....

**如果没有科学上网则会报错如下:**
在这里插入图片描述

如上所示显示Successfully环境就安装完成了。

3.安装、配置jupyter notebook

(venv) PS D:\shap-e-main> pip install notebook 

在这里插入图片描述
配置jupyter模型存放路径:

(venv) PS D:\shap-e-main> jupyter notebook --generate-config                                                                       
Overwrite C:\Users\Mr.Wangxk\.jupyter\jupyter_notebook_config.py with default config? [y/N]y
Writing default config to: C:\Users\Mr.Wangxk\.jupyter\jupyter_notebook_config.py

因为我已经生成了所以提示是否覆盖

根据提示的配置文件路径打开jupyter_notebook_config.py配置文件:

# 找到 c.NotebookApp.notebook_dir = 更改路径
...
c.NotebookApp.notebook_dir = 'D:/shap-e-main/models'
...

在这里插入图片描述

保存并重启jupyter即可生效。

4.Shap-e算法使用

  OpenAI不愧是大厂,非常的贴心,在项目目录下已经为我们准备好了代码案例,可直接复制使用。三个代码案例文件说明如下:

  • sample_text_to_3d.ipynb - 对 3D 模型进行采样,以文本提示为条件。
  • sample_image_to_3d.ipynb - 对 3D 模型进行采样,以合成视图图像为条件。为了获得最佳效果,您应该从输入图像中删除背景。
  • encode_model.ipynb - 加载 3D 模型或三网格,创建一批多视图渲染和点云,将它们编码为潜在,然后渲染回来。为此,请安装 Blender 版本 3.3.1 或更高版本,并将环境变量设置为 Blender 可执行文件的路径。BLENDER_PATH
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

说明:

  图中代码左侧的In 1、In 2、In 3...是代码块运行成功的标志,In _为等待运行,且正在运行的代码块地底边框会有蓝色动态光条,每个代码块底部还有执行时间戳、耗时统计。In 3代码块回去下载并加载transmittertext300M模型,大概3GB左右,所以比较费时间,博主为了节省时间已提前下载好,如有需要的伙伴评论留言即可。

load_model含义:

  xm = load_model('transmitter', device=device)这行代码的作用是加载名为 “transmitter” 的模型,并将其放在指定的设备上(例如 CPU 或 GPU)。具体而言,它使用 PyTorch 中的 load_model 函数来加载预先训练好的模型,并返回一个 nn.Module 对象。你可以使用这个对象来进行推理或微调训练。注意,在运行这行代码之前,你需要先定义 device 变量并将其设置为你想要使用的设备。

关键参数:

batch_size:训练模型数量
guidance_scale:模型尺寸
prompt:描述模型形状

由于电脑配置原因训练模型需要四个小时…
在这里插入图片描述
训练完后会在代码块下放显示,也可网页查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RuntimeError: [enforce fail at …\c10\core\impl\alloc_cpu.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 47185920 bytes.
由于内存不足无法继续训练其余三个模型了…

别担心,谷歌给我们提供了shap-e测试页面:https://colab.research.google.com/drive/1XvXBALiOwAT5-OaAD7AygqBXFqTijrVf?usp=sharing&pli=1#scrollTo=iSN7AXg2eeW3

5.谷歌Shap-e测试页面使用

我们只需要跟着步骤一步步执行即可
在这里插入图片描述

左侧:测试服务器目录,可以利用测试服务器训练完模型并下载到本地,很方便。
右侧:测试服务器的性能信息实时监控。
中间:代码执行操作以及结果展示区域。

继续训练咱们的shark模型,可以看到训练模型只需要1分钟左右!模型下载也很快!
在这里插入图片描述
以下四个模型训练完毕:
在这里插入图片描述
生成模型文件ply,并下载模型文件
在这里插入图片描述

可以看到谷歌提供的免费shap-e测试环境很棒,37秒完成了我笔记本四个小时训练的效果!(我笔记本8核16G,2G独显)

将文件导入blender
在这里插入图片描述
在这里插入图片描述

导入前选中初始模型安del键将其删除

在这里插入图片描述
在这里插入图片描述
选择旋转功能可拖拽中心球体进行360°旋转查看。(模型不带颜色)
在这里插入图片描述

四、结束语

  本次Shap-e算法的使用教程就到此结束了,后期会给大家带来更深层次应用,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TFTLCD显示实验

实验内容 通过 STM32 的 FSMC 接口来控制 TFTLCD 的显示。 TFTLCD简介 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都…

Docker笔记7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库?

7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库? 1 准备工作2 准备站点证书2.1 创建CA私钥2.2 创建CA根证书请求文件2.3 配置CA根证书2.4 签发根证书2.5 生成站点SSL私钥2.6 私钥生成证书请求文件2.7 配置证书2.8 签署站点SSL证书 3 配置私有仓…

一五一、web+小程序骨架屏整理

骨架屏介绍 请点击查看智能小程序骨架屏 车载小程序骨架屏 车载小程序为方便开发者设置骨架屏,在智能小程序的基础上抽取出骨架屏模板,开发者只需要在 skeleton 文件夹下配置config.json(page 和骨架屏的映射关系文件)即可生效骨…

web自动化测试进阶篇02 ——— BDD与TDD的研究实践

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

Apollo oracle适配

前言:公司数据库统一切换为oracle,减少部署mysql,现需要将Apollo的数据库做oracle适配,当前使用版本为Apollo2.0.0,网上找到最新版本的适配oracle的版本也仅为1.4.0,现决定自己适配。 部分参考了官方介绍的…

使用FFMPEG加载外挂或内封字幕小记

ffmpeg版本: FFMEPEG 4.4 继上一篇实现音视频播放器后,将加载字幕的过程和遇到的坑记录如下: 字幕初识 视频字幕分为三种。 内嵌字幕,字幕与视频图像合二为一,成为视频帧的一部分,也叫硬字幕。 内封字…

数据库完整性

完整性概述 数据库的完整性是指数据库的正确性、一致性、相容性 正确性:数据库的数据符合语义约束 一致性:数据间的逻辑关系是正确的,从一个一致性状态转移到另一个一致性状态 相容性:同一事物的两个数据应当是一致的 约束的分类…

Zookeeper(一)

简介 设计模式角度 Zookeeper:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那…

JDBC从入门到精通

1 JDBC概述 在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接 我们开发的同…

两年时间,成为测试组老大....

看到行业的前辈都分享一些过往的经历来指导我们这些测试人员,我很尊敬我们的行业前辈,没有他们在前面铺路,如今我们这帮年轻的测试人估计还在碰壁或摸着石头过河,结合前辈们的经验,作为年轻的测试人也有自己的一些职场…

IMX6ULL裸机篇之DDR3的时钟配置

一. MMDC 控制器 对于 I.MX6U 来说,有 DDR 内存控制器,否则的话它怎么连接 DDR 呢?MMDC控制器 就是 I.MX6U 的 DDR内存控制器。 MMDC 外设包含一个内核(MMDC_CORE)和 PHY(MMDC_PHY),内核和 PHY 的功能如下: MMDC 内…

nacos服务端源码集群同步源码分析

nacos集群状态同步源码分析 ServerStatusReporter ServerStatusReporter 是 ServerListManager的内部类 通过Component注解被解析到spring容器中 再通过PostConstruct初始化执行init方法 上边代码启动了一个延时2秒的线程 private class ServerStatusReporter implements Run…

信号时域分析方法

主要参考: 时域分析——有量纲特征值含义一网打尽 信号时域分析方法的理解(峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等) 重要笔记如下: 建议跟参考笔记同步看。 有量纲特征值8个——最大值、最小值、峰峰值、均值…

Unable to resolve resource vscode-vfs://github%2B7b2276223a312c22726566223a7

github无法访问?vscode 无法使用github登录同步? 改 hosts 吧 Unable to resolve resource vscode-vfs://github%2B7b2276223a312c22726566223a7一、无法访问 github.com ? 想要去 github.com 上拿来主义,结果访问不了,或者 np…

Go基础篇:接口

目录 前言✨一、什么是接口?二、空接口 interface{}1、eface的定义2、需要注意的问题 三、非空接口1、iface的定义2、itab的定义3、itab缓存 前言✨ 前段时间忙着春招面试,现在也算告一段落,找到一家比较心仪的公司实习,开始慢慢回…

Linux防火墙之iptables(上)

目录 一、iptables防火墙的相关知识 1)防火墙的概念 2)iptables的简介 3)netfilter/iptables 的关系 netfilter iptables 二、iptables中的四表五链 1 )四表五链的关系 2)iptables中的四表 3&#xff0…

0基础要怎么开始学习c++?

先放一张学习线路图: 对于初学者看到这张线路图可能有点晕。实际上耐心一点,有足够的毅力还是可以自学攻克C这门语言的。 一、C语言 基础内容就是两块:基础语法和一个小游戏案例 进阶一点也是两块内容:C高级和数据结构。包括一…

怎么画骑鹅旅行记思维导图?办公常备工具

骑鹅旅行记不仅是一本神奇的奇幻童话,更是一本寓教于乐的启蒙读物,引导着孩子们学习正确的价值观和道德观。在开始制作骑鹅旅行记思维导图之前,我们需要先整理好故事情节:小男孩尼尔斯因捉弄动物而被一个小精灵变成了拇指大小&…

中国社科院与美国杜兰大学金融管理硕士——与时间赛跑,充分利用每一分钟

不管你愿不愿意,时间总是在不经意间流去。林清玄在《和时间赛跑》中写道:“虽然我知道人永远跑不过时间,但是可以比原来快跑几步。那几步虽然很小很小,但作用却很大很大”。是的,我们需要与时间赛跑,充分利…

就业内推 | 上市公司招网工,最高25k*14薪,六险一金

01 锐捷网络 招聘岗位:网络工程师 职责描述: 1、承接本产品线(无线或数通)所有咨询、故障、网络变更等业务,响应内外部客户的业务响应需求,需要值班。 2、同时作为产品线技术力的核心,需要负责…