Skip to content

Commit 7fe3da8

Browse files
committed
merge:合并2.0.0开发分支到主分支
2 parents 9ebb6a3 + a491deb commit 7fe3da8

101 files changed

Lines changed: 6491 additions & 3956 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitignore‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ vcpkg/
99
models/*.dat
1010
models/*.bz2
1111
*.onnx
12+
# Small runtime pose model is intentionally shipped with the installer.
13+
!installer/FaceLoginSetup/resources/models/head_pose_mobilenetv2.onnx
1214

1315
# IDE / VS
1416
.vs/
@@ -65,6 +67,7 @@ docs/
6567
scripts/*
6668
!scripts/check-locales.mjs
6769
!scripts/sync-locales.mjs
70+
!scripts/build-windows.ps1
6871

6972
# ZCode CLI session data
7073
.zcode/

‎CHANGELOG.md‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# FaceLogin 更新日志
2+
3+
## 2.0.0
4+
5+
本版本以 `v1.9.0` release 为基线整理。以下内容按最终产品能力分类,记录相对于 1.9.0 的新增能力、架构重构和用户可感知的改进;仅针对本轮 2.0.0 改造过程中临时引入的问题所做的内部回归修复,不单独列为更新项。
6+
7+
### 一、识别与摄像头管线
8+
9+
- 保持 SCRFD 检测、106 点地标、InsightFace 512-D embedding、112×112 RGB 输入和 ArcFace 五点对齐,录入与锁屏认证继续使用同一组 ONNX 模型。
10+
- 服务与 Console 均采用 Media Foundation 优先、DirectShow 回退的摄像头采集策略;连续抓帧用于稳定摄像头驱动的自动曝光。
11+
- 移除实验性的统一光照归一化、硬件曝光控制、暗光增强设置和相关旧代码,当前版本不再通过软件改写识别输入亮度。
12+
13+
### 二、头部姿态检测与锁屏门控
14+
15+
- 集成 `head_pose_mobilenetv2.onnx`,使用 MobileNetV2 6D Pose 估计 Yaw、Pitch、Roll。
16+
- 锁屏识别在人脸匹配前增加姿态门控,只接受可接受范围内的人脸帧,并通过本地化状态提示具体调整方向。
17+
- 当前角度约定为:右转 Yaw 为正、左转为负;抬头 Pitch 为正、低头为负;左倾 Roll 为正、右倾为负。
18+
- 当前锁屏门控范围为:正面 `|yaw|≤15°、|pitch|≤10°、|roll|≤12°`;可接受 `|yaw|≤25°、|pitch|≤15°、|roll|≤18°`;超过 `30°/25°/25°` 进入严重姿态提示。
19+
20+
### 三、认证会话与锁屏交互
21+
22+
- 重建 Credential Provider 的认证会话状态:`Waiting → Authenticating → Ready → Submitted`,每次认证使用独立 attempt ID。
23+
- 管道后台读取线程成为终端响应的唯一入口,`GetSerialization()` 只负责消费 `Ready` 状态并打包凭据。
24+
- 输入线程和管道线程采用确定性停止与回收,服务停止由主线程统一释放摄像头、模型和管道资源。
25+
- 增加安全桌面中央状态浮层;标题和状态字段默认隐藏,浮层不可用时才回退到凭据字段显示。
26+
- Anti-Spoof 将身份匹配与活体推理绑定到同一候选账号,任一通过的联合帧即可完成认证;Blink 保留眨眼后的短窗口匹配确认,`none` 跳过活体检查。
27+
- 过滤鼠标移动造成的误触发,仅将键盘按键和鼠标按键作为普通解锁的主动触发输入。
28+
- 修正冷启动触发逻辑:默认情况下开机进入锁屏后自动开始识别;启用 `cold_boot_key_trigger` 后才改为等待键盘或鼠标按键。
29+
- 优化认证超时和未识别后的重试:当前会话结束后清理旧状态,用户再次产生有效输入即可重新开始一次完整的人脸认证,不继承上一次的超时计时或终端结果。
30+
31+
### 四、Console 与多语言
32+
33+
- Console 增加单实例限制,避免多个管理窗口同时占用摄像头和模型资源。
34+
- 修正 Console 高 DPI 显示和程序清单配置。
35+
- 人脸重命名、删除和安装器确认流程使用统一设计语言的自定义弹窗,不再依赖 WebView 原生弹窗。
36+
- 补齐录入页面说明和姿态状态的多语言内容;服务端 IPC 状态和错误继续传输 locale key,不直接传输显示文本。
37+
38+
### 五、安装器与卸载器
39+
40+
- 新增轻量独立 `Uninstall.exe`,通过独立 build tag 构建,不内嵌模型、服务、Console 和运行库。
41+
- 安装器支持安装目录自动追加 `FaceLogin`、大小写不敏感的目录判断和最终路径合法性检查。
42+
- 支持使用 Windows 原生 Shell Link API 创建桌面快捷方式,并在卸载时仅删除指向当前安装的快捷方式。
43+
- 卸载流程会停止并删除服务、注销 Credential Provider、清理安装文件、模型、语言包、配置、用户数据、日志和注册表;安装目录仅在安全清空后移除。
44+
- 独立卸载器通过临时清理副本删除自身,避免留下空安装目录或要求重启系统。
45+
- 安装、升级和卸载确认使用自定义弹窗;安装和清理辅助流程隐藏控制台窗口。
46+
- 使用 `build-installer.ps1` 先构建轻量卸载器,再构建完整 `FaceLoginSetup.exe`。
47+
48+
### 六、模型、配置与打包
49+
50+
- 保留 `w600k_mbf.onnx`、512-D embedding、112×112 RGB 输入、ArcFace 五点对齐和 `users.dat` V5 格式。
51+
- 新增 MobileNetV2 姿态模型及其许可证文件,随包模型总量约 31 MB。
52+
- 删除 `jpeg62.dll`、`libpng16.dll`、`z.dll` 相关依赖和 `diag_glass` 诊断程序。
53+
- 版本标识统一为 2.0.0,安装器、Console、服务和多语言界面同步使用当前版本信息。
54+
- 本次 2.0.0 的认证、姿态和安装器改造不要求当前 V5/ONNX 模板重新录入;更早的旧对齐 `legacy` 模板仍按原有兼容规则标记为需重新录入。
55+
- 每个账号最多保存 10 张人脸,Console 人脸管理页和三种语言资源同步显示该上限。

‎CMakeLists.txt‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
11
cmake_minimum_required(VERSION 3.20)
2-
project(FaceLogin VERSION 1.6.0 LANGUAGES CXX)
2+
project(FaceLogin VERSION 2.0.0 LANGUAGES CXX)
33

44
set(CMAKE_CXX_STANDARD 20)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66

77
option(FACELOGIN_BUILD_VISION_COMPONENTS
88
"Build the face service and enrollment console (requires dlib/ONNX Runtime)"
99
ON)
10-
11-
# dlib and ONNX Runtime are only needed by the vision components. Keeping the
12-
# credential provider independently buildable makes native locale changes
13-
# quick to validate and enables a lightweight CI job.
1410
if(FACELOGIN_BUILD_VISION_COMPONENTS)
1511
find_package(dlib CONFIG REQUIRED)
12+
13+
# The shipped applications operate on camera buffers and ONNX tensors; they do
14+
# not use dlib's file-image loaders. The vcpkg dlib target advertises JPEG,
15+
# PNG, and zlib as unconditional transitive link items, which makes
16+
# z-applocal copy their DLLs even though the final binaries do not import them.
17+
# Keep only the numerical BLAS/LAPACK and Windows system dependencies needed by
18+
# this application in dlib's link interface.
19+
get_target_property(FACELOGIN_DLIB_LINK_LIBRARIES
20+
dlib::dlib INTERFACE_LINK_LIBRARIES)
21+
if(FACELOGIN_DLIB_LINK_LIBRARIES)
22+
list(FILTER FACELOGIN_DLIB_LINK_LIBRARIES INCLUDE
23+
REGEX "BLAS::BLAS|LAPACK::LAPACK|ws2_32|winmm")
24+
set_property(TARGET dlib::dlib PROPERTY
25+
INTERFACE_LINK_LIBRARIES "${FACELOGIN_DLIB_LINK_LIBRARIES}")
26+
endif()
27+
unset(FACELOGIN_DLIB_LINK_LIBRARIES)
28+
1629
find_package(onnxruntime CONFIG REQUIRED)
1730
endif()
1831

0 commit comments

Comments
 (0)