矩池云教程|体验 OpenAI 最近推出的 3D 生成模型 Shap-E!

120 阅读3分钟

Shap-E 是由 OpenAI 最近推出的3D生成模型,使用者可以通过简单的文字或图像进行三维模型的生成,OpenAI 认为相比于点云的生成模型Point-E,Shap-E的收敛更快。本文将展示如何在矩池云上体验3D模型生成。

1、安装环境

选择环境时要选择Python版本大于等于3.9,否则代码无法正常运行,推荐基础镜像为使“Pytorch 1.12.1 ” 。硬件则推荐显存不小于12G,在官方demo给的示例中,则至少需要13G的显存才能成功运行。

推荐配置如下:

镜像名称: Pytorch 1.12.1
预装: Ubuntu20.04, Python 3.9, Pytorch1.12.1, CUDA 11.3, cuDNN 8, NVCC, VNC
推荐显卡: RTX 3090

图例说明:

租用机器 1.png

选择环境

2.png

等待机器启动完成,打开Jupyter notebook

3.png

4.png

2、配置环境

首先我们要进入终端使用git下载shap-e代码并搭建环境,推荐在home文件夹里操作,在左侧文件列表中进入home之后再打开终端,矩池云会自动识别左侧目前目录并进入。如果终端不在home目录,也可以使用cd home指令进入到home目录。

5.png

6.png

从git上下载shap-e,如果速度很慢或者下载失败,可以通过在git网址之前加入镜像网址,详情参考矩池云教程-如何加速GitHub下载?

git clone https://github.com/openai/shap-e.git
# 镜像地址:
git clone https://ghproxy.com/https://github.com/openai/shap-e.git

7.png

根据官方提示安装依赖:首先我们进入下载好的shap-e目录,然后使用pip install -e .指令即可安装shap-e

cd shap-e
pip install -e .

8.png

安装完成:

9.png

安装其他依赖:在该镜像中,仍有少数shap-e依赖的包没有预置,因此我们需要补充两个包的安装:

pip install pyyaml
pip install ipywidgets

10.png

到目前为止,shap-e的依赖已全部安装完成,下面以运行官方代码示例为例进行演示。

3、demo 演示

进入 /home/shap-e/shap_e/examples 文件夹中,有三个.ipynb文件是官方的演示demo,我们以 sample_text_to_3d 为例,如图:

11.png

双击进入notebook:

12.png

运行官方例程:

13.png

在第三个cell个第四个cell需要下载模型,需要耐心等待

14.png

运行第五个cell即可呈现结果,如图所示:

15.gif

问题汇总

**问题 1: pip 安装时,出现 fatal: unable to access'github.com/openai/CLIP… ,如图所示:

16.png

问题原因:由于网络访问不稳定,因此出现了连接超时导致失败的问题。

解决方法:一种是在长时间终端无响应后我们使用ctrl+c中断执行,或者出现上图中的错误后,我们多次重试,有几率可以连接上。如果多次尝试失败,可以通过给github链接添加国内源来实现稳定连接和加速,即修改下项目文件夹下的 setup.py 文件,在里面的 clip 链接前加上国内源ghproxy.com,具体操作如下:

进入shap-e文件夹

17.png

18.png

修改第33行的clip地址,加入国内镜像源

19.png

ctrl+S 保存修改

回到终端,重新运行pip install -e.即可解决问题

问题 2:模型下载时候报错 connect error 104

详细错误信息:

问题原因: 模型下载使用的request包访问下载地址,error = 104错误表明在对一个对端socket已经关闭的的连接调用write或send方法,在这种情况下,调用write或send方法后,对端socket便会向本端socket发送一个RESET信号,在此之后如果继续执行write或send操作,就会得到error为104,错误描述为 connection reset by peer。

解决方法: 在调用request方法做一个小的延迟等待,以防在上一个socket还没打开时调用write或send方法。

进入修改 /home/shape-e/shape-e/models/download.py 文件, 第 67 行之前加 time.sleep(0.1)

20.png

21.png

22.png

ctrl+S 保存修改

回到notebook,重新运行代码,问题即可解决。