Repository navigation
i18n: Korean localization (review-hardened, supersedes #18) - #19
Merged
Merged
Conversation
解锁(服务/Session 0)此前固定走 DirectShow/RGB24,录入(控制台)走 Media Foundation/NV12。两条管线的色彩/增益输出不同,使同一人的嵌入 产生 ~0.4 的系统性偏移(实测成功匹配 0.66-0.75,贴着 0.75 阈值), 跨环境识别频繁失败且重新录入无法修复。 - 服务模式改为 MF 优先(与录入同管线),MF 在 Session 0 初始化失败 时自动回退 DirectShow - 新增 CameraPipeline 状态跟踪活跃管线,抓帧/释放/暂停/stall 重建 全部按实际管线分发;MF 中途 stall 时服务模式可切 DS 继续认证 - 启动与每次认证日志输出实际管线(camera=MF/DS),便于现场归因
跨环境识别失败的第三条根因:过曝/欠曝。失败帧实测人脸区域 12-25%
像素截断在 255(整帧亮度却看似正常)——增益类校正救不回已截断的
细节,必须从源头把脸部亮度归一化到固定目标域。
- 新增 common/exposure_control.{h,cpp}:FaceExposureController 反馈环
- 测量人脸区域亮度(BT.601 子采样,非整帧——整帧会掩盖隐藏过曝)
- 相机通道优先:手动曝光/增益(按 range 跨度自适应单位与方向,
兼容 -8..0 档制与 -10000/档惯例制驱动,最小步进 1 单位)
- 数字增益兜底:每帧把有效脸亮度拉到 target(110),硬件收敛后
增益自然回落到 1.0;硬件不响应时它就是稳态校正
- 步进限速 400ms:防 30fps 下驱动响应延迟导致的明暗振荡(预览拉风箱)
- 不响应降级:连续 3 步亮度不动 → 判定硬件假支持 → 纯数字并警告一次
- 释放时恢复相机 Auto flags(Reset 必调)
- 日志门控:仅实际调节或进出带时输出,收敛后安静
- MF/DS 采集类 QI 并缓存 IAMVideoProcAmp/IAMCameraControl
- 服务端:warmup 后新增人脸曝光收敛段(≤9 帧);grabFrame 统一应用
会话增益,匹配/liveness/verify 全程同域;附件/释放/重建全路径
attach-Reboot 一致
- 控制台:预览循环 steer(人脸帧)或应用会话增益(无脸帧);采集
样本与预览同域;StopPreview/重初始化路径 Reset
- 配置:face_exposure_control/target/band(默认 off);设置页新增开关;
启用时服务端 WARN 提示旧锚点域可能偏移(实测旧锚点仍可匹配)
- 实测:开启后过曝场景匹配距离 0.66+ → 0.47;暗场景首帧即入带;
旧锚点无需重录
实测发现:部分笔记本摄像头(本机 HD WebCam)驱动在手动曝光被设置后 进入不可逆污染态——Set(Exposure,...,Auto) 恢复无效,长曝光档残留导致 画面严重过曝(clip 50%+)+ 帧率暴跌(1fps),认证匹配循环静默空转到 超时("卡在识别中"),且污染跨会话/跨进程残留。 - 严重过曝降级:人脸亮度>200 或截断>50% → 立即恢复 Auto 并降级纯数字 (数字增益救不回已截断细节,但停止恶化;探针时即快照原始值) - 反向响应降级:步进后下一帧亮度反向移动>25 → 连续 2 次判驱动 "与 AE 打架" → 同样恢复降级 - 黑名单持久化:降级后写 HKLM\SOFTWARE\FaceLogin\ExposureHardwareBroken=1, 此后所有会话(服务+控制台)跳过硬件通道,只跑数字增益——杜绝 "重启后再踩一次雷"(此相机驱动已知有毒) - steer 循环提前退出:降级后不再跑满 9 次无意义迭代,认证立即进匹配 - Probe 时即快照曝光/增益原始值:相机开局处于残留手动态也能恢复
PR #18 review 修复(H1/H2): - H1 服务↔CP 翻译不对称:服务端 3 处本地化改回中文原文,删除服务端 LocaleCatalog——管道消息统一'服务发中文原文、CP 为唯一翻译方', 消除两端 locale 状态不同步导致的中韩混合锁屏文案 - H1 CP 匹配表补全:新增 service.cameraUnavailable(摄像头不可用); service.* fallback 从英文统一为中文,locale 缺失时整张磁贴一致 回退中文而非中英混合 - H1 GetSerialization 轮询路径:passwordless/error 文本经 LocalizeServiceMessage 本地化(此前绕过匹配表直接上屏) - H2 auto 语言解析:SYSTEM 进程(服务/LogonUI)的 GetUserDefaultLocaleName 解析到的是系统配置文件语言而非登录用户 显示语言——改为 WTSGetActiveConsoleSessionId + WTSQueryUserToken + HKEY_USERS\<SID>\Control Panel\Desktop\MuiCached\UiLang 读取 交互会话用户语言;登录界面/无权限时回退原逻辑 - CMake:face_service/credential_provider/enrollment_app/diag_glasses 链接 wtsapi32(WTSQueryUserToken)
锁屏实测定位:auto 在服务/CP(SYSTEM 进程)一直解析成 zh-CN: - WTSQueryUserToken 需要 SE_TCB_NAME 启用,LogonUI 令牌没有 (err=1314)——特权方案不可行 - MuiCached\UiLang 不是权威位置(本机不存在);真正的用户 UI 语言在 HKEY_USERS\<SID>\Control Panel\Desktop\PreferredUILanguages (GetUserDefaultUILanguage 的底层数据源,切换显示语言后写入) - WTSUserSID 信息类当前 SDK 未公开 最终方案(无特权、锁屏可用): WTSGetActiveConsoleSessionId → WTSQuerySessionInformation (WTSUserName+WTSDomainName) → LookupAccountNameW → SID → HKEY_USERS\<SID>\Control Panel\Desktop\PreferredUILanguages 首项 → NormalizeTag。登录界面(无用户)与无权限进程自动回退 GetUserDefaultLocaleName。 日志定稿:保留每实例 4 行结果日志(ResolveLocale 来源+结果 / LocaleCatalog::Load / Provider / Credential),删除排障期逐步日志。
(rebase 线性化丢弃 merge commit 时遗失,重新应用)
EthanZer0
force-pushed
the
feature/i18n-ko-KR
branch
from
August 27, 2026 01:06
371b460 to
ac992c2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
替代 PR #18(其 head 分支位于贡献者 fork,无法承载本轮 review 修复)。
包含 yuisatomi 原 4 个提交(作者署名保留)+ 基于 review 的两处高严重度修复:
H1 双端消息翻译单一化:服务端停止翻译管道消息(统一发中文原文),CP 为唯一翻译方;补齐匹配表(含摄像头不可用)、GetSerialization 路径本地化、fallback 统一中文;新增 credential.submitted key(223 keys 对齐)。
H2 auto 语言解析:SYSTEM 进程(服务/LogonUI)原实现解析到系统语言而非登录用户显示语言。实测定位:WTSQueryUserToken 在 LogonUI 缺 SeTcbPrivilege(err 1314)、MuiCached\UiLang 非权威位置。最终方案:WTSUserName+WTSDomainName+LookupAccountNameW → SID → HKEY_USERS<SID>\Control Panel\Desktop\PreferredUILanguages(GetUserDefaultUILanguage 底层数据源)。锁屏实测韩语通过。
分支已 merge 过 dev-1.9.0,合并到 dev-1.9.0 为纯追加(7 个提交),无冲突。