jeelizWeboji

GitHub
1.1k 149 简单 1 次阅读 1周前Apache-2.0开发框架图像
AI 解读 由 AI 自动生成,仅供参考

jeelizWeboji 是一款基于 WebGL 和 JavaScript 的开源库,专为在浏览器中实现实时人脸追踪、表情检测及动态表情符号动画而设计。它解决了传统方案依赖服务器处理导致延迟高、隐私风险大等痛点,所有视频分析均在用户本地客户端完成,无需上传任何图像数据。

该工具非常适合前端开发者、互动媒体设计师以及希望为网页应用增添趣味性的技术人员。借助 jeelizWeboji,用户可以轻松构建嵌入式的动态虚拟形象(如可爱的浣熊或自定义 3D 角色),使其实时模仿使用者的面部表情。其核心技术亮点在于利用神经网络高效驱动 GPU 进行运算,不仅能精准识别 11 种面部表情和三轴旋转角度,还具备出色的环境适应能力,即使在光线不佳的情况下也能保持稳健运行。此外,它对移动端友好,并提供了基于 Three.js 和 SVG 的丰富演示案例与辅助工具,大幅降低了 3D 动画集成的门槛,让创建生动的交互式网页体验变得简单快捷。

使用场景

某在线教育平台希望在其网页版互动课堂中,让学生通过摄像头实时驱动一个 3D 卡通形象(如浣熊)来增强上课的趣味性和参与感。

没有 jeelizWeboji 时

  • 开发门槛极高:团队需自行研究复杂的计算机视觉算法或购买昂贵的商业 SDK,且难以在纯前端环境中实现。
  • 服务器压力巨大:若采用服务端处理视频流方案,会导致带宽成本飙升,并产生明显的动作延迟,破坏互动体验。
  • 兼容性差:难以同时兼顾桌面端和移动端浏览器,尤其在低端设备上无法流畅运行面部捕捉功能。
  • 表情识别单一:只能获取简单的人脸坐标,无法精准捕捉眨眼、张嘴等 11 种细微面部表情,导致卡通形象僵硬。

使用 jeelizWeboji 后

  • 纯前端快速集成:直接引入 JavaScript 库即可利用客户端 GPU 算力,无需后端支持,几天内即可完成 3D 浣熊形象的嵌入。
  • 零延迟流畅互动:视频数据完全在本地浏览器处理,消除了网络传输延迟,学生的表情变化能毫秒级同步到卡通形象上。
  • 广泛的设备适配:凭借对 WebGL 的深度优化,即使在普通手机浏览器上也能稳定运行,且对光线条件和佩戴眼镜等情况具有鲁棒性。
  • 丰富的表情映射:自动识别 11 种面部表达式及三维旋转角度,通过内置的 Three.js 辅助工具,让卡通浣熊能生动模仿学生的喜怒哀乐。

jeelizWeboji 将高门槛的实时面部捕捉技术转化为轻量级的浏览器原生能力,以极低成本实现了沉浸式的网页互动体验。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

需要支持 WebGL 的 GPU(集成显卡或独立显卡均可),性能越强检测帧率越高,无特定型号或显存要求

内存

未说明

依赖
notes这是一个纯前端 JavaScript/WebGL 库,无需 Python 环境。必须通过 HTTPS 服务器托管(本地开发也需 HTTPS,否则浏览器会阻止摄像头访问)。建议在光线充足、正对摄像头的环境下使用。在 iOS 14.3 以下的原生 Webview 中摄像头访问受限,需特殊处理。
python不需要
WebGL
MediaStream API
THREE.js (可选,用于 3D 演示)
Apache Cordova (可选,用于原生应用)
jeelizWeboji hero image

快速开始

通知:苹果公司©的律师于2019年8月21日威胁我们,称我们将因侵犯其知识产权而遭到投诉。因此,我们已将3D动画狐狸替换为浣熊。

确实,苹果公司©拥有3D动画狐狸的知识产权(但目前尚未涉及浣熊)。感谢您的理解。

用于检测和重现面部表情的 JavaScript/WebGL 库

借助此库,您可以在自己的 Web 应用程序中构建并嵌入个性化的动画表情符号。整个视频处理过程完全在客户端进行。

您的 GPU 计算能力至关重要。如果您的 GPU 性能较强,每秒可以处理大量检测任务,从而确保结果流畅且准确。

