From caa7adb27c76947309f20d4f6b84343dbce98686 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Thu, 9 Apr 2026 10:00:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E9=9D=9E=E6=9C=BA?= =?UTF-8?q?=E5=8A=A8=E8=BD=A6=E8=BF=9D=E5=81=9C=E5=91=8A=E8=AD=A6=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=92=8CVLM=E5=A4=8D=E6=A0=B8=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/constants.py | 10 +++++++--- app/services/vlm_service.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/constants.py b/app/constants.py index 617d08f..d44ccd2 100644 --- a/app/constants.py +++ b/app/constants.py @@ -34,6 +34,7 @@ class AlarmType(str, Enum): INTRUSION = "intrusion" ILLEGAL_PARKING = "illegal_parking" VEHICLE_CONGESTION = "vehicle_congestion" + NON_MOTOR_VEHICLE_PARKING = "non_motor_vehicle_parking" ALARM_TYPE_NAMES: Dict[str, str] = { @@ -41,6 +42,7 @@ ALARM_TYPE_NAMES: Dict[str, str] = { AlarmType.INTRUSION: "周界入侵", AlarmType.ILLEGAL_PARKING: "车辆违停", AlarmType.VEHICLE_CONGESTION: "车辆拥堵", + AlarmType.NON_MOTOR_VEHICLE_PARKING: "非机动车违停", } # VLM 场景下的简短名称(用于截图分析提示词,尽量精炼) @@ -49,6 +51,7 @@ ALARM_TYPE_SHORT_NAMES: Dict[str, str] = { AlarmType.INTRUSION: "入侵", AlarmType.ILLEGAL_PARKING: "违停", AlarmType.VEHICLE_CONGESTION: "拥堵", + AlarmType.NON_MOTOR_VEHICLE_PARKING: "非机动车违停", } @@ -145,10 +148,11 @@ ALARM_LEVEL_NAMES: Dict[int, str] = { # 各算法的默认告警等级 ALARM_TYPE_DEFAULT_LEVEL: Dict[str, int] = { - AlarmType.INTRUSION: 1, # 重要 - AlarmType.LEAVE_POST: 2, # 普通 - AlarmType.ILLEGAL_PARKING: 2, # 普通 + AlarmType.INTRUSION: 1, # 重要 + AlarmType.LEAVE_POST: 2, # 普通 + AlarmType.ILLEGAL_PARKING: 1, # 重要(与 edge 端一致) AlarmType.VEHICLE_CONGESTION: 2, # 普通 + AlarmType.NON_MOTOR_VEHICLE_PARKING: 2, # 普通 } diff --git a/app/services/vlm_service.py b/app/services/vlm_service.py index bd7dd64..19942c3 100644 --- a/app/services/vlm_service.py +++ b/app/services/vlm_service.py @@ -19,6 +19,7 @@ VLM_TYPE_NAMES = { "intrusion": "周界入侵", "illegal_parking": "车辆违停", "vehicle_congestion": "车辆拥堵", + "non_motor_vehicle_parking": "非机动车违停", } # 算法类型 → VLM Prompt 模板 @@ -58,6 +59,17 @@ description要求:≤15字,直接说结论,注明大致车辆数。 告警成立示例:"约5辆车拥堵在路口" 误报示例:"车辆正常通行无拥堵" 仅输出JSON:{{"confirmed":true,"description":"..."}}""", + + "non_motor_vehicle_parking": """你是安防监控AI复核员。算法类型:非机动车违停检测,监控区域:{roi_name}。 +截图显示时间:{timestamp}。 +任务:判断图中是否有非机动车(自行车、电动车、摩托车等)违规停放在禁停区域。 +分析要点: +1. 是否存在非机动车(自行车、电动车、共享单车等) +2. 非机动车是否处于静止停放状态(而非骑行经过) +3. 是否在禁停区域/消防通道内 +4. 停放是否造成通道阻塞 + +请用JSON回复:{{"is_real": true/false, "confidence": 0.0-1.0, "reason": "判断依据"}}""", } # 通用降级 prompt(未知算法类型时使用)