gatilin's picture
Extract pinned native components; verify source bytes, strict loading and native encode/decode interfaces
fb1af88 verified
|
Raw History Blame Contribute Delete
2.91 kB
metadata
license: apache-2.0
library_name: pytorch
pipeline_tag: image-to-image
tags:
  - image-tokenizer
  - binary-tokenizer
  - bitdance
  - component-extraction
base_model: shallowdream204/BitDance-Tokenizer

BitDance d32c128 binary image tokenizer

Standalone native encoder, sign quantizer and GAN decoder from the official BitDance tokenizer release. The safetensors file is byte-for-byte identical to ae_d32c128.safetensors; its original SHA-256 and pinned source revision are recorded in extraction.json. No generation backbone is included.

This is the published BitDance codec. It is not asserted to be the semantic-distilled UniWeTok checkpoint merely because both describe 128-bit representations.

Load and reconstruct

from huggingface_hub import snapshot_download
import sys, torch
folder = snapshot_download("gatilin/bitdance_binary_tokenizer_d32c128")
sys.path.insert(0, folder)
from component import load_model
codec = load_model(folder)
# RGB pixels: NCHW, [-1, 1], spatial dimensions divisible by 32.
pixels = torch.linspace(-1, 1, 3*256*256).reshape(1,3,256,256)
with torch.inference_mode():
    signs = codec.encode(pixels)  # [1,128,8,8], each value -1 or +1
    reconstructed = codec.decode(signs)

Install requirements.txt and run python validate.py in the downloaded directory. component.py also provides explicitly documented byte-packing helpers for storing 128 sign bits. Their byte convention is a portable bundle helper, not an inferred mapping to upstream AR vocabulary IDs.

Validation

Strict native state-dict loading, official-file SHA-256 equality, 256px encode/decode, binary alphabet, exact bit roundtrip, fixed-seed bit-decoding parity, native stochastic decoding, and rectangular 256x320 encode/decode passed on CPU in float32. Exact results and measured fixture MSE are in validation.json. These are component correctness tests on deterministic synthetic inputs, not claims about perceptual quality or text-to-image benchmark scores.

The GAN decoder injects fresh Gaussian noise even in eval mode. Set the same torch RNG seed before decoding if you need reproducible output; this native behavior is preserved.

The 2^128 space is represented implicitly by 128 binary channels, not a materialized embedding table. The published model uses the original convolutional implementation in autoencoder.py, not the separate attention-augmented autoencoder_uni.py. The only native-file edit changes an absolute filesystem-helper import into a package-relative import; source and code revisions are in the provenance files.

Source and license

Apache-2.0; original notices are retained. Extraction, tests, loader and documentation added for this standalone distribution.