SelftokTokenizer 开源项目教程
1. 项目介绍
SelftokTokenizer 是由 Selftok Team 开发的一种创新的视觉标记化工具。它摒弃了传统图像表示中的空间先验,引入了一种新颖的离散视觉标记化方法:自洽标记化(Self-Consistency Tokenization,简称 Selftok)。Selftok 通过将自回归(Autoregressive,AR)先验整合到视觉标记中,为视觉语言模型(Vision-Language Model,VLM)提供了一种优雅且简约的方法来统一扩散和 AR。Selftoktokenizer 不仅支持高质量的重建和高比特率的压缩,而且在视觉理解和生成任务上取得了最先进(SOTA)的性能。
2. 项目快速启动
要开始使用 SelftokTokenizer,请按照以下步骤操作:
首先,确保您的环境中已安装了 Python。接着,创建一个虚拟环境并安装所需的依赖:
conda create -n selftok python=3.10
conda activate selftok
pip install -r requirements.txt
然后,下载并配置预训练模型:
git clone https://github.com/selftok-team/SelftokTokenizer.git
cd ./SelftokTokenizer
接下来,使用以下代码将图像转换为标记序列:
import argparse
from mimogpt.infer.infer_utils import parse_args_from_yaml
from torchvision import transforms
from PIL import Image
import torch
import numpy as np
from mimogpt.infer.SelftokPipeline import SelftokPipeline, NormalizeToTensor
from torchvision.utils import save_image
parser = argparse.ArgumentParser()
parser.add_argument("--yml-path", type=str, default="./configs/res256/256-eval.yml")
parser.add_argument("--pretrained", type=str, default="path/to/your/tokenizer_512_ckpt.pth")
parser.add_argument("--sd3_pretrained", type=str, default="path/to/your/models--stabilityai--stable-diffusion-3-medium-diffusers")
parser.add_argument("--data_size", type=int, default=256)
args = parser.parse_args()
cfg = parse_args_from_yaml(args.yml_path)
model = SelftokPipeline(
cfg=cfg,
ckpt_path=args.pretrained,
sd3_path=args.sd3_pretrained,
datasize=args.data_size,
device='cuda'
)
img_transform = transforms.Compose([
transforms.Resize(args.data_size),
transforms.CenterCrop(args.data_size),
NormalizeToTensor(),
])
image_paths = ['./test.jpg']
images = [img_transform(Image.open(p)) for p in image_paths]
images = torch.stack(images).to('cuda')
tokens = model.encoding(images, device='cuda')
np.save('./token.npy', tokens.detach().cpu().numpy())
3. 应用案例和最佳实践
- 图像重建:使用 SelftokTokenizer 对图像进行编码,然后通过扩散模型解码重建图像。
- 视觉生成:结合 Selftok 的自回归特性和强化学习,可以显著提升视觉生成任务的性能。
- 视觉理解:利用 SelftokTokenizer 对图像进行编码,然后输入到视觉语言模型中,以提高视觉理解任务的准确性。
4. 典型生态项目
SelftokTokenizer 可以与其他开源项目配合使用,例如:
- Stable Diffusion:用于图像生成的稳定扩散模型,可以与 SelftokTokenizer 结合,提高生成图像的质量。
- Transformers:基于注意力机制的开源库,可以用来构建和训练 VLM,与 SelftokTokenizer 配合,提升模型的性能。
以上就是 SelftokTokenizer 的开源项目教程。通过遵循这些步骤,您可以快速上手并开始使用 SelftokTokenizer。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考