即使光线条件不佳,面部检测功能也应能正常工作。不过,输入图像的质量越高,面部表情检测的效果就越好。以下是一些提升体验的建议:

  • 面部应充分受光:鼻子和眼睛应清晰可辨;
  • 避免逆光拍摄:背景应为墙面,而非窗户;
  • 面部与摄像头的距离不宜过远或过近:理想情况下,面部应占据摄像头画面高度的约三分之一,并且需完全可见;
  • 摄像头应正对用户放置,不建议采用侧拍角度;
  • 胡须和络腮胡可能会使嘴部动作的检测更加困难,而眼镜则可能干扰眼部的检测。

目录

功能

  • 面部检测与跟踪,
  • 可检测 11 种面部表情,
  • 支持面部在三个轴上的旋转,
  • 对光照条件具有较强的鲁棒性,
  • 适合移动设备使用,
  • 提供基于 SVG 和 THREE.js 的示例。

架构

  • /assets/:包含 3D 和 2D 演示所需的资源文件(3D 网格、图片等);
  • /demos/:最精彩的部分——演示代码!
  • /dist/:库的核心目录:
    • jeelizFaceExpressions.js:主压缩脚本,负责获取摄像头视频流,利用神经网络检测面部及表情,并对结果进行平滑处理;
    • jeelizFaceExpressionsNNC.json:由主脚本加载的神经网络模型;
  • /doc/:附加文档;
  • /helpers/:主脚本输出的数据较为原始,使用这些辅助工具可以更方便地通过 THREE.js 动画化 3D 模型,或借助 SVG 辅助工具操作 SVG 文件。所有演示均使用这些辅助工具;
  • /libs/:一些 JavaScript 库;
  • /meshConverter/:仅适用于 THREE.js 使用,用于从独立的 .OBJ 文件中提取数据并生成包含变形目标的 3D 模型文件。

演示

以下所有演示都包含在本仓库的 /demos 目录中。你可以尝试它们:

如果你使用本库开发了应用程序或有趣的演示,我们非常乐意查看并在此处添加链接!请通过 Twitter @Jeeliz_ARLinkedIn 联系我们。

本地运行

你只需使用 HTTPS 服务器来服务此目录的内容即可。如果应用托管在非安全的 HTTP 服务器上,浏览器可能不会授权访问摄像头。例如,你可以使用 Docker 来运行 HTTPS 服务器:

  1. 运行 docker-compose
docker-compose up
  1. 打开浏览器并访问 localhost:8888

如果你还没有购买摄像头,这里提供卡特曼演示的截图视频:

使用模块

/dist/jeelizFaceExpressions.module.js/dist/jeelizFaceExpressions.js 完全相同,只是它可以作为 JavaScript 模块使用,因此你可以直接通过以下方式导入:

import 'dist/jeelizFaceExpressions.module.js'

或者使用 require

const faceExpressions = require('./lib/jeelizFaceExpressions.module.js')
//...

目前尚无使用模块版本的演示。

集成

使用打包工具

如果你使用打包工具(通常是 WebpackParcel)来集成本库,首先应使用 模块版本

然后,对于标准库而言,我们会根据初始化参数 NNCPath 指定的路径,通过 AJAX 加载神经网络模型,原因如下:

  • 如果用户拒绝共享摄像头,或者 WebGL 未启用,则无需加载神经网络模型;
  • 我们假设库是部署在静态 HTTPS 服务器上的。

但在使用打包工具时,情况会稍微复杂一些。更简单的方法是使用传统的 importrequire 语句加载神经网络模型,并将其作为 NNC 初始化参数传递:

const faceExpressions = require('./lib/jeelizFaceExpressions.module.js')
const neuralNetworkModel = require('./dist/jeelizFaceExpressionsNNC.json')

faceExpressions.init({
  NNC: neuralNetworkModel, // 替代 NNCPath
  //... 其他初始化参数
});

与 JavaScript 前端框架

我们在此不讨论与主流 JavaScript 前端框架(ReactVueAngular)的集成。如果您提交包含样板代码或特定框架集成示例的 Pull Request,我们将非常欢迎并予以接受。当然,我们也可以将此类集成作为一项专门的开发服务提供给您(请通过这里与我们联系)。不过,您自己动手实现也并不困难。以下是一些关于 React 集成的已提交问题:其中大多数是针对 Jeeliz FaceFilter 的,但问题本质上是相似的:

您也可以查看以下 GitHub 代码仓库:

原生应用

