simba-or-not / predict.py
makactuary's picture
Is this Simba? one-cat detector with model card
ce136c4 verified
Raw History Blame Contribute Delete
816 Bytes
"""Is this Simba? ConvNeXt-Tiny features (timm) + logistic-regression head."""
import sys
import joblib, timm, torch
from PIL import Image, ImageOps
from huggingface_hub import hf_hub_download
head = joblib.load(hf_hub_download("makactuary/simba-or-not", "head.joblib"))
backbone = timm.create_model("convnext_tiny.fb_in22k_ft_in1k", pretrained=True, num_classes=0).eval()
transform = timm.data.create_transform(**timm.data.resolve_data_config({}, model=backbone))
def is_simba(path):
with torch.inference_mode():
x = backbone(transform(ImageOps.exif_transpose(Image.open(path)).convert("RGB")).unsqueeze(0)).numpy()
p = float(head.predict_proba(x)[0, 1])
return ("Simba" if p >= 0.5 else "not Simba"), round(p, 3)
if __name__ == "__main__":
print(is_simba(sys.argv[1]))