论文复现--Text2Mesh

目录

Step 0.基本环境要求

Step1.环境配置

出现问题1:

ERROR conda.core.link:_execute(502): An error occurred while installing package ‘conda-forge::colorama-0.4.4-pyh9f0ad1d_0’.FileNotFoundError(2, “No such file or directory: ‘XXXX/bin/python3.7’”)Attempting to roll back.

解决方法:更新源

出现问题2:安装yml文件时,最后的包找不到。 ​编辑

解决方法:分别手动安装clip与kaolin

Step2:代码测试

Step3:执行结果 

Conda list 


Step 0.基本环境要求

需要conda及CUDA版本如下,本次复现不用重新创建docker,直接使用宿主机(因为重新创建Docker并在里面安装CUDA和conda太占地方了)

Step1.环境配置

获取终端代码(建议还是直接下载zip吧,clone有点大(2G)。下载之后可以删掉.git文件夹 没什么影响)

git clone https://github.com/threedle/text2mesh

在text2mesh文件夹内执行

conda env create --file text2mesh.yml

好不容易下载完各种包,出现以下错误: 

出现问题1:

ERROR conda.core.link:_execute(502): An error occurred while installing package ‘conda-forge::colorama-0.4.4-pyh9f0ad1d_0’.
FileNotFoundError(2, “No such file or directory: ‘XXXX/bin/python3.7’”)
Attempting to roll back.

解决方法:更新源

conda update -n base -c defaults conda

更新完后,重复执行创建环境语句

conda env create --file text2mesh.yml

出现问题2:安装yml文件时,最后的包找不到。 

 查看yml文件打开这两个网址,也显示not found

https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1

https://github.com/NVIDIAGameWorks/kaolin@a00029e5e093b5a7fe7d3a10bf695c0f01e3bd98 我的想法是,可以先根据网址,打开这两个前向网站 看下这两个开源库怎么安装

GitHub - NVIDIAGameWorks/kaolin: A PyTorch Library for Accelerating 3D Deep Learning Research

GitHub - openai/CLIP: Contrastive Language-Image Pretraining

解决方法:分别手动安装clip与kaolin

首先发现了CLIP的安装方法,比较简单,直接执行pip安装

pip install git+https://github.com/openai/CLIP.git

然后发现了kaolin的安装方法

看着很多 实际上只需执行1和5 因为2是测试有没有CUDA 3已经在yml安装完了 4是可选的一般用不到 不用管

执行以下命令: 

# 首先配置环境变量CUDA_HOME 
vi ~/.bashrc 
export CUDA_HOME=/usr/local/cuda # bashrc在最底下加入,注意这个路径要实际存在,可以先cd验证下。有的文件夹名称不是cuda 需要改一下
source ~/.bashrc # 执行更改后生效
conda activate text2mesh # 重新激活环境

git clone --recursive https://github.com/NVIDIAGameWorks/kaolin
cd kaolin
git checkout v0.12.0 
python setup.py develop # 编译

虽然最后编译报错 显示因为网络原因usd-core安装失败

但是kaolin编译已完成,已经能在conda list中查到。刚才的报错只是说明kaolin的依赖库usd-core没安装上

所以再手动安装usd-core和scipy

注意安装的kaolin是0.12.0,依赖的scipy<=1.7.2,>=1.2.0  usd-core<22.8,所以我选择安装scipy1.7.2 usd-core21.8(老规矩 使用清华景象 方便又快捷)

pip install usd-core==21.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scipy==1.7.2  -i https://pypi.tuna.tsinghua.edu.cn/simple

测试kaolin是否安装成功:

python -c "import kaolin; print(kaolin.__version__)"

显示如下即可

搞定 然后开始跑程序

Step2:代码测试

给脚本赋予777权限

sudo chmod 777  /demo/run_alien_cobble.sh 

然后执行即可

./demo/run_alien_cobble.sh

 

Step3:执行结果 

输出将保存到text2mesh/demo/results/demo中,其中包含风格化的 .obj 文件、彩色和非彩色渲染视图以及训练期间的屏幕截图。

 init_cluster 

final_cluster 

 训练期间 iter_0 iter_100 ... iter_1400的屏幕截图 

可以用在线的obj工具进行显示(把obj文件放到这里)

转换前text2mesh/data/source_meshes/alien.obj

转换后text2mesh/demo/results/demo/alien/cobblestone/alien_final.obj  

Conda list 

