What is the UML Class diagram for accident detection using CNN. i have make the class diagram which is not sufficient to my guide. Class diagram: . SYSTEM ARCHITECTURE: Code for the accident detection:- from tkinter import messagebox from tkinter import * from tkinter import simpledialog import tkinter from tkinter import filedialog from tkinter.filedialog import askopenfilename import time import cv2 import tensorflow as tf from collections import namedtuple import numpy as np import winsound main = tkinter.Tk() main.title("Accident Detection") main.geometry("1300x1200") net = cv2.dnn.readNetFromCaffe("model/MobileNetSSD_deploy.prototxt.txt","model/MobileNetSSD_deploy.caffemodel") CLASSES = ["background", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"] COLORS = np.random.uniform(0, 255, size=(len(CLASSES), 3)) global filename global detectionGraph global msg def loadModel(): global detectionGraph detectionGraph = tf.Graph() with detectionGraph.as_default(): od_graphDef = tf.compat.v1.GraphDef() with tf.compat.v2.io.gfile.GFile('model/frozen_inference_graph.pb', 'rb') as file: serializedGraph = file.read() od_graphDef.ParseFromString(serializedGraph) tf.import_graph_def(od_graphDef, name='') messagebox.showinfo("Training model loaded","Training model loaded") def beep(): frequency = 2500 # Set Frequency To 2500 Hertz duration = 1000 # Set Duration To 1000 ms == 1 second winsound.Beep(frequency, duration) def uploadVideo(): global filename filename = filedialog.askopenfilename(initialdir="videos") pathlabel.config(text=filename) text.delete('1.0', END) text.insert(END,filename+" loaded\n"); def calculateCollision(boxes,classes,scores,image_np): global msg #cv2.putText(image_np, "NORMAL!", (230, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 255, 255), 2, cv2.LINE_AA) for i, b in enumerate(boxes[0]): if classes[0][i] == 3 or classes[0][i] == 6 or classes[0][i] == 8: if scores[0][i] > 0.5: for j, c in enumerate(boxes[0]): if (i != j) and (classes[0][j] == 3 or classes[0][j] == 6 or classes[0][j] == 8) and scores[0][j]> 0.5: Rectangle = namedtuple('Rectangle', 'xmin ymin xmax ymax') ra = Rectangle(boxes[0][i][3], boxes[0][i][2], boxes[0][i][1], boxes[0][i][3]) rb = Rectangle(boxes[0][j][3], boxes[0][j][2], boxes[0][j][1], boxes[0][j][3]) ar = rectArea(boxes[0][i][3], boxes[0][i][1],boxes[0][i][2],boxes[0][i][3]) col_threshold = 0.6*np.sqrt(ar) area(ra, rb) if (area(ra,rb)<col_threshold) : print('accident') msg = 'ACCIDENT!' beep() return True else: return False def rectArea(xmax, ymax, xmin, ymin): x = np.abs(xmax-xmin) y = np.abs(ymax-ymin) return x*y def load_image_into_numpy_array(image): (im_width, im_height) = image.size return np.array(image.getdata()).reshape((im_height, im_width, 3)).astype(np.uint8) def area(a, b): # returns None if rectangles don't intersect dx = min(a.xmax, b.xmax) - max(a.xmin, .