自己动手使用AI技术实现数字内容生产
今年以来以chatgpt为代表的大模型的惊艳表现彻底点燃了AICG这个领域的。各类gpt,各种AI作图产品如雨后春笋般出现。每个成功产品的背后都是一个个精妙的算法,本篇文章给大家详细介绍下如何使用一个手机拍摄若干张同一场景的照片,然后合成新视角,生成视频的流程与代码。本文使用的技术是NeRF(Neural Radiance Fields),它是2020年以来出现的一种基于深度学习的3D重建方法,它通过学习场景的光线传输和辐射传递,能够生成高质量的场景渲染图像和3D模型。关于它的原理与文献,我在最后有一个参考列表供大家学习。本文主要从代码使用以及环境搭建的新角度介绍它。
(相关资料图)
本文使用的硬件环境是GPU RTX3090,操作系统是windows 10.采用的软件是开源的NeRF实现(https://github.com/cjw531/nerf_tf2)。由于RTX 3090需要CUDA 11.0及以上版本的支持,TensorFlow-gpu 需要2.4.0以及以上的支持,所以我们没有选择官方的https://github.com/bmild/nerf,因为bmild这个的环境使用的tensorflow-gpu==1.15,版本太久了。跑起来会有下面的问题https://github.com/bmild/nerf/issues/174#issue-1553410900,我在这个tt中也回复指出了需要升级到2.8。但是即便是使用https://github.com/cjw531/nerf_tf2,它的环境也是有点问题。首先由于它连接的国外的conda的channel,所以速度很慢。其次它的环境使用的是tensorflow==2.8没有指明tensorflow-gpu的版本。针对这两个问题。我们对environment.yml进行了修改。
# To run: conda env create -f environment.ymlname: nerf_tf2channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - conda-forgedependencies: - python=3.7 - pip - cudatoolkit=11.0 - cudnn=8.0 - numpy - matplotlib - imageio - imageio-ffmpeg - configargparse - ipywidgets - tqdm - pip: - tensorflow==2.8 - tensorflow-gpu==2.8 - protobuf==3.19.0 - -i https://pypi.tuna.tsinghua.edu.cn/simple
启动conda环境打开cmd,然后输入下面的命令。
conda env create -f environment.yml
将nerf_tf2加入到jupyter中,这样使用jupyter能很方便的查看系统的运行结果。
// 安装ipykernelconda install ipykernel
//是该conda环境在jupyter中显示python -m ipykernel install --user --name 环境名称 --python -m ipykernel install --user --name 环境名称 --display-name "jupyter中显示名称"display-name "jupyter中显示名称"
//切换到项目目录cd 到项目目录//激活conda环境activate nerf_tf2//在cmd启动jupyterjupyter notebook
至此conda环境以及jupyter准备就绪。
数据准备下载并安装colmap,我的环境是windows(https://demuc.de/colmap/#download)使用https://github.com/fyusion/llff提供的imgs2poses.py实现自己相机拍摄的图片的相机内外参数的获取,比如我们的拍摄了10张图片,它们放置的目录位置很讲究,D:/LanJing/AI/LLFF/data/images,也就是说一定要放在images子目录下面。而你传入的参数是python imgs2poses.py D:/LanJing/AI/LLFF/data。因为它的代码里面的images_path的写法是这个样子(https://github.com/Fyusion/LLFF/blob/master/llff/poses/colmap_wrapper.py#L28)手机拍摄的图片样例
feature_extractor_args = ["colmap", "feature_extractor","--database_path", os.path.join(basedir, "database.db"),"--image_path", os.path.join(basedir, "images"),"--ImageReader.single_camera", "1",# "--SiftExtraction.use_gpu", "0",]
python imgs2poses.py
运行完imgs2poses.py文件后,生成了sparse目录、colmap_out.txt、database.db、poses_bounds.npy,然后我们在nerf_tf2项目下创建新目录data/nerf_llff_data/ll,将上面的sparse目录以及poses_bounds.npy复制到这个目录下。最后我们再配置个新文件config_ll.txt。至此我们的数据准备工作完成了。
expname = ll_testbasedir = ./logsdatadir = ./data/nerf_llff_data/lldataset_type = llfffactor = 8llffhold = 8N_rand = 1024N_samples = 64N_importance = 64use_viewdirs = Trueraw_noise_std = 1e0
训练将开源软件迁移到windows平台上。
由于此开源软件主要是支持mac和linux,它无法在windows运行,需要对load_llff.py的修改。
load_llff代码迁移
运行300000次批量训练。
activate nerf_tf2python run_nerf.py --config config_ll.txt
测试render_demo的运行
效果由于我们使用的输入图片有些少,只有10张,所以运行出来的效果不是很好,但是整体的流程是一样。tips:官方的代码里面使用的一半都是30,甚至100张图片。
我们的效果一个新视角的渲染
官方效果fern官方合成新视角效果
参考资料https://zhuanlan.zhihu.com/p/554093703。
https://arxiv.org/pdf/2003.08934.pdf。
https://zhuanlan.zhihu.com/p/593204605。
https://inst.eecs.berkeley.edu/~cs194-26/fa22/Lectures/nerf_lecture1.pdf。
相关阅读
精彩推荐
- 自己动手使用AI技术实现数字内容生产
- 又一千万吨级煤矿诞生
- 全球快讯:国家统计局:5月份一线城市商品住宅销售价格同比涨幅回落 二三线城市同比涨幅扩大或降幅收窄
- 我国科学家破译裸燕麦基因密码
- 丰台区将增加3.3万个中小学学位 2023年推进学区制改革
- 北京三岁以下托儿所_北京托儿所 每日消息
- 多家理财公司加入“费率打折促销”行列,个人投资者无需特别关注业绩比较基准和费率
- 每日热门:仙五全攻略_仙五官网
- 世界观点:生态贵州【2】“数”读贵阳贵安青绿
- 流量精灵流量宝为什么都不可以用了(流量精灵流量宝)
- office 2013密钥_office 2013密钥公布_世界时讯
- 安志敏日记 全五册
- 每日报道:克罗地亚将在欧国联半决赛对阵荷兰,克罗地亚球迷在...
- 夸克App发布《2023高考志愿报告》 人工智能相关专业热度上升最快
- 焦点报道:(高质量发展调研行)探访国内规模最大液化天然气储备基地:10个“气墩墩”启动“蓝色引擎”
- 9510211是什么号码_9510211是什么电话 环球热议
- 全球快讯:新疆25个重点旅游项目成功签约 共计签约金额287.76亿元
- 指南针擒龙版软件论坛_指南针动态擒龙版下载-要闻速递
- 特朗普“机密文件门”将被快速审判,若有罪他会被赦免吗?|当前热讯
- 环球热点评!小学教育论文5000字结构完整版_小学教育论文5000字
- 天天观速讯丨西藏二建成绩多久公布2023年
- “用实际行动展示中国企业责任担当”_全球热资讯
- 视讯!「排名前三」“东莞”博润白癜风医院排行总榜发布「技术强」(东莞)白癜风医院「公布」
- 全球今头条!公交出行类软件推荐
- 月满变人狼(对于月满变人狼简单介绍)
- 全球新动态:普莱得(301353):该股换手率大于8%(06-14)
- 实时焦点:为百姓筑牢金融安全“防火墙”!中国人寿寿险公司开展防范非法集资宣传月活动
- 麦收忙,夏粮稳
- 中国银行:外汇市场汇率走势分析2023年6月14日|世界通讯
- 地道战观后感400字作文优秀_地道战观后感400字