Face-Pose-Net

GitHub
509 107 较难 1 次阅读 2周前图像
AI 解读 由 AI 自动生成,仅供参考

Face-Pose-Net 是一款基于深度卷积神经网络的开源工具,专为从单张无约束图像中鲁棒地估算人脸 3D 姿态(6 自由度)或投影矩阵参数而设计。它主要解决了传统人脸对齐方法在极端条件下的失效难题,例如大角度侧脸、面部遮挡或低分辨率场景。在这些复杂情况下,常规的关键点检测往往难以奏效,而 Face-Pose-Net 无需依赖人脸关键点检测器,即可直接输出精确的姿态数据,并支持生成多视角渲染图像以辅助数据增强。

该工具特别适合计算机视觉领域的研究人员和开发者使用,尤其是那些从事人脸识别、3D 重建或需要高质量训练数据合成的团队。其核心技术亮点在于采用了“无关键点”(Landmark-Free)的对齐策略,并提供了两种灵活的预测模式:既可以直接输出包含缩放、俯仰、偏航等信息的 6DoF 头部姿态,也能预测 3x4 投影矩阵的 11 个参数,且两者支持相互转换。此外,项目最新升级版已将主干网络替换为 ResNet-101,进一步提升了在复杂环境下的预测精度与稳定性,为构建端到端的人脸分析流水线提供了坚实基础。

使用场景

某安防团队正在构建一套全天候人脸门禁系统,需处理监控摄像头中大量侧脸、遮挡及低分辨率的抓拍图像。

没有 Face-Pose-Net 时

  • 极端角度失效:传统关键点检测算法在人脸偏转超过 45 度(半侧面)或接近正侧面时,无法定位五官,导致系统直接丢弃这些有效样本。
  • 流程依赖繁琐:必须串联“人脸检测 - 关键点定位 - 姿态估算”多个独立模块,任一环节出错(如眼部被口罩遮挡)都会导致后续姿态计算崩溃。
  • 数据增强困难:由于缺乏精准的 3D 姿态参数(6DoF),难以生成高质量的多视角合成数据来训练鲁棒性更强的识别模型。
  • 低分辩率表现差:在远距离监控画面中,模糊的人脸特征让基于局部特征点的传统方法误差极大,无法满足实际对齐需求。

使用 Face-Pose-Net 后

  • 无惧极端视角:Face-Pose-Net 基于卷积神经网络直接回归 3D 姿态,即使在大角度侧脸、部分遮挡或低分辨率条件下,仍能精准输出 6 自由度姿态信息。
  • 端到端高效推理:摒弃了对人脸关键点检测器的依赖,直接从裁剪后的人脸框输入即可一步到位估算姿态,大幅降低了系统延迟和级联错误率。
  • 自动化数据增强:利用预测出的精确投影矩阵,可结合内置渲染器自动生成多角度的人脸渲染图,显著提升了识别模型在复杂视角下的泛化能力。
  • 鲁棒性显著提升:即使在光照不均或画质模糊的监控场景中,依然能稳定获取可靠的 3x4 投影矩阵参数,确保人脸对齐流程不中断。

Face-Pose-Net 通过“去关键点化”的直接估算策略,彻底解决了复杂场景下人脸姿态感知难的问题,为高鲁棒性视觉系统提供了核心支撑。

运行环境要求

操作系统
  • Linux
GPU
  • 支持 GPU(运行脚本需指定 gpu_id),但未说明具体型号、显存大小或 CUDA 版本要求
  • 同时也支持 CPU 运行
内存

未说明

依赖
notes代码仅在 Linux 上经过测试。建议使用 git clone --recursive 克隆项目以包含渲染器子模块。运行前需手动下载 FPN 模型文件和 BFM 形状/表情文件并放入指定文件夹。输入图像需要提供人脸边界框坐标(x, y, width, height)。该项目不使用人脸关键点检测器,而是直接估计 6DoF 头部姿态或投影矩阵。
python2.7
TensorFlow
OpenCV Python Wrapper
Numpy
Face-Pose-Net hero image

快速开始

面部姿态网络

预告图 极端人脸对齐示例: 使用我们的FacePoseNet将人脸渲染为45度偏航角(对齐至半侧脸)。这些图像来自IJB-A数据集,展示了极端的视角条件,包括近似侧脸、遮挡以及低分辨率等。这类情况通常超出了现有面部关键点检测方法的处理能力,但我们的FacePoseNet却能轻松应对并实现精确对齐。

本页面包含深度卷积神经网络模型及Python代码,用于从无约束图像中鲁棒地估计6自由度的3D人脸姿态,且无需使用面部关键点检测器。该方法在论文中有所介绍:

