eos

GitHub
2k 598 较难 1 次阅读 1周前Apache-2.0图像开发框架其他
AI 解读 由 AI 自动生成,仅供参考

eos 是一个轻量级的 3D 可变形人脸模型(3DMM)拟合库,采用现代 C++11/14 编写,专为高效处理人脸三维重建任务而设计。它解决了从二维图像中快速恢复人脸三维形状、姿态及表情参数的技术难题,支持线性姿态估计、形状与关键点拟合、边缘轮廓拟合以及纹理提取等核心功能。

eos 原生兼容多种主流人脸模型(如 Basel Face Model、Surrey Face Model 等),并内置了六种基础表情混合形状,能够灵活应对不同研究需求。其独特的技术亮点在于完全无外部依赖的“仅头文件”架构,极大简化了集成流程;同时提供完善的 Python 绑定,方便用户通过 pip 直接安装调用,兼顾了 C++ 的高性能与 Python 的易用性。此外,项目还实验性地支持基于 Ceres 的非线性优化,为高阶算法探索提供了可能。

这款工具非常适合计算机视觉领域的研究人员、图形学开发者以及需要人脸建模功能的工程师使用。无论是学术研究中的人脸分析算法验证,还是工程实践中的人脸重建应用开发,eos 都能提供稳定且高效的基础支持。对于希望深入理解 3D 人脸模型原理并动手实践的技术爱好者,eos 同样是一个理想的学习资源。

使用场景

某计算机视觉团队正在开发一款实时虚拟主播系统,需要将用户的 2D 摄像头画面快速映射为高精度的 3D 面部模型。

没有 eos 时

  • 算法复现成本高:团队需手动复现经典的线性姿态估计与形状拟合论文(如 Aldrian & Smith, 2013),耗时数周且极易引入数学推导错误。
  • 多模型适配困难:若要切换 Basel Face Model (BFM) 或 Surrey Face Model (SFM) 等不同数据源,必须重写大量底层数据解析与 PCA 模型加载代码。
  • 部署门槛极高:现有重型深度学习方案依赖庞大的推理引擎和 GPU 资源,难以在普通笔记本或边缘设备上流畅运行。
  • 表情控制单一:缺乏内置的表情混合形状(Blendshapes)支持,难以通过简单的线性参数实时生成愤怒、惊讶等六种基础情绪。

使用 eos 后

  • 开箱即用核心算法:直接调用 eos 内置的 fit_shape_to_landmarks 等函数,瞬间实现从 2D 关键点到 3D 网格的鲁棒拟合,研发周期从数周缩短至几天。
  • 无缝切换主流模型:利用 MorphableModel 类原生支持 BFM 2017、SFM 等多种标准格式,仅需替换二进制文件即可验证不同模型效果,无需修改代码。
  • 轻量级高性能部署:凭借纯现代 C++ 编写且无外部依赖的特性,eos 轻松嵌入现有 C++ 管线,在 CPU 上即可实现低延迟的实时渲染。
  • 灵活的表情驱动:直接利用库中集成的 6 种线性表情基底,通过调整系数即可让虚拟角色实时展现丰富的面部情绪,极大提升了交互自然度。

eos 通过将复杂的 3D 人脸拟合数学理论封装为轻量、无依赖的工业级代码,让开发者能专注于应用创新而非底层算法重复造轮子。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明 (基于 CPU 的 C++ 库,无需 GPU)

内存

未说明

依赖
notes核心库为纯头文件形式,无外部依赖;构建示例或测试时需安装 Boost 和 OpenCV;克隆仓库时必须使用 '--recursive' 参数以下载子模块;Windows 用户建议使用 vcpkg 管理依赖;Python 绑定可通过 'pip install eos-py' 安装,但需确保系统默认编译器版本足够新(Linux 下建议 gcc-7+)。
python未说明 (需配合支持 C++11/14 的编译器,如 Linux 下建议 gcc-7+ 或 clang-5+)
CMake >= 3.8.2 (MSVC 需 >= 3.10.0)
Boost >= 1.71.0 (仅示例程序需要)
OpenCV >= 2.4.3 (仅示例程序需要)
Ceres Solver (仅非线性拟合实验功能需要)
eos hero image

快速开始

eos:一个基于现代 C++11/14 的轻量级、仅包含头文件的 3D 可变形人脸模型拟合库。

最新版本 主分支构建状态 Apache License 2.0 在 GitHub Sponsors 上赞助 eos

