magvit2 pytorch
0.4.9
言語モデルからの MagViT2 の実装は普及を打ち破る - トークナイザーは Pytorch でのビジュアル生成の鍵です。これは現在、ビデオ生成/理解のための SOTA を保持しています。
この論文で提案されている Lookup Free Quantizer は、別のリポジトリにあります。おそらくオーディオから始めて、他のすべてのモダリティについても検討する必要があります。
この文書で提案されているトークナイザーを公開して複製することに興味がある場合は、参加してください。
更新: Tencent はこのリポジトリのコードを使用し、実用的なモデルをオープンソース化しました
StabilityAIと?オープンソース人工知能への独立性を私に与えてくれた寛大なスポンサーと他のスポンサーに感謝します。
Louis Serrano は、初期の初期実行のいくつかを共有し、アーキテクチャ全体が有限のスカラー量子化で収束することを検証してくれました。
あなた?あなたが才能のある研究エンジニア/科学者であれば、最先端のオープンソース科学に遠慮なく貢献してください!
$ pip install magvit2-pytorch
from magvit2_pytorch import (
VideoTokenizer ,
VideoTokenizerTrainer
)
tokenizer = VideoTokenizer (
image_size = 128 ,
init_dim = 64 ,
max_dim = 512 ,
codebook_size = 1024 ,
layers = (
'residual' ,
'compress_space' ,
( 'consecutive_residual' , 2 ),
'compress_space' ,
( 'consecutive_residual' , 2 ),
'linear_attend_space' ,
'compress_space' ,
( 'consecutive_residual' , 2 ),
'attend_space' ,
'compress_time' ,
( 'consecutive_residual' , 2 ),
'compress_time' ,
( 'consecutive_residual' , 2 ),
'attend_time' ,
)
)
trainer = VideoTokenizerTrainer (
tokenizer ,
dataset_folder = '/path/to/a/lot/of/media' , # folder of either videos or images, depending on setting below
dataset_type = 'videos' , # 'videos' or 'images', prior papers have shown pretraining on images to be effective for video synthesis
batch_size = 4 ,
grad_accum_every = 8 ,
learning_rate = 2e-5 ,
num_train_steps = 1_000_000
)
trainer . train ()
# after a lot of training ...
# can use the EMA of the tokenizer
ema_tokenizer = trainer . ema_tokenizer
# mock video
video = torch . randn ( 1 , 3 , 17 , 128 , 128 )
# tokenizing video to discrete codes
codes = ema_tokenizer . tokenize ( video ) # (1, 9, 16, 16) <- in this example, time downsampled by 4x and space downsampled by 8x. flatten token ids for (non)-autoregressive training
# sanity check
decoded_video = ema_tokenizer . decode_from_code_indices ( codes )
assert torch . allclose (
decoded_video ,
ema_tokenizer ( video , return_recon = True )
)
重みとバイアスに関する実験を追跡するには、 VideoTokenizerTrainer
でuse_wandb_tracking = True
を設定し、 .trackers
コンテキスト マネージャーを使用します。
trainer = VideoTokenizerTrainer (
use_wandb_tracking = True ,
...
)
with trainer . trackers ( project_name = 'magvit2' , run_name = 'baseline' ):
trainer . train ()
Magvit2 トークナイザー
decode_from_codebook_indices
、平坦化された ID を受け入れ、特徴マップの寸法を修正してビデオにデコードするために再形成できる必要があります。 残留 LFQ が実際に意味を持つようになったので、RQ ビデオ トランスフォーマーを即興で作成します。
マスクGit
@misc { yu2023language ,
title = { Language Model Beats Diffusion -- Tokenizer is Key to Visual Generation } ,
author = { Lijun Yu and José Lezama and Nitesh B. Gundavarapu and Luca Versari and Kihyuk Sohn and David Minnen and Yong Cheng and Agrim Gupta and Xiuye Gu and Alexander G. Hauptmann and Boqing Gong and Ming-Hsuan Yang and Irfan Essa and David A. Ross and Lu Jiang } ,
year = { 2023 } ,
eprint = { 2310.05737 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CV }
}
@inproceedings { dao2022flashattention ,
title = { Flash{A}ttention: Fast and Memory-Efficient Exact Attention with {IO}-Awareness } ,
author = { Dao, Tri and Fu, Daniel Y. and Ermon, Stefano and Rudra, Atri and R{'e}, Christopher } ,
booktitle = { Advances in Neural Information Processing Systems } ,
year = { 2022 }
}
@article { Zhang2021TokenST ,
title = { Token Shift Transformer for Video Classification } ,
author = { Hao Zhang and Y. Hao and Chong-Wah Ngo } ,
journal = { Proceedings of the 29th ACM International Conference on Multimedia } ,
year = { 2021 }
}
@inproceedings { Arora2023ZoologyMA ,
title = { Zoology: Measuring and Improving Recall in Efficient Language Models } ,
author = { Simran Arora and Sabri Eyuboglu and Aman Timalsina and Isys Johnson and Michael Poli and James Zou and Atri Rudra and Christopher R'e } ,
year = { 2023 } ,
url = { https://api.semanticscholar.org/CorpusID:266149332 }
}