Projective Urban Texturing 阅读+编译笔记

Projective Urban Texturing(Yiangos Georgiou)

概述

我们提出了一种神经结构来生成城市环境中的照片级真实感纹理。 我们的投影城市纹理(PUT)系统迭代地生成目标纹理风格和细节, 输出是一个纹理图集,应用到输入的三维城市模型上。 PUT是以先前相邻的纹理为条件的,以确保连续生成的纹理之间的一致性。

算法实现

在这里插入图片描述
初始输入只有mesh,纹理图集为空 ,第一步是渲染(第一次是空纹理,所以实际上没有渲染纹理);第二步是将渲染后的图片传入网络(描述在下面),该网络的作用是纹理生成,根据输入的mesh,自动预测并生成相应纹理;第三步是纹理传播模块,将第二步生成的纹理扣下来,放到纹理图集中。最后根据当前纹理图集和mesh,循环回第一步,渲染出有部分纹理的图片再传入网络。

网络简述

在这里插入图片描述
神经网络使用了Johnson等人的体系结构 [Justin Johnson, Alexandre Alahi, and Fei fei Li. Perceptual losses for real-time style transfer and super-resolution. In ECCV, 2016. 3] 。该网络包含三个卷积,9个残差块,两个步幅为1/2的分数步幅卷积,以及一个将特征映射到RGB图像(3x512x256)的卷积层。
一共使用了三个Loss。
Multi-layer Patch-wise Contrastive Loss
Adversarial losses
Inter-frame consistency loss
总目标函数是上述损失的加权组合
注:三维几何和真实世界的全景照片这两个集合是不配对的,即没有几何或语义对应。

编译

github地址: https://github.com/ygeorg01/PUT
win10\win11+blender3.3

environment.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

requirements.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_name consistency --blend custom
记得将上述参数预置好(可以在pycharm中设置)。

如果使用windows,将/改为\,可以使用.replace方法。

命令行(os.system)启动blender软件,如果这一步失败,可能得到全黑图像hh。

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里面的scriping的路径是hard-code,可能需要修改。

相机在Curve下面。

作者论文里说到采用全局光照,但是blender里没有全局光照,需要装插件,或者设置整个背景为白光。

部分结果:

请添加图片描述
请添加图片描述
![请添加图片描述](https://img-blog.csdnimg.cn/403e087bf69d417396ef48980127afb2.png请添加图片描述

请添加图片描述

UV纹理的中间结果和最后结果:
请添加图片描述
请添加图片描述
欢迎三连。

猜你喜欢

转载自blog.csdn.net/qq_44324007/article/details/127963311