eos 是一个轻量级的 3D 可变形人脸模型拟合库,提供了使用人脸模型的基本功能,以及相机和形状的拟合功能。它采用现代 C++11/14 编写。

目前,eos 主要提供以下功能:

  • MorphableModel 和 PcaModel 类用于表示 3DMMs,并支持基本操作如 draw_sample()。开箱即用地支持萨里人脸模型 (SFM)、4D 人脸模型 (4DFM)、巴塞尔人脸模型 (BFM) 2009 和 2017 版,以及利物浦-约克头部模型 (LYHM)。
  • 低分辨率、仅包含形状信息的萨里人脸模型(share/sfm_shape_3448.bin)。
  • 快速的线性姿态、形状和表情拟合,以及边缘和轮廓拟合:
    • 线性缩放正交投影相机姿态估计。
    • 线性形状到关键点的拟合,实现 O. Aldrian & W. Smith 在 PAMI 2013 中提出的“使用 3D 可变形模型进行人脸逆向渲染”方法。
    • 表情拟合,使用 SFM 的 6 种线性表情混合形状:愤怒、厌恶、恐惧、快乐、悲伤、惊讶。
    • 边缘拟合,深受 A. Bas 等人在 ACCVW 2016 中发表的“将 3D 可变形模型拟合到边缘:硬对应与软对应的比较”启发。
  • 纹理提取,以获得与姿态无关的人脸纹理表示。
  • Python 绑定:eos 的许多功能都可以通过 Python 模块使用(尝试运行 pip install eos-py!)。
  • (实验性):使用 Ceres 库实现非线性拟合代价函数,用于形状、相机、混合形状和颜色模型(需要单独安装 Ceres)。

一个用于可视化 3D 可变形模型和混合形状的实验性模型查看器可在 这里 获取。

使用方法

  • 已在以下编译器上测试过:>=gcc-6、>=clang-5、>=Visual Studio 2017 15.5、>=Xcode 9.2。
  • 该库及其 Python 绑定 无需任何外部依赖。示例应用程序需要 Boost(>=1.71.0)和 OpenCV(>=2.4.3)。

要在您自己的项目中使用该库,只需将以下目录添加到您的包含路径中:

  • eos/include
  • eos/3rdparty/cereal/include
  • eos/3rdparty/nanoflann/include
  • eos/3rdparty/eigen/Eigen
  • eos/3rdparty/eigen3-nnls/src
  • eos/3rdparty/toml11

请务必使用 --recursive 选项克隆,以下载所需的子模块!

构建示例和测试

  • 示例应用程序所需的依赖项:CMake(>=3.8.2,或 >=3.10.0 用于 MSVC)、Boost system、filesystem、program_options(>=1.71.0)、OpenCV core、imgproc、highgui(>=2.4.3)。

构建步骤如下:

git clone --recursive https://github.com/patrikhuber/eos.git
mkdir build && cd build # 在 'eos' 文件夹旁边创建一个构建目录
cmake -G "<your favourite generator>" ../eos -DCMAKE_INSTALL_PREFIX=../install/
make && make install # 或者打开项目文件并在 Visual Studio 等 IDE 中构建

强烈建议在 Windows 上使用 vcpkg 来安装依赖项。

希望手动管理依赖项的用户可以将 initial_cache.cmake.template 复制到 initial_cache.cmake,编辑必要的路径,然后使用 -C ../eos/initial_cache.cmake 运行 cmake。在 Linux 上,您可能还需要适当地设置 -DCMAKE_BUILD_TYPE=...

示例代码

fit-model 示例应用程序会从一张 2D 图像生成一个 3D 人脸。

在执行 make install 或运行 INSTALL 目标后,可以在 install/bin/data/ 中找到带有关键点的示例图像。模型和所需的关键点映射文件会被安装到 install/share/

只需运行以下命令即可运行示例:

fit-model

它会从 ../share/ 目录加载人脸模型、关键点到顶点的映射、混合形状以及其他必要文件,并在示例图像上运行。您也可以通过为图像指定 -i 参数,为 ibug 关键点集指定 -l 参数来运行其他图像。完整的参数列表可以通过运行 fit-model --help 查看。

如果您刚开始使用,也建议查看 fit-model-simple,因为它所需的输入少得多,只拟合姿态和形状,不涉及混合形状或边缘拟合。其完整参数列表如下:

fit-model-simple -m ../share/sfm_shape_3448.bin -p ../share/ibug_to_sfm.txt -i data/image_0010.png -l data/image_0010.pts

