Spaces:
Sleeping
Sleeping
File size: 4,173 Bytes
e9b6d8d 32519f3 e9b6d8d bb3539d 4d3e7d5 bb3539d e9b6d8d 32519f3 bb3539d e9b6d8d bb3539d e9b6d8d bb3539d e9b6d8d bb3539d e9b6d8d bb3539d e9b6d8d bb3539d 32519f3 bb3539d e9b6d8d bb3539d e9b6d8d |
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 |
import gradio as gr
# import torch
from ultralyticsplus import YOLO, render_result
import cv2
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import smtplib
sender_email = "[email protected]"
receiver_email = "[email protected]"
sender_password = "pahifrmjjjwahdnr"
smtp_port = 587
smtp_server = "smtp.gmail.com"
subject = "Accident detected"
classes: ['car', 'bike', 'person', 'car_car_accident', 'car_bike_accident', 'car_person_accident', 'bike_bike_accidnet', 'bike_person_accident', 'car_object_accident', 'bike_object_accident']
def send_email(accident_type):
body = accident_type
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
filename = "res.png"
folder = "./result/"
fullFileName = folder + filename
attachment = open(fullFileName, 'rb')
attachment_package = MIMEBase('application', 'octet-stream')
attachment_package.set_payload((attachment).read())
encoders.encode_base64(attachment_package)
attachment_package.add_header('Content-Disposition', "attachment; filename= " + filename)
msg.attach(attachment_package)
text = msg.as_string()
print("Connecting to server")
gmail_server = smtplib.SMTP(smtp_server, smtp_port)
gmail_server.starttls()
gmail_server.login(sender_email, sender_password)
print("Successfully connected to server")
print()
print("Sending email to ", receiver_email)
gmail_server.sendmail(sender_email, receiver_email, text)
print("Email sent to ", receiver_email)
print()
gmail_server.quit()
def check_acc(box):
# return format(box.cls)
res_index_list = box.cls.tolist()
result = ""
for index in res_index_list:
if index ==3:
result = "car car accident detected"
elif index==4:
result = "car bike accident detected"
elif index==5:
result = "car person accident detected"
elif index==6:
result = "bike bike accident detected"
elif index==7:
result = "bike person accident detected"
elif index ==8:
result = "car object accident detected"
elif index == 9:
result = "bike object accident detected"
return result
def image_predict(image):
model_path = "best.pt"
model = YOLO(model_path)
results = model.predict(image,
conf = 0.4,
iou = 0.6,
imgsz = 640)
box = results[0].boxes
res = check_acc(box)
print("object Type: ", res)
render = render_result(model=model, image=image, result=results[0])
# if res == "car car accident detected":
# cv2.imwrite("./result/res.png", render)
# print(render)
if res == "car car accident detected":
render.save("./result/res.png")
send_email(res)
return (res, render)
def extract_frames(video):
vidcap = cv2.VideoCapture(video)
while vidcap.isOpened():
success, image = vidcap.read()
if success ==False:
break
res, render = image_predict(image)
if res == "car car accident detected":
return (res, render)
return ("", None)
def take_input(image, video):
if(video != None):
res = extract_frames(video)
else:
res = image_predict(image)
return res
with gr.Blocks(title="YOLOS Object Detection - ClassCat", css=".gradio-container {background:lightyellow;}") as demo:
gr.HTML('<h1>Yolo Object Detection</h1>')
gr.HTML("<br>")
with gr.Row():
input_image = gr.Image(label="Input image")
input_video = gr.Video(label="Input video")
output_label = gr.Text(label="output label")
output_image = gr.Image(label="Output image")
gr.HTML("<br>")
send_btn = gr.Button("Detect")
gr.HTML("<br>")
send_btn.click(fn=take_input, inputs=[input_image, input_video], outputs=[output_label, output_image])
demo.launch(debug=True)
|