1import os
2import torch
3import hashlib
4
5import timm
6from open_clip.factory import create_model_and_transforms
7from timm.models.vision_transformer import _convert_openai_clip
8
9
10path = "SkyCLIP_ViT_L14_top30pct/epoch_20.pt"
11encoder = "ViT-L-14"
12model, _, preprocess_val = create_model_and_transforms(encoder, path, weights_only=False)
13print(preprocess_val)
14model_timm = timm.create_model("vit_large_patch14_clip_224", pretrained=False, num_classes=768)
15converted = _convert_openai_clip(model.state_dict(), model_timm)
16model_timm.load_state_dict(converted, strict=True)
17
18filename = "vit_large_patch14_224_skyclip_30pct.pth"
19torch.save(model_timm.state_dict(), filename)
20md5 = hashlib.md5(open(filename, "rb").read()).hexdigest()[:8]
21os.rename(filename, filename.replace(".pth", f"-{md5}.pth"))
Compose(
Resize(size=224, interpolation=bicubic, max_size=None, antialias=True)
CenterCrop(size=(224, 224))
<function _convert_to_rgb at 0x33047ff60>
ToTensor()
Normalize(mean=(0.48145466, 0.4578275, 0.40821073), std=(0.26862954, 0.26130258, 0.27577711))
)