# packages in environment at /home/sqy/anaconda3/envs/text2mesh:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                  2_kmp_llvm    conda-forge
alsa-lib                  1.2.7.2              h166bdaf_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39hb9d737c_2    conda-forge
asttokens                 2.0.8              pyhd8ed1ab_0    conda-forge
attr                      2.5.1                h166bdaf_1    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.11.1             pyha770c72_0    conda-forge
blas                      1.0                         mkl  
bleach                    5.0.1              pyhd8ed1ab_0    conda-forge
brotli                    1.0.9                h166bdaf_7    conda-forge
brotli-bin                1.0.9                h166bdaf_7    conda-forge
brotlipy                  0.7.0           py39hb9d737c_1005    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2022.9.24            ha878542_0    conda-forge
certifi                   2022.9.24          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py39he91dace_2    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
clip                      1.0                      pypi_0    pypi
cryptography              38.0.2           py39hd97740a_1    conda-forge
cudatoolkit               11.3.1              h9edb442_10    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
dbus                      1.13.6               h5008d03_3    conda-forge
debugpy                   1.6.3            py39h5a03fae_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 1.1.1              pyhd8ed1ab_0    conda-forge
expat                     2.5.0                h27087fc_0    conda-forge
ffmpeg                    4.3                  hf484d3e_0    pytorch
fftw                      3.3.10          nompi_hf0379b8_105    conda-forge
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.1               hc2a2eb6_0    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.38.0           py39hb9d737c_0    conda-forge
freetype                  2.12.1               hca18f0e_0    conda-forge
ftfy                      6.1.1                    pypi_0    pypi
gettext                   0.21.1               h27087fc_0    conda-forge
glib                      2.74.0               h6239696_0    conda-forge
glib-tools                2.74.0               h6239696_0    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
gnutls                    3.6.13               h85f3911_1    conda-forge
gst-plugins-base          1.20.3               h57caac4_2    conda-forge
gstreamer                 1.20.3               hd4edc92_2    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py39hf3d152e_0    conda-forge
importlib_resources       5.10.0             pyhd8ed1ab_0    conda-forge
ipykernel                 6.16.2             pyh210e3f2_0    conda-forge
ipython                   8.5.0              pyh41d4057_1    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                8.0.2              pyhd8ed1ab_1    conda-forge
jack                      1.9.21               h2a1e645_0    conda-forge
jedi                      0.18.1             pyhd8ed1ab_2    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
jpeg                      9e                   h166bdaf_2    conda-forge
jsonschema                4.16.0             pyhd8ed1ab_0    conda-forge
jupyter                   1.0.0            py39hf3d152e_7    conda-forge
jupyter_client            7.4.4              pyhd8ed1ab_0    conda-forge
jupyter_console           6.4.4              pyhd8ed1ab_0    conda-forge
jupyter_core              4.11.1           py39hf3d152e_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        3.0.3              pyhd8ed1ab_0    conda-forge
kaolin                    0.12.0                    dev_0    <develop>
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.4            py39hf939315_0    conda-forge
krb5                      1.19.3               h3790be6_0    conda-forge
lame                      3.100             h166bdaf_1003    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.39                 hc81fddc_0    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libbrotlicommon           1.0.9                h166bdaf_7    conda-forge
libbrotlidec              1.0.9                h166bdaf_7    conda-forge
libbrotlienc              1.0.9                h166bdaf_7    conda-forge
libcap                    2.66                 ha37c62d_0    conda-forge
libclang                  14.0.6          default_h2e3cab8_0    conda-forge
libclang13                14.0.6          default_h3a83d3e_0    conda-forge
libcups                   2.3.3                h3e49a29_2    conda-forge
libdb                     6.2.32               h9c3ff4c_0    conda-forge
libdeflate                1.14                 h166bdaf_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libevent                  2.1.10               h9b69904_4    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libflac                   1.4.2                h27087fc_0    conda-forge
libgcc-ng                 12.2.0              h65d4601_19    conda-forge
libgfortran-ng            12.2.0              h69a702a_19    conda-forge
libgfortran5              12.2.0              h337968e_19    conda-forge
libglib                   2.74.0               h7a41b64_0    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
libllvm14                 14.0.6               he0ac6c6_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libogg                    1.3.4                h7f98852_1    conda-forge
libopus                   1.3.1                h7f98852_1    conda-forge
libpng                    1.6.38               h753d276_0    conda-forge
libpq                     14.5                 hd77ab85_1    conda-forge
libsndfile                1.1.0                h27087fc_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libsqlite                 3.39.4               h753d276_0    conda-forge
libstdcxx-ng              12.2.0              h46fd767_19    conda-forge
libtiff                   4.4.0                h55922b4_4    conda-forge
libtool                   2.4.6             h9c3ff4c_1008    conda-forge
libudev1                  251                  h166bdaf_0    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libvorbis                 1.3.7                h9c3ff4c_0    conda-forge
libwebp-base              1.2.4                h166bdaf_0    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxkbcommon              1.0.3                he3ba5ed_0    conda-forge
libxml2                   2.10.3               h7463322_0    conda-forge
libzlib                   1.2.13               h166bdaf_4    conda-forge
llvm-openmp               14.0.4               he0ac6c6_0    conda-forge
markupsafe                2.1.1            py39hb9d737c_2    conda-forge
matplotlib                3.5.2            py39hf3d152e_1    conda-forge
matplotlib-base           3.5.2            py39h700656a_1    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mistune                   2.0.4              pyhd8ed1ab_0    conda-forge
mkl                       2021.4.0           h8d4b97c_729    conda-forge
mkl-service               2.4.0            py39h7e14d7c_0    conda-forge
mkl_fft                   1.3.1            py39h0c7bc48_1    conda-forge
mkl_random                1.2.2            py39hde0f152_0    conda-forge
mpg123                    1.30.2               h27087fc_1    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
mysql-common              8.0.31               haf5c9bc_0    conda-forge
mysql-libs                8.0.31               h28c427c_0    conda-forge
nbclient                  0.7.0              pyhd8ed1ab_0    conda-forge
nbconvert                 7.2.2              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.2.2              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.2.2              pyhd8ed1ab_0    conda-forge
nbformat                  5.7.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
nettle                    3.6                  he412f7d_0    conda-forge
notebook                  6.4.12             pyha770c72_0    conda-forge
nspr                      4.32                 h9c3ff4c_1    conda-forge
nss                       3.78                 h2350873_0    conda-forge
numpy                     1.22.4                   pypi_0    pypi
openh264                  2.1.1                h780b84a_0    conda-forge
openjpeg                  2.5.0                h7d73246_1    conda-forge
openssl                   1.1.1q               h166bdaf_1    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandoc                    2.19.2               h32600fe_1    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pcre2                     10.37                hc3806b6_1    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.2.0            py39hd5dbb17_2    conda-forge
pip                       21.1.2             pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
ply                       3.11                       py_1    conda-forge
prometheus_client         0.15.0             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.31             pyha770c72_0    conda-forge
prompt_toolkit            3.0.31               hd8ed1ab_0    conda-forge
psutil                    5.9.3            py39hb9d737c_1    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pulseaudio                14.0                habe0971_10    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyopenssl                 22.1.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyqt                      5.15.7           py39h18e9c17_1    conda-forge
pyqt5-sip                 12.11.0          py39h5a03fae_1    conda-forge
pyrsistent                0.18.1           py39hb9d737c_1    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.13          h9a8a25e_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.16.2             pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytorch                   1.12.1          py3.9_cuda11.3_cudnn8.3.2_0    pytorch
pytorch-mutex             1.0                        cuda    pytorch
pyzmq                     24.0.1           py39headdf64_0    conda-forge
qt-main                   5.15.6               hc525480_0    conda-forge
qtconsole                 5.3.2              pyhd8ed1ab_0    conda-forge
qtconsole-base            5.3.2              pyha770c72_0    conda-forge
qtpy                      2.2.1              pyhd8ed1ab_0    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
regex                     2022.9.13                pypi_0    pypi
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
scipy                     1.7.2                    pypi_0    pypi
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                65.5.0             pyhd8ed1ab_0    conda-forge
sip                       6.7.2            py39h5a03fae_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlite                    3.39.4               h4ff8645_0    conda-forge
stack_data                0.5.1              pyhd8ed1ab_0    conda-forge
tbb                       2021.6.0             h924138e_0    conda-forge
terminado                 0.17.0             pyh41d4057_0    conda-forge
tinycss2                  1.2.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
torchaudio                0.12.1               py39_cu113    pytorch
torchvision               0.13.1               py39_cu113    pytorch
tornado                   6.2              py39hb9d737c_0    conda-forge
tqdm                      4.64.1                   pypi_0    pypi
traitlets                 5.5.0              pyhd8ed1ab_0    conda-forge
typing_extensions         4.4.0              pyha770c72_0    conda-forge
tzdata                    2022e                h191b570_0    conda-forge
unicodedata2              14.0.0           py39hb9d737c_1    conda-forge
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
usd-core                  21.8                     pypi_0    pypi
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
widgetsnbextension        4.0.3              pyhd8ed1ab_0    conda-forge
xcb-util                  0.4.0                h166bdaf_0    conda-forge
xcb-util-image            0.4.0                h166bdaf_0    conda-forge
xcb-util-keysyms          0.4.0                h166bdaf_0    conda-forge
xcb-util-renderutil       0.3.9                h166bdaf_0    conda-forge
xcb-util-wm               0.4.1                h166bdaf_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.10.0             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               h166bdaf_4    conda-forge
zstd                      1.5.2                h6239696_4    conda-forge

