DeployedSpectrogram / predict.py
FisayoF's picture
Predict file to run yourself
908b0df verified
Raw History Blame Contribute Delete
788 Bytes
import numpy as np
import torch
from PIL import Image
from model import CnnNet
# Index order used in training: 0 = background, 1 = helicopter, 2 = drone
CLASS_NAMES = ["background", "helicopter", "drone"]
model = CnnNet()
model.load_state_dict(torch.load("weightsfilefromspectrogram.pth", map_location="cpu"))
model.eval()
def predict(image_path):
# Spectrograms are single-channel, 480x640, pixel values scaled to 0-1
img = Image.open(image_path).convert("L").resize((640, 480))
x = torch.tensor(np.array(img) / 255.0, dtype=torch.float32)
x = x.unsqueeze(0).unsqueeze(0) # shape [1, 1, 480, 640]
with torch.no_grad():
probs = torch.exp(model(x))[0] # the model outputs log-probabilities
return {name: float(p) for name, p in zip(CLASS_NAMES, probs)}