Update README.md
Browse files
README.md
CHANGED
@@ -11,122 +11,6 @@ license: mit
|
|
11 |
short_description: Preventing Local Pitfalls in Vector Quantization via Optimal
|
12 |
---
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
Paper |
|
18 |
-
<a href="https://boruizhang.site/OptVQ/" style="text-decoration: none; color: white; background-color: #660874; padding: 4px 8px; border-radius: 8px; border-bottom: none;" target="_blank">Project Page</a> |
|
19 |
-
<a href="https://huggingface.co/spaces/BorelTHU/OptVQ" style="text-decoration: none; color: white; background-color: #660874; padding: 4px 8px; border-radius: 8px; border-bottom: none;" target="_blank">HF Demo</a>
|
20 |
-
</p>
|
21 |
-
|
22 |
-

|
23 |
-
|
24 |
-
## News
|
25 |
-
|
26 |
-
| [2024-11-26] Release the pre-trained models of OptVQ.
|
27 |
-
|
28 |
-
## Introduction
|
29 |
-
|
30 |
-
We conduct image reconstruction experiments on the ImageNet dataset, and the quantitative comparison is shown below:
|
31 |
-
|
32 |
-
| Model | Latent Size | #Tokens | From Scratch | SSIM↑ | PSNR ↑ | LPIPS↓ | rFID↓ |
|
33 |
-
| - | - | - | - | - | - | - | - |
|
34 |
-
| taming-VQGAN | 16 × 16 | 1,024 | √ | 0.521 | 23.30 | 0.195 | 6.25 |
|
35 |
-
| MaskGIT-VQGAN | 16 × 16 | 1,024 | √ | - | - | - | 2.28 |
|
36 |
-
| Mo-VQGAN | 16 × 16 × 4 | 1,024 | √ | 0.673 | 22.42 | 0.113 | 1.12 |
|
37 |
-
| TiTok-S-128 | 128 | 4,096 | × | - | - | - | 1.71 |
|
38 |
-
| ViT-VQGAN | 32 × 32 | 8,192 | √ | - | - | - | 1.28 |
|
39 |
-
| taming-VQGAN | 16 × 16 | 16,384 | √ | 0.542 | 19.93 | 0.177 | 3.64 |
|
40 |
-
| RQ-VAE | 8 × 8 × 16 | 16,384 | √ | - | - | - | 1.83 |
|
41 |
-
| VQGAN-LC | 16 × 16 | 100,000 | × | 0.589 | 23.80 | 0.120 | 2.62 |
|
42 |
-
| OptVQ (ours) | 16 × 16 × 4 | 16,384 | √ | 0.717 | 26.59 | 0.076 | 1.00 |
|
43 |
-
| OptVQ (ours) | 16 × 16 × 8 | 16,384 | √ | 0.729 | 27.57 | 0.066 | 0.91 |
|
44 |
-
|
45 |
-
### Toy Example
|
46 |
-
|
47 |
-
We visualize the process of OptVQ and Vanilla VQ on a two-dimensional toy example.
|
48 |
-
The left figure with red points represents the baseline (Vanilla VQ), and the right figure with green points represents the proposed method (OptVQ).
|
49 |
-
<p float="left">
|
50 |
-
<img src="assets/base.gif" width="300" />
|
51 |
-
<img src="assets/sink.gif" width="300" />
|
52 |
-
</p>
|
53 |
-
|
54 |
-
## Usage
|
55 |
-
|
56 |
-
### Installation
|
57 |
-
|
58 |
-
Please install the dependencies by running the following command:
|
59 |
-
```bash
|
60 |
-
# install the dependencies
|
61 |
-
pip install -r requirements.txt
|
62 |
-
# install the faiss-gpu package via conda
|
63 |
-
conda install -c pytorch -c nvidia faiss-gpu=1.8.0
|
64 |
-
# install the optvq package
|
65 |
-
pip install -e .
|
66 |
-
```
|
67 |
-
|
68 |
-
### Inference
|
69 |
-
|
70 |
-
Please download the pre-trained models from the following links:
|
71 |
-
|
72 |
-
| Model | Link (Tsinghua) | Link (Hugging Face) |
|
73 |
-
| - | - | - |
|
74 |
-
| OptVQ (16 x 16 x 4) | [Download](https://cloud.tsinghua.edu.cn/d/91befd96f06a4a83bb03/) | [Download](https://huggingface.co/BorelTHU/optvq-16x16x4) |
|
75 |
-
| OptVQ (16 x 16 x 8) | [Download](https://cloud.tsinghua.edu.cn/d/309a55529e1f4f42a8d2/) | [Download](https://huggingface.co/BorelTHU/optvq-16x16x8) |
|
76 |
-
|
77 |
-
#### Option 1: Load from Hugging Face
|
78 |
-
|
79 |
-
You can load from the Hugging Face model hub by running the following code:
|
80 |
-
```python
|
81 |
-
# Example: load the OptVQ with 16 x 16 x 4
|
82 |
-
from optvq.models.vqgan_hf import VQModelHF
|
83 |
-
model = VQModelHF.from_pretrained("BorelTHU/optvq-16x16x4")
|
84 |
-
```
|
85 |
-
|
86 |
-
#### Option 2: Load from the local checkpoint
|
87 |
-
|
88 |
-
You can also write the following code to load the pre-trained model locally:
|
89 |
-
```python
|
90 |
-
# Example: load the OptVQ with 16 x 16 x 4
|
91 |
-
from optvq.utils.init import initiate_from_config_recursively
|
92 |
-
from omegaconf import OmegaConf
|
93 |
-
import torch
|
94 |
-
config = OmegaConf.load("configs/optvq.yaml")
|
95 |
-
model = initiate_from_config_recursively(config.autoencoder)
|
96 |
-
params = torch.load(..., map_location="cpu")
|
97 |
-
model.load_state_dict(params["model"])
|
98 |
-
```
|
99 |
-
|
100 |
-
#### Perform inference
|
101 |
-
|
102 |
-
After loading the model, you can perform inference (reconstruction):
|
103 |
-
|
104 |
-
```python
|
105 |
-
# load the dataset
|
106 |
-
dataset = ... # the input should be normalized to [-1, 1]
|
107 |
-
data = dataset[...] # size: (BS, C, H, W)
|
108 |
-
|
109 |
-
# reconstruct the input
|
110 |
-
with torch.no_grad():
|
111 |
-
quant, *_ = model.encode(data)
|
112 |
-
recon = model.decode(quant)
|
113 |
-
```
|
114 |
-
|
115 |
-
### Evaluation
|
116 |
-
|
117 |
-
To evaluate the model, you can use the following code:
|
118 |
-
```bash
|
119 |
-
python eval.py --config $config_path --log_dir $log_dir --resume $resume --is_distributed
|
120 |
-
```
|
121 |
-
|
122 |
-
### Training
|
123 |
-
|
124 |
-
We will release the training scripts soon.
|
125 |
-
|
126 |
-
<!-- ## Citation
|
127 |
-
|
128 |
-
If you find this work useful, please consider citing it.
|
129 |
-
|
130 |
-
```bibtex
|
131 |
-
xxx
|
132 |
-
``` -->
|
|
|
11 |
short_description: Preventing Local Pitfalls in Vector Quantization via Optimal
|
12 |
---
|
13 |
|
14 |
+
This model has been pushed to the Hub using the [PytorchModelHubMixin](https://huggingface.co/docs/huggingface_hub/package_reference/mixins#huggingface_hub.PyTorchModelHubMixin) integration:
|
15 |
+
- Docs: Please see [github](https://github.com/zbr17/OptVQ) for more details.
|
16 |
+
- Paper: https://arxiv.org/abs/2412.15195
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|