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

本贴最后更新于 350 天前,其中的信息可能已经时移世改

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'https://github.com/openai/CLIP.git/ ,如图所示:

16.png

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

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

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
matpool
矩池云国内领先的GPU云共享平台,提供高性能的GPU租赁服务,助力人工智能、影视渲染行业。 杭州