Browse Source

Merge branch 'release' of gitadmin/tuoheng_alg into master

tags/V2.7.9
chenyukun 1 year ago
parent
commit
f178fe62d0
5 changed files with 129 additions and 34 deletions
  1. +30
    -25
      .idea/workspace.xml
  2. +5
    -0
      concurrency/PullVideoStreamProcess.py
  3. +2
    -0
      enums/ModelTypeEnum.py
  4. +2
    -0
      service/Dispatcher.py
  5. +90
    -9
      util/ModelUtils.py

+ 30
- 25
.idea/workspace.xml View File

@@ -6,8 +6,10 @@
<component name="ChangeListManager">
<list default="true" id="4f7dccd9-8f92-4a6e-90cc-33890d102263" name="Changes" comment="Changes">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/concurrency/IntelligentRecognitionProcess.py" beforeDir="false" afterPath="$PROJECT_DIR$/concurrency/IntelligentRecognitionProcess.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/test/路径/Test.py" beforeDir="false" afterPath="$PROJECT_DIR$/test/路径/Test.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/concurrency/PullVideoStreamProcess.py" beforeDir="false" afterPath="$PROJECT_DIR$/concurrency/PullVideoStreamProcess.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/enums/ModelTypeEnum.py" beforeDir="false" afterPath="$PROJECT_DIR$/enums/ModelTypeEnum.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/service/Dispatcher.py" beforeDir="false" afterPath="$PROJECT_DIR$/service/Dispatcher.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/util/ModelUtils.py" beforeDir="false" afterPath="$PROJECT_DIR$/util/ModelUtils.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -126,29 +128,29 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;true&quot;,
&quot;WebServerToolWindowPanel.toolwindow.highlight.mappings&quot;: &quot;true&quot;,
&quot;WebServerToolWindowPanel.toolwindow.highlight.symlinks&quot;: &quot;true&quot;,
&quot;WebServerToolWindowPanel.toolwindow.show.date&quot;: &quot;false&quot;,
&quot;WebServerToolWindowPanel.toolwindow.show.permissions&quot;: &quot;false&quot;,
&quot;WebServerToolWindowPanel.toolwindow.show.size&quot;: &quot;false&quot;,
&quot;last_opened_file_path&quot;: &quot;D:/tuoheng/codenew/tuoheng_tool&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;project.structure.last.edited&quot;: &quot;SDK&quot;,
&quot;project.structure.proportion&quot;: &quot;0.15&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2816092&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "true",
"WebServerToolWindowPanel.toolwindow.highlight.mappings": "true",
"WebServerToolWindowPanel.toolwindow.highlight.symlinks": "true",
"WebServerToolWindowPanel.toolwindow.show.date": "false",
"WebServerToolWindowPanel.toolwindow.show.permissions": "false",
"WebServerToolWindowPanel.toolwindow.show.size": "false",
"last_opened_file_path": "D:/tuoheng/codenew/tuoheng_alg",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"project.structure.last.edited": "SDK",
"project.structure.proportion": "0.15",
"project.structure.side.proportion": "0.2816092",
"settings.editor.selected.configurable": "preferences.pluginManager",
"vue.rearranger.settings.migration": "true"
}
}</component>
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\tuoheng\codenew\tuoheng_alg\enums" />
@@ -533,7 +535,10 @@
<workItem from="1687997778160" duration="3792000" />
<workItem from="1688021144565" duration="1972000" />
<workItem from="1688083600084" duration="65000" />
<workItem from="1688083679443" duration="2398000" />
<workItem from="1688083679443" duration="5459000" />
<workItem from="1688344638833" duration="1197000" />
<workItem from="1688441104396" duration="5401000" />
<workItem from="1688524387384" duration="3080000" />
</task>
<servers />
</component>

+ 5
- 0
concurrency/PullVideoStreamProcess.py View File

@@ -64,6 +64,8 @@ class PullVideoStreamProcess(Process):
continue
if time.time() - start_time > 3:
logger.warning("心跳线程异常重启中, requestId:{}", self._msg.get("request_id"))
hb = Heartbeat(self._fbQueue, self._hbQueue, self._msg.get("request_id"), self._analyse_type)
hb.setDaemon(True)
hb.start()
continue

@@ -89,6 +91,9 @@ class PullVideoStreamProcess(Process):
continue
if time.time() - start_time > 3:
logger.warning("图片上传线程异常重启中, requestId:{}", self._msg.get("request_id"))
imageFileUpload = ImageFileUpload(self._fbQueue, self._context, self._msg, self._imageQueue,
self._analyse_type, self._base_dir)
imageFileUpload.setDaemon(True)
imageFileUpload.start()
start_time = time.time()
continue

+ 2
- 0
enums/ModelTypeEnum.py View File

@@ -39,6 +39,8 @@ class ModelType(Enum):

RIVER2_MODEL = ("15", "015", "河道检测模型", 'river2')

CITY_MANGEMENT_MODEL = ("16", "016", "城管模型", 'cityMangement')

def checkCode(code):
for model in ModelType:
if model.value[1] == code:

+ 2
- 0
service/Dispatcher.py View File

@@ -339,6 +339,8 @@ class DispatcherService:
time.sleep(1)
continue
logger.error("反馈线程异常重启中")
self.__feedbackThread = FeedbackThread(self.__fbQueue, self.__context)
self.__feedbackThread.setDaemon(True)
self.__feedbackThread.start()
start_time = time.time()
continue

