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

news/2024/4/29 17:35:23/文章来源:https://blog.csdn.net/qq_43417559/article/details/130724985

一、知识点

  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代码块回去下载并加载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.luyixian.cn/news_show_302281.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别去外包,干了三年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

jetson nx 用windows远程连接

VNC Viewer远程连接 一、jetson nx配置vnc 1、安装客户端 sudo apt-get install xrdp vnc4server xbase-clients2、进入nano/nx桌面,打开“Setting–>Desktop sharing”,没反应,据说是bug,我试过nano和nx都一样。首先输入下…

springboot+jsp法律知识分享网站普法平台

法律知识分享平台,主要的模块包括查看主页、个人中心、用户管理、律师事务所管理、律师管理、法律资讯管理、案例分析管理、案例分享管理、法规信息管理、法规分享管理、留言信息管理、留言回复管理、论坛管理、系统管理等功能。系统中管理员主要是为了安全有效地存…

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 配置私有仓…

低代码行业的发展真的可以让复杂的代码编写一去不复返?

前言 传统的软件开发过程往往需要耗费大量的时间和精力,因为开发人员需编写复杂的代码以完成各种功能。 低代码行业的发展,正好解决了这个问题,让复杂的代码编写一去不复返了。 文章目录 前言引入强大的平台总结 引入 低代码平台 是一种通过可…

Go基础篇:接口

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

yum和repo详细解析

目录 一、rpm、yum、repo 二、repo文件详细解析 三、常用命令 四、更改epel.repo为清华源 一、rpm、yum、repo RPM RPM(Red-hat Package Manager),是一个由红帽最早开发出来的包管理器,目前已经是大多数Linux发行的默认包管理器。RPM管理的包都是以…

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…

刷题day66:目标和

题意描述: 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添…

【简介】限流

限流 为什么要限流限流算法单机限流计数器算法滑动窗口算法漏桶算法令牌桶算法 分布式限流配额算法 限流策略限流位置 为什么要限流 作为有追求的程序员,我们都希望自己的系统跑的飞快,但是速度再快,系统处理请求耗时也不可能为0&#xff0c…

[MYAQL / Mariadb] 数据库学习-管理表记录2:匹配条件

管理表记录-匹配条件 匹配条件基本条件查询逻辑匹配(多个条件判断) 高级条件范围匹配模糊查询正则表达式: regexp四则运算 操作查询结果(对查找到的数据再做处理)排序分组(一样的显示一次)&…

【网络】交换机基本原理与配置

目录 🍁交换机工作原理 🍁交换机接口的双工模式 🍁交换机命令行模式 🍁交换机常见命令 🧧帮助命令 🧧常用命令介绍 🍁交换机的基本配置 🧧配置接口的双工模式及速率 🦐博…

janus videoroom 对接freeswitch conference 篇1

janus videoroom 实时性非常好, freeswitch conference的功能也很多 ,有没办法集成到一块呢 让很多sip 视频终端也能显示到videoroom 里面, 实现方式要不两种 1.改源码实现 (本文忽略 难度高) 2.找一个videoroom管…

05mysql---函数

目录 1:日期函数 2:字符函数 3:数值函数 4:流程函数 1:日期函数 select 函数(参数) 函数功能举例curdate()返回当前日期2023-05-17curtime()返回当前时间14:44:33now()返回当前日期和时间2023-05-17 14:44:33year(date)获取指定date的年份month(date)获取指定date的月份day…

Python学习26:个人所得税计算器

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 2018年10月1日以前&#xff…

特征选择与特征提取

目录 一、 特征选择1、特征2、特征选择3、扩展——特征选择算法(有兴趣和精力可了解)拓展--完全搜索:拓展--启发式搜索:拓展--随机搜索:拓展--遗传算法: 二、 特征提取三、特征提取主要方法——PCA(主成分分析)1、PCA算法是如何实现的?PCA--零均值化(中心…

【Linux命令】mount / umount命令、查看文件的挂载情况(lsblk)

在Windows环境下,我们可以直接访问检测到的外部设备,如磁盘、U盘等;然而在Linux环境下,外部硬件设备如磁盘、SD卡等外部设备是无法直接访问的。因此就需要挂载。 参考链接:mount 详解 目录 1、什么是挂载?…

Packet Tracer – 配置中继

Packet Tracer – 配置中继 地址分配表 设备 接口 IP 地址 子网掩码 交换机端口 VLAN PC1 NIC 172.17.10.21 255.255.255.0 S2 F0/11 10 PC2 NIC 172.17.20.22 255.255.255.0 S2 F0/18 20 PC3 NIC 172.17.30.23 255.255.255.0 S2 F0/6 30 PC4 NIC 1…

系统分析师:六、企业信息化战略与实施

目录 一、信息与信息化概念 1.1 信息的概念 1.2 信息化的概念 二、信息系统 2.1 信息系统的概念 2.2 信息系统的类型 2.3 信息系统的生命周期 2.4 系统建模 2.5 信息系统战略规划 2.6 信息化开发方法 三、电子政务 四、企业资源计划(ERP) 五、系统集成 一、信息与信息…

第三十三章 使用Redux管理状态

Redux(全称为Redux)是一个基于状态管理的JavaScript库,它可以用来构建可重用的、可维护的代码。Redux主要用于处理复杂的应用程序中的状态管理,它能够自动地处理应用程序中的更改,并在需要时更新视图。 Redux使用一种被…