| | import os |
| | os.system("pip install gradio==2.9b23") |
| | import numpy as np |
| | import math |
| | import matplotlib.pyplot as plt |
| | import onnxruntime as rt |
| | import cv2 |
| | import json |
| | import gradio as gr |
| | from huggingface_hub import hf_hub_download |
| | import onnxruntime as rt |
| |
|
| | modele = hf_hub_download(repo_id="onnx/EfficientNet-Lite4", filename="efficientnet-lite4-11.onnx") |
| | labels = json.load(open("labels_map.txt", "r")) |
| |
|
| |
|
| | def pre_process_edgetpu(img, dims): |
| | output_height, output_width, _ = dims |
| | img = resize_with_aspectratio(img, output_height, output_width, inter_pol=cv2.INTER_LINEAR) |
| | img = center_crop(img, output_height, output_width) |
| | img = np.asarray(img, dtype='float32') |
| | |
| | img -= [127.0, 127.0, 127.0] |
| | img /= [128.0, 128.0, 128.0] |
| | return img |
| |
|
| | def resize_with_aspectratio(img, out_height, out_width, scale=87.5, inter_pol=cv2.INTER_LINEAR): |
| | height, width, _ = img.shape |
| | new_height = int(100. * out_height / scale) |
| | new_width = int(100. * out_width / scale) |
| | if height > width: |
| | w = new_width |
| | h = int(new_height * height / width) |
| | else: |
| | h = new_height |
| | w = int(new_width * width / height) |
| | img = cv2.resize(img, (w, h), interpolation=inter_pol) |
| | return img |
| |
|
| | def center_crop(img, out_height, out_width): |
| | height, width, _ = img.shape |
| | left = int((width - out_width) / 2) |
| | right = int((width + out_width) / 2) |
| | top = int((height - out_height) / 2) |
| | bottom = int((height + out_height) / 2) |
| | img = img[top:bottom, left:right] |
| | return img |
| |
|
| |
|
| | sess = rt.InferenceSession(modele) |
| |
|
| | def inference(img): |
| | img = cv2.imread(img) |
| | img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) |
| | |
| | img = pre_process_edgetpu(img, (224, 224, 3)) |
| | |
| | img_batch = np.expand_dims(img, axis=0) |
| |
|
| | results = sess.run(["Softmax:0"], {"images:0": img_batch})[0] |
| | result = reversed(results[0].argsort()[-5:]) |
| | resultdic = {} |
| | for r in result: |
| | resultdic[labels[str(r)]] = float(results[0][r]) |
| | return resultdic |
| | |
| |
|
| | title="Определитель животного" |
| | description="Перетащите фото" |
| | examples=[['cat1.jpg'],['dog.jpg'],['lis.jpg']] |
| |
|
| |
|
| | gr.Interface(inference,gr.inputs.Image(type="filepath"),"label",title=title,description=description,examples=examples).launch() |
| |
|