デジタルコンテンツ制作のためのDIY AI

デジタルコンテンツ制作のためのDIY AI

背景

今年、chatgpt に代表される大型モデルの驚異的なパフォーマンスは、AICG の分野に完全に火をつけました。さまざまな種類の gpt および AI マッピング製品が雨後の筍のように出現しました。あらゆる成功した製品の背後には、洗練されたアルゴリズムがあります。この記事では、携帯電話を使用して同じシーンの写真を複数枚撮影し、新しい視点を合成してビデオ プロセスとコードを生成する方法について詳しく説明します。この記事で使用されている技術はNeRF( Neural Radiance Fields)であり、2020年から登場したディープラーニングベースの3D再構成手法です。シーンの光透過と放射伝達を学習することで、高品質のシーンレンダリング画像と3Dモデルを生成できます。その原理と文献に関しては、誰もが学べるように最後に参考文献リストを掲載しました。この記事では主にコードの使い方や環境構築といった新しい観点から紹介します。

環境構築

environment.yml の変更

この記事で使用したハードウェア環境は GPU RTX3090、OS は Windows 10 です。使用したソフトウェアはオープンソースの NeRF 実装 (https://github.com/cjw531/nerf_tf2) です。 RTX 3090 には CUDA 11.0 以上のサポートが必要であり、TensorFlow-gpu には 2.4.0 以上のサポートが必要であるため、bmild 環境では古すぎる tensorflow-gpu==1.15 が使用されているため、公式の https://github.com/bmild/nerf を選択しませんでした。 https://github.com/bmild/nerf/issues/174#issue-1553410900 を実行すると以下の問題が発生します。2.8 へのアップグレードが必要であることもこの tt で回答しました。しかし、https://github.com/cjw531/nerf_tf2 を使用したとしても、その環境にいくつか問題があります。まず、海外のcondaチャンネルに接続しているため、速度が非常に遅いです。次に、その環境では、tensorflow-gpu のバージョンを指定せずに tensorflow==2.8 を使用します。これら2つの問題に関して。 environment.yml に変更を加えました。

 # 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

conda環境を起動する

cmdを開き、次のコマンドを入力します。

 conda env create -f environment.yml

jupyter に nerf_tf2 を追加すると、jupyter を使用してシステムの実行結果を簡単に表示できるようになります。

 // 安装ipykernel conda 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启动jupyter jupyter notebook

この時点で、conda 環境と jupyter の準備が整いました。

データ準備

  1. colmap をダウンロードしてインストールします。私の環境は Windows です (https://demuc.de/colmap/#download)
  2. 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 ファイルを実行すると、スパース ディレクトリ、colmap_out.txt、database.db、poses_bounds.npy が生成されます。次に、nerf_tf2 プロジェクトの下に新しいディレクトリ data/nerf_llff_data/ll を作成し、上記のスパース ディレクトリと poses_bounds.npy をこのディレクトリにコピーします。最後に、新しいファイル config_ll.txt を設定します。この時点でデータの準備は完了です。

 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

電車

オープンソース ソフトウェアを Windows プラットフォームに移行します。

このオープンソースソフトウェアは主に Mac と Linux をサポートしているため、Windows では実行できず、load_llff.py を変更する必要があります。

load_llff コードの移行

トレーニングバッチを 300,000 回実行します。

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

テスト

render_demoを実行する

効果

使用した入力画像は 10 枚のみと少ないため、実行効果はあまり良くありませんが、全体的なプロセスは同じです。ヒント: 公式コードの半分は 30 枚または 100 枚の画像を使用します。

私たちの結果


レンダリングに関する新たな視点

公式効果

シダ公式合成新しい視点効果

参考文献

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.

<<:  スマートカーのステアバイワイヤ技術の詳細な説明

>>: 

ブログ    
ブログ    
ブログ    

推薦する

IIHS:自動運転車は交通事故を3分の1しか減らせない

道路安全保険協会(IIHS)が実施した調査によると、自動運転車は期待したほど事故を減らさない可能性が...

...

...

話題の「人工知能」について、気になるNの質問にお答えします

人工知能は、かなり長い間人気を博してきました。多くの投資家、起業家、そしてあらゆる規模の企業が、この...

2022 RPA認定ランキング

ロボティック・プロセス・オートメーション (RPA) は、ビジネス プロセスの合理化に役立つ重要なテ...

大規模なモデルを効率的に展開するにはどうすればよいでしょうか? CMU の最新の LLM 推論と MLSys 最適化テクノロジーに関する 10,000 語のレビュー

人工知能(AI)の急速な発展を背景に、大規模言語モデル(LLM)は、言語関連のタスクにおける優れたパ...

IBMは、人間の音声認識の実際の単語エラー率は5.1%であると主張している。

昨年 10 月、マイクロソフトの AI および研究部門の研究者およびエンジニアのチームは、自社の音声...

Deeplearning4j: JVM 向けのディープラーニングと ETL

[[410828]]この記事はWeChatの公開アカウント「Java Architecture M...

ディズニーは強化学習を利用して新しいロボットをスターウォーズ風に仕上げた

ディズニーの新しいロボットがデビュー!では早速、どんな感じか見てみましょう——大きく輝く目、揺れる頭...

3Dマップナビゲーションに頼らず、自動運転技術が新たな分野に進出

今日の自動運転車の技術は、ナビゲーションに極めて詳細な 3D マップに大きく依存していますが、そのほ...

ソフトウェアと自動化機器が持続可能性と回復力を向上させる方法

近年、需要の増加、エネルギーコストの高騰、持続可能性の問題が続く中、データセンターが注目を集めていま...

人工知能の「想像力」を実現する

[[416371]] [51CTO.com クイック翻訳]まず、オレンジ色の猫を頭の中で想像してくだ...

英国のAIスタートアップFacultyが4250万ドルのシリーズA資金調達を完了

5月25日、英国の人工知能企業Facultyは、Apax Digital Fund(ADF)が主導す...

業界の洞察 | 世界の人工知能とその産業チェーン

18 世紀半ば以降、3 度の産業革命により、蒸気駆動の機械生産から電気駆動の機械生産へと、人類社会に...

AIと機械学習がデータセンターにどのように役立つか

人工知能 (AI) には、問題を理解し解決する神秘的な力があると考える人もいます。人工知能は人々の日...