网站文章收录,高端设计网站公司,手机上怎么提取公积金,访问域名文章目录 OverviewKey PointsPseudo-code Overview
需要考虑的方面
状态定义和转换条件时序约束空间约束异常处理
状态机的设计需要考虑的场景#xff1a;
没有人人进入人携带垃圾人离开但垃圾留下垃圾消失异常情况#xff08;检测失败、多人多垃圾等#xff09;
Key P… 文章目录 OverviewKey PointsPseudo-code Overview
需要考虑的方面
状态定义和转换条件时序约束空间约束异常处理
状态机的设计需要考虑的场景
没有人人进入人携带垃圾人离开但垃圾留下垃圾消失异常情况检测失败、多人多垃圾等
Key Points
状态设计
NO_PERSON: 初始状态场景为空PERSON_ONLY: 检测到人PERSON_WITH_LITTER: 人和垃圾共同出现LITTER_ONLY: 人离开垃圾留下
状态转移路径
NO_PERSON PERSON_ONLY PERSON_WITH_LITTER LITTER_ONLY
状态转移条件
NO_PERSON - PERSON_ONLY: 检测到人PERSON_ONLY - NO_PERSON: 人消失PERSON_ONLY - PERSON_WITH_LITTER: 人靠近垃圾PERSON_WITH_LITTER - LITTER_ONLY: 人离开但垃圾留下PERSON_WITH_LITTER - PERSON_ONLY: 垃圾消失LITTER_ONLY - NO_PERSON: 垃圾消失
约束条件
空间约束人和垃圾的距离阈值时间约束状态持续时间的上下限检测约束目标检测的置信度阈值异常处理 状态超时重置 PERSON_WITH_LITTER 的持续时间过长截断当前帧为结束帧 多目标情况处理 遍历每个 (Person - Litter) Pair, 找到距离最近的 Pair.
Pseudo-code
定义 状态枚举:NO_PERSON 0 # 场景中没有人和垃圾PERSON_ONLY 1 # 只有人PERSON_WITH_LITTER 2 # 人和垃圾共同出现LITTER_ONLY 3 # 只有垃圾定义 类 LitteringDetector:属性:current_state: 当前状态frame_start: 事件开始帧frame_end: 事件结束帧state_duration: 当前状态持续时间# 配置参数MAX_DISTANCE: 人和垃圾的最大距离阈值MIN_DURATION: 状态持续最小帧数MAX_DURATION: 状态持续最大帧数方法 初始化():current_state NO_PERSONframe_start Noneframe_end Nonestate_duration 0方法 检测单帧(frame, frame_id):# 1. 目标检测persons 检测人物()litters 检测垃圾()# 2. 状态转移逻辑如果 current_state NO_PERSON:如果 检测到人:转换到 PERSON_ONLY重置状态持续时间否则如果 current_state PERSON_ONLY:如果 没有检测到人:转换到 NO_PERSON否则如果 检测到人和垃圾且距离小于阈值:转换到 PERSON_WITH_LITTER记录开始帧 frame_start否则如果 current_state PERSON_WITH_LITTER:如果 没有检测到人但检测到垃圾:转换到 LITTER_ONLY记录结束帧 frame_end返回检测到丢垃圾事件否则如果 没有检测到垃圾:转换到 PERSON_ONLY否则如果 current_state LITTER_ONLY:如果 没有检测到垃圾:转换到 NO_PERSON# 3. 更新状态持续时间state_duration 1# 4. 状态超时检查如果 state_duration MAX_DURATION:重置到初始状态 NO_PERSON返回 未检测到事件方法 检查空间关系(person, litter):计算人和垃圾的距离返回 距离 MAX_DISTANCE