一、知识点
  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代码块回去下载并加载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算法的使用教程就到此结束了,后期会给大家带来更深层次应用,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!



















