import osimport os.path as osp
from PIL import Imageimport torchfrom transformers import AutoModel, AutoImageProcessor
MODEL_HUB = "BAAI/Emu3-VisionTokenizer"
model = AutoModel.from_pretrained(MODEL_HUB, trust_remote_code=True).eval().cuda()processor = AutoImageProcessor.from_pretrained(MODEL_HUB, trust_remote_code=True)
# TODO: you need to modify the path hereVIDEO_FRAMES_PATH = "YOUR_VIDEO_FRAMES_PATH"
video = os.listdir(VIDEO_FRAMES_PATH)video.sort()video = [Image.open(osp.join(VIDEO_FRAMES_PATH, v)) for v in video]
images = processor(video, return_tensors="pt")["pixel_values"]images = images.unsqueeze(0).cuda()
# image autoencodeimage = images[:, 0]print(image.shape)with torch.no_grad(): # encode codes = model.encode(image) # decode recon = model.decode(codes)
recon = recon.view(-1, *recon.shape[2:])recon_image = processor.postprocess(recon)["pixel_values"][0]recon_image.save("recon_image.png")
# video autoencodeimages = images.view( -1, model.config.temporal_downsample_factor, *images.shape[2:],)
print(images.shape)with torch.no_grad(): # encode codes = model.encode(images) # decode recon = model.decode(codes)
recon = recon.view(-1, *recon.shape[2:])recon_images = processor.postprocess(recon)["pixel_values"]for idx, im in enumerate(recon_images): im.save(f"recon_video_{idx}.png")