Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TEXGen: a Generative Diffusion Model for Mesh Textures
(SIGGRAPH Asia 2024, Journal Track, Best Paper Honorable Mention)

Xin Yu · Ze Yuan · Yuan-Chen Guo · Ying-Tian Liu · JianHui Liu · Yangguang Li · Yan-Pei Cao · Ding Liang · Xiaojuan Qi ·

Paper PDFProject Page
The University of Hong Kong | VAST | Beihang University | Tsinghua University

TEXGen is a feed-forward texture generation model which diffuses albedo texture map directly on the UV domain.

🚀 🚀 🚀 News

  • [2024-12-15]: Release the inference code.

Requirements

The training process requires at least one GPU with VRAM bigger than 40GB. We test the whole pipeline using Nvidia A100 gpu. Other GPUs are not tested but may be fine. For testing only, a GPU with 24GB VRAM will be fine.

Environment

Docker Image

For convenience, it is welcomed to use our built-up docker image to run TEXGen.

docker run -it yuanze1024/texgen_release:v1 bash 

From Scratch

Note that it could be really tricky to build an environment from scratch, so we strongly recommend you to use our docker image. You can also build your environment on your own:

apt-get install libgl1 libglib2.0-0 libsm6 libxrender1 libxext6 libssl-dev build-essential g++ libboost-all-dev libsparsehash-dev git-core perl libegl1-mesa-dev libgl1-mesa-dev -y
conda create -n texgen python=3.10 -y
conda activate texgen
conda install ninja -y
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit -y
conda install pytorch==2.1.0 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm gxx=11.1.0 lightning -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install -r requirements.txt

Usage

We provide the example testing data in assets/models. You can organize your own customized data as below:

$YOUR_DATA_PATH
├── 34 # which is the first two character of the model id
│ └── 3441609f539b46b38e7ab1213660cf3e # the unique id of a 3D model
│ ├── model.mtl
│ ├── model.obj
│ └── model.png # albedo texture map

For the model indices input, see assets/input_list/test_input.jsonl for an example, where result represents the textual prompt.

Inference

For sanity checking, you can run the following code snippet.

CHECKPOINT_PATH="assets/checkpoints/texgen_v1.ckpt"# assume single gpu
python launch.py --config configs/texgen_test.yaml --test --gpu 0 data.eval_scene_list="assets/input_list/test_input.jsonl" exp_root_dir=outputs_test name=test tag=test system.weights=$CHECKPOINT_PATH

The results will be put in <exp_root_dir>/<name>/<tag>@<time>.

Model Checkpoint

You can download our trained checkpoint, and put it under assets/checkpoints. Note that the released model is trained with Flow Matching which is different from the paper version, since we find it more stable. Check this blog to understand the connection between Flow Matching and Diffusion.

During the whole process, some components (e.g. CLIP, time scheduler) from HuggingFace are required. So make sure you have the access to HF or to their checkpoints. The relevant components are listed here:

lambdalabs/sd-image-variations-diffusers
stabilityai/stable-diffusion-2-depth

Citation

@article{10.1145/3687909,
author = {Yu, Xin and Yuan, Ze and Guo, Yuan-Chen and Liu, Ying-Tian and Liu, Jianhui and Li, Yangguang and Cao, Yan-Pei and Liang, Ding and Qi, Xiaojuan},
title = {TEXGen: a Generative Diffusion Model for Mesh Textures},
journal = {ACM Trans. Graph.},
volume = {43},
number = {6},
year = {2024},
issn = {0730-0301},
doi = {10.1145/3687909},
articleno = {213},
numpages = {14},
keywords = {generative model, texture generation}
}

About

[SIGGRAPH Asia 2024, Best Paper Honorable Mention] This is the official implementation of our SIGGRAPH Asia journal artical: TEXGen: a Generative Diffusion Model for Mesh Textures

Resources

Stars

338 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages