人脸识别 - 去重时间窗口

人脸识别去重时间窗口

1、基本介绍
  1. 人脸识别系统中存在去重时间窗口,也可以叫防重复识别间隔

  2. 同一张人脸被识别后,在设定的时间窗口内再次出现时,不再重复处理

  3. 该窗口时长可配置,常见的例如,5秒、3秒,具体取决于业务场景对效率的要求

2、代码实现
java 复制代码
// 识别窗口,单位秒
public static final int THROTTLE_WINDOW = 10;

// key 为人脸 Id
// value 为最近一次被采纳识别的时间戳
private static final Map<Integer, Long> identifyTimeMap = new HashMap<>();

public static boolean isInThrottle(int faceImgId) {
    Long lastIdentifyTime = identifyTimeMap.get(faceImgId);
    if (lastIdentifyTime == null) return false;
    return System.currentTimeMillis() - lastIdentifyTime < THROTTLE_WINDOW * 1000L;
}

public static void recordIdentify(int faceImgId) {
    identifyTimeMap.put(faceImgId, System.currentTimeMillis());
}

public static void resetThrottle() {
    identifyTimeMap.clear();
}

// 返回 true 表示要被拦截,返回 false 表示不被拦截
java 复制代码
// 识别窗口,单位秒
public static final int THROTTLE_WINDOW = 10;

// key 为人脸 Id
// value 为最近一次被采纳识别的时间戳
private static final Map<Integer, Long> identifyTimeMap = new HashMap<>();

public static boolean handleThrottle(int faceImgId) {
    Long lastIdentifyTime = identifyTimeMap.get(faceImgId);

    if (lastIdentifyTime != null
            && System.currentTimeMillis() - lastIdentifyTime < THROTTLE_WINDOW * 1000L) {
        return true;
    }

    identifyTimeMap.put(faceImgId, System.currentTimeMillis());
    return false;
}

public static void resetThrottle() {
    identifyTimeMap.clear();
}

// 返回 true 表示要被拦截,返回 false 表示不被拦截
相关推荐
梦想画家7 小时前
SQLMesh Python 模型入门(三):前后置语句、蓝图建模与避坑指南
大数据·python·sqlmesh
Ramble_Naylor7 小时前
async/await:让一个线程同时等很多件事
开发语言·rust
ZealSinger8 小时前
Spring7 RestTemplate弃用迁移
java·spring·后端开发·restclient
迅猛龙办公室8 小时前
Python实现绘制同切圆
开发语言·python
朝朝辞暮i8 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
弹简特8 小时前
【Java项目-企悦抽】16-抽奖模块01-获取活动完整信息接口实现
java·开发语言·状态模式·springboot
言乐68 小时前
Python语音检索
开发语言·python·django·virtualenv·pygame
BD_Marathon9 小时前
多轮对话聊天机器人
开发语言·机器人·c#
泡茶喝茶写代码9 小时前
A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
Sarvartha9 小时前
接口基础知识
java·开发语言