| 11 | |
| 12 | class CLIPEvaluator(object): |
| 13 | def __init__(self, device, clip_model='ViT-B/32') -> None: |
| 14 | self.device = device |
| 15 | self.model, clip_preprocess = clip.load(clip_model, device=self.device) |
| 16 | |
| 17 | self.clip_preprocess = clip_preprocess |
| 18 | |
| 19 | self.preprocess = transforms.Compose([transforms.Normalize(mean=[-1.0, -1.0, -1.0], std=[2.0, 2.0, 2.0])] + # Un-normalize from [-1.0, 1.0] (generator output) to [0, 1]. |
| 20 | clip_preprocess.transforms[:2] + # to match CLIP input scale assumptions |
| 21 | clip_preprocess.transforms[4:]) # + skip convert PIL to tensor |
| 22 | |
| 23 | def tokenize(self, strings: list): |
| 24 | return clip.tokenize(strings).to(self.device) |