Spaces:
Configuration error
Configuration error
import simplejson | |
import tensorflow | |
import visualization_utils as vis_util | |
from PIL import Image | |
import numpy as np | |
from PIL import Image | |
import numpy as np | |
import label_map_util | |
import tensorflow as tf | |
from matplotlib import pyplot as plt | |
import time | |
import cv2 | |
from numpy import asarray | |
#import streamlit as st | |
import gradio as gr | |
#st.title("Tag_Diciphering") | |
def prediction(image_path): | |
total_time_start = time.time() | |
#image_path = path_image | |
def loadImageIntoNumpyArray(image): | |
(im_width, im_height) = image.size | |
if image.getdata().mode == "RGBA": | |
image = image.convert('RGB') | |
return asarray(image).reshape((im_height, im_width, 3)).astype(np.uint8) | |
def main(image_path,model_path,model_PATH_TO_CKPT,path_to_labels): | |
image = Image.open(image_path) | |
image_np = loadImageIntoNumpyArray(image) | |
image_np_expanded = np.expand_dims(image_np, axis=0) | |
label_map = label_map_util.load_labelmap(path_to_labels) | |
# print("label_map------->",type(label_map)) | |
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=100, use_display_name=True) | |
category_index = label_map_util.create_category_index(categories) | |
# print("category index-->",category_index) | |
detection_graph = tf.Graph() | |
with detection_graph.as_default(): | |
od_graph_def = tf.compat.v1.GraphDef() | |
with tf.compat.v2.io.gfile.GFile(model_PATH_TO_CKPT, 'rb') as fid: | |
serialized_graph = fid.read() | |
od_graph_def.ParseFromString(serialized_graph) | |
tf.import_graph_def(od_graph_def, name='') | |
sess = tf.compat.v1.Session(graph=detection_graph) | |
# Input tensor is the image | |
image_tensor = detection_graph.get_tensor_by_name('image_tensor:0') | |
# Output tensors are the detection boxes, scores, and classes | |
# Each box represents a part of the image where a particular object was detected | |
detection_boxes = detection_graph.get_tensor_by_name('detection_boxes:0') | |
# Each score represents level of confidence for each of the objects. | |
# The score is shown on the result image, together with the class label. | |
detection_scores = detection_graph.get_tensor_by_name('detection_scores:0') | |
detection_classes = detection_graph.get_tensor_by_name('detection_classes:0') | |
# Number of objects detected | |
num_detections = detection_graph.get_tensor_by_name('num_detections:0') | |
(boxes, scores, classes, num) = sess.run( | |
[detection_boxes, detection_scores, detection_classes, num_detections], | |
feed_dict={image_tensor: image_np_expanded}) | |
vis_util.visualize_boxes_and_labels_on_image_array( | |
image_np, | |
np.squeeze(boxes), | |
np.squeeze(classes).astype(np.int32), | |
np.squeeze(scores), | |
category_index, | |
use_normalized_coordinates=True, | |
line_thickness=8, | |
min_score_thresh=0.1) | |
#%matplotlib inline | |
from matplotlib import pyplot as plt | |
# print("boxes:",boxes) | |
# print("class:",classes) | |
objects = [] | |
threshold = 0.5 | |
# print("category:",category_index) | |
boxes = boxes[0] | |
for index, value in enumerate(classes[0]): | |
object_dict = {} | |
if scores[0, index] > threshold: | |
object_dict["class"] = (category_index.get(value)).get('name') | |
object_dict["score"] = round(scores[0, index] * 100,2) | |
box = tuple(boxes[index].tolist()) | |
ymin, xmin, ymax, xmax= box | |
im_width,im_height = 360,360 | |
left, right, top, bottom = (xmin * im_width, xmax * im_width, | |
ymin * im_height, ymax * im_height) | |
object_dict["box"] = (int(left), int(right), int(top), int(bottom)) | |
objects.append(object_dict) | |
image_orignal = Image.open(image_path) | |
image_np_orignal = loadImageIntoNumpyArray(image_orignal) | |
fig, ax = plt.subplots(1,2) | |
fig.suptitle('Tag Deciphering') | |
ax[0].imshow(image_np_orignal,aspect='auto'); | |
ax[1].imshow(image_np,aspect='auto'); | |
return objects,image_np | |
image_path = image_path | |
model_path = "//inference" | |
model_PATH_TO_CKPT = "frozen_inference_graph.pb" | |
path_to_labels = "tf_label_map.pbtxt" | |
result,fig = main(image_path,model_path,model_PATH_TO_CKPT,path_to_labels) | |
# print("result-",result) | |
# list_to_be_sorted= [{'class': 'Y', 'score': 99.97, 'box': (157, 191, 269, 288)}, {'class': '6', 'score': 99.93, 'box': (158, 191, 247, 267)}, {'class': '9', 'score': 99.88, 'box': (156, 190, 179, 196)}, {'class': '4', 'score': 99.8, 'box': (156, 189, 198, 219)}, {'class': '1', 'score': 99.65, 'box': (157, 189, 222, 244)}, {'class': 'F', 'score': 63.4, 'box': (155, 185, 157, 175)}] | |
newlist = sorted(result, key=lambda k: k['box'][3],reverse=False) | |
text ='' | |
for each in newlist: | |
if(each['score']>65): | |
text += each['class'] | |
# print("text:",text) | |
if(text!=""): | |
text = text.replace("yellowTag", "") | |
result = text | |
else: | |
result = "No Vertical Tag Detected" | |
response = {"predictions": [result]} | |
total_time_end = time.time() | |
print("total time : ",round((total_time_end-total_time_start),2)) | |
return simplejson.dumps(response),fig | |
inputs = gr.inputs.Image(type = 'filepath') | |
EXAMPLES = ["img1.jpg","img2.jpg","img6.jpg","img7.jpg","img8.jpg","img4.jpg","img10.jpg"] | |
DESCRIPTION = """Tag Dicipher is to convert into understandable form. especially to decode the tags to make out | |
the meaning of despite lack of clearness.""" | |
outputs = [gr.outputs.Textbox(label = "Prediction"), | |
gr.outputs.Image(type = 'numpy',label = 'Tag Diciphering')] | |
article = "<p style='text-align: center'><a href='https://huggingface.co/spaces/ThirdEyeData/TagDiciphering/blob/main/README.md'>Detailed Description</a></p>" | |
demo_app = gr.Interface( | |
fn= prediction, | |
inputs=inputs, | |
outputs= outputs, | |
title = "Tag Diciphering", | |
description = DESCRIPTION, | |
examples = EXAMPLES, | |
article = article, | |
#cache_example = True, | |
#live = True, | |
theme = 'huggingface' | |
) | |
demo_app.launch() | |