|
- # -*- coding: utf-8 -*-
- import sys
-
- import torch
- from loguru import logger
-
- sys.path.extend(['..', '../healthCode'])
- from utilsK.general import pre_process, post_process, get_return_data
-
-
- class Model():
- def __init__(self):
- self.par = {'code': {'weights': '../healthCode/weights/health_yolov5s_v3.jit', 'img_type': 'code', 'nc': 10},
- 'plate': {'weights': '../healthCode/weights/plate_yolov5s_v3.jit', 'img_type': 'plate', 'nc': 1},
- 'conf_thres': 0.4,
- 'iou_thres': 0.45,
- 'device': 'cuda:0',
- 'plate_dilate': (0.5, 0.3)
- }
-
- ###加载模型
- self.device = torch.device(self.par['device'])
- self.model = torch.jit.load(self.par['code']['weights'])
- self.model_plate = torch.jit.load(self.par['plate']['weights'])
-
-
- # 防疫模型
- class FKModel(Model):
- # def __init__(self):
- # super().__init__()
-
- # names, label_arraylist, rainbows, conf_thres, iou_thres
- def process(self, im0, device, img_type):
- try:
- # 预处理
- img, padInfos = pre_process(im0, self.device)
- # 模型推理 code, plate
- if img_type == 'code':
- pred = self.model(img)
- if img_type == 'plate':
- pred = self.model_plate(img)
- boxes = post_process(pred, padInfos, self.device, conf_thres=self.par['conf_thres'],
- iou_thres=self.par['iou_thres'],
- nc=self.par[img_type]['nc']) # 后处理
- dataBack = get_return_data(im0, boxes, modelType=img_type, plate_dilate=self.par['plate_dilate'])
- return dataBack
- except Exception as e:
- logger.exception("模型识别异常:{}", e)
- return None
- # for key in dataBack.keys():
- # if isinstance(dataBack[key], list):
- # cv2.imwrite('jitimg/%s.jpg' % (key), dataBack[key][0]) ###返回值: dataBack
- '''
- #dataBack= {'type':1,'color':'green','nameImage':'','phoneNumberImage':'','cityImage':'','hsImage':'','plateImage':''}
-
- type:int, 0—行程卡;1—苏康码;2-车牌
- nameImage: [姓名图像数组,score]
- color: green, yellow, red
- cityImage: [途径地图像数组,score]
- phoneNumberImage: [手机号图像数组,score]
- IdNumberImage: [身份证号数组,score]
- hsImage:[核酸检测情况数组,score]
- plateImage: [核酸检测情况数组,score]
- 如果没对应目标,返回“空值”
- '''
|