根据论文《Patterned 3D-graphene for self-powered broadband photodetector》及支撑材料,复现其3D垂直图案化石墨烯/Si异质结光电探测器模型的步骤如下: ### **1. 关键参数提取** - **几何参数**: - **石墨烯垂直高度**:700 nm(AFM图S2(b))。 - **片层横向宽度**:50 nm(论文描述)。 - **片层周期**:300 nm(AFM图S2(a))。 - **孔隙半径**:100 nm(AFM图S2(a))。 - **硅基底厚度**:500 nm(论文主文)。 - **仿真区域**:3×3 μm&sup2;(覆盖AFM图像)。 - **材料属性**: - **石墨烯**:Drude模型,等离子体频率(Plasma frequency)为1e15 rad/s,碰撞频率(Collision frequency)为1e12 rad/s,相对介电常数(ε_inf)为1。 - **硅基底**:使用Palik数据库中的“Si (Silicon) - Palik”。 - **光源与边界**: - **光源**:波长范围380–1550 nm,TM偏振(polarization angle=90),垂直入射(z轴方向),位置位于石墨烯上方500 nm。 - **边界条件**:X/Y/Z方向均设为PML吸收边界。 - **网格划分**: - **加密区域**:石墨烯边缘和孔隙区域,X/Y方向网格1 nm,Z方向5 nm。 - **基底区域**:X/Y方向网格20 nm。 --- ### **2. 建模步骤** 1. **基底建模**: - 创建硅基底(Si_substrate),尺寸3×3 μm&sup2;,厚度500 nm,材料为Palik硅,底部位于z=0下方。 2. **垂直石墨烯片层阵列**: - 以300 nm周期生成3×3阵列的垂直石墨烯片层,每片宽度50 nm,高度700 nm。 - 使用双层循环(x和y方向)精确分布片层中心坐标,避免重叠。 3. **六边形孔隙阵列**: - 在石墨烯片层中创建六边形孔隙,孔径100 nm,周期300 nm,覆盖石墨烯高度700 nm。 4. **光源设置**: - 添加平面波光源,波长范围380–1550 nm,TM偏振,垂直入射,光源位置z=700 nm(石墨烯上方500 nm)。 5. **监视器配置**: - **电场监视器**(field_1550nm):位于Si/石墨烯界面(z=0),频率193.4 THz(对应1550 nm波长),捕捉边缘和孔隙处的场增强(目标强度提升10倍)。 - **吸收监视器**(absorption):计算响应度(目标68.47 A/W)和探测率(目标1.43×10¹&sup2; Jones)。 6. **网格加密**: - 在石墨烯边缘和孔隙区域局部加密,X/Y方向1 nm,Z方向5 nm。 7. **仿真运行**: - 启用GPU加速,运行仿真并验证结果。 --- ### **3. 结果验证** - **电场分布**: - 检查电场监视器(field_1550nm),验证边缘和孔隙处场强提升10倍以上(对比论文图1(b))。 - **吸收性能**: - 提取吸收监视器数据,计算响应度(R)和探测率(D*): - **公式**: $$ R = \frac{I_{\text{light}} - I_{\text{dark}}}{P \cdot S} $$ $$ D^* = R \sqrt{\frac{S}{2eI_{\text{dark}}}} $$ - **目标值**:R=68.47 A/W,D*=1.43×10¹&sup2; Jones(表S1)。 - **响应时间**: - 验证上升/下降时间为116/120 μs(图4(b))。 --- ### **4. 注意事项** - **语法兼容性**: - Lumerical 2024R1中,Drude模型需指定为“Drude (Dispersive)”,参数单位明确标注为“Plasma frequency (rad/s)”。 - 注释符号使用“--”而非“#”或“//”。 - **结构校准**: - 通过AFM图S2(a)验证片层周期(300 nm)和孔隙分布(100 nm孔径)。 - 通过SKPM数据(图1(c))校准界面电势差(ΔE_f=121 mV)。 - **优化调整**: - 若场增强不足,缩小网格至0.5 nm或调整Dru
最新发布
03-18
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值