张福俊、Tran A.、Hassner T.、Masi I.、Nevatia R.、Medioni G.,《FacePoseNet:为无关键点人脸对齐正名》(https://arxiv.org/abs/1708.07517),第七届IEEE人脸与手势分析与建模研讨会,ICCV工作坊,2017年[1]。

本次发布将我们的FacePoseNet(FPN)与Masi等人[2,5]的人脸渲染器整合在一起,后者可单独从该项目页面获取。最终形成一个端到端的流程,能够无缝估计面部姿态,并生成多种渲染视图,用于人脸对齐和数据增强。

预告图

更新内容(修改与新增功能,2018年12月20日)

  • FPN结构改为ResNet-101,以提升姿态预测性能 fpn-resnet101
  • 新增两种基于弱透视变换假设的FPN版本
  • 将6DoF头部姿态转换为3×4投影矩阵的代码见此处
  • 将11个参数/3×4投影矩阵转换为6DoF头部姿态的代码见此处
  • 对应的3D形状和关键点可通过预测的6DoF头部姿态获得由6DoF推导的3D形状,或通过预测的11个参数获得由11个参数推导的3D形状
  • 下载新的FPN模型:请将所有模型文件放在此处并放入models文件夹内
  • 下载BFM模型:请将BFM形状和表情文件放在此处并放入BFM文件夹内
  • 运行新FPN预测6DoF头部姿态:
$ python main_predict_6DoF.py <gpu_id> <input-list-path>
  • 运行新FPN预测投影矩阵的11DoF参数:
$ python main_predict_ProjMat.py <gpu_id> <input-list-path>

我们提供了一个示例输入列表,可在此处找到。

<FILE_NAME, FACE_X, FACE_y, FACE_WIDTH, FACE_HEIGHT>

其中<FACE_X, FACE_y, FACE_WIDTH, FACE_HEIGHT>是紧致人脸边界框的左上角坐标、宽度和高度,可由人工标注、人脸检测器或关键点检测器获取。预测得到的6DoF和11DoF结果将分别保存在output_6DoF文件夹output_ProjMat文件夹中。而由6DoF和11DoF推导出的3D形状和关键点则分别保存在output_6DoF文件夹output_ProjMat文件夹中。您可以通过Matlab可视化这些3D形状和关键点。

  • 同样的渲染器也可以使用。不过这次不是输入6DoF姿态,而是输入由6DoF头部姿态或3×4投影矩阵推导出的关键点。具体示例请参阅该项目页面中的demo.py。

特性

  • 6DoF 3D头部姿态估计 + 3D渲染的人脸视图
  • 不依赖易失效的关键点检测器
  • 对于关键点检测器难以处理的图像(低分辨率、遮挡等)具有很强的鲁棒性
  • 极速姿态估计
  • 支持CPU和GPU
  • 通过更优的人脸对齐方式,提升人脸识别性能,优于当前最先进的关键点检测方法[1]

依赖项

该代码目前仅在Linux系统上进行了测试。在Linux环境下,您可以使用默认的Python版本,通过包管理器安装所需的所有软件包,或者使用Anaconda Python,并通过conda安装所需的依赖项。

注意: 我们的算法并未使用任何关键点,尽管您仍可根据估计的姿态将关键点投影回输入图像。更多细节请参阅论文。

使用方法

运行步骤

对齐和渲染可以通过命令行以以下不同方式进行操作。

直接对一组图像运行(软件将先运行FPN估计姿态,再根据估计姿态渲染新视图):

$ python main_fpn.py <input-list-path>

我们提供了一个示例输入列表,可在此处找到。

<ID, FILE, FACE_X, FACE_y, FACE_WIDTH, FACE_HEIGHT>

其中<FACE_X, FACE_y, FACE_WIDTH, FACE_HEIGHT>是人脸边界框信息,可由人工标注或人脸检测器获取。

示例结果

请查看输入图像此处和渲染输出此处

输入:

sbj10

渲染结果:

sbj10 sbj10 sbj10 sbj10 sbj10

当前局限性

FPN 目前是使用单一的 3D 通用形状进行训练的,尚未考虑面部表情。这些问题计划作为未来的工作来解决。

引用

如果您使用我们的面部渲染器,请使用以下 BibTeX 格式引用我们的论文:

@inproceedings{chang17fpn,
      title={{F}ace{P}ose{N}et: Making a Case for Landmark-Free Face Alignment},
      booktitle = {7th IEEE International Workshop on Analysis and Modeling of Faces and Gestures, ICCV Workshops},
      author={
      Feng-ju Chang
      and Anh Tran 
      and Tal Hassner 
      and Iacopo Masi 
      and Ram Nevatia
      and G\'{e}rard Medioni},
      year={2017},
    }

参考文献

[1] F.-J. Chang, A. Tran, T. Hassner, I. Masi, R. Nevatia, G. Medioni, “FacePoseNet: 为无关键点人脸对齐正名”, 载于第七届 IEEE 国际人脸与手势分析与建模研讨会,ICCV 工作坊,2017 年

[2] I. Masi*, A. Tran*, T. Hassner*, J. Leksut, G. Medioni, “我们真的需要收集百万张人脸数据才能实现高效的人脸识别吗?”,ECCV 2016, * 表示共同第一作者

[3] I. Masi, S. Rawls, G. Medioni, P. Natarajan,“野外环境下的姿态感知人脸识别”,CVPR 2016

[4] T. Hassner, S. Harel, E. Paz 和 R. Enbar,“非约束条件下图像中有效的正面化处理”,CVPR 2015

[5] I. Masi, T. Hassner, A. Tran 和 G. Medioni,“快速合成大规模人脸数据集以提升人脸识别性能”,FG 2017

更改记录

  • 2017年8月,首次发布

免责声明

本页面提供的软件包按“原样”提供,不对其适用于任何特定用途做出任何保证。该软件可能包含错误,因此使用本工具的风险由您自行承担。对于因使用本工具而可能无意造成的任何损害,我们概不负责。

联系方式

如有任何问题,请发送邮件至 fengjuch@usc.eduanhttran@usc.eduiacopo.masi@usc.eduhassner@isi.edu,或在下方通过 GitHub 留言(需登录)。

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

tesseract

Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中

73.3k|★★☆☆☆|3天前
开发框架图像