|
import gradio as gr |
|
import model1 as m1 |
|
import model2 as m2 |
|
|
|
cars = [] |
|
lps = [] |
|
lp_texts = [] |
|
counter = 0 |
|
|
|
|
|
def model1(image): |
|
global cars, lps, lp_texts, counter |
|
(cars, lps, lp_texts) = m1.run([image]) |
|
counter = 0 |
|
return cars[0], lps[0], lp_texts[0] |
|
|
|
|
|
def model2(image): |
|
global lps, lp_texts, counter |
|
(lps, lp_texts) = m2.run([image]) |
|
counter = 0 |
|
return lps[0], lp_texts[0] |
|
|
|
|
|
def model3(image): |
|
global cars, lps, lp_texts, counter |
|
(cars, lps, lp_texts) = m3.run([image]) |
|
counter = 0 |
|
return cars[0], lps[0], lp_texts[0] |
|
|
|
|
|
def next_img(): |
|
global counter |
|
counter += 1 |
|
index = int(counter % len(cars)) |
|
return cars[index], lps[index], lp_texts[index] |
|
|
|
|
|
def prev_img(): |
|
global counter |
|
counter -= 1 |
|
index = int(counter % len(cars)) |
|
return cars[index], lps[index], lp_texts[index] |
|
|
|
|
|
|
|
def next_img_lp(): |
|
global counter |
|
counter += 1 |
|
index = int(counter % len(lps)) |
|
return lps[index], lp_texts[index] |
|
|
|
|
|
def prev_img_lp(): |
|
global counter |
|
counter -= 1 |
|
index = int(counter % len(lps)) |
|
return lps[index], lp_texts[index] |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## ANPR Project") |
|
with gr.Tab("Model 1"): |
|
gr.Markdown("Using 3 different ML models") |
|
gr.Markdown("YOLOv8n for car dection + YOLOv8n for LP detection + easy ocr for text detection") |
|
img = gr.Image(label="Input") |
|
submit = gr.Button(value="submit") |
|
|
|
with gr.Row(): |
|
car = gr.Image(label="Car") |
|
lp = gr.Image(label="Licence Plate") |
|
lp_text = gr.Text(label="Plate Number") |
|
|
|
with gr.Row(): |
|
next = gr.Button(value="next") |
|
prev = gr.Button(value="prev") |
|
|
|
submit.click(model1, inputs=[img], outputs=[car, lp, lp_text]) |
|
next.click(next_img, outputs=[car, lp, lp_text]) |
|
prev.click(prev_img, outputs=[car, lp, lp_text]) |
|
|
|
with gr.Tab("Model 2"): |
|
gr.Markdown("Using 2 different ML models") |
|
gr.Markdown("YOLOv8m for car dection + easy ocr for text detection") |
|
gr.Markdown("YOLOv8m for car dection is trained on a large dataset of 25K training images") |
|
img2 = gr.Image(label="Input") |
|
submit2 = gr.Button(value="submit") |
|
|
|
with gr.Row(): |
|
lp2 = gr.Image(label="Licence Plate") |
|
lp_text2 = gr.Text(label="Plate Number") |
|
|
|
with gr.Row(): |
|
next2 = gr.Button(value="next") |
|
prev2 = gr.Button(value="prev") |
|
|
|
submit2.click(model2, inputs=[img2], outputs=[lp2, lp_text2]) |
|
next2.click(next_img_lp, outputs=[lp2, lp_text2]) |
|
prev2.click(prev_img_lp, outputs=[lp2, lp_text2]) |
|
|
|
demo.launch(share=False) |