你有没有想过,看一眼你的脸能榨出多少信息?手机相册能把同一个人的照片归到一起。小区门禁一刷脸就开门。直播间里,你的脸被美颜瞬间修好。这些事背后,都是同一类技术:人脸分析。过去做出这样的功能,得有一支算法团队,还得有一堆昂贵的模型。现在有个叫UniFace的开源项目,把这些能力打包成一个 Python 工具库,装好就能用。官方的定位是把检测、对齐、关键点、识别、解析、视线、属性和防伪,都放在同一套接口下。一张脸,15 种读法按官方 README 的说法,UniFace 覆盖 15 类任务。我把它们换成大白话,分成六组:① 找到脸、量出脸人脸检测:先找出照片里哪儿有脸,相当于给每张脸画个框。面部关键点:在脸上标出几十到几百个点,眼角、嘴角、鼻尖都算,可以做美颜、做表情动画。人脸质量评估:给一张脸的可用度打分。糊了、歪了、被挡了,分数就低。② 把脸抠出来人脸解析:把脸分成皮肤、眉毛、嘴唇、头发等 19 个区域,做虚拟试妆用得上。人像抠图:把人从背景里干净地分离出来,视频会议里的虚拟背景就是这个原理。③ 看你朝哪儿头部姿态:判断你是抬头、低头还是侧脸。视线估计:判断你的眼睛正盯着哪个方向。④ 读脸年龄、性别、种族情绪:开心、生气、惊讶等(AffectNet 的 7 类或 8 类标签)脸部状态:睁眼还是闭眼、戴不戴眼镜或墨镜、戴不戴口罩⑤ 辨真假活体检测(防伪):分辨镜头前是真人,还是一张照片、一段翻拍视频。刷脸支付要防被冒用,就靠它。⑥ 认人,或者藏人人脸识别:判断两张照片是不是同一个人。人脸跟踪:在视频里给同一个人一个固定编号。向量库检索:在成千上万张脸里,快速找出最像的那一个。人脸匿名化:一键把脸打码。争议在哪:一个工具,两种用法最让我觉得微妙的,是它把两头都做了。一头,是能识别你是谁、猜你多大、判断你的情绪和种族的能力。这些功能放在监控场景里,很容易越界。学界对靠脸判断情绪的准确性也一直有争议,毕竟你脸上的表情,不一定等于你心里的感受。另一头,是同一个项目里专门有一个隐私模块,官方文档写得很直白:人脸匿名化通过模糊或遮盖图片和视频里的脸来保护隐私,并且提供五种打码方式。也就是说,认出你和帮你藏起来,用的是同一套底层技术。技术本身没有立场,用它的人才有。它把门槛从需要一个团队降到了会复制粘贴代码,这对做正经产品的人是好消息,对想乱来的人,门槛也一起降低了。所以我的建议是,以后看到刷脸,不妨多问一句:这张脸被拿去做了什么?存在哪里?谁能查?顺带提醒一个商用的坑。UniFace 本身是 MIT 协议,但部分预训练权重的协议并不一样,商用前需要先核对许可。README 和授权页里点名过 YOLOv5-Face、YOLOv8-Face 的权重是 GPL-3.0,FairFace 的权重是 CC BY 4.0。代码免费,不等于模型也能随便商用。技术爱好者专区1. 安装...Pythonpip install uniface[cpu] # CPU 和 Apple Siliconpip install uniface[gpu] # NVIDIA CUDA按官方说明,它支持 CPU、Apple Silicon 和 CUDA,权重在首次使用时自动下载,并用 SHA-256 校验。2. 一个 API到底怎么用核心是 FaceAnalyzer。官方说明:它一次调用就能完成检测、对齐和识别,属性类模型需要你按需加进去。...Pythonimport cv2from uniface import FaceAnalyzer, FairFaceanalyzer FaceAnalyzer(predictors[FairFace()])for face in analyzer.analyze(cv2.imread(photo.jpg)):print(face.bbox, face.sex, face.age_group, face.embedding.shape)设计思路很清楚:bbox(人脸框)、confidence(置信度)、landmarks(关键点)、embedding(特征向量)始终有值。年龄、性别、种族、情绪、质量等属性,在你没传入对应 predictor 之前保持为 None。这种按需加载的设计,好处是你只为用到的功能付算力。3. 模型底座:每个任务都能换模型4. 隐私模块:三行代码给人脸打码这是最适合新手上手的功能。以下代码来自官方文档:...Pythonfrom uniface.detection import RetinaFacefrom uniface.privacy import BlurFaceimport cv2detector RetinaFace()blurrer BlurFace(methodgaussian, blur_strength5.0)image cv2.imread(photo.jpg)faces detector.detect(image)anonymized blurrer.anonymize(image, faces)cv2.imwrite(anonymized.jpg, anonymized)官方提供五种打码方式:方法效果pixelate马赛克,新闻里最常见gaussian平滑模糊blackout纯色遮盖,隐私性最强elliptical椭圆形模糊,更贴合脸型median保边模糊,带点艺术效果5. 实时摄像头打码...Pythonimport cv2from uniface.detection import RetinaFacefrom uniface.privacy import BlurFacedetector RetinaFace()blurrer BlurFace(methodpixelate)cap cv2.VideoCapture(0)while True:ret, frame cap.read()if not ret:breakfaces detector.detect(frame)frame blurrer.anonymize(frame, faces, inplaceTrue)cv2.imshow(Anonymized, frame)if cv2.waitKey(1) 0xFF ord(q):breakcap.release()cv2.destroyAllWindows()inplaceTrue 会直接修改原图,更快也更省内存。做直播或监控流处理时值得开。6. 进阶玩法:只给别人打码文档里还有一个很实用的思路:先用识别模型提取每张脸的特征向量,跟白名单里的人比对相似度,匹配上的不打码,其余的全部打码。适合视频里只保留自己出镜这类场景。核心逻辑就是余弦相似度加阈值,官方示例的默认阈值是 0.6。7. 值得关注的工程细节模型可替换:同一任务有多个模型可选,可以在速度和精度之间自己取舍。全平台加速:支持 CPU、Apple Silicon、NVIDIA CUDA。自带向量检索:内置基于 FAISS 的向量库,做以脸搜脸不用另外搭。有完整文档:含 Notebook、教程、模型库和阈值校准指南更多transformerVITswin tranformer 参考头条号人工智能研究所 v号人工智能研究Suo, 启示AI科技动画详解transformer 在线视频教程