Spaces:
Configuration error
Configuration error
File size: 6,399 Bytes
fb00789 586a795 0375e44 586a795 a6c2c50 fb00789 a6c2c50 fb00789 9f8783d fb00789 a11c423 fb00789 45f9c2d 5425cac 3d722cb fb00789 382e8ee fb00789 005a615 3d722cb fb00789 c001cf0 fb00789 5425cac 77d56d0 d2c5d93 f577e59 ebd6320 f0c007b 3d722cb 9a99c2c 3d722cb 2431ec8 3d722cb 8e71c43 3d722cb eaae869 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
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()
|