Fileupload
This commit is contained in:
parent
8e49836d6e
commit
d61146f244
|
|
@ -21,8 +21,7 @@ from util.QueUtil import put_queue, get_no_block_queue, clear_queue
|
||||||
import io
|
import io
|
||||||
from util.LocationUtils import locate_byMqtt
|
from util.LocationUtils import locate_byMqtt
|
||||||
|
|
||||||
#
|
|
||||||
from common.YmlConstant import service_yml_path
|
|
||||||
|
|
||||||
class FileUpload(Thread):
|
class FileUpload(Thread):
|
||||||
__slots__ = ('_fb_queue', '_context', '_image_queue', '_analyse_type', '_msg', '_mqtt_list')
|
__slots__ = ('_fb_queue', '_context', '_image_queue', '_analyse_type', '_msg', '_mqtt_list')
|
||||||
|
|
@ -35,8 +34,18 @@ class FileUpload(Thread):
|
||||||
|
|
||||||
# self._algStatus = True # 默认关闭
|
# self._algStatus = True # 默认关闭
|
||||||
self._algSwitch = self._context['service']['algSwitch']
|
self._algSwitch = self._context['service']['algSwitch']
|
||||||
self.is_use_llm = True
|
|
||||||
self.cnt = 0
|
|
||||||
|
|
||||||
|
|
||||||
|
self.server_ip = self._context['llm']['server_ip']
|
||||||
|
self.server_port = self._context['llm']['server_port']
|
||||||
|
self.is_use_llm = self._context['llm']['is_use_llm']
|
||||||
|
self.cnt = self._context['llm']['cnt']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#0521:
|
#0521:
|
||||||
default_enabled = str(self._msg.get("defaultEnabled", "True")).lower() == "true"
|
default_enabled = str(self._msg.get("defaultEnabled", "True")).lower() == "true"
|
||||||
|
|
@ -64,9 +73,14 @@ class ImageFileUpload(FileUpload):
|
||||||
answers.append(line)
|
answers.append(line)
|
||||||
return answers
|
return answers
|
||||||
|
|
||||||
def get_llm_res(self, image, prompt):
|
def get_llm_res(self, image, prompt,SERVER_IP,API_PORT):
|
||||||
SERVER_IP = "192.168.10.11"
|
|
||||||
API_URL = f"http://{SERVER_IP}:8000/generate"
|
# SERVER_IP = "192.168.10.11"
|
||||||
|
# API_URL = f"http://{SERVER_IP}:8000/generate"
|
||||||
|
|
||||||
|
SERVER_IP = SERVER_IP
|
||||||
|
|
||||||
|
API_URL = f"http://{SERVER_IP}:{API_PORT}/generate"
|
||||||
|
|
||||||
# _, buffer = cv2.imencode('.jpg', image)
|
# _, buffer = cv2.imencode('.jpg', image)
|
||||||
# is_success, buffer = cv2.imencode('.png', image)
|
# is_success, buffer = cv2.imencode('.png', image)
|
||||||
|
|
@ -99,6 +113,11 @@ class ImageFileUpload(FileUpload):
|
||||||
logger.info(f"无法解析服务器返回的响应: {response.text}")
|
logger.info(f"无法解析服务器返回的响应: {response.text}")
|
||||||
|
|
||||||
new_result = self.extract_answers(result)
|
new_result = self.extract_answers(result)
|
||||||
|
print("###line116",new_result)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
new_result = new_result[1] # 获取第二点内容
|
new_result = new_result[1] # 获取第二点内容
|
||||||
# flag = "不" in result or ("没" in result and "没错" not in result) or "否" in result or "未" in result or "无" in result
|
# flag = "不" in result or ("没" in result and "没错" not in result) or "否" in result or "未" in result or "无" in result
|
||||||
flag = "不存在" in new_result or ("没" in new_result and "没错" not in new_result) or (
|
flag = "不存在" in new_result or ("没" in new_result and "没错" not in new_result) or (
|
||||||
|
|
@ -202,41 +221,60 @@ class ImageFileUpload(FileUpload):
|
||||||
model_info_list = image_result["model_info"]
|
model_info_list = image_result["model_info"]
|
||||||
llm_flag_list = []
|
llm_flag_list = []
|
||||||
msg_list = []
|
msg_list = []
|
||||||
|
|
||||||
|
|
||||||
for model_info in model_info_list:
|
for model_info in model_info_list:
|
||||||
aFrame = model_info["aFrame"]
|
|
||||||
# aFrame_rgb = cv2.cvtColor(aFrame, cv2.COLOR_BGR2RGB)
|
fire_flag = model_info.get("modelCode")
|
||||||
|
print("###line229",fire_flag)
|
||||||
|
|
||||||
|
if fire_flag == "008":
|
||||||
|
|
||||||
|
aFrame = model_info["aFrame"]
|
||||||
|
# aFrame_rgb = cv2.cvtColor(aFrame, cv2.COLOR_BGR2RGB)
|
||||||
|
|
||||||
tar_cls = model_info["detectTargetCode"]
|
tar_cls = model_info["detectTargetCode"]
|
||||||
logger.info("目标类别:{}", tar_cls)
|
logger.info("目标类别:{}", tar_cls)
|
||||||
|
|
||||||
# is_use_llm = True
|
# 0715 : 这块也不对,因为需要具体到目标才可以,否则只看0 1 ,是无法做到判断正确的火情处理,还有大量其他的部分
|
||||||
if tar_cls == '0':
|
|
||||||
# tar = "明火"
|
# is_use_llm = True
|
||||||
tar = "2. 判断图中是否有明火。3. 如果有,识别火势的大小,比如:[无情况/小/中/大]"
|
if tar_cls == '0':
|
||||||
elif tar_cls == '1':
|
# tar = "明火"
|
||||||
# tar = "某种物质燃烧产生的烟雾"
|
tar = "2. 判断图中是否有明火。3. 如果有,识别火势的大小,比如:[无情况/小/中/大]"
|
||||||
tar = "2. 判断图中是否有烟雾。3. 如果有,识别烟雾的颜色,比如:[无烟雾/白/灰白/灰黑]"
|
elif tar_cls == '1':
|
||||||
else:
|
# tar = "某种物质燃烧产生的烟雾"
|
||||||
self.is_use_llm = False
|
tar = "2. 判断图中是否有烟雾。3. 如果有,识别烟雾的颜色,比如:[无烟雾/白/灰白/灰黑]"
|
||||||
llm_flag = True
|
|
||||||
if self.is_use_llm:
|
|
||||||
# prompt = f"我看到图中有{tar},请你判断是否正确。简要回答。"
|
|
||||||
prompt = f"分点进行输出:1. 简短描述图像中的场景。{tar}"
|
|
||||||
logger.info("检测到目标,大模型提示词:{}", prompt)
|
|
||||||
llm_flag, llm_res = self.get_llm_res(aFrame, prompt)
|
|
||||||
llm_flag_list.append(llm_flag)
|
|
||||||
logger.info("检测到目标,大模型识别图中是否存在目标:{}, 大模型输出:{}", llm_flag, llm_res)
|
|
||||||
|
|
||||||
if llm_flag:
|
|
||||||
logger.info("经大模型筛查,小模型识别正确!!!")
|
|
||||||
# cv2.imwrite(f"/home/thsw2/wei/image_res/{self.cnt}_{tar_cls}_1.jpg", aFrame, [cv2.IMWRITE_JPEG_QUALITY, 80])
|
|
||||||
# self.cnt = self.cnt + 1
|
|
||||||
else:
|
else:
|
||||||
logger.info("经大模型筛查,小模型识别错误!!!")
|
self.is_use_llm = False
|
||||||
# cv2.imwrite(f"/home/thsw2/wei/image_res/{self.cnt}_{tar_cls}_0.jpg", aFrame, [cv2.IMWRITE_JPEG_QUALITY, 80])
|
|
||||||
# self.cnt = self.cnt + 1
|
llm_flag = True
|
||||||
|
if self.is_use_llm:
|
||||||
|
# prompt = f"我看到图中有{tar},请你判断是否正确。简要回答。"
|
||||||
|
prompt = f"分点进行输出:1. 简短描述图像中的场景。{tar}"
|
||||||
|
logger.info("检测到目标,大模型提示词:{}", prompt)
|
||||||
|
|
||||||
|
|
||||||
|
# llm_flag, llm_res = self.get_llm_res(aFrame, prompt)
|
||||||
|
|
||||||
|
|
||||||
|
llm_flag, llm_res = self.get_llm_res(aFrame, prompt,self.server_ip,self.server_port)
|
||||||
|
|
||||||
|
llm_flag_list.append(llm_flag)
|
||||||
|
logger.info("检测到目标,大模型识别图中是否存在目标:{}, 大模型输出:{}", llm_flag, llm_res)
|
||||||
|
|
||||||
|
if llm_flag:
|
||||||
|
logger.info("经大模型筛查,小模型识别正确!!!")
|
||||||
|
# cv2.imwrite(f"/home/thsw2/wei/image_res/{self.cnt}_{tar_cls}_1.jpg", aFrame, [cv2.IMWRITE_JPEG_QUALITY, 80])
|
||||||
|
# self.cnt = self.cnt + 1
|
||||||
|
else:
|
||||||
|
logger.info("经大模型筛查,小模型识别错误!!!")
|
||||||
|
# cv2.imwrite(f"/home/thsw2/wei/image_res/{self.cnt}_{tar_cls}_0.jpg", aFrame, [cv2.IMWRITE_JPEG_QUALITY, 80])
|
||||||
|
# self.cnt = self.cnt + 1
|
||||||
else:
|
else:
|
||||||
llm_flag_list.append(llm_flag)
|
llm_flag_list.append(llm_flag)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ai_image = cv2.imencode(".jpg", aFrame)[1]
|
ai_image = cv2.imencode(".jpg", aFrame)[1]
|
||||||
ai_image_name = build_image_name(image_result["current_frame"],
|
ai_image_name = build_image_name(image_result["current_frame"],
|
||||||
|
|
@ -271,6 +309,7 @@ class ImageFileUpload(FileUpload):
|
||||||
remote_image_list.append( tk.result() )
|
remote_image_list.append( tk.result() )
|
||||||
|
|
||||||
for ii, model_info in enumerate(model_info_list):
|
for ii, model_info in enumerate(model_info_list):
|
||||||
|
|
||||||
if llm_flag_list[ii]:
|
if llm_flag_list[ii]:
|
||||||
msg_list.append( message_feedback(request_id,
|
msg_list.append( message_feedback(request_id,
|
||||||
AnalysisStatus.RUNNING.value,
|
AnalysisStatus.RUNNING.value,
|
||||||
|
|
@ -282,6 +321,7 @@ class ImageFileUpload(FileUpload):
|
||||||
longitude=model_info['gps'][0],
|
longitude=model_info['gps'][0],
|
||||||
latitude=model_info['gps'][1],
|
latitude=model_info['gps'][1],
|
||||||
) )
|
) )
|
||||||
|
|
||||||
|
|
||||||
if (not self._algSwitch) or ( self._algStatus and self._algSwitch):
|
if (not self._algSwitch) or ( self._algStatus and self._algSwitch):
|
||||||
for msg in msg_list:
|
for msg in msg_list:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue