Views
No views yet
1
2import os
3import torch
4from PIL import Image
5from transformers import AutoImageProcessor, AutoModelForImageClassification
6
7
8MODEL_ID = "computervisionpro/convnextv2-real-fake"
9
10
11def predict(image_path, model_id=MODEL_ID):
12 # device = "cuda" if torch.cuda.is_available() else "cpu"
13 device = "cpu"
14 # hf_token = os.getenv("HF_TOKEN") or None
15
16 processor = AutoImageProcessor.from_pretrained(model_id)
17 model = AutoModelForImageClassification.from_pretrained(model_id)
18 model.to(device)
19 model.eval()
20
21 image = Image.open(image_path).convert("RGB")
22 inputs = processor(images=image, return_tensors="pt")
23 inputs = {key: value.to(device) for key, value in inputs.items()}
24
25 with torch.inference_mode():
26 outputs = model(**inputs)
27 probs = torch.softmax(outputs.logits, dim=-1)[0]
28
29 pred_id = int(torch.argmax(probs).item())
30 label = model.config.id2label.get(pred_id, str(pred_id))
31 confidence = float(probs[pred_id].item())
32
33 return {
34 "image": image_path,
35 "model": model_id,
36 "prediction": label,
37 "confidence": confidence,
38 "probabilities": {
39 model.config.id2label.get(i, str(i)): float(prob.item())
40 for i, prob in enumerate(probs)
41 },
42 }
43
44
45result = predict("./dataset/test/fake/fake_1006.jpg")
46print()
47print(result)