''' File: recognize.py Project: BulgarianPatternsRecognizer Author: Milko Videv (milko.videv@thalesgroup.com) ----- Last Modified: Tuesday, 5th March 2024 7:00:29 pm Modified By: Milko Videv (milko.videv@thalesgroup.com>) ----- Copyright 2017 - 2024, Thales DIS, MCS SSH ----- HISTORY: Date By Comments ---------- --- --------------------------------------------------------- ''' from fastcore.all import * from fastai.vision.all import * from tools import * import pathlib plt = platform.system() if plt != 'Windows': pathlib.WindowsPath = pathlib.PosixPath learn = load_learner("./models/trained.pkl") labels = learn.dls.vocab def predict(image): if image is None: return None img = PILImage.create(image) pred,pred_idx,probs = learn.predict(img) result = {labels[i]: float(probs[i]) for i in range(len(labels))} labels_map = {'bulgarian': 'българска', 'indian': 'индийска', 'japanese': 'японска'} result = {labels_map[key]: value for key, value in result.items()} max_type = max(result, key=result.get) max_probability = result[max_type] * 100 print(f"Тази шевица е {max_type} с вероятност {max_probability:.2f}%") return result if __name__ == "__main__": if debugger_is_active(): predict("./samples/bulgarian.jpg") sys.exit() else: if len(sys.argv) < 2: print("Use: python predict.py ") print("Example: python predict.py samples/bulgarian.jpg") sys.exit() src = sys.argv[1] predict(src)