Spaces:
Runtime error
Runtime error
Commit
·
f7cedb3
1
Parent(s):
a82adc9
Update app.py
Browse files
app.py
CHANGED
@@ -4,18 +4,11 @@ import time
|
|
4 |
import torch
|
5 |
import argparse
|
6 |
import gradio as gr
|
7 |
-
import io
|
8 |
from PIL import Image
|
9 |
from numpy import random
|
10 |
from pathlib import Path
|
11 |
import torch.backends.cudnn as cudnn
|
12 |
from models.experimental import attempt_load
|
13 |
-
import keras_ocr
|
14 |
-
import matplotlib.pyplot as plt
|
15 |
-
from numpy import asarray
|
16 |
-
import pytesseract
|
17 |
-
from datetime import date
|
18 |
-
|
19 |
|
20 |
from utils.datasets import LoadStreams, LoadImages
|
21 |
from utils.general import check_img_size, check_requirements, check_imshow, non_max_suppression, apply_classifier, \
|
@@ -24,15 +17,15 @@ from utils.plots import plot_one_box
|
|
24 |
from utils.torch_utils import select_device, load_classifier, time_synchronized, TracedModel
|
25 |
os.system("wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt")
|
26 |
os.system("wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6.pt")
|
27 |
-
pipeline = keras_ocr.pipeline.Pipeline()
|
28 |
|
29 |
-
def detect_Custom(img):
|
30 |
-
model
|
|
|
31 |
parser = argparse.ArgumentParser()
|
32 |
parser.add_argument('--weights', nargs='+', type=str, default=model+".pt", help='model.pt path(s)')
|
33 |
parser.add_argument('--source', type=str, default='Inference/', help='source')
|
34 |
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
|
35 |
-
parser.add_argument('--conf-thres', type=float, default=0.
|
36 |
parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
|
37 |
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
|
38 |
parser.add_argument('--view-img', action='store_true', help='display results')
|
@@ -100,7 +93,7 @@ def detect_Custom(img):
|
|
100 |
|
101 |
if classify:
|
102 |
pred = apply_classifier(pred, modelc, img, im0s)
|
103 |
-
|
104 |
for i, det in enumerate(pred):
|
105 |
if webcam:
|
106 |
p, s, im0, frame = path[i], '%g: ' % i, im0s[i].copy(), dataset.count
|
@@ -131,15 +124,6 @@ def detect_Custom(img):
|
|
131 |
if save_img or view_img:
|
132 |
label = f'{names[int(cls)]} {conf:.2f}'
|
133 |
plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)
|
134 |
-
if(cls == 1):
|
135 |
-
x1 = int(xyxy[0].item())
|
136 |
-
y1 = int(xyxy[1].item())
|
137 |
-
x2 = int(xyxy[2].item())
|
138 |
-
y2 = int(xyxy[3].item())
|
139 |
-
orig_img = im0
|
140 |
-
crop_img = im0[y1:y2, x1:x2]
|
141 |
-
cv2.imwrite('MRZ_1.png', crop_img)
|
142 |
-
|
143 |
if view_img:
|
144 |
cv2.imshow(str(p), im0)
|
145 |
cv2.waitKey(1)
|
@@ -162,30 +146,16 @@ def detect_Custom(img):
|
|
162 |
vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
163 |
vid_writer.write(im0)
|
164 |
|
165 |
-
output_text = 'This is not a valid Passport'
|
166 |
-
text = pytesseract.image_to_string(Image.open('MRZ_1.png'))
|
167 |
-
text = text.replace(" ", "")
|
168 |
-
text=text[22:28]
|
169 |
-
today = date.today()
|
170 |
-
s = today.strftime('%Y%m%d')[2:]
|
171 |
-
if(text > s):
|
172 |
-
output_text = 'This is a Valid Passport'
|
173 |
-
#images = [keras_ocr.tools.read(img) for img in [boundedImage]]
|
174 |
-
#prediction_groups = pipeline.recognize(images)
|
175 |
-
#first=prediction_groups[0]
|
176 |
-
#for text,box in first:
|
177 |
-
#output_text += ' '+ text
|
178 |
-
|
179 |
if save_txt or save_img:
|
180 |
s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else ''
|
181 |
|
182 |
print(f'Done. ({time.time() - t0:.3f}s)')
|
183 |
|
184 |
-
return Image.fromarray(im0[:,:,::-1])
|
185 |
|
186 |
|
187 |
-
|
188 |
-
Custom_description="<center>Custom Training Performed on
|
189 |
|
190 |
Footer = (
|
191 |
"<center>Model Trained by: Owais Ahmad Data Scientist at <b> Thoucentric </b> <a href=\"https://www.linkedin.com/in/owaiskhan9654/\">Visit Profile</a> <br></center>"
|
@@ -199,7 +169,7 @@ Footer = (
|
|
199 |
|
200 |
examples1=[["Image1.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image2.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image3.jpeg", "Yolo_v7_Custom_trained_By_Owais",],["Image4.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image5.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image6.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["horses.jpeg", "yolov7"],["horses.jpeg", "yolov7-e6"]]
|
201 |
|
202 |
-
Top_Title="<center>
|
203 |
|
204 |
css = ".output-image, .input-image, .image-preview {height: 300px !important}"
|
205 |
-
gr.Interface(detect_Custom,gr.Image(type="pil"),[gr.Image(type="pil"),
|
|
|
4 |
import torch
|
5 |
import argparse
|
6 |
import gradio as gr
|
|
|
7 |
from PIL import Image
|
8 |
from numpy import random
|
9 |
from pathlib import Path
|
10 |
import torch.backends.cudnn as cudnn
|
11 |
from models.experimental import attempt_load
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
from utils.datasets import LoadStreams, LoadImages
|
14 |
from utils.general import check_img_size, check_requirements, check_imshow, non_max_suppression, apply_classifier, \
|
|
|
17 |
from utils.torch_utils import select_device, load_classifier, time_synchronized, TracedModel
|
18 |
os.system("wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt")
|
19 |
os.system("wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6.pt")
|
|
|
20 |
|
21 |
+
def detect_Custom(img,model):
|
22 |
+
if model =='Yolo_v7_Custom_trained_By_Owais':
|
23 |
+
model='best' # Naming Convention for yolov7 See output file of https://www.kaggle.com/code/owaiskhan9654/training-yolov7-on-kaggle-on-custom-dataset/data
|
24 |
parser = argparse.ArgumentParser()
|
25 |
parser.add_argument('--weights', nargs='+', type=str, default=model+".pt", help='model.pt path(s)')
|
26 |
parser.add_argument('--source', type=str, default='Inference/', help='source')
|
27 |
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
|
28 |
+
parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')
|
29 |
parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
|
30 |
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
|
31 |
parser.add_argument('--view-img', action='store_true', help='display results')
|
|
|
93 |
|
94 |
if classify:
|
95 |
pred = apply_classifier(pred, modelc, img, im0s)
|
96 |
+
|
97 |
for i, det in enumerate(pred):
|
98 |
if webcam:
|
99 |
p, s, im0, frame = path[i], '%g: ' % i, im0s[i].copy(), dataset.count
|
|
|
124 |
if save_img or view_img:
|
125 |
label = f'{names[int(cls)]} {conf:.2f}'
|
126 |
plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
if view_img:
|
128 |
cv2.imshow(str(p), im0)
|
129 |
cv2.waitKey(1)
|
|
|
146 |
vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
147 |
vid_writer.write(im0)
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
if save_txt or save_img:
|
150 |
s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else ''
|
151 |
|
152 |
print(f'Done. ({time.time() - t0:.3f}s)')
|
153 |
|
154 |
+
return Image.fromarray(im0[:,:,::-1])
|
155 |
|
156 |
|
157 |
+
|
158 |
+
Custom_description="<center>Custom Training Performed on Kaggle <a href='https://www.kaggle.com/code/owaiskhan9654/training-yolov7-on-kaggle-on-custom-dataset/notebook' style='text-decoration: underline' target='_blank'>Link</a> </center><br> <center>Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors </center> <br> <b>1st</b> class is for Person Detected<br><b>2nd</b> class is for Car Detected"
|
159 |
|
160 |
Footer = (
|
161 |
"<center>Model Trained by: Owais Ahmad Data Scientist at <b> Thoucentric </b> <a href=\"https://www.linkedin.com/in/owaiskhan9654/\">Visit Profile</a> <br></center>"
|
|
|
169 |
|
170 |
examples1=[["Image1.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image2.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image3.jpeg", "Yolo_v7_Custom_trained_By_Owais",],["Image4.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image5.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["Image6.jpeg", "Yolo_v7_Custom_trained_By_Owais"],["horses.jpeg", "yolov7"],["horses.jpeg", "yolov7-e6"]]
|
171 |
|
172 |
+
Top_Title="<center>Yolov7 🚀 Custom Trained by <a href='https://www.linkedin.com/in/owaiskhan9654/' style='text-decoration: underline' target='_blank'>Owais Ahmad </center></a>🚗Car and 👦Person Detection Class"
|
173 |
|
174 |
css = ".output-image, .input-image, .image-preview {height: 300px !important}"
|
175 |
+
gr.Interface(detect_Custom,[gr.Image(type="pil"),gr.Dropdown(default="Yolo_v7_Custom_trained_By_Owais",choices=["Yolo_v7_Custom_trained_By_Owais","yolov7","yolov7-e6"])],gr.Image(type="pil"),css=css,title=Top_Title,examples=examples1,description=Custom_description,article=Footer,cache_examples=False).launch()
|