一、知识点
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/PSWindowsPS 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-mainPreparing metadata (setup.py) ... done
Collecting clip@ git+https://github.com/openai/CLIP.gitCloning https://github.com/openai/CLIP.git to c:\users\mr.wangxk\appdata\local\temp\pip-install-fgr41dyt\clip_e64fda89d6014713a948df91c66d07cfRunning 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 a9b1bf5920416aaeaec965c25dd9e8f98c864f16Preparing 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 PillowDownloading 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 torchDownloading 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 fireDownloading fire-0.5.0.tar.gz (88 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.3/88.3 kB 5.2 MB/s eta 0:00:00Preparing metadata (setup.py) ... done
Collecting humanizeDownloading humanize-4.6.0-py3-none-any.whl (109 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.0/110.0 kB 3.2 MB/s eta 0:00:00
Collecting requestsDownloading requests-2.30.0-py3-none-any.whl (62 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 kB 3.3 MB/s eta 0:00:00
Collecting tqdmDownloading tqdm-4.65.0-py3-none-any.whl (77 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.1/77.1 kB 4.5 MB/s eta 0:00:00
Collecting matplotlibDownloading 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
代码块回去下载并加载transmitter
、text300M
模型,大概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
算法的使用教程就到此结束了,后期会给大家带来更深层次应用,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!