自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自己動(dòng)手使用AI技術(shù)實(shí)現(xiàn)數(shù)字內(nèi)容生產(chǎn)

人工智能 深度學(xué)習(xí)
本文使用的技術(shù)是NeRF(Neural Radiance Fields),它是2020年以來(lái)出現(xiàn)的一種基于深度學(xué)習(xí)的3D重建方法,它通過(guò)學(xué)習(xí)場(chǎng)景的光線傳輸和輻射傳遞,能夠生成高質(zhì)量的場(chǎng)景渲染圖像和3D模型。

背景

今年以來(lái)以chatgpt為代表的大模型的驚艷表現(xiàn)徹底點(diǎn)燃了AICG這個(gè)領(lǐng)域的。各類gpt,各種AI作圖產(chǎn)品如雨后春筍般出現(xiàn)。每個(gè)成功產(chǎn)品的背后都是一個(gè)個(gè)精妙的算法,本篇文章給大家詳細(xì)介紹下如何使用一個(gè)手機(jī)拍攝若干張同一場(chǎng)景的照片,然后合成新視角,生成視頻的流程與代碼。本文使用的技術(shù)是NeRF(Neural Radiance Fields),它是2020年以來(lái)出現(xiàn)的一種基于深度學(xué)習(xí)的3D重建方法,它通過(guò)學(xué)習(xí)場(chǎng)景的光線傳輸和輻射傳遞,能夠生成高質(zhì)量的場(chǎng)景渲染圖像和3D模型。關(guān)于它的原理與文獻(xiàn),我在最后有一個(gè)參考列表供大家學(xué)習(xí)。本文主要從代碼使用以及環(huán)境搭建的新角度介紹它。

環(huán)境搭建

environment.yml修改

本文使用的硬件環(huán)境是 GPU RTX3090,操作系統(tǒng)是windows 10.采用的軟件是開(kāi)源的NeRF實(shí)現(xiàn)(https://github.com/cjw531/nerf_tf2)。由于RTX 3090需要CUDA 11.0及以上版本的支持,TensorFlow-gpu 需要2.4.0以及以上的支持,所以我們沒(méi)有選擇官方的https://github.com/bmild/nerf,因?yàn)閎mild這個(gè)的環(huán)境使用的tensorflow-gpu==1.15,版本太久了。跑起來(lái)會(huì)有下面的問(wèn)題https://github.com/bmild/nerf/issues/174#issue-1553410900,我在這個(gè)tt中也回復(fù)指出了需要升級(jí)到2.8。但是即便是使用https://github.com/cjw531/nerf_tf2,它的環(huán)境也是有點(diǎn)問(wèn)題。首先由于它連接的國(guó)外的conda的channel,所以速度很慢。其次它的環(huán)境使用的是tensorflow==2.8沒(méi)有指明tensorflow-gpu的版本。針對(duì)這兩個(gè)問(wèn)題。我們對(duì)environment.yml進(jìn)行了修改。

# To run: conda env create -f environment.yml
name: nerf_tf2
channels:
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    - conda-forge
dependencies:
    - 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

啟動(dòng)conda環(huán)境

打開(kāi)cmd,然后輸入下面的命令。

conda env create -f environment.yml

將nerf_tf2加入到j(luò)upyter中,這樣使用jupyter能很方便的查看系統(tǒng)的運(yùn)行結(jié)果。

// 安裝ipykernel
conda install ipykernel
//是該conda環(huán)境在jupyter中顯示
python -m ipykernel install --user --name 環(huán)境名稱 --python -m ipykernel install --user --name 環(huán)境名稱 --display-name "jupyter中顯示名稱"display-name "jupyter中顯示名稱"
//切換到項(xiàng)目目錄
cd 到項(xiàng)目目錄
//激活conda環(huán)境
activate nerf_tf2
//在cmd啟動(dòng)jupyter
jupyter notebook

至此conda環(huán)境以及jupyter準(zhǔn)備就緒。

數(shù)據(jù)準(zhǔn)備

  1. 下載并安裝colmap,我的環(huán)境是windows(https://demuc.de/colmap/#download)
  2. 使用https://github.com/fyusion/llff提供的imgs2poses.py實(shí)現(xiàn)自己相機(jī)拍攝的圖片的相機(jī)內(nèi)外參數(shù)的獲取,比如我們的拍攝了10張圖片,它們放置的目錄位置很講究,D:/LanJing/AI/LLFF/data/images,也就是說(shuō)一定要放在images子目錄下面。而你傳入的參數(shù)是python imgs2poses.py D:/LanJing/AI/LLFF/data。因?yàn)樗拇a里面的images_path的寫法是這個(gè)樣子(https://github.com/Fyusion/LLFF/blob/master/llff/poses/colmap_wrapper.py#L28)

手機(jī)拍攝的圖片樣例

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 <your_scenedir>

運(yùn)行完imgs2poses.py文件后,生成了sparse目錄、colmap_out.txt、database.db、poses_bounds.npy,然后我們?cè)趎erf_tf2項(xiàng)目下創(chuàng)建新目錄data/nerf_llff_data/ll,將上面的sparse目錄以及poses_bounds.npy復(fù)制到這個(gè)目錄下。最后我們?cè)倥渲脗€(gè)新文件config_ll.txt。至此我們的數(shù)據(jù)準(zhǔn)備工作完成了。

expname = ll_test
basedir = ./logs
datadir = ./data/nerf_llff_data/ll
dataset_type = llff
factor = 8
llffhold = 8
N_rand = 1024
N_samples = 64
N_importance = 64
use_viewdirs = True
raw_noise_std = 1e0

訓(xùn)練

將開(kāi)源軟件遷移到windows平臺(tái)上。

由于此開(kāi)源軟件主要是支持mac和linux,它無(wú)法在windows運(yùn)行,需要對(duì)load_llff.py的修改。

load_llff代碼遷移

運(yùn)行300000次批量訓(xùn)練。

activate nerf_tf2
python run_nerf.py --config config_ll.txt

測(cè)試

render_demo的運(yùn)行

效果

由于我們使用的輸入圖片有些少,只有10張,所以運(yùn)行出來(lái)的效果不是很好,但是整體的流程是一樣。tips:官方的代碼里面使用的一半都是30,甚至100張圖片。

我們的效果


一個(gè)新視角的渲染

官方效果

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。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2014-06-20 09:18:54

Dustjs中間件

2024-12-06 09:58:09

2009-06-01 10:23:31

asp.net mvcasp.net mvc.net mvc框架

2009-10-26 14:25:09

VB.NET控件數(shù)組

2024-11-08 09:06:16

agentJava探針

2011-08-25 09:30:22

2019-07-07 08:02:05

AI人工智能智能監(jiān)控

2020-09-29 12:13:46

SQL引擎底層

2020-05-20 13:53:41

HTTP環(huán)境安裝

2015-09-01 09:49:28

2024-10-14 13:07:40

Spring框架Boot

2017-02-14 10:20:43

Java Class解析器

2009-10-28 09:25:18

VB.NET List

2023-10-15 15:57:19

人工智能數(shù)字孿生

2024-12-05 08:15:00

2023-07-11 10:53:50

數(shù)字化轉(zhuǎn)型生產(chǎn)力

2009-03-16 16:30:18

2021-06-10 14:05:47

AI 芯片人工智能

2021-09-23 19:26:27

AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)