Views
No views yet
Ramos-Ramos/dino-resnet-50 DINO checkpoint.| Hyperparameter | Value |
|---|---|
| Cs | 10 |
| class_weight | |
| cv | StratifiedKFold(n_splits=5, random_state=1, shuffle=True) |
| dual | False |
| fit_intercept | True |
| intercept_scaling | 1.0 |
| l1_ratios | |
| max_iter | 100 |
| multi_class | auto |
| n_jobs | |
| penalty | l2 |
| random_state | 1 |
| refit | False |
| scoring | |
| solver | lbfgs |
| tol | 0.0001 |
| verbose | 0 |
| Metric | Value |
|---|---|
| accuracy | 0.987771 |
| f1 score | 0.987771 |
1from PIL import Image
2from skops import hub_utils
3import torch
4from transformers import AutoFeatureExtractor, AutoModel
5import pickle
6import os
7
8# load embedding model
9device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10feature_extractor = AutoFeatureExtractor.from_pretrained("Ramos-Ramos/dino-resnet-50")
11model = AutoModel.from_pretrained("Ramos-Ramos/dino-resnet-50").eval().to(device)
12
13# load logistic regression
14os.mkdir("emb-gam-dino-resnet")
15hub_utils.download(repo_id="Ramos-Ramos/emb-gam-dino-resnet", dst="emb-gam-dino-resnet")
16
17with open("emb-gam-dino-resnet/model.pkl", "rb") as file:
18 logistic_regression = pickle.load(file)
19
20# load image
21img = Image.open("examples/english_springer.png")
22
23# preprocess image
24inputs = {k: v.to(device) for k, v in feature_extractor(img, return_tensors='pt').items()}
25
26# extract patch embeddings
27with torch.no_grad():
28 patch_embeddings = model(**inputs).last_hidden_state[0].permute(1, 2, 0).view(7*7, 2048).cpu()
29
30# classify
31pred = logistic_regression.predict(patch_embeddings.sum(dim=0, keepdim=True))
32
33# get patch contributions
34patch_contributions = logistic_regression.coef_ @ patch_embeddings.T.numpy()@article{singh2022emb,
title={Emb-GAM: an Interpretable and Efficient Predictor using Pre-trained Language Models},
author={Singh, Chandan and Gao, Jianfeng},
journal={arXiv preprint arXiv:2209.11799},
year={2022}
}