|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- import multiprocessing as mp
- import sys
- import time
- from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor, wait, ALL_COMPLETED
- from multiprocessing import Queue
-
- import cv2
- import tensorrt as trt
- sys.path.extend(['/home/th/tuo_heng/dev/tuoheng_alg', '/home/th/tuo_heng/dev/tuoheng_alg/util'])
- from util.PlotsUtils import get_label_arrays
- from util.TorchUtils import select_device
-
- sys.path.extend(['/home/th/tuo_heng/', '/home/th/tuo_heng/dev', '/home/th/tuo_heng/dev/AIlib2', '/home/th/tuo_heng/dev/AIlib2/segutils'])
- from segutils.segmodel import SegModel
- from models.experimental import attempt_load
- from AI import AI_process
- from utilsK.queRiver import riverDetSegMixProcess
-
- COLOR = (
- [0, 0, 255],
- [255, 0, 0],
- [211, 0, 148],
- [0, 127, 0],
- [0, 69, 255],
- [0, 255, 0],
- [255, 0, 255],
- [0, 0, 127],
- [127, 0, 255],
- [255, 129, 0],
- [139, 139, 0],
- [255, 255, 0],
- [127, 255, 0],
- [0, 127, 255],
- [0, 255, 127],
- [255, 127, 255],
- [8, 101, 139],
- [171, 130, 255],
- [139, 112, 74],
- [205, 205, 180])
- par = {
- 'device': '0',
- 'labelnames': ["排口", "水生植被", "其它", "漂浮物", "污染排口", "菜地", "违建", "岸坡垃圾"],
- 'seg_nclass': 2,
- 'trtFlag_seg': True,
- 'trtFlag_det': True,
- 'segRegionCnt': 1,
- 'segPar': {
- 'modelSize': (640, 360),
- 'mean': (0.485, 0.456, 0.406),
- 'std': (0.229, 0.224, 0.225),
- 'numpy': False,
- 'RGB_convert_first': True,
- 'mixFunction': {
- 'function': riverDetSegMixProcess,
- 'pars': {
- 'slopeIndex': [5, 6, 7],
- 'riverIou': 0.1
- }
- }
- },
- 'postFile': {
- "name": "post_process",
- "conf_thres": 0.25,
- "iou_thres": 0.45,
- "classes": 5,
- "rainbows": COLOR
- },
- 'Detweights': "/home/th/tuo_heng/dev/AIlib2/weights/river/yolov5_2080Ti_fp16.engine",
- 'Segweights': '/home/th/tuo_heng/dev/AIlib2/weights/river/stdc_360X640_2080Ti_fp16.engine'
- }
- mode, postPar, segPar = par.get('mode', 'others'), par.get('postPar'), par.get('segPar')
- new_device = select_device(par.get('device'))
- names = par['labelnames']
- half = new_device.type != 'cpu'
- Detweights = par['Detweights']
- with open(Detweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
- model = runtime.deserialize_cuda_engine(f.read())
- Segweights = par['Segweights']
- if Segweights:
- with open(Segweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
- segmodel = runtime.deserialize_cuda_engine(f.read())
- else:
- segmodel = None
- postFile = par['postFile']
- rainbows = postFile["rainbows"]
- objectPar = {
- 'half': half,
- 'device': new_device,
- 'conf_thres': postFile["conf_thres"],
- 'ovlap_thres_crossCategory': postFile.get("ovlap_thres_crossCategory"),
- 'iou_thres': postFile["iou_thres"],
- 'allowedList': [],
- 'segRegionCnt': par['segRegionCnt'],
- 'trtFlag_det': par['trtFlag_det'],
- 'trtFlag_seg': par['trtFlag_seg']
- }
- Detweights = "/home/th/tuo_heng/dev/AIlib2/weights/river2/yolov5_2080Ti_fp16.engine"
- with open(Detweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
- model = runtime.deserialize_cuda_engine(f.read())
- Segweights = "/home/th/tuo_heng/dev/AIlib2/weights/river2/stdc_360X640_2080Ti_fp16.engine"
- with open(Segweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
- segmodel = runtime.deserialize_cuda_engine(f.read())
-
-
- allowedList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
-
-
- def one_label(width, height, model_param):
- names = model_param[4]
- rainbows = model_param[6]
- digitFont, label_arraylist, font_config = get_label_arraylist(width, height, names, rainbows)
- """
- font_config, frame, model, segmodel, names, label_arraylist, rainbows, objectPar, font, segPar, mode, postPar,
- requestId
- """
- model_param[5] = label_arraylist
- model_param[8] = digitFont
- model_param[0] = font_config
-
-
- def get_label_arraylist(*args):
- width, height, names, rainbows = args
- # line = int(round(0.002 * (height + width) / 2) + 1)
- line = int(width / 1920 * 3 - 1)
- label = ' 0.95'
- tf = max(line, 1)
- fontScale = line * 0.33
- text_width, text_height = cv2.getTextSize(label, 0, fontScale=fontScale, thickness=tf)[0]
- fontsize = int(width / 1920 * 40)
- numFontSize = float(format(width / 1920 * 1.1, '.1f'))
- digitFont = {'line_thickness': line,
- 'boxLine_thickness': line,
- 'fontSize': numFontSize,
- 'waterLineColor': (0, 255, 255),
- 'segLineShow': False,
- 'waterLineWidth': line}
- label_arraylist = get_label_arrays(names, rainbows, text_height, fontSize=fontsize,
- fontPath="/home/th/tuo_heng/dev/AIlib2/conf/platech.ttf")
- return digitFont, label_arraylist, (line, text_width, text_height, fontScale, tf)
- image = cv2.imread("/home/th/tuo_heng/dev/ompv2fn94m_1687259193110.jpg")
- start_time1 = time.time()
- with ThreadPoolExecutor(max_workers=3) as t:
- rs = []
- for i in range(500):
- rr = t.submit(AI_process, [image], model, segmodel, names, None, rainbows, objectPar=objectPar,
- font={'line_thickness': 1,
- 'boxLine_thickness': 1,
- 'fontSize': 1.1,
- 'waterLineColor': (0, 255, 255),
- 'segLineShow': False,
- 'waterLineWidth': 1}, segPar=segPar, mode=mode, postPar=postPar)
- rs.append(rr)
- for i in rs:
- i.result()
- print(time.time() - start_time1)
-
- start_time = time.time()
- for i in range(500):
- AI_process([image], model, segmodel, names, None, rainbows, objectPar=objectPar,
- font={'line_thickness': 1,
- 'boxLine_thickness': 1,
- 'fontSize': 1.1,
- 'waterLineColor': (0, 255, 255),
- 'segLineShow': False,
- 'waterLineWidth': 1}, segPar=segPar, mode=mode, postPar=postPar)
- print(time.time() - start_time)
|