--- license: apache-2.0 --- # Codon Motif Vision 1 ## Model Introduction **Codon Motif Vision 1** is an experimental Visual Tokenizer model that supports images of arbitrary scales. ## Technical Specifications The model is based on the VQ-GAN architecture and integrates the following key technologies: * **Quantizer**: Adopts **LFQ (Lookup Free Quantization)**, a vector quantization technique without lookups, calculating Entropy and Perplexity. * **Positional Encoding**: Integrates **2D RoPE (Rotary Positional Embedding)** to enhance spatial awareness. * **Attention Mechanism**: Both Encoder and Decoder use **Spatial Multi-Head Attention**. * **Encoder**: Combines ConvBlock and ResBasicBlock, supporting dynamic input sizes. * **Decoder**: Uses **PixelShuffle** for upsampling reconstruction. ## Model Parameters and Files ### File List | Filename | Size | Description | | :--- | :--- | :--- | | `motif-v1.safetensors` | 84.92MB | Full model weights | | `motif-v1_encoder.safetensors` | 43.32MB | Encoder weights only | | `motif-v1_decoder.safetensors` | 41.56MB | Decoder weights only | | `motif-v1_quantizer.safetensors` | 34.37KB | Quantizer weights only | ### Default Configuration The following are the default initialization parameters (i.e., v1 standard configuration): * **Input/Output Channels**: 3 (RGB) * **Patch Size**: 16 * **Latent Dim**: 256 * **Codebook Dim**: 16 * **Encoder**: Hidden Dim 256, 1 ResBlock, 4 Heads * **Decoder**: Hidden Dim 256, 3 ResBlocks, 4 Heads * **RoPE Max Len**: 4096 ## Usage ### 1. Installation Ensure the `orbit-torch` library is installed: ```bash pip install orbit-torch ``` ### 2. Model Loading Use the `load_pretrained` method to load weights. Weights are divided into full weights and partial weights (Encoder, Decoder, Quantizer). #### Import Module ```python from orbit.model.motif.vision.v1 import MotifV1 ``` #### Scenario A: Load Full Model ```python model = MotifV1() model.load_pretrained('motif-v1.safetensors') ``` #### Scenario B: Use Encoder Only **Note**: When using the Encoder to extract Tokens, you **must** also load the Quantizer. Load via submodules of the `MotifV1` instance. ```python # 1. Instantiate the main model model = MotifV1() # 2. Load weights separately model.encoder.load_pretrained('motif-v1_encoder.safetensors') model.quantizer.load_pretrained('motif-v1_quantizer.safetensors') # 3. Usage example (using the wrapped encode method) # x = torch.randn(1, 3, 256, 256) # [B, 3, H, W] # indices, mask, z_q = model.encode(x) # print(indices.shape) # [B, H, W] ``` #### Scenario C: Use Decoder Only **Note**: When using the Decoder to reconstruct images, you **must** also load the Quantizer (used to restore vectors from indices). ```python # 1. Instantiate the main model model = MotifV1() # 2. Load weights separately model.decoder.load_pretrained('motif-v1_decoder.safetensors') model.quantizer.load_pretrained('motif-v1_quantizer.safetensors') # 3. Usage example (using the wrapped decode method) # indices = ... # [B, H, W] # reconstruction = model.decode(indices) ```