Projective Urban Texturing の読書 + 編集ノート

Projective Urban Texturing(Yiangos Georgiou)

概要

私たちは、都市環境でフォトリアリスティックなテクスチャを生成するニューラル アーキテクチャを提案します。当社の Projected Urban Texturing (PUT) システムは、ターゲット テクスチャ スタイルと詳細を繰り返し生成し、出力は入力 3D 都市モデルに適用されるテクスチャ アトラスです。PUT は、連続して生成されるテクスチャ間の一貫性を確保するために、以前に隣接したテクスチャを条件とします。

アルゴリズムの実装

ここに画像の説明を挿入
初期入力はメッシュのみで、テクスチャ アトラスは空です。最初のステップはレンダリングです (初回は空のテクスチャなので、実際にはレンダリング テクスチャはありません)。2 番目のステップは、レンダリングされたイメージをネットワークに渡すことです (ネットワークの役割はテクスチャ生成であり、入力メッシュに従って対応するテクスチャを自動的に予測して生成します。3 番目のステップはテクスチャ伝播モジュールで、2 番目のステップで生成されたテクスチャを差し引いてテクスチャに配置します。アトラス。最後に、現在のテクスチャ アトラスとメッシュに従って、最初のステップにループバックし、テクスチャ付き画像の一部をレンダリングして、それをネットワークに渡します。

ネットワーク概要

ここに画像の説明を挿入
ニューラル ネットワークは、Johnson らのアーキテクチャを使用しています [Justin Johnson、Alexandre Alahi、および Fei fei Li. リアルタイム スタイル転送と超解像度の知覚損失. In ECCV, 2016. 3]。このネットワークは、3 つの畳み込み、9 つの残差ブロック、ストライド 1/2 の 2 つの分数ストライド畳み込み、および特徴を RGB 画像 (3x512x256) にマッピングする畳み込み層で構成されます。
合計 3 つの損失が使用されました。
多層パッチごとのコントラスト損失 敵対的
損失
フレーム間の
一貫性損失 合計の目的関数は、上記の損失を重み付けして組み合わせたものです
注: 3D ジオメトリと現実世界のパノラマの 2 つのセットはペアになっていません。つまり、幾何学的またはセマンティックな関係はありません。対応。

コンパイル

github アドレス: https://github.com/ygeorg01/PUT
win10\win11+blender3.3

環境.yml

name: PUT
channels:
  - pytorch
  - anaconda
  - nvidia
  - conda-forge
  - defaults
dependencies:
  - blas=1.0=mkl
  - brotli=1.0.9=h8ffe710_7
  - brotli-bin=1.0.9=h8ffe710_7
  - bzip2=1.0.8=he774522_0
  - ca-certificates=2023.5.7=h56e8100_0
  - certifi=2023.5.7=pyhd8ed1ab_0
  - charset-normalizer=3.1.0=pyhd8ed1ab_0
  - cuda-cccl=12.1.109=0
  - cuda-cudart=11.8.89=0
  - cuda-cudart-dev=11.8.89=0
  - cuda-cupti=11.8.87=0
  - cuda-libraries=11.8.0=0
  - cuda-libraries-dev=11.8.0=0
  - cuda-nvrtc=11.8.89=0
  - cuda-nvrtc-dev=11.8.89=0
  - cuda-nvtx=11.8.86=0
  - cuda-profiler-api=12.1.105=0
  - cuda-runtime=11.8.0=0
  - dominate=2.8.0=pyhd8ed1ab_0
  - eigen=3.3.7=h59b6b97_1
  - ffmpeg=4.2.2=he774522_0
  - filelock=3.9.0=py310haa95532_0
  - freetype=2.12.1=ha860e81_0
  - giflib=5.2.1=h8cc25b3_3
  - glib=2.69.1=h5dc1a3c_2
  - gst-plugins-base=1.18.5=h9e645db_0
  - gstreamer=1.18.5=hd78058f_0
  - hdf5=1.10.6=h1756f20_1
  - icc_rt=2022.1.0=h6049295_2
  - icu=58.2=ha925a31_3
  - idna=3.4=pyhd8ed1ab_0
  - intel-openmp=2023.1.0=h59b6b97_46319
  - jinja2=3.1.2=py310haa95532_0
  - jpeg=9e=h2bbff1b_1
  - krb5=1.19.4=h5b6d351_0
  - lerc=3.0=hd77b12b_0
  - libblas=3.9.0=8_mkl
  - libbrotlicommon=1.0.9=h8ffe710_7
  - libbrotlidec=1.0.9=h8ffe710_7
  - libbrotlienc=1.0.9=h8ffe710_7
  - libcblas=3.9.0=8_mkl
  - libclang=14.0.6=default_hb5a9fac_1
  - libclang13=14.0.6=default_h8e68704_1
  - libcublas=11.11.3.6=0
  - libcublas-dev=11.11.3.6=0
  - libcufft=10.9.0.58=0
  - libcufft-dev=10.9.0.58=0
  - libcurand=10.3.2.106=0
  - libcurand-dev=10.3.2.106=0
  - libcusolver=11.4.1.48=0
  - libcusolver-dev=11.4.1.48=0
  - libcusparse=11.7.5.86=0
  - libcusparse-dev=11.7.5.86=0
  - libdeflate=1.17=h2bbff1b_0
  - libffi=3.4.4=hd77b12b_0
  - libiconv=1.16=h2bbff1b_2
  - liblapack=3.9.0=8_mkl
  - libnpp=11.8.0.86=0
  - libnpp-dev=11.8.0.86=0
  - libnvjpeg=11.9.0.86=0
  - libnvjpeg-dev=11.9.0.86=0
  - libogg=1.3.5=h2bbff1b_1
  - libpng=1.6.39=h8cc25b3_0
  - libprotobuf=3.20.3=h23ce68f_0
  - libtiff=4.5.0=h6c2663c_2
  - libuv=1.44.2=h2bbff1b_0
  - libvorbis=1.3.7=he774522_0
  - libwebp=1.2.4=hbc33d0d_1
  - libwebp-base=1.2.4=h2bbff1b_1
  - libxml2=2.10.3=h0ad7f3c_0
  - libxslt=1.1.37=h2bbff1b_0
  - lz4-c=1.9.4=h2bbff1b_0
  - markupsafe=2.1.1=py310h2bbff1b_0
  - mkl=2020.4=hb70f87d_311
  - mpmath=1.2.1=py310haa95532_0
  - networkx=2.8.4=py310haa95532_1
  - numpy=1.23.1=py310h8a5b91a_0
  - opencv=4.6.0=py310h4ed8f06_3
  - openssl=1.1.1t=h2bbff1b_0
  - packaging=23.1=pyhd8ed1ab_0
  - pcre=8.45=hd77b12b_0
  - pillow=9.3.0=py310hd77b12b_2
  - pip=23.0.1=py310haa95532_0
  - pysocks=1.7.1=pyh0701188_6
  - python=3.10.6=hbb2ffb3_1
  - python_abi=3.10=2_cp310
  - pytorch=2.0.1=py3.10_cuda11.8_cudnn8_0
  - pytorch-cuda=11.8=h24eeafa_5
  - pytorch-mutex=1.0=cuda
  - qt-main=5.15.2=he8e5bd7_8
  - qt-webengine=5.15.9=hb9a9bb5_5
  - qtwebkit=5.212=h2bbfb41_5
  - requests=2.31.0=pyhd8ed1ab_0
  - setuptools=67.8.0=py310haa95532_0
  - sqlite=3.41.2=h2bbff1b_0
  - sympy=1.11.1=py310haa95532_0
  - tk=8.6.12=h2bbff1b_0
  - torchvision=0.13.1=cpu_py310h378ed51_0
  - typing_extensions=4.5.0=py310haa95532_0
  - tzdata=2023c=h04d1e81_0
  - urllib3=2.0.3=pyhd8ed1ab_0
  - vc=14.2=h21ff451_1
  - vs2015_runtime=14.27.29016=h5e58377_2
  - wheel=0.38.4=py310haa95532_0
  - win_inet_pton=1.1.0=pyhd8ed1ab_6
  - xz=5.4.2=h8cc25b3_0
  - zlib=1.2.13=h8cc25b3_0
  - zstd=1.5.5=hd43e919_0
prefix: E:\anaconda\envs\PUT
 conda env create -f environment.yml

要件.txt

certifi==2023.5.7
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1678108872112/work
dominate @ file:///home/conda/feedstock_root/build_artifacts/dominate_1684707922510/work
filelock @ file:///C:/b/abs_c7yrhs9uz2/croot/filelock_1672387617533/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1663625384323/work
Jinja2 @ file:///C:/b/abs_7cdis66kl9/croot/jinja2_1666908141852/work
MarkupSafe @ file:///C:/ci/markupsafe_1654508036328/work
mpmath==1.2.1
networkx @ file:///C:/b/abs_b935xy_9g6/croot/networkx_1678964342510/work
numpy @ file:///D:/bld/numpy_1657483944523/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1681337016113/work
Pillow==9.3.0
PySocks @ file:///D:/bld/pysocks_1661604991356/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1684774241324/work
sympy @ file:///C:/b/abs_95fbf1z7n6/croot/sympy_1668202411612/work
torch==2.0.1
torchvision @ file:///C:/b/abs_88nq4vr9ec/croot/torchvision_1670313558208/work
typing_extensions @ file:///C:/b/abs_a1bb332wcs/croot/typing_extensions_1681939523095/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1686156552494/work
win-inet-pton @ file:///D:/bld/win_inet_pton_1667051142467/work
pip install -r requirements.txt

注:
–scene_path …/scenes/005 --model_nameconsistency --blendcustom
上記のパラメータを忘れずに事前設定してください (pycharm で設定できます)。

Windows を使用している場合は、/ を \ に変更すると、.replace メソッドを使用できます。

コマンドライン (os.system) から Blender ソフトウェアを起動します。このステップが失敗すると、完全に黒い画像が表示される可能性があります。

os.system("E:\\blender.exe %s -b -P change_UV.py --render-output %s/##### --render-frame %d  -- pathToImage %s" % (
    blender_file, consistency_out_dir, frame_number, UV_path))

Blender のスクリプティング パスはハードコードされているため、変更が必要な場合があります。

カメラはカーブの下にあります。

著者の論文ではグローバルイルミネーションの使用について言及されていましたが、blenderにはグローバルイルミネーションがないため、プラグインをインストールするか、背景全体を白色光に設定する必要があります。

部分的な結果:

画像の説明を追加してください
画像の説明を追加してください
![画像の説明を追加してください](https://img-blog.csdnimg.cn/403e087bf69d417396ef48980127afb2.png)画像の説明を追加してください

画像の説明を追加してください

UV テクスチャの中間結果と最終結果:
画像の説明を追加してください
画像の説明を追加してください
トライフェクタへようこそ。

おすすめ

転載: blog.csdn.net/qq_44324007/article/details/127963311