+ 90
- 9
util/ModelUtils.py View File

@@ -446,7 +446,7 @@ class ForestModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -463,7 +463,7 @@ def forest_process(param):
"""

return AI_process_forest([param[0]], param[1], param[2], param[3], param[4], param[5], param[6], param[7],
param[8], param[9], param[10], font=param[11], trtFlag_det=param[12])
param[8], param[9], param[10], font=param[11], trtFlag_det=param[12], SecNms=param[14])
except ServiceException as s:
raise s
except Exception:
@@ -527,7 +527,7 @@ class VehicleModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -609,7 +609,7 @@ class PedestrianModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -671,7 +671,7 @@ class SmogfireModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -733,7 +733,7 @@ class AnglerSwimmerModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -796,7 +796,7 @@ class CountryRoadModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -859,7 +859,7 @@ class ChannelEmergencyModel:
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId]
trtFlag_det, requestId, None]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
@@ -868,6 +868,70 @@ class ChannelEmergencyModel:
logger.info("模型初始化时间:{}, requestId:{}", time.time() - s, requestId)


# 城管模型
class CityMangementModel:
__slots__ = "model_conf"

def __init__(self, device1, allowedList=None, requestId=None, modeType=None, gpu_name=None, base_dir=None):
s = time.time()
try:
logger.info("########################加载城管模型########################, requestId:{}", requestId)
trtFlag_det = True, # 检测模型是否采用TRT
# trtFlag_seg = False, # 分割模型是否采用TRT
# 公共变量
par = {
'device': str(device1),
'gpu_name': gpu_name,
'labelnames': ["车辆", "垃圾"],
'seg_nclass': 2, # 分割模型类别数目,默认2类
'segRegionCnt': 0,
'slopeIndex': [],
'segPar': None,
'postFile': {
"name": "post_process",
"conf_thres": 0.25,
"iou_thres": 0.45,
"ovlap_thres_crossCategory": 0.6,
"classes": 2,
"rainbows": COLOR
},
'segweights': None
}
if trtFlag_det:
par['detweights'] = "../AIlib2/weights/%s/yolov5_%s_fp16.engine" % (modeType.value[3], par['gpu_name'])
else:
par['detweights'] = "../AIlib2/weights/conf/%s/yolov5.pt" % modeType.value[3]

device = select_device(par.get('device')) # 指定GPU
names = par.get('labelnames')
half = device.type != 'cpu'
Detweights = par.get('detweights') # 升级后的检测模型
if trtFlag_det:
with open(Detweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
model = runtime.deserialize_cuda_engine(f.read())
else:
model = attempt_load(Detweights, map_location=device)
if half:
model.half()
segmodel = None
conf_thres = par.get('postFile').get("conf_thres")
iou_thres = par.get('postFile').get("iou_thres")
# classes = par.get('postFile').get("classes")
rainbows = par.get('postFile').get("rainbows")
ovlap_thres_crossCategory = par.get('postFile').get("ovlap_thres_crossCategory")
"""
frame, model, segmodel, names, label_arraylist, rainbows, half, device, conf_thres, iou_thres,
allowedList, digitFont, trtFlag_det, requestId
"""
model_param = [None, model, segmodel, names, None, rainbows, half, device, conf_thres, iou_thres, [], None,
trtFlag_det, requestId, ovlap_thres_crossCategory]
self.model_conf = (modeType, allowedList, model_param)
except Exception:
logger.error("模型加载异常:{}, requestId:{}", format_exc(), requestId)
raise ServiceException(ExceptionType.MODEL_LOADING_EXCEPTION.value[0],
ExceptionType.MODEL_LOADING_EXCEPTION.value[1])
logger.info("模型初始化时间:{}, requestId:{}", time.time() - s, requestId)

# 船只模型
class ShipModel:
__slots__ = "model_conf"
@@ -1232,6 +1296,17 @@ def smogfire_label(width, model_param):
model_param[4] = label_arraylist
model_param[11] = digitFont

def city_mangement_label(width, model_param):
names = model_param[3]
rainbows = model_param[5]
digitFont, label_arraylist = get_label_arraylist_1(width, names, rainbows)
"""
frame, model, segmodel, names, label_arraylist, rainbows, half, device, conf_thres, iou_thres,
allowedList, digitFont, trtFlag_det, requestId, over
"""
model_param[4] = label_arraylist
model_param[11] = digitFont


MODEL_CONFIG = {
# 加载河道模型
@@ -1321,7 +1396,13 @@ MODEL_CONFIG = {
lambda x, y, r, t, z: River2Model(x, y, r, ModelType.RIVER2_MODEL, t, z),
ModelType.RIVER2_MODEL,
lambda x, y: river2_label(x, y),
lambda x: model_process(x)
lambda x: model_process(x)),
# 城管模型
ModelType.CITY_MANGEMENT_MODEL.value[1]: (
lambda x, y, r, t, z: CityMangementModel(x, y, r, ModelType.CITY_MANGEMENT_MODEL, t, z),
ModelType.CITY_MANGEMENT_MODEL,
lambda x, y: city_mangement_label(x, y),
lambda x: forest_process(x)
)
}
# ModelConfig = namedtuple('ModelConfig', ('x', 'y', 'z'))

Loading…
Cancel
Save