可以通过原生应用中的 Webview 来运行使用该库的 JavaScript 应用程序,从而实现原生集成。然而,在 iOS < 14.3 的版本中,Webview 内部会禁用摄像头访问权限。如果您希望您的应用程序能够在低于 iOS 14.3 的设备上运行,则需要通过 WebSocket 将摄像头视频流注入到 WKWebview 中,这是一种变通方案。

该变通方案已在以下仓库中实现:

不过,这仍然是一种不太优雅的 hack,会引入性能瓶颈。尽管在高端设备上(如 iPhone XR)表现尚可,但最好还是直接在完整的 Web 环境中运行。

托管

该库需要通过 MediaStream API 获取用户的摄像头流。因此,您的应用程序必须部署在 HTTPS 服务器上(证书可以是自签名的)。即使在本地,某些浏览器也无法在非安全的 HTTP 协议下正常工作。

请注意为 JSON 和 JS 文件启用 gzip HTTP/HTTPS 压缩。实际上,位于 /dist/ 目录下的神经网络 JSON 文件体积较大,但经过 GZIP 压缩后效果非常好。您可以使用 checkgzipcompression.com 来检查服务器的 gzip 压缩情况。

神经网络 JSON 文件会在用户同意共享摄像头后,通过 AJAX 的 XMLHttpRequest 加载。我们采用这种方式是为了避免在用户拒绝共享摄像头或设备没有摄像头时加载这个较大的文件。如果您能在 HTML 页面加载完成后立即使用 Service Worker 或简单的原始 XMLHttpRequest 预加载该 JSON 文件,那么后续请求将会更快,因为文件已经缓存在浏览器中。

技术细节

内部原理

该库的核心是 JEELIZFACEEXPRESSIONS,由 /dist/jeelizFaceExpressions.js 脚本实现。它依赖于 Jeeliz 的 WebGL 深度学习技术,利用深度学习网络检测和跟踪用户面部,并同时评估表情因子。精度会根据硬件性能动态调整:硬件越强大,每秒处理的检测数量就越多。整个过程完全在客户端完成。

JEELIZFACEEXPRESSIONS 的文档以 PDF 文件的形式包含在本仓库中,路径为 /doc/jeelizFaceExpressions.pdf。在演示的主要脚本中,我们从不直接调用这些方法,而是始终通过辅助函数来操作。以下是该库返回的表情形态索引:

  • 0:smileRight → 合嘴微笑(右侧)
  • 1:smileLeft → 合嘴微笑(左侧)
  • 2:eyeBrowLeftDown → 左眉下压
  • 3:eyeBrowRightDown → 右眉下压
  • 4:eyeBrowLeftUp → 左眉上扬(惊讶)
  • 5:eyeBrowRightUp → 右眉上扬(惊讶)
  • 6:mouthOpen → 张嘴
  • 7:mouthRound → 圆形嘴
  • 8:eyeRightClose → 闭合右眼
  • 9:eyeLeftClose → 闭合左眼
  • 10:mouthNasty → 露齿咧嘴(恶心)

兼容性

  • 如果支持 WebGL2,则使用 WebGL2,无需任何额外扩展;
  • 如果不支持 WebGL2 但支持 WebGL1,则需要 OES_TEXTURE_FLOATOES_TEXTURE_HALF_FLOAT 扩展;
  • 如果既不支持 WebGL2,也不支持 WebGL1,且未实现 OES_TEXTURE_FLOATOES_TEXTURE_HALF_FLOAT,则该设备不兼容。

无论哪种情况,您的浏览器都必须支持 WebRTC,否则该库将无法获取摄像头视频流。兼容性表格可在 caniuse.com 上找到:WebGL1WebGL2WebRTC

如果出现兼容性错误,请在本仓库中提交问题。如果是摄像头访问权限相关的错误,请先关闭所有可能占用您设备的应用程序(如 Skype、Messenger、其他浏览器标签页和窗口等),然后再重试。请附上:

该库几乎可以在任何地方运行,并且在像 iPhone X 这样的高端设备上表现尤为出色。但如果您的设备过于廉价或老旧,每秒能处理的检测次数就会减少,导致应用运行缓慢。

文档

许可证

Apache 2.0。本应用可用于商业和非商业用途,且完全免费。

参考资料

常见问题

相似工具推荐

stable-diffusion-webui

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

162.1k|★★★☆☆|今天
开发框架图像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 真正成长为懂上

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

ComfyUI

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

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

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

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

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|★★★☆☆|2天前
Agent图像开发框架