From 58da014970e59b235627627c801e6d461f3054d4 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sat, 6 May 2023 12:51:54 +0300 Subject: [PATCH 1/9] minimal ONNX support --- ml_api/.gitignore | 1 + ml_api/lib/detection_model.py | 155 +++++++++++++++++++++++++++++++++- 2 files changed, 152 insertions(+), 4 deletions(-) diff --git a/ml_api/.gitignore b/ml_api/.gitignore index ac23329fa..76d4d767e 100644 --- a/ml_api/.gitignore +++ b/ml_api/.gitignore @@ -1 +1,2 @@ model/model.weights +model/*.onnx diff --git a/ml_api/lib/detection_model.py b/ml_api/lib/detection_model.py index 7a8a99cd2..631f3bfb7 100644 --- a/ml_api/lib/detection_model.py +++ b/ml_api/lib/detection_model.py @@ -8,7 +8,16 @@ import sys import cv2 import platform +import time +import argparse +# optional import for onnx +try: + import onnxruntime + import numpy as np + have_onnx = True +except: + have_onnx = False def sample(probs): s = sum(probs) @@ -164,6 +173,8 @@ def classify(net, meta, im): def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): + if have_onnx and isinstance(net, onnxruntime.InferenceSession): + return detect_onnx(net, meta, image, thresh, nms) #pylint: disable= C0321 custom_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) im, arr = array_to_image(custom_image) # you should comment line below: free_image(im) @@ -221,12 +232,130 @@ def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): print("freed detections") return res +def nms_cpu(boxes, confs, nms_thresh=0.5, min_mode=False): + # print(boxes.shape) + x1 = boxes[:, 0] + y1 = boxes[:, 1] + x2 = boxes[:, 2] + y2 = boxes[:, 3] + + areas = (x2 - x1) * (y2 - y1) + order = confs.argsort()[::-1] + + keep = [] + while order.size > 0: + idx_self = order[0] + idx_other = order[1:] + + keep.append(idx_self) + + xx1 = np.maximum(x1[idx_self], x1[idx_other]) + yy1 = np.maximum(y1[idx_self], y1[idx_other]) + xx2 = np.minimum(x2[idx_self], x2[idx_other]) + yy2 = np.minimum(y2[idx_self], y2[idx_other]) + + w = np.maximum(0.0, xx2 - xx1) + h = np.maximum(0.0, yy2 - yy1) + inter = w * h + + if min_mode: + over = inter / np.minimum(areas[order[0]], areas[order[1:]]) + else: + over = inter / (areas[order[0]] + areas[order[1:]] - inter) + + inds = np.where(over <= nms_thresh)[0] + order = order[inds + 1] + + return np.array(keep) + +def post_processing(output, width, height, conf_thresh, nms_thresh, names): + box_array = output[0] + confs = output[1] + + if type(box_array).__name__ != 'ndarray': + box_array = box_array.cpu().detach().numpy() + confs = confs.cpu().detach().numpy() + + num_classes = confs.shape[2] + + # [batch, num, 4] + box_array = box_array[:, :, 0] + + # [batch, num, num_classes] --> [batch, num] + max_conf = np.max(confs, axis=2) + max_id = np.argmax(confs, axis=2) + + box_x1x1x2y2_to_xcycwh_scaled = lambda b: \ + ( + 0.5 * width * (b[0] + b[2]), + 0.5 * height * (b[1] + b[3]), + width * (b[2] - b[0]), + width * (b[3] - b[1]) + ) + dets_batch = [] + for i in range(box_array.shape[0]): + + argwhere = max_conf[i] > conf_thresh + l_box_array = box_array[i, argwhere, :] + l_max_conf = max_conf[i, argwhere] + l_max_id = max_id[i, argwhere] + + bboxes = [] + # nms for each class + for j in range(num_classes): + + cls_argwhere = l_max_id == j + ll_box_array = l_box_array[cls_argwhere, :] + ll_max_conf = l_max_conf[cls_argwhere] + ll_max_id = l_max_id[cls_argwhere] + + keep = nms_cpu(ll_box_array, ll_max_conf, nms_thresh) + + if (keep.size > 0): + ll_box_array = ll_box_array[keep, :] + ll_max_conf = ll_max_conf[keep] + ll_max_id = ll_max_id[keep] + + for k in range(ll_box_array.shape[0]): + bboxes.append([ll_box_array[k, 0], ll_box_array[k, 1], ll_box_array[k, 2], ll_box_array[k, 3], ll_max_conf[k], ll_max_conf[k], ll_max_id[k]]) + + detections = [(names[b[6]], b[4], box_x1x1x2y2_to_xcycwh_scaled((b[0], b[1], b[2], b[3]))) for b in bboxes] + dets_batch.append(detections) + + + return dets_batch + + +def detect_onnx(session, meta, image, thresh, nms_thresh): + input_h = session.get_inputs()[0].shape[2] + input_w = session.get_inputs()[0].shape[3] + width = image.shape[1] + height = image.shape[0] + + # Input + resized = cv2.resize(image, (input_w, input_h), interpolation=cv2.INTER_LINEAR) + img_in = cv2.cvtColor(resized, cv2.COLOR_BGR2RGB) + img_in = np.transpose(img_in, (2, 0, 1)).astype(np.float32) + img_in = np.expand_dims(img_in, axis=0) + img_in /= 255.0 + + input_name = session.get_inputs()[0].name + outputs = session.run(None, {input_name: img_in}) + + detections = post_processing(outputs, width, height, thresh, nms_thresh, alt_names or meta.names) + return detections + net_main = None meta_main = None alt_names = None +def load_net_onnx(onnx_path: str): + session = onnxruntime.InferenceSession(onnx_path) + return session + + def load_net(config_path, weight_path, meta_path): global meta_main, net_main, alt_names # pylint: disable=W0603 if not os.path.exists(config_path): @@ -236,7 +365,10 @@ def load_net(config_path, weight_path, meta_path): if not os.path.exists(meta_path): raise ValueError("Invalid data file path `"+os.path.abspath(meta_path)+"`") if net_main is None: - net_main = load_net_custom(config_path.encode("ascii"), weight_path.encode("ascii"), 0, 1) # batch size = 1 + if have_onnx and weight_path.endswith(".onnx"): + net_main = load_net_onnx(weight_path) + else: + net_main = load_net_custom(config_path.encode("ascii"), weight_path.encode("ascii"), 0, 1) # batch size = 1 if meta_main is None: meta_main = load_meta(meta_path.encode("ascii")) if alt_names is None: @@ -265,8 +397,23 @@ def load_net(config_path, weight_path, meta_path): if __name__ == "__main__": - net_main_1, meta_main_1 = load_net("model/model.cfg", "model/model.weights", "model/model.meta") + parser = argparse.ArgumentParser() + parser.add_argument("image", type=str, help="Image file path") + parser.add_argument("--weights", type=str, default="model/model.weights", help="Model weights file") + parser.add_argument("--det-threshold", type=float, default=0.25, help="Detection threshold") + parser.add_argument("--nms-threshold", type=float, default=0.4, help="NMS threshold") + opt = parser.parse_args() + + net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") import cv2 - custom_image_bgr = cv2.imread(sys.argv[1]) # use: detect(,,imagePath,) - print(detect(net_main_1, meta_main_1, custom_image_bgr, thresh=0.25)) + custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) + # preheat + + started_at = time.time() + detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) + finished_at = time.time() + execution_time = finished_at - started_at + print(f"Execution time: {execution_time:.3} sec") + + print(detections) From 3858b1a50c0873f0e37e47c81bee0d406693f528 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sat, 6 May 2023 13:51:57 +0300 Subject: [PATCH 2/9] added --preheat ant --cpu flags for detection_model.py --- ml_api/lib/detection_model.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ml_api/lib/detection_model.py b/ml_api/lib/detection_model.py index 631f3bfb7..88f8da611 100644 --- a/ml_api/lib/detection_model.py +++ b/ml_api/lib/detection_model.py @@ -402,13 +402,23 @@ def load_net(config_path, weight_path, meta_path): parser.add_argument("--weights", type=str, default="model/model.weights", help="Model weights file") parser.add_argument("--det-threshold", type=float, default=0.25, help="Detection threshold") parser.add_argument("--nms-threshold", type=float, default=0.4, help="NMS threshold") + parser.add_argument("--preheat", action='store_true', help="Make a dry run of NN for initlalization") + parser.add_argument("--cpu", action='store_true', help="Force use CPU") opt = parser.parse_args() net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") + # force use CPU, only implemented for ONNX + if opt.cpu and have_onnx and isinstance(net_main_1, onnxruntime.InferenceSession): + net_main_1.set_providers(['CPUExecutionProvider']) + import cv2 custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) - # preheat + + # this will make library initialize all the required resources at the first run + # then the following runs will be much faster + if opt.preheat: + detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) started_at = time.time() detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) From f04b3ed01d360ab75564dd528cd40be0bf166aa8 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:09:40 +0300 Subject: [PATCH 3/9] Ml backed modules and tests --- ml_api/lib/backend_darknet.py | 239 ++++++++++++++++++ ml_api/lib/backend_onnx.py | 135 +++++++++++ ml_api/lib/detection_model.py | 432 +++++---------------------------- ml_api/lib/geometry.py | 111 +++++++++ ml_api/lib/meta.py | 27 +++ ml_api/test_data/1.jpg | Bin 0 -> 269746 bytes ml_api/test_data/1.json | 1 + ml_api/tests/__init__.py | 10 + ml_api/tests/test_detection.py | 45 ++++ ml_api/tests/test_geometry.py | 15 ++ 10 files changed, 644 insertions(+), 371 deletions(-) create mode 100644 ml_api/lib/backend_darknet.py create mode 100644 ml_api/lib/backend_onnx.py create mode 100644 ml_api/lib/geometry.py create mode 100644 ml_api/lib/meta.py create mode 100644 ml_api/test_data/1.jpg create mode 100644 ml_api/test_data/1.json create mode 100644 ml_api/tests/__init__.py create mode 100644 ml_api/tests/test_detection.py create mode 100644 ml_api/tests/test_geometry.py diff --git a/ml_api/lib/backend_darknet.py b/ml_api/lib/backend_darknet.py new file mode 100644 index 000000000..3652489e3 --- /dev/null +++ b/ml_api/lib/backend_darknet.py @@ -0,0 +1,239 @@ +# pylint: disable=R, W0401, W0614, W0703 +from ctypes import * +import random +import os +import cv2 +import platform +from typing import List, Tuple + + +# C-structures from Darknet lib + +class BOX(Structure): + _fields_ = [("x", c_float), + ("y", c_float), + ("w", c_float), + ("h", c_float)] + + +class DETECTION(Structure): + _fields_ = [("bbox", BOX), + ("classes", c_int), + ("prob", POINTER(c_float)), + ("mask", POINTER(c_float)), + ("objectness", c_float), + ("sort_class", c_int)] + + +class IMAGE(Structure): + _fields_ = [("w", c_int), + ("h", c_int), + ("c", c_int), + ("data", POINTER(c_float))] + + +class METADATA(Structure): + _fields_ = [("classes", c_int), + ("names", POINTER(c_char_p))] + +class YoloNet: + """Darknet-based detector implementation""" + net: c_void_p + meta: METADATA + + def __init__(self, config_path: str, weight_path: str, meta_path: str): + if not os.path.exists(config_path): + raise ValueError("Invalid config path `"+os.path.abspath(config_path)+"`") + if not os.path.exists(weight_path): + raise ValueError("Invalid weight path `"+os.path.abspath(weight_path)+"`") + if not os.path.exists(meta_path): + raise ValueError("Invalid data file path `"+os.path.abspath(meta_path)+"`") + self.net = load_net_custom(config_path.encode("ascii"), weight_path.encode("ascii"), 0, 1) # batch size = 1 + self.meta = load_meta(meta_path.encode("ascii")) + + def detect(self, meta, image, alt_names, thresh=.5, hier_thresh=.5, nms=.45, debug=False) -> List[Tuple[str, float, Tuple[float, float, float, float]]]: + #pylint: disable= C0321 + custom_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + im, arr = array_to_image(custom_image) # you should comment line below: free_image(im) + if debug: + print("Loaded image") + num = c_int(0) + if debug: + print("Assigned num") + pnum = pointer(num) + if debug: + print("Assigned pnum") + predict_image(self.net, im) + if debug: + print("did prediction") + dets = get_network_boxes(self.net, custom_image.shape[1], custom_image.shape[0], thresh, hier_thresh, None, 0, pnum, 0) # OpenCV + if debug: + print("Got dets") + num = pnum[0] + if debug: + print("got zeroth index of pnum") + if nms: + do_nms_sort(dets, num, meta.classes, nms) + if debug: + print("did sort") + res = [] + if debug: + print("about to range") + for j in range(num): + if debug: + print("Ranging on "+str(j)+" of "+str(num)) + if debug: + print("Classes: "+str(meta), meta.classes, meta.names) + for i in range(meta.classes): + if debug: + print("Class-ranging on "+str(i)+" of "+str(meta.classes)+"= "+str(dets[j].prob[i])) + if dets[j].prob[i] > 0: + b = dets[j].bbox + if alt_names is None: + nameTag = meta.names[i] + else: + nameTag = alt_names[i] + if debug: + print("Got bbox", b) + print(nameTag) + print(dets[j].prob[i]) + print((b.x, b.y, b.w, b.h)) + res.append((nameTag, dets[j].prob[i], (b.x, b.y, b.w, b.h))) + if debug: + print("did range") + res = sorted(res, key=lambda x: -x[1]) + if debug: + print("did sort") + free_detections(dets, num) + if debug: + print("freed detections") + return res + +DIRNAME = os.path.abspath( + os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "bin") +) +# Loads darknet shared library. May fail if some dependencies like OpenCV not installed + +hasGPU = os.environ.get('HAS_GPU', 'False') == 'True' +so_path = os.path.join(DIRNAME, "model_{}{}.so".format('gpu_' if hasGPU else '', platform.machine())) + +lib = CDLL(so_path, RTLD_GLOBAL) +lib.network_width.argtypes = [c_void_p] +lib.network_width.restype = c_int +lib.network_height.argtypes = [c_void_p] +lib.network_height.restype = c_int + +predict = lib.network_predict +predict.argtypes = [c_void_p, POINTER(c_float)] +predict.restype = POINTER(c_float) + +if hasGPU: + set_gpu = lib.cuda_set_device + set_gpu.argtypes = [c_int] + +make_image = lib.make_image +make_image.argtypes = [c_int, c_int, c_int] +make_image.restype = IMAGE + +get_network_boxes = lib.get_network_boxes +get_network_boxes.argtypes = [c_void_p, c_int, c_int, c_float, c_float, POINTER(c_int), c_int, POINTER(c_int), c_int] +get_network_boxes.restype = POINTER(DETECTION) + +make_network_boxes = lib.make_network_boxes +make_network_boxes.argtypes = [c_void_p] +make_network_boxes.restype = POINTER(DETECTION) + +free_detections = lib.free_detections +free_detections.argtypes = [POINTER(DETECTION), c_int] + +free_ptrs = lib.free_ptrs +free_ptrs.argtypes = [POINTER(c_void_p), c_int] + +network_predict = lib.network_predict +network_predict.argtypes = [c_void_p, POINTER(c_float)] + +reset_rnn = lib.reset_rnn +reset_rnn.argtypes = [c_void_p] + +load_net = lib.load_network +load_net.argtypes = [c_char_p, c_char_p, c_int] +load_net.restype = c_void_p + +load_net_custom = lib.load_network_custom +load_net_custom.argtypes = [c_char_p, c_char_p, c_int, c_int] +load_net_custom.restype = c_void_p + +do_nms_obj = lib.do_nms_obj +do_nms_obj.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] + +do_nms_sort = lib.do_nms_sort +do_nms_sort.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] + +free_image = lib.free_image +free_image.argtypes = [IMAGE] + +letterbox_image = lib.letterbox_image +letterbox_image.argtypes = [IMAGE, c_int, c_int] +letterbox_image.restype = IMAGE + +load_meta = lib.get_metadata +lib.get_metadata.argtypes = [c_char_p] +lib.get_metadata.restype = METADATA + +load_image = lib.load_image_color +load_image.argtypes = [c_char_p, c_int, c_int] +load_image.restype = IMAGE + +rgbgr_image = lib.rgbgr_image +rgbgr_image.argtypes = [IMAGE] + +predict_image = lib.network_predict_image +predict_image.argtypes = [c_void_p, IMAGE] +predict_image.restype = POINTER(c_float) + +def sample(probs): + s = sum(probs) + probs = [a/s for a in probs] + r = random.uniform(0, 1) + for i in range(len(probs)): + r = r - probs[i] + if r <= 0: + return i + return len(probs)-1 + + +def c_array(ctype, values): + arr = (ctype*len(values))() + arr[:] = values + return arr + +def array_to_image(arr): + import numpy as np + # need to return old values to avoid python freeing memory + arr = arr.transpose(2, 0, 1) + c = arr.shape[0] + h = arr.shape[1] + w = arr.shape[2] + arr = np.ascontiguousarray(arr.flat, dtype=np.float32) / 255.0 + data = arr.ctypes.data_as(POINTER(c_float)) + im = IMAGE(w, h, c, data) + return im, arr + + +def classify(net, meta, im): + global alt_names + + out = predict_image(net, im) + res = [] + for i in range(meta.classes): + if alt_names is None: + nameTag = meta.names[i] + else: + nameTag = alt_names[i] + res.append((nameTag, out[i])) + res = sorted(res, key=lambda x: -x[1]) + return res + + + + diff --git a/ml_api/lib/backend_onnx.py b/ml_api/lib/backend_onnx.py new file mode 100644 index 000000000..66f322cc0 --- /dev/null +++ b/ml_api/lib/backend_onnx.py @@ -0,0 +1,135 @@ +from typing import List, Tuple +import onnxruntime +import numpy as np +import cv2 +import os + +from lib.meta import load_meta, Meta + + +class OnnxNet: + session: onnxruntime.InferenceSession + meta: Meta + + def __init__(self, onnx_path: str, meta_path: str): + if not os.path.exists(onnx_path): + raise ValueError("Invalid weight path `"+os.path.abspath(onnx_path)+"`") + if not os.path.exists(meta_path): + raise ValueError("Invalid data file path `"+os.path.abspath(meta_path)+"`") + self.session = onnxruntime.InferenceSession(onnx_path) + self.meta = load_meta(meta_path) + + def detect(self, meta, image, alt_names, thresh=.5, hier_thresh=.5, nms=.45, debug=False) -> List[Tuple[str, float, Tuple[float, float, float, float]]]: + input_h = self.session.get_inputs()[0].shape[2] + input_w = self.session.get_inputs()[0].shape[3] + width = image.shape[1] + height = image.shape[0] + + # Input + resized = cv2.resize(image, (input_w, input_h), interpolation=cv2.INTER_LINEAR) + img_in = cv2.cvtColor(resized, cv2.COLOR_BGR2RGB) + img_in = np.transpose(img_in, (2, 0, 1)).astype(np.float32) + img_in = np.expand_dims(img_in, axis=0) + img_in /= 255.0 + + input_name = self.session.get_inputs()[0].name + outputs = self.session.run(None, {input_name: img_in}) + + detections = post_processing(outputs, width, height, thresh, nms, meta.names) + return detections[0] + +def nms_cpu(boxes, confs, nms_thresh=0.5, min_mode=False): + # print(boxes.shape) + x1 = boxes[:, 0] + y1 = boxes[:, 1] + x2 = boxes[:, 2] + y2 = boxes[:, 3] + + areas = (x2 - x1) * (y2 - y1) + order = confs.argsort()[::-1] + + keep = [] + while order.size > 0: + idx_self = order[0] + idx_other = order[1:] + + keep.append(idx_self) + + xx1 = np.maximum(x1[idx_self], x1[idx_other]) + yy1 = np.maximum(y1[idx_self], y1[idx_other]) + xx2 = np.minimum(x2[idx_self], x2[idx_other]) + yy2 = np.minimum(y2[idx_self], y2[idx_other]) + + w = np.maximum(0.0, xx2 - xx1) + h = np.maximum(0.0, yy2 - yy1) + inter = w * h + + if min_mode: + over = inter / np.minimum(areas[order[0]], areas[order[1:]]) + else: + over = inter / (areas[order[0]] + areas[order[1:]] - inter) + + inds = np.where(over <= nms_thresh)[0] + order = order[inds + 1] + + return np.array(keep) + +def post_processing(output, width, height, conf_thresh, nms_thresh, names): + box_array = output[0] + confs = output[1] + + if type(box_array).__name__ != 'ndarray': + box_array = box_array.cpu().detach().numpy() + confs = confs.cpu().detach().numpy() + + num_classes = confs.shape[2] + + # [batch, num, 4] + box_array = box_array[:, :, 0] + + # [batch, num, num_classes] --> [batch, num] + max_conf = np.max(confs, axis=2) + max_id = np.argmax(confs, axis=2) + + box_x1x1x2y2_to_xcycwh_scaled = lambda b: \ + ( + 0.5 * width * (b[0] + b[2]), + 0.5 * height * (b[1] + b[3]), + width * (b[2] - b[0]), + width * (b[3] - b[1]) + ) + dets_batch = [] + for i in range(box_array.shape[0]): + + argwhere = max_conf[i] > conf_thresh + l_box_array = box_array[i, argwhere, :] + l_max_conf = max_conf[i, argwhere] + l_max_id = max_id[i, argwhere] + + bboxes = [] + # nms for each class + for j in range(num_classes): + + cls_argwhere = l_max_id == j + ll_box_array = l_box_array[cls_argwhere, :] + ll_max_conf = l_max_conf[cls_argwhere] + ll_max_id = l_max_id[cls_argwhere] + + keep = nms_cpu(ll_box_array, ll_max_conf, nms_thresh) + + if (keep.size > 0): + ll_box_array = ll_box_array[keep, :] + ll_max_conf = ll_max_conf[keep] + ll_max_id = ll_max_id[keep] + + for k in range(ll_box_array.shape[0]): + bboxes.append([ll_box_array[k, 0], ll_box_array[k, 1], ll_box_array[k, 2], ll_box_array[k, 3], ll_max_conf[k], ll_max_conf[k], ll_max_id[k]]) + + detections = [(names[b[6]], b[4], box_x1x1x2y2_to_xcycwh_scaled((b[0], b[1], b[2], b[3]))) for b in bboxes] + dets_batch.append(detections) + + + return dets_batch + + + diff --git a/ml_api/lib/detection_model.py b/ml_api/lib/detection_model.py index 88f8da611..f21601c1c 100644 --- a/ml_api/lib/detection_model.py +++ b/ml_api/lib/detection_model.py @@ -1,400 +1,66 @@ #!python3 # pylint: disable=R, W0401, W0614, W0703 -from ctypes import * -import math -import random -import os -import sys +from enum import Enum import cv2 -import platform import time import argparse - -# optional import for onnx -try: - import onnxruntime - import numpy as np - have_onnx = True -except: - have_onnx = False - -def sample(probs): - s = sum(probs) - probs = [a/s for a in probs] - r = random.uniform(0, 1) - for i in range(len(probs)): - r = r - probs[i] - if r <= 0: - return i - return len(probs)-1 - - -def c_array(ctype, values): - arr = (ctype*len(values))() - arr[:] = values - return arr - - -class BOX(Structure): - _fields_ = [("x", c_float), - ("y", c_float), - ("w", c_float), - ("h", c_float)] - - -class DETECTION(Structure): - _fields_ = [("bbox", BOX), - ("classes", c_int), - ("prob", POINTER(c_float)), - ("mask", POINTER(c_float)), - ("objectness", c_float), - ("sort_class", c_int)] - - -class IMAGE(Structure): - _fields_ = [("w", c_int), - ("h", c_int), - ("c", c_int), - ("data", POINTER(c_float))] - - -class METADATA(Structure): - _fields_ = [("classes", c_int), - ("names", POINTER(c_char_p))] - - -DIRNAME = os.path.abspath( - os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "bin") -) - -hasGPU = os.environ.get('HAS_GPU', 'False') == 'True' -so_path = os.path.join(DIRNAME, "model_{}{}.so".format('gpu_' if hasGPU else '', platform.machine())) - -lib = CDLL(so_path, RTLD_GLOBAL) -lib.network_width.argtypes = [c_void_p] -lib.network_width.restype = c_int -lib.network_height.argtypes = [c_void_p] -lib.network_height.restype = c_int - -predict = lib.network_predict -predict.argtypes = [c_void_p, POINTER(c_float)] -predict.restype = POINTER(c_float) - -if hasGPU: - set_gpu = lib.cuda_set_device - set_gpu.argtypes = [c_int] - -make_image = lib.make_image -make_image.argtypes = [c_int, c_int, c_int] -make_image.restype = IMAGE - -get_network_boxes = lib.get_network_boxes -get_network_boxes.argtypes = [c_void_p, c_int, c_int, c_float, c_float, POINTER(c_int), c_int, POINTER(c_int), c_int] -get_network_boxes.restype = POINTER(DETECTION) - -make_network_boxes = lib.make_network_boxes -make_network_boxes.argtypes = [c_void_p] -make_network_boxes.restype = POINTER(DETECTION) - -free_detections = lib.free_detections -free_detections.argtypes = [POINTER(DETECTION), c_int] - -free_ptrs = lib.free_ptrs -free_ptrs.argtypes = [POINTER(c_void_p), c_int] - -network_predict = lib.network_predict -network_predict.argtypes = [c_void_p, POINTER(c_float)] - -reset_rnn = lib.reset_rnn -reset_rnn.argtypes = [c_void_p] - -load_net = lib.load_network -load_net.argtypes = [c_char_p, c_char_p, c_int] -load_net.restype = c_void_p - -load_net_custom = lib.load_network_custom -load_net_custom.argtypes = [c_char_p, c_char_p, c_int, c_int] -load_net_custom.restype = c_void_p - -do_nms_obj = lib.do_nms_obj -do_nms_obj.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] - -do_nms_sort = lib.do_nms_sort -do_nms_sort.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] - -free_image = lib.free_image -free_image.argtypes = [IMAGE] - -letterbox_image = lib.letterbox_image -letterbox_image.argtypes = [IMAGE, c_int, c_int] -letterbox_image.restype = IMAGE - -load_meta = lib.get_metadata -lib.get_metadata.argtypes = [c_char_p] -lib.get_metadata.restype = METADATA - -load_image = lib.load_image_color -load_image.argtypes = [c_char_p, c_int, c_int] -load_image.restype = IMAGE - -rgbgr_image = lib.rgbgr_image -rgbgr_image.argtypes = [IMAGE] - -predict_image = lib.network_predict_image -predict_image.argtypes = [c_void_p, IMAGE] -predict_image.restype = POINTER(c_float) - - -def array_to_image(arr): - import numpy as np - # need to return old values to avoid python freeing memory - arr = arr.transpose(2, 0, 1) - c = arr.shape[0] - h = arr.shape[1] - w = arr.shape[2] - arr = np.ascontiguousarray(arr.flat, dtype=np.float32) / 255.0 - data = arr.ctypes.data_as(POINTER(c_float)) - im = IMAGE(w, h, c, data) - return im, arr - - -def classify(net, meta, im): - out = predict_image(net, im) - res = [] - for i in range(meta.classes): - if alt_names is None: - nameTag = meta.names[i] - else: - nameTag = alt_names[i] - res.append((nameTag, out[i])) - res = sorted(res, key=lambda x: -x[1]) - return res - - -def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): - if have_onnx and isinstance(net, onnxruntime.InferenceSession): - return detect_onnx(net, meta, image, thresh, nms) - #pylint: disable= C0321 - custom_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) - im, arr = array_to_image(custom_image) # you should comment line below: free_image(im) - if debug: - print("Loaded image") - num = c_int(0) - if debug: - print("Assigned num") - pnum = pointer(num) - if debug: - print("Assigned pnum") - predict_image(net, im) - if debug: - print("did prediction") - dets = get_network_boxes(net, custom_image.shape[1], custom_image.shape[0], thresh, hier_thresh, None, 0, pnum, 0) # OpenCV - if debug: - print("Got dets") - num = pnum[0] - if debug: - print("got zeroth index of pnum") - if nms: - do_nms_sort(dets, num, meta.classes, nms) - if debug: - print("did sort") - res = [] - if debug: - print("about to range") - for j in range(num): - if debug: - print("Ranging on "+str(j)+" of "+str(num)) - if debug: - print("Classes: "+str(meta), meta.classes, meta.names) - for i in range(meta.classes): - if debug: - print("Class-ranging on "+str(i)+" of "+str(meta.classes)+"= "+str(dets[j].prob[i])) - if dets[j].prob[i] > 0: - b = dets[j].bbox - if alt_names is None: - nameTag = meta.names[i] - else: - nameTag = alt_names[i] - if debug: - print("Got bbox", b) - print(nameTag) - print(dets[j].prob[i]) - print((b.x, b.y, b.w, b.h)) - res.append((nameTag, dets[j].prob[i], (b.x, b.y, b.w, b.h))) - if debug: - print("did range") - res = sorted(res, key=lambda x: -x[1]) - if debug: - print("did sort") - free_detections(dets, num) - if debug: - print("freed detections") - return res - -def nms_cpu(boxes, confs, nms_thresh=0.5, min_mode=False): - # print(boxes.shape) - x1 = boxes[:, 0] - y1 = boxes[:, 1] - x2 = boxes[:, 2] - y2 = boxes[:, 3] - - areas = (x2 - x1) * (y2 - y1) - order = confs.argsort()[::-1] - - keep = [] - while order.size > 0: - idx_self = order[0] - idx_other = order[1:] - - keep.append(idx_self) - - xx1 = np.maximum(x1[idx_self], x1[idx_other]) - yy1 = np.maximum(y1[idx_self], y1[idx_other]) - xx2 = np.minimum(x2[idx_self], x2[idx_other]) - yy2 = np.minimum(y2[idx_self], y2[idx_other]) - - w = np.maximum(0.0, xx2 - xx1) - h = np.maximum(0.0, yy2 - yy1) - inter = w * h - - if min_mode: - over = inter / np.minimum(areas[order[0]], areas[order[1:]]) - else: - over = inter / (areas[order[0]] + areas[order[1:]] - inter) - - inds = np.where(over <= nms_thresh)[0] - order = order[inds + 1] - - return np.array(keep) - -def post_processing(output, width, height, conf_thresh, nms_thresh, names): - box_array = output[0] - confs = output[1] - - if type(box_array).__name__ != 'ndarray': - box_array = box_array.cpu().detach().numpy() - confs = confs.cpu().detach().numpy() - - num_classes = confs.shape[2] - - # [batch, num, 4] - box_array = box_array[:, :, 0] - - # [batch, num, num_classes] --> [batch, num] - max_conf = np.max(confs, axis=2) - max_id = np.argmax(confs, axis=2) - - box_x1x1x2y2_to_xcycwh_scaled = lambda b: \ - ( - 0.5 * width * (b[0] + b[2]), - 0.5 * height * (b[1] + b[3]), - width * (b[2] - b[0]), - width * (b[3] - b[1]) - ) - dets_batch = [] - for i in range(box_array.shape[0]): - - argwhere = max_conf[i] > conf_thresh - l_box_array = box_array[i, argwhere, :] - l_max_conf = max_conf[i, argwhere] - l_max_id = max_id[i, argwhere] - - bboxes = [] - # nms for each class - for j in range(num_classes): - - cls_argwhere = l_max_id == j - ll_box_array = l_box_array[cls_argwhere, :] - ll_max_conf = l_max_conf[cls_argwhere] - ll_max_id = l_max_id[cls_argwhere] - - keep = nms_cpu(ll_box_array, ll_max_conf, nms_thresh) - - if (keep.size > 0): - ll_box_array = ll_box_array[keep, :] - ll_max_conf = ll_max_conf[keep] - ll_max_id = ll_max_id[keep] - - for k in range(ll_box_array.shape[0]): - bboxes.append([ll_box_array[k, 0], ll_box_array[k, 1], ll_box_array[k, 2], ll_box_array[k, 3], ll_max_conf[k], ll_max_conf[k], ll_max_id[k]]) - - detections = [(names[b[6]], b[4], box_x1x1x2y2_to_xcycwh_scaled((b[0], b[1], b[2], b[3]))) for b in bboxes] - dets_batch.append(detections) - - - return dets_batch - - -def detect_onnx(session, meta, image, thresh, nms_thresh): - input_h = session.get_inputs()[0].shape[2] - input_w = session.get_inputs()[0].shape[3] - width = image.shape[1] - height = image.shape[0] - - # Input - resized = cv2.resize(image, (input_w, input_h), interpolation=cv2.INTER_LINEAR) - img_in = cv2.cvtColor(resized, cv2.COLOR_BGR2RGB) - img_in = np.transpose(img_in, (2, 0, 1)).astype(np.float32) - img_in = np.expand_dims(img_in, axis=0) - img_in /= 255.0 - - input_name = session.get_inputs()[0].name - outputs = session.run(None, {input_name: img_in}) - - detections = post_processing(outputs, width, height, thresh, nms_thresh, alt_names or meta.names) - return detections +from lib.meta import Meta +#GLOBALS net_main = None meta_main = None alt_names = None +# optional import for darknet +try: + from lib.backend_darknet import YoloNet + darknet_ready = True +except: + darknet_ready = False -def load_net_onnx(onnx_path: str): - session = onnxruntime.InferenceSession(onnx_path) - return session +# optional import for onnx +try: + from lib.backend_onnx import OnnxNet + onnx_ready = True +except: + onnx_ready = False def load_net(config_path, weight_path, meta_path): + """Loads network from config files and weights. Automatically detects the backend.""" + # nets are loaded only once and then reused global meta_main, net_main, alt_names # pylint: disable=W0603 - if not os.path.exists(config_path): - raise ValueError("Invalid config path `"+os.path.abspath(config_path)+"`") - if not os.path.exists(weight_path): - raise ValueError("Invalid weight path `"+os.path.abspath(weight_path)+"`") - if not os.path.exists(meta_path): - raise ValueError("Invalid data file path `"+os.path.abspath(meta_path)+"`") + if net_main is None: - if have_onnx and weight_path.endswith(".onnx"): - net_main = load_net_onnx(weight_path) + if onnx_ready and weight_path.endswith(".onnx"): + net_main = OnnxNet(weight_path, meta_path) + elif darknet_ready: + net_main = YoloNet(config_path, weight_path, meta_path) else: - net_main = load_net_custom(config_path.encode("ascii"), weight_path.encode("ascii"), 0, 1) # batch size = 1 - if meta_main is None: - meta_main = load_meta(meta_path.encode("ascii")) + raise Exception(f"Unable to load net. Onnx_ready={onnx_ready}, Darknet_ready={darknet_ready}") + + meta_main = net_main.meta + + assert net_main is not None + assert meta_main is not None + if alt_names is None: # In Python 3, the metafile default access craps out on Windows (but not Linux) # Read the names file and create a list to feed to detect try: - with open(meta_path) as metaFH: - metaContents = metaFH.read() - import re - match = re.search("names *= *(.*)$", metaContents, re.IGNORECASE | re.MULTILINE) - if match: - result = match.group(1) - else: - result = None - try: - if os.path.exists(result): - with open(result) as namesFH: - namesList = namesFH.read().strip().split("\n") - alt_names = [x.strip() for x in namesList] - except TypeError: - pass + meta = Meta(meta_path) + alt_names = meta.names except Exception: pass return net_main, meta_main +def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): + """Runs detection on some image content""" + + return net.detect(meta, image, alt_names, thresh, hier_thresh, nms, debug) if __name__ == "__main__": parser = argparse.ArgumentParser() @@ -404,15 +70,22 @@ def load_net(config_path, weight_path, meta_path): parser.add_argument("--nms-threshold", type=float, default=0.4, help="NMS threshold") parser.add_argument("--preheat", action='store_true', help="Make a dry run of NN for initlalization") parser.add_argument("--cpu", action='store_true', help="Force use CPU") + parser.add_argument("--save-detections-to", type=str, help="Save detections into this file") + parser.add_argument("--compare-detections-with", type=str, help="Load detections from this file and compare with result") + parser.add_argument("--print", action='store_true', help="Print detections") opt = parser.parse_args() net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") # force use CPU, only implemented for ONNX - if opt.cpu and have_onnx and isinstance(net_main_1, onnxruntime.InferenceSession): + if opt.cpu and onnx_ready and isinstance(net_main_1, OnnxNet): net_main_1.set_providers(['CPUExecutionProvider']) import cv2 + from dataclasses import asdict + import json + from geometry import compare_detections, Detection + custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) # this will make library initialize all the required resources at the first run @@ -426,4 +99,21 @@ def load_net(config_path, weight_path, meta_path): execution_time = finished_at - started_at print(f"Execution time: {execution_time:.3} sec") - print(detections) + detections = Detection.from_tuple_list(detections[0]) + # dump detections into some file + if opt.save_detections_to: + with open(opt.save_detections_to, "w") as f: + json.dump([asdict(d) for d in detections], f) + + # load detections from some file and compare with detection result + if opt.compare_detections_with: + with open(opt.compare_detections_with) as f: + items = json.load(f) + loaded = [Detection.from_dict(d) for d in items] + compare_result = compare_detections(loaded, detections) + if not compare_result: + print(f"Loaded detections and resulting are different") + exit(1) + + if opt.print: + print(detections) diff --git a/ml_api/lib/geometry.py b/ml_api/lib/geometry.py new file mode 100644 index 000000000..963f4fdd8 --- /dev/null +++ b/ml_api/lib/geometry.py @@ -0,0 +1,111 @@ +from dataclasses import dataclass, asdict +from typing import Any, Dict, List, Tuple + +@dataclass +class Box: + """Detection rect""" + xc: float + yc: float + w: float + h: float + + @classmethod + def from_tuple(cls, box: Tuple[float, float, float, float]) -> 'Box': + return Box(xc=float(box[0]), yc=float(box[1]), w=float(box[2]), h=float(box[3])) + + def left(self) -> float: + return self.xc - self.w * 0.5 + + def right(self) -> float: + return self.xc + self.w * 0.5 + + def top(self) -> float: + return self.yc - self.h * 0.5 + + def bottom(self) -> float: + return self.yc + self.h * 0.5 + + def calc_iou(self, other: 'Box') -> float: + """Calculates intersection over union ration which can be used to compare boxes""" + al = self.left() + ar = self.right() + at = self.top() + ab = self.bottom() + + bl = other.left() + br = other.right() + bt = other.top() + bb = other.bottom() + + i_l = max(al, bl) + i_r = min(ar, br) + i_t = max(at, bt) + i_b = min(ab, bb) + + o_l = min(al, bl) + o_r = max(ar, br) + o_t = min(at, bt) + o_b = max(ab, bb) + + i_w = i_r - i_l + i_h = i_b - i_t + o_w = o_r - o_l + o_h = o_b - o_t + + o_a = o_w * o_h + if o_a <= 0.0: + return 0.0 + return i_w * i_h / o_a + + +@dataclass +class Detection: + """Detection result""" + name: str + confidence: float + box: Box + + @classmethod + def from_tuple_list(cls, detections: List[Tuple[str, float, Tuple[float, float, float, float]]]) -> List['Detection']: + return [Detection.from_tuple(d) for d in detections] + + @classmethod + def from_tuple(cls, detection: Tuple[str, float, Tuple[float, float, float, float]]) -> 'Detection': + box = Box.from_tuple(detection[2]) + return Detection(detection[0], float(detection[1]), box) + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> 'Detection': + return Detection(data['name'], data['confidence'], Box(**data['box'])) + + + +def compare_detections(l1: List[Detection], l2: List[Detection], threshold: float = 0.4) -> bool: + """Compares two lists of detections. Returns true if lists looks similar with some threshold""" + + # Are there all boxes from l1 matching any in l2 + for a in l1: + found = False + for b in l2: + iou = a.box.calc_iou(b.box) + if iou >= threshold: + found = True + break + if not found: + return False + + # are there all boxes in l2 matching any in l1 + # the list may differ and contain duplicates, + # that's why we need two checks + for b in l2: + found = False + for a in l1: + iou = a.box.calc_iou(b.box) + if iou >= threshold: + found = True + break + if not found: + return False + + return True + diff --git a/ml_api/lib/meta.py b/ml_api/lib/meta.py new file mode 100644 index 000000000..a9257a620 --- /dev/null +++ b/ml_api/lib/meta.py @@ -0,0 +1,27 @@ +from typing import List, Tuple +from dataclasses import dataclass, field +import os +import re + +@dataclass +class Meta: + names: List[str] = field(default_factory=list) + + def __init__(self, meta_path: str): + names = None + with open(meta_path) as f: + meta_contents = f.read() + match = re.search("names *= *(.*)$", meta_contents, re.IGNORECASE | re.MULTILINE) + if match: + names_path = match.group(1) + try: + if os.path.exists(names_path): + with open(names_path) as namesFH: + names_list = namesFH.read().strip().split("\n") + names = [x.strip() for x in names_list] + except TypeError: + pass + if names is None: + names = ['failure'] + + self.names = names diff --git a/ml_api/test_data/1.jpg b/ml_api/test_data/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..590517171b744e72c436847019cd82c59ffe6812 GIT binary patch literal 269746 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ⅆo4(n#0 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 r+*#Lgc#77B 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

GD(x_XmW^Sj} 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 z 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

xv}J%Prv19TZ^gu>vgD_gd9wJkRor!i}*uW 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 literal 0 HcmV?d00001 diff --git a/ml_api/test_data/1.json b/ml_api/test_data/1.json new file mode 100644 index 000000000..327a2abc7 --- /dev/null +++ b/ml_api/test_data/1.json @@ -0,0 +1 @@ +[{"name": "failure", "confidence": 0.6891447305679321, "box": {"xc": 535.3487373590469, "yc": 474.9534823894501, "w": 252.1463025212288, "h": 138.7461107969284}}, {"name": "failure", "confidence": 0.6743507385253906, "box": {"xc": 263.38869220018387, "yc": 544.919519662857, "w": 276.50628340244293, "h": 185.15091562271118}}, {"name": "failure", "confidence": 0.5817742347717285, "box": {"xc": 589.4390723705292, "yc": 481.2896337509155, "w": 121.88863205909729, "h": 94.02524149417877}}, {"name": "failure", "confidence": 0.47977277636528015, "box": {"xc": 405.2845135331154, "yc": 396.83880066871643, "w": 173.75898277759552, "h": 80.74439334869385}}, {"name": "failure", "confidence": 0.33845505118370056, "box": {"xc": 349.38735204935074, "yc": 382.78335213661194, "w": 164.63774612545967, "h": 82.647167801857}}] \ No newline at end of file diff --git a/ml_api/tests/__init__.py b/ml_api/tests/__init__.py new file mode 100644 index 000000000..37903a5c1 --- /dev/null +++ b/ml_api/tests/__init__.py @@ -0,0 +1,10 @@ +import unittest +from tests.test_detection import TestDetection +from tests.test_geometry import * + +# Test suite for all tests +def suite(): + suite = unittest.TestSuite() + suite.addTest(TestGeometry()) + suite.addTest(TestDetection()) + return suite diff --git a/ml_api/tests/test_detection.py b/ml_api/tests/test_detection.py new file mode 100644 index 000000000..ee1eb5cfb --- /dev/null +++ b/ml_api/tests/test_detection.py @@ -0,0 +1,45 @@ +from typing import List, Tuple +import unittest +from lib.detection_model import * +import os +import json +from lib.geometry import Detection, compare_detections +import cv2 + +TEST_DATA_DIR = "test_data" +DET_THRESHOLD = 0.25 +NMS_THRESHOLD = 0.4 + +def find_images() -> List[Tuple[str, List[Detection]]]: + res = [] + for name in os.listdir(TEST_DATA_DIR): + if name.endswith(".jpg"): + json_path = os.path.join(TEST_DATA_DIR, name[:-3] + "json") + if os.path.exists(json_path): + with open(json_path) as f: + items = json.load(f) + res.append((os.path.join(TEST_DATA_DIR, name), [Detection.from_dict(d) for d in items])) + return res + + +class TestDetection(unittest.TestCase): + def test_darknet(self): + net, meta = load_net("model/model.cfg", "model/model.weights", "model/model.meta") + for img_path, detections in find_images(): + custom_image_bgr = cv2.imread(img_path) + detected = detect(net, meta, custom_image_bgr, thresh=DET_THRESHOLD, nms=NMS_THRESHOLD) + detected_detections = Detection.from_tuple_list(detected) + self.assertTrue(len(detected_detections) > 0) + similar = compare_detections(detected_detections, detections) + self.assertTrue(similar) + + def test_onnx(self): + net, meta = load_net("model/model.cfg", "model/model.onnx", "model/model.meta") + for img_path, detections in find_images(): + custom_image_bgr = cv2.imread(img_path) + detected = detect(net, meta, custom_image_bgr, thresh=DET_THRESHOLD, nms=NMS_THRESHOLD) + detected_detections = Detection.from_tuple_list(detected) + self.assertTrue(len(detected_detections) > 0) + similar = compare_detections(detected_detections, detections) + self.assertTrue(similar) + diff --git a/ml_api/tests/test_geometry.py b/ml_api/tests/test_geometry.py new file mode 100644 index 000000000..943b163f7 --- /dev/null +++ b/ml_api/tests/test_geometry.py @@ -0,0 +1,15 @@ +import unittest +from lib.geometry import * + + +class TestGeometry(unittest.TestCase): + def test_box(self): + b1 = Box(1.0, 2.0, 1.0, 2.0) + b2 = Box(2.0, 3.0, 1.0, 2.0) + b3 = Box(1.0, 2.0, 2.0, 2.0) + iou_1_2 = b1.calc_iou(b2) + iou_1_3 = b1.calc_iou(b3) + + self.assertAlmostEqual(iou_1_2, 0.0) + self.assertAlmostEqual(iou_1_3, 0.5) + From bd547adb56e51f57450f6c4a86581293a994b666 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:14:25 +0300 Subject: [PATCH 4/9] fix loading onnx dependency --- ml_api/lib/backend_onnx.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ml_api/lib/backend_onnx.py b/ml_api/lib/backend_onnx.py index 66f322cc0..2e01f2bdd 100644 --- a/ml_api/lib/backend_onnx.py +++ b/ml_api/lib/backend_onnx.py @@ -4,7 +4,7 @@ import cv2 import os -from lib.meta import load_meta, Meta +from lib.meta import Meta class OnnxNet: @@ -17,7 +17,7 @@ def __init__(self, onnx_path: str, meta_path: str): if not os.path.exists(meta_path): raise ValueError("Invalid data file path `"+os.path.abspath(meta_path)+"`") self.session = onnxruntime.InferenceSession(onnx_path) - self.meta = load_meta(meta_path) + self.meta = Meta(meta_path) def detect(self, meta, image, alt_names, thresh=.5, hier_thresh=.5, nms=.45, debug=False) -> List[Tuple[str, float, Tuple[float, float, float, float]]]: input_h = self.session.get_inputs()[0].shape[2] From 14a6ae3c3098cc949924be283c48cbc326d5fbfa Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:20:46 +0300 Subject: [PATCH 5/9] fix detection_model cli --- ml_api/lib/backend_onnx.py | 3 +++ ml_api/lib/detection_model.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ml_api/lib/backend_onnx.py b/ml_api/lib/backend_onnx.py index 2e01f2bdd..b78e18f09 100644 --- a/ml_api/lib/backend_onnx.py +++ b/ml_api/lib/backend_onnx.py @@ -38,6 +38,9 @@ def detect(self, meta, image, alt_names, thresh=.5, hier_thresh=.5, nms=.45, deb detections = post_processing(outputs, width, height, thresh, nms, meta.names) return detections[0] + def force_cpu(self): + self.session.set_providers(['CPUExecutionProvider']) + def nms_cpu(boxes, confs, nms_thresh=0.5, min_mode=False): # print(boxes.shape) x1 = boxes[:, 0] diff --git a/ml_api/lib/detection_model.py b/ml_api/lib/detection_model.py index f21601c1c..21d923816 100644 --- a/ml_api/lib/detection_model.py +++ b/ml_api/lib/detection_model.py @@ -79,7 +79,7 @@ def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): # force use CPU, only implemented for ONNX if opt.cpu and onnx_ready and isinstance(net_main_1, OnnxNet): - net_main_1.set_providers(['CPUExecutionProvider']) + net_main_1.force_cpu() import cv2 from dataclasses import asdict @@ -99,7 +99,7 @@ def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): execution_time = finished_at - started_at print(f"Execution time: {execution_time:.3} sec") - detections = Detection.from_tuple_list(detections[0]) + detections = Detection.from_tuple_list(detections) # dump detections into some file if opt.save_detections_to: with open(opt.save_detections_to, "w") as f: From 9e910ca3ad2703f753078c978b1347bbfeb34e80 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:34:24 +0300 Subject: [PATCH 6/9] moved detection cli into separate file --- ml_api/detect.py | 60 +++++++++++++++++++++++++++++++++++ ml_api/lib/detection_model.py | 55 -------------------------------- ml_api/server.py | 3 +- 3 files changed, 62 insertions(+), 56 deletions(-) create mode 100755 ml_api/detect.py diff --git a/ml_api/detect.py b/ml_api/detect.py new file mode 100755 index 000000000..794812333 --- /dev/null +++ b/ml_api/detect.py @@ -0,0 +1,60 @@ +#!python3 + +from lib.detection_model import * + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("image", type=str, help="Image file path") + parser.add_argument("--weights", type=str, default="model/model.weights", help="Model weights file") + parser.add_argument("--det-threshold", type=float, default=0.25, help="Detection threshold") + parser.add_argument("--nms-threshold", type=float, default=0.4, help="NMS threshold") + parser.add_argument("--preheat", action='store_true', help="Make a dry run of NN for initlalization") + parser.add_argument("--cpu", action='store_true', help="Force use CPU") + parser.add_argument("--save-detections-to", type=str, help="Save detections into this file") + parser.add_argument("--compare-detections-with", type=str, help="Load detections from this file and compare with result") + parser.add_argument("--print", action='store_true', help="Print detections") + opt = parser.parse_args() + + net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") + + # force use CPU, only implemented for ONNX + if opt.cpu and onnx_ready and isinstance(net_main_1, OnnxNet): + net_main_1.force_cpu() + + import cv2 + from dataclasses import asdict + import json + from lib.geometry import compare_detections, Detection + + custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) + + # this will make library initialize all the required resources at the first run + # then the following runs will be much faster + if opt.preheat: + detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) + + started_at = time.time() + detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) + finished_at = time.time() + execution_time = finished_at - started_at + print(f"Execution time: {execution_time:.3} sec") + + detections = Detection.from_tuple_list(detections) + # dump detections into some file + if opt.save_detections_to: + with open(opt.save_detections_to, "w") as f: + json.dump([asdict(d) for d in detections], f) + + # load detections from some file and compare with detection result + if opt.compare_detections_with: + with open(opt.compare_detections_with) as f: + items = json.load(f) + loaded = [Detection.from_dict(d) for d in items] + compare_result = compare_detections(loaded, detections) + if not compare_result: + print(f"Loaded detections and resulting are different") + exit(1) + + if opt.print: + print(detections) + diff --git a/ml_api/lib/detection_model.py b/ml_api/lib/detection_model.py index 21d923816..7ffb98e92 100644 --- a/ml_api/lib/detection_model.py +++ b/ml_api/lib/detection_model.py @@ -62,58 +62,3 @@ def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45, debug=False): return net.detect(meta, image, alt_names, thresh, hier_thresh, nms, debug) -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("image", type=str, help="Image file path") - parser.add_argument("--weights", type=str, default="model/model.weights", help="Model weights file") - parser.add_argument("--det-threshold", type=float, default=0.25, help="Detection threshold") - parser.add_argument("--nms-threshold", type=float, default=0.4, help="NMS threshold") - parser.add_argument("--preheat", action='store_true', help="Make a dry run of NN for initlalization") - parser.add_argument("--cpu", action='store_true', help="Force use CPU") - parser.add_argument("--save-detections-to", type=str, help="Save detections into this file") - parser.add_argument("--compare-detections-with", type=str, help="Load detections from this file and compare with result") - parser.add_argument("--print", action='store_true', help="Print detections") - opt = parser.parse_args() - - net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") - - # force use CPU, only implemented for ONNX - if opt.cpu and onnx_ready and isinstance(net_main_1, OnnxNet): - net_main_1.force_cpu() - - import cv2 - from dataclasses import asdict - import json - from geometry import compare_detections, Detection - - custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) - - # this will make library initialize all the required resources at the first run - # then the following runs will be much faster - if opt.preheat: - detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) - - started_at = time.time() - detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) - finished_at = time.time() - execution_time = finished_at - started_at - print(f"Execution time: {execution_time:.3} sec") - - detections = Detection.from_tuple_list(detections) - # dump detections into some file - if opt.save_detections_to: - with open(opt.save_detections_to, "w") as f: - json.dump([asdict(d) for d in detections], f) - - # load detections from some file and compare with detection result - if opt.compare_detections_with: - with open(opt.compare_detections_with) as f: - items = json.load(f) - loaded = [Detection.from_dict(d) for d in items] - compare_result = compare_detections(loaded, detections) - if not compare_result: - print(f"Loaded detections and resulting are different") - exit(1) - - if opt.print: - print(detections) diff --git a/ml_api/server.py b/ml_api/server.py index 0cdbf5107..f1899089b 100755 --- a/ml_api/server.py +++ b/ml_api/server.py @@ -26,9 +26,10 @@ # SECURITY WARNING: don't run with debug turned on in production! app.config['DEBUG'] = environ.get('DEBUG') == 'True' +MODEL_NAME = environ.get('MODEL_NAME') or 'model.weights' model_dir = path.join(path.dirname(path.realpath(__file__)), 'model') -net_main, meta_main = load_net(path.join(model_dir, 'model.cfg'), path.join(model_dir, 'model.weights'), path.join(model_dir, 'model.meta')) +net_main, meta_main = load_net(path.join(model_dir, 'model.cfg'), path.join(model_dir, MODEL_NAME), path.join(model_dir, 'model.meta')) @app.route('/p/', methods=['GET']) @token_required From 37ba79ef57c71fde9bfed926b0e7709e680fbfb5 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:44:17 +0300 Subject: [PATCH 7/9] convert numpy float32 into float for json compat --- ml_api/lib/backend_onnx.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ml_api/lib/backend_onnx.py b/ml_api/lib/backend_onnx.py index b78e18f09..76fda3f02 100644 --- a/ml_api/lib/backend_onnx.py +++ b/ml_api/lib/backend_onnx.py @@ -96,10 +96,10 @@ def post_processing(output, width, height, conf_thresh, nms_thresh, names): box_x1x1x2y2_to_xcycwh_scaled = lambda b: \ ( - 0.5 * width * (b[0] + b[2]), - 0.5 * height * (b[1] + b[3]), - width * (b[2] - b[0]), - width * (b[3] - b[1]) + float(0.5 * width * (b[0] + b[2])), + float(0.5 * height * (b[1] + b[3])), + float(width * (b[2] - b[0])), + float(width * (b[3] - b[1])) ) dets_batch = [] for i in range(box_array.shape[0]): From bb23313509b845bbfcd65c8d33f32b12c57d2d8c Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Sun, 7 May 2023 14:45:40 +0300 Subject: [PATCH 8/9] convert numpy float32 into float for json compat --- ml_api/lib/backend_onnx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ml_api/lib/backend_onnx.py b/ml_api/lib/backend_onnx.py index 76fda3f02..47e0e060c 100644 --- a/ml_api/lib/backend_onnx.py +++ b/ml_api/lib/backend_onnx.py @@ -128,7 +128,7 @@ def post_processing(output, width, height, conf_thresh, nms_thresh, names): for k in range(ll_box_array.shape[0]): bboxes.append([ll_box_array[k, 0], ll_box_array[k, 1], ll_box_array[k, 2], ll_box_array[k, 3], ll_max_conf[k], ll_max_conf[k], ll_max_id[k]]) - detections = [(names[b[6]], b[4], box_x1x1x2y2_to_xcycwh_scaled((b[0], b[1], b[2], b[3]))) for b in bboxes] + detections = [(names[b[6]], float(b[4]), box_x1x1x2y2_to_xcycwh_scaled((b[0], b[1], b[2], b[3]))) for b in bboxes] dets_batch.append(detections) From fe7caa766b469285e507ccafffebb4fbd33f62d9 Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Mon, 8 May 2023 12:28:10 +0300 Subject: [PATCH 9/9] render detections and process video files --- ml_api/detect.py | 119 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 89 insertions(+), 30 deletions(-) diff --git a/ml_api/detect.py b/ml_api/detect.py index 794812333..3deb24195 100755 --- a/ml_api/detect.py +++ b/ml_api/detect.py @@ -1,7 +1,14 @@ #!python3 - +import cv2 +from dataclasses import asdict +import json +from lib.geometry import compare_detections, Detection +import os from lib.detection_model import * +KNOWN_IMAGE_EXTENSIONS = ('.jpg', '.png') +KNOWN_VIDEO_EXTENSIONS = ('.mp4', '.avi') + if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("image", type=str, help="Image file path") @@ -12,49 +19,101 @@ parser.add_argument("--cpu", action='store_true', help="Force use CPU") parser.add_argument("--save-detections-to", type=str, help="Save detections into this file") parser.add_argument("--compare-detections-with", type=str, help="Load detections from this file and compare with result") + parser.add_argument("--render-to", type=str, help="Save detections into this file or directory") parser.add_argument("--print", action='store_true', help="Print detections") opt = parser.parse_args() + net_main_1, meta_main_1 = load_net("model/model.cfg", opt.weights, "model/model.meta") # force use CPU, only implemented for ONNX if opt.cpu and onnx_ready and isinstance(net_main_1, OnnxNet): net_main_1.force_cpu() - import cv2 - from dataclasses import asdict - import json - from lib.geometry import compare_detections, Detection + assert os.path.exists(opt.image) + filename = os.path.basename(opt.image) + filename, extension = os.path.splitext(filename) + + is_image = extension in KNOWN_IMAGE_EXTENSIONS + is_video = extension in KNOWN_VIDEO_EXTENSIONS + frame_number = 0 + vwr = None + if is_video: + cap = cv2.VideoCapture(opt.image) + fps = cap.get(cv2.CAP_PROP_FPS) + frame_w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + frame_h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + reading_success, custom_image_bgr = cap.read() + if opt.render_to: + fourcc = cv2.VideoWriter_fourcc("m", "p", "4", "v") + vwr = cv2.VideoWriter(opt.render_to, fourcc, fps, (frame_w, frame_h)) + else: + cap = None + fps = 0.0 + custom_image_bgr = cv2.imread(opt.image) + reading_success = True - custom_image_bgr = cv2.imread(opt.image) # use: detect(,,imagePath,) # this will make library initialize all the required resources at the first run # then the following runs will be much faster if opt.preheat: detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) - started_at = time.time() - detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) - finished_at = time.time() - execution_time = finished_at - started_at - print(f"Execution time: {execution_time:.3} sec") - - detections = Detection.from_tuple_list(detections) - # dump detections into some file - if opt.save_detections_to: - with open(opt.save_detections_to, "w") as f: - json.dump([asdict(d) for d in detections], f) - - # load detections from some file and compare with detection result - if opt.compare_detections_with: - with open(opt.compare_detections_with) as f: - items = json.load(f) - loaded = [Detection.from_dict(d) for d in items] - compare_result = compare_detections(loaded, detections) - if not compare_result: - print(f"Loaded detections and resulting are different") - exit(1) - - if opt.print: - print(detections) + while reading_success: + started_at = time.time() + detections = detect(net_main_1, meta_main_1, custom_image_bgr, thresh=opt.det_threshold, nms=opt.nms_threshold) + finished_at = time.time() + execution_time = finished_at - started_at + print(f"Frame #{frame_number} execution time: {execution_time:.3} sec, detection count: {len(detections)}") + + detections = Detection.from_tuple_list(detections) + # dump detections into some file + if opt.save_detections_to: + output_filename, output_extension = os.path.splitext(opt.save_detections_to) + if is_video and not output_extension and not os.path.exists(opt.save_detections_to): + os.makedirs(opt.save_detections_to) + if os.path.isdir(opt.save_detections_to): + if is_video: + output_file_name = f"{filename}#{frame_number:04}.json" + else: + output_file_name = f"{filename}.json" + output_file_name = os.path.join(opt.save_detections_to, output_file_name) + else: + output_file_name = opt.save_detections_to + + with open(output_file_name, "w") as f: + json.dump([asdict(d) for d in detections], f) + + # load detections from some file and compare with detection result + if opt.compare_detections_with: + if is_video: + read_file_name = os.path.join(opt.compare_detections_with, f"{filename}#{frame_number:04}.json") + else: + read_file_name = opt.compare_detections_with + + with open(read_file_name) as f: + items = json.load(f) + loaded = [Detection.from_dict(d) for d in items] + compare_result = compare_detections(loaded, detections) + if not compare_result: + print(f"Frame #{frame_number} loaded detections and resulting are different") + if opt.render_to: + for d in detections: + cv2.rectangle(custom_image_bgr, + (int(d.box.left()), int(d.box.top())), (int(d.box.right()), int(d.box.bottom())), + (0, 255, 0), 2) + if vwr: + vwr.write(custom_image_bgr) + else: + cv2.imwrite(opt.render_to, custom_image_bgr) + + + if opt.print: + print(detections) + + if is_image: + reading_success = False + elif cap: + reading_success, custom_image_bgr = cap.read() + frame_number += 1