Spaces:
Sleeping
Sleeping
File size: 5,548 Bytes
e9b6d8d 32519f3 e9b6d8d bb3539d f50f47c 85352dd bb3539d bceb4a7 0db357b bb3539d e9b6d8d 32519f3 bb3539d f50f47c 2adcde0 f50f47c bceb4a7 2adcde0 1f3ab5a bceb4a7 70e3686 bceb4a7 70e3686 bceb4a7 bb3539d f50f47c bb3539d f50f47c bb3539d f50f47c bb3539d f50f47c bb3539d f50f47c bb3539d f50f47c bb3539d f50f47c e9b6d8d bb3539d e9b6d8d bb3539d e9b6d8d bb3539d f50f47c bb3539d c23f366 bb3539d c23f366 bb3539d c23f366 e9b6d8d c23f366 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 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
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
import os
from twilio.rest import Client
sender_email = os.environ.get("sender_email")
receiver_email = os.environ.get("receiver_email")
sender_password = os.environ.get("sender_password")
smtp_port = 2525
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 send_sms(accident_type):
# print(os.environ.get("account_sid"))
# print(os.environ.get("auth_token"))
# print(os.environ.get("my_twilio_number"))
# print(os.environ.get("receiver_number"))
# print(os.environ.get("sender_email"))
# print(os.environ.get("receiver_email"))
# print(os.environ.get("sender_password"))
account_sid = os.environ.get("account_sid")
auth_token = os.environ.get("auth_token")
my_twilio_number = os.environ.get("my_twilio_number")
receiver_number = os.environ.get("receiver_number")
# print(account_sid)
# print(auth_token)
# print(my_twilio_number)
# print(receiver_number)
# client = Client(account_sid, auth_token)
# message = client.messages.create(body=accident_type,
# from_=my_twilio_number,
# to=receiver_number)
print(accident_type)
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"
break
elif index==4:
result = "car bike accident detected"
break
elif index==5:
result = "car person accident detected"
break
elif index==6:
result = "bike bike accident detected"
break
elif index==7:
result = "bike person accident detected"
break
elif index ==8:
result = "car object accident detected"
break
elif index == 9:
result = "bike object accident detected"
break
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)
# send_sms
if len(res) >0:
# render.save("./result/res.png")
send_sms(res)
return (res, render)
def extract_frames(video):
vidcap = cv2.VideoCapture(video)
vidcap = cv2.VideoCapture(video)
fps = vidcap.get(cv2.CAP_PROP_FPS)
nof = 5
frame_no = 0
while vidcap.isOpened():
res = ""
render = None
success, image = vidcap.read()
if success ==False:
break
if (frame_no*nof)%fps==0:
res, render = image_predict(image)
if len(res) >0:
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)
|