两种情况下输出的都是包含形状的 obj 文件和包含提取纹理贴图的 png 文件。估计的姿态角度和形状系数可通过 API 在代码中获取。

完整代码请参阅 examples/fit-model.cpp

萨里人脸模型

该库包含萨里可变形人脸模型的低分辨率仅形状版本。它是基于 3D 人脸扫描构建的形状变化 PCA 模型,并附带 UV 坐标以便进行纹理重映射。

萨里人脸模型形状图

完整模型可在 http://www.cvssp.org/facemodel 上找到。

4D 人脸模型 (4DFM)

eos 可用于加载、使用并进行基础拟合的 4D 人脸模型 (4DFM),该模型由 4dface Ltd 提供。该模型具有 39 种表情/动作单元,并表现出多样化的人格特征差异。

4D 人脸模型彩色图 4D 人脸模型形状图

有关该模型的更多信息,请访问 www.4dface.io/4dfm

Python 绑定

eos 为其部分功能提供了 Python 绑定(未来还可继续扩展)。可以通过 PyPI 使用 pip install eos-py 进行安装。不过,您仍然需要从本仓库获取数据文件。

请确保在 Linux 系统上默认编译器版本为 >=gcc-7 或 >=clang-5(例如来自 ubuntu-toolchain-r/test 仓库),或者执行 CC=`which gcc-7` CXX=`which g++-7` pip install eos-py。此外,请确保您的 PATH 中包含 >=cmake-3.8.2(若使用 MSVC,则需 >=cmake-3.10.0)。

如遇问题,也可手动构建绑定:克隆仓库,在运行 cmake 时设置 -DEOS_GENERATE_PYTHON_BINDINGS=on(如果未自动找到 Python 解释器,可选择性地设置 PYTHON_EXECUTABLE 指向您的 Python 解释器)。

成功获取绑定后,即可像使用任何 Python 模块一样使用它们:

import eos
import numpy as np

model = eos.morphablemodel.load_model("eos/share/sfm_shape_3448.bin")
sample = model.get_shape_model().draw_sample([1.0, -0.5, 0.7])

help(eos) # 查看文档

有关如何运行拟合的示例,请参阅 demo.py

Matlab 绑定

实验性(目前未维护): eos 提供了 fit_shape_and_pose(...) 函数的 Matlab 绑定,这意味着可以在 Matlab 中运行拟合。在运行 cmake 时设置 -DEOS_GENERATE_MATLAB_BINDINGS=on 以构建所需的 mex 文件,并运行 INSTALL 目标完成安装。(如果未自动找到 Matlab 目录,请设置 Matlab_ROOT_DIR 指向您的 Matlab 安装目录)。未来可能会添加更多绑定(例如 MorphableModel 本身)。

进入 install/eos/matlab 目录并运行 demo.m,即可了解如何运行拟合。结果将生成网格和渲染参数(姿态)。

文档

Doxygen:http://patrikhuber.github.io/eos/doc/

Doxygen 中的 fit-model 示例以及 命名空间列表是入门的好起点。

许可与贡献

本代码采用 Apache License, Version 2.0 许可协议。位于 share/sfm_shape_3448.bin 的 3D 可变形人脸模型可供非商业用途免费使用。如需用于商业目的或获取其他分辨率的模型,请访问 http://www.cvssp.org/facemodel

我们非常欢迎各类贡献!(最佳方式是通过 Pull Request 提交)。如有任何 bug 报告、建议或讨论,请使用 GitHub Issues。

如果您在自己的工作中使用了本代码,请引用以下论文:A Multiresolution 3D Morphable Face Model and Fitting Framework,P. Huber, G. Hu, R. Tena, P. Mortazavian, W. Koppen, W. Christmas, M. Rätsch, J. Kittler,2016 年国际计算机视觉理论与应用会议 (VISAPP),意大利罗马 [PDF]

版本历史

v1.5.02024/12/10
v1.4.02023/03/27
v1.3.02022/04/09
v1.2.12020/08/04
v1.2.02020/08/01
v1.1.22019/06/30
v1.1.12019/05/28
v1.1.02019/03/01
v1.0.12018/12/14
v1.0.02018/12/10
v0.18.02018/10/23
v0.17.02018/10/23
v0.16.12018/05/20
v0.16.02018/05/14
v0.15.12018/05/03
v0.15.02018/03/12
v0.14.02018/01/11
v0.13.02017/10/22
v0.12.22017/10/19
v0.12.12017/03/12

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

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

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

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

148.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

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

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

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|今天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|3天前
插件开发框架