[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vladmandic--human":3,"tool-vladmandic--human":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":75,"owner_location":76,"owner_email":77,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":102,"forks":103,"last_commit_at":104,"license":105,"difficulty_score":32,"env_os":106,"env_gpu":107,"env_ram":108,"env_deps":109,"category_tags":118,"github_topics":119,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":137,"updated_at":138,"faqs":139,"releases":168},4517,"vladmandic\u002Fhuman","human","Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gaze Tracking, Gesture Recognition","Human 是一款功能强大的开源 AI 库，专为在浏览器和 Node.js 环境中实现全方位的人体感知而设计。它能够实时完成 3D 人脸检测与旋转追踪、人脸识别、身体姿态估计、3D 手部及手指追踪、虹膜分析，以及年龄、性别、情绪预测、视线追踪和手势识别等复杂任务。\n\nHuman 主要解决了开发者在集成多种计算机视觉模型时面临的痛点：传统方案往往需要分别调用多个独立的库，导致代码冗余、资源消耗大且难以协调。Human 通过将多个机器学习模型整合到统一的注意力管道中，实现了按需加载和智能调度。其独特的技术亮点包括优化的图像预处理、基于帧变化的动态模型触发机制，以及智能的时间插值算法，确保即使在性能有限的设备上也能输出流畅、稳定的结果。\n\n这款工具非常适合前端工程师、全栈开发者以及希望快速构建交互式应用的研究人员。无论是开发虚拟试衣、视频会议特效、无障碍交互界面，还是进行行为分析研究，Human 都提供了简洁统一的 API 和内置的媒体处理能力。它支持 WebGL、WebGPU、WASM 等多种后端，兼容桌面与移动端主流浏览器，让高精度的 AI 视觉能力能够轻松落地于各类 Web 项目中。","[![](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fvladmandic)\n![Git Version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fpackage-json\u002Fv\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true&label=git)\n![NPM Version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![Last Commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![GitHub Status Checks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fchecks-status\u002Fvladmandic\u002Fhuman\u002Fmain?style=flat-square&svg=true)\n\n# Human Library\n\n**AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition,**  \n**Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis,**  \n**Age & Gender & Emotion Prediction, Gaze Tracking, Gesture Recognition, Body Segmentation**  \n\n\u003Cbr>\n\n## Highlights\n\n- Compatible with most server-side and client-side environments and frameworks  \n- Combines multiple machine learning models which can be switched on-demand depending on the use-case  \n- Related models are executed in an attention pipeline to provide details when needed  \n- Optimized input pre-processing that can enhance image quality of any type of inputs  \n- Detection of frame changes to trigger only required models for improved performance  \n- Intelligent temporal interpolation to provide smooth results regardless of processing performance  \n- Simple unified API  \n- Built-in Image, Video and WebCam handling\n\n[*Jump to Quick Start*](#quick-start)\n\n\u003Cbr>\n\n## Compatibility\n\n**Browser**:  \n  - Compatible with both desktop and mobile platforms  \n  - Compatible with *WebGPU*, *WebGL*, *WASM*, *CPU* backends  \n  - Compatible with *WebWorker* execution  \n  - Compatible with *WebView*  \n  - Primary platform: *Chromium*-based browsers  \n  - Secondary platform: *Firefox*, *Safari*\n\n**NodeJS**:  \n  - Compatibile with *WASM* backend for executions on architectures where *tensorflow* binaries are not available  \n  - Compatible with *tfjs-node* using software execution via *tensorflow* shared libraries  \n  - Compatible with *tfjs-node* using GPU-accelerated execution via *tensorflow* shared libraries and nVidia CUDA  \n  - Supported versions are from **14.x** to **22.x**  \n  - NodeJS version **23.x** is not supported due to breaking changes and issues with `@tensorflow\u002Ftfjs`  \n\n\u003Cbr>\n\n## Releases\n- [Release Notes](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Freleases)\n- [NPM Link](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vladmandic\u002Fhuman)\n## Demos\n\n*Check out [**Simple Live Demo**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ftypescript\u002Findex.html) fully annotated app as a good start starting point ([html](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Ftypescript\u002Findex.html))([code](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Ftypescript\u002Findex.ts))*  \n\n*Check out [**Main Live Demo**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Findex.html) app for advanced processing of of webcam, video stream or images static images with all possible tunable options*  \n\n- To start video detection, simply press *Play*  \n- To process images, simply drag & drop in your Browser window  \n- Note: For optimal performance, select only models you'd like to use\n- Note: If you have modern GPU, *WebGL* (default) backend is preferred, otherwise select *WASM* backend\n\n\u003Cbr>\n\n\n- [**List of all Demo applications**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDemos)\n- [**Live Examples galery**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fsamples\u002Findex.html)\n\n### Browser Demos\n\n*All browser demos are self-contained without any external dependencies*\n\n- **Full** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo): Main browser demo app that showcases all Human capabilities\n- **Simple** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ftypescript\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ftypescript): Simple demo in WebCam processing demo in TypeScript\n- **Embedded** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fvideo\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fvideo\u002Findex.html): Even simpler demo with tiny code embedded in HTML file\n- **Face Detect** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffacedetect\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacedetect): Extract faces from images and processes details\n- **Face Match** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffacematch\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacematch): Extract faces from images, calculates face descriptors and similarities and matches them to known database\n- **Face ID** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffaceid\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffaceid): Runs multiple checks to validate webcam input before performing face match to faces in IndexDB\n- **Multi-thread** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fmultithread\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fmultithread): Runs each Human module in a separate web worker for highest possible performance  \n- **NextJS** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-next\u002Fout\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-next): Use Human with TypeScript, NextJS and ReactJS\n- **ElectronJS** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-electron): Use Human with TypeScript and ElectonJS to create standalone cross-platform apps\n- **3D Analysis with BabylonJS** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-motion\u002Fsrc\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-motion): 3D tracking and visualization of head, face, eye, body and hand\n- **VRM Virtual Model Tracking with Three.JS** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-three-vrm\u002Fsrc\u002Fhuman-vrm.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-three-vrm): VR model with head, face, eye, body and hand tracking  \n- **VRM Virtual Model Tracking with BabylonJS** [[*Live*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-bjs-vrm\u002Fsrc\u002Findex.html) [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-bjs-vrm): VR model with head, face, eye, body and hand tracking  \n\n### NodeJS Demos\n\n*NodeJS demos may require extra dependencies which are used to decode inputs*  \n*See header of each demo to see its dependencies as they are not automatically installed with `Human`*\n\n- **Main** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode.js): Process images from files, folders or URLs using native methods  \n- **Canvas** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-canvas.js): Process image from file or URL and draw results to a new image file using `node-canvas`  \n- **Video** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-video.js): Processing of video input using `ffmpeg`  \n- **WebCam** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-webcam.js): Processing of webcam screenshots using `fswebcam`  \n- **Events** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-event.js): Showcases usage of `Human` eventing to get notifications on processing\n- **Similarity** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-similarity.js): Compares two input images for similarity of detected faces\n- **Face Match** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacematch\u002Fnode-match.js): Parallel processing of face **match** in multiple child worker threads\n- **Multiple Workers** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fmultithread\u002Fnode-multiprocess.js): Runs multiple parallel `human` by dispaching them to pool of pre-created worker processes  \n- **Dynamic Load** [[*Details*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs): Loads Human dynamically with multiple different desired backends  \n\n## Project pages\n\n- [**Code Repository**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman)\n- [**NPM Package**](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vladmandic\u002Fhuman)\n- [**Issues Tracker**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues)\n- [**TypeDoc API Specification - Main class**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)\n- [**TypeDoc API Specification - Full**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002F)\n- [**Change Log**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n- [**Current To-do List**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FTODO.md)\n\n## Wiki pages\n\n- [**Home**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki)\n- [**Installation**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FInstall)\n- [**Usage & Functions**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FUsage)\n- [**Configuration Details**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FConfig)\n- [**Result Details**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FResult)\n- [**Customizing Draw Methods**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDraw)\n- [**Caching & Smoothing**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FCaching)\n- [**Input Processing**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FImage)\n- [**Face Recognition & Face Description**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FEmbedding)\n- [**Gesture Recognition**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FGesture)\n- [**Common Issues**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FIssues)\n- [**Background and Benchmarks**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBackground)\n\n## Additional notes\n\n- [**Comparing Backends**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBackends)\n- [**Development Server**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDevelopment-Server)\n- [**Build Process**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBuild-Process)\n- [**Adding Custom Modules**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModule)\n- [**Performance Notes**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FPerformance)\n- [**Performance Profiling**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FProfiling)\n- [**Platform Support**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FPlatforms)\n- [**Diagnostic and Performance trace information**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDiag)\n- [**Dockerize Human applications**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDocker)\n- [**List of Models & Credits**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModels)\n- [**Models Download Repository**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-models)\n- [**Security & Privacy Policy**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FSECURITY.md)\n- [**License & Usage Restrictions**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FLICENSE)\n\n\u003Cbr>\n\n*See [**issues**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues?q=) and [**discussions**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fdiscussions) for list of known limitations and planned enhancements*  \n\n*Suggestions are welcome!*  \n\n\u003Chr>\u003Cbr>\n\n## App Examples\n\nVisit [Examples gallery](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fsamples\u002Findex.html) for more examples  \n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_eac284bee52c.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_eac284bee52c.jpg)\n\n\u003Cbr>\n\n## Options\n\nAll options as presented in the demo application...  \n[demo\u002Findex.html](demo\u002Findex.html)  \n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_4080e01462d6.png\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_4080e01462d6.png)\n\n\u003Cbr>\n\n**Results Browser:**  \n[ *Demo -> Display -> Show Results* ]\u003Cbr>\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_32c026738509.png\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_32c026738509.png)\n\n\u003Cbr>\n\n## Advanced Examples\n\n1. **Face Similarity Matching:**  \nExtracts all faces from provided input images,  \nsorts them by similarity to selected face  \nand optionally matches detected face with database of known people to guess their names\n> [demo\u002Ffacematch](demo\u002Ffacematch\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_48156f034764.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_48156f034764.jpg)\n\n2. **Face Detect:**  \nExtracts all detect faces from loaded images on-demand and highlights face details on a selected face  \n> [demo\u002Ffacedetect](demo\u002Ffacedetect\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_c1cc54617e75.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_c1cc54617e75.jpg)\n\n3. **Face ID:**  \nPerforms validation check on a webcam input to detect a real face and matches it to known faces stored in database\n> [demo\u002Ffaceid](demo\u002Ffaceid\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_7513df7b63e3.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_7513df7b63e3.jpg)\n\n\u003Cbr>\n\n4. **3D Rendering:**  \n> [human-motion](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-motion)\n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_8442e697c780.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_8442e697c780.jpg)\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_ffff41509808.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_ffff41509808.jpg)\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_0bd631e8f73c.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_0bd631e8f73c.jpg)\n\n\u003Cbr>\n\n5. **VR Model Tracking:**  \n> [human-three-vrm](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-three-vrm)  \n> [human-bjs-vrm](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-bjs-vrm)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_58b806ee9080.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_58b806ee9080.jpg)\n\n\n6. **Human as OS native application:**\n> [human-electron](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-electron)\n\n\u003Cbr>\n\n**468-Point Face Mesh Defails:**  \n(view in full resolution to see keypoints)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_aa9011483b68.png\" width=\"400\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_aa9011483b68.png)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## Quick Start\n\nSimply load `Human` (*IIFE version*) directly from a cloud CDN in your HTML file:  \n(pick one: `jsdelirv`, `unpkg` or `cdnjs`)\n\n```html\n\u003C!DOCTYPE HTML>\n\u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@vladmandic\u002Fhuman\u002Fdist\u002Fhuman.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Funpkg.dev\u002F@vladmandic\u002Fhuman\u002Fdist\u002Fhuman.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fcdnjs.cloudflare.com\u002Fajax\u002Flibs\u002Fhuman\u002F3.0.0\u002Fhuman.js\">\u003C\u002Fscript>\n```\n\nFor details, including how to use `Browser ESM` version or `NodeJS` version of `Human`, see [**Installation**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FInstall)\n\n\u003Cbr>\n\n## Code Examples\n\nSimple app that uses Human to process video input and  \ndraw output on screen using internal draw helper functions\n\n```js\n\u002F\u002F create instance of human with simple configuration using default values\nconst config = { backend: 'webgl' };\nconst human = new Human.Human(config);\n\u002F\u002F select input HTMLVideoElement and output HTMLCanvasElement from page\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nfunction detectVideo() {\n  \u002F\u002F perform processing using default configuration\n  human.detect(inputVideo).then((result) => {\n    \u002F\u002F result object will contain detected details\n    \u002F\u002F as well as the processed canvas itself\n    \u002F\u002F so lets first draw processed frame on canvas\n    human.draw.canvas(result.canvas, outputCanvas);\n    \u002F\u002F then draw results on the same canvas\n    human.draw.face(outputCanvas, result.face);\n    human.draw.body(outputCanvas, result.body);\n    human.draw.hand(outputCanvas, result.hand);\n    human.draw.gesture(outputCanvas, result.gesture);\n    \u002F\u002F and loop immediate to the next frame\n    requestAnimationFrame(detectVideo);\n    return result;\n  });\n}\n\ndetectVideo();\n```\n\nor using `async\u002Fawait`:\n\n```js\n\u002F\u002F create instance of human with simple configuration using default values\nconst config = { backend: 'webgl' };\nconst human = new Human(config); \u002F\u002F create instance of Human\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function detectVideo() {\n  const result = await human.detect(inputVideo); \u002F\u002F run detection\n  human.draw.all(outputCanvas, result); \u002F\u002F draw all results\n  requestAnimationFrame(detectVideo); \u002F\u002F run loop\n}\n\ndetectVideo(); \u002F\u002F start loop\n```\n\nor using `Events`:\n\n```js\n\u002F\u002F create instance of human with simple configuration using default values\nconst config = { backend: 'webgl' };\nconst human = new Human(config); \u002F\u002F create instance of Human\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nhuman.events.addEventListener('detect', () => { \u002F\u002F event gets triggered when detect is complete\n  human.draw.all(outputCanvas, human.result); \u002F\u002F draw all results\n});\n\nfunction detectVideo() {\n  human.detect(inputVideo) \u002F\u002F run detection\n    .then(() => requestAnimationFrame(detectVideo)); \u002F\u002F upon detect complete start processing of the next frame\n}\n\ndetectVideo(); \u002F\u002F start loop\n```\n\nor using interpolated results for smooth video processing by separating detection and drawing loops:\n\n```js\nconst human = new Human(); \u002F\u002F create instance of Human\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\nlet result;\n\nasync function detectVideo() {\n  result = await human.detect(inputVideo); \u002F\u002F run detection\n  requestAnimationFrame(detectVideo); \u002F\u002F run detect loop\n}\n\nasync function drawVideo() {\n  if (result) { \u002F\u002F check if result is available\n    const interpolated = human.next(result); \u002F\u002F get smoothened result using last-known results\n    human.draw.all(outputCanvas, interpolated); \u002F\u002F draw the frame\n  }\n  requestAnimationFrame(drawVideo); \u002F\u002F run draw loop\n}\n\ndetectVideo(); \u002F\u002F start detection loop\ndrawVideo(); \u002F\u002F start draw loop\n```\n\nor same, but using built-in full video processing instead of running manual frame-by-frame loop:\n\n```js\nconst human = new Human(); \u002F\u002F create instance of Human\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function drawResults() {\n  const interpolated = human.next(); \u002F\u002F get smoothened result using last-known results\n  human.draw.all(outputCanvas, interpolated); \u002F\u002F draw the frame\n  requestAnimationFrame(drawResults); \u002F\u002F run draw loop\n}\n\nhuman.video(inputVideo); \u002F\u002F start detection loop which continously updates results\ndrawResults(); \u002F\u002F start draw loop\n```\n\nor using built-in webcam helper methods that take care of video handling completely:\n\n```js\nconst human = new Human(); \u002F\u002F create instance of Human\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function drawResults() {\n  const interpolated = human.next(); \u002F\u002F get smoothened result using last-known results\n  human.draw.canvas(outputCanvas, human.webcam.element); \u002F\u002F draw current webcam frame\n  human.draw.all(outputCanvas, interpolated); \u002F\u002F draw the frame detectgion results\n  requestAnimationFrame(drawResults); \u002F\u002F run draw loop\n}\n\nawait human.webcam.start({ crop: true });\nhuman.video(human.webcam.element); \u002F\u002F start detection loop which continously updates results\ndrawResults(); \u002F\u002F start draw loop\n```\n\nAnd for even better results, you can run detection in a separate web worker thread\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## Inputs\n\n`Human` library can process all known input types:  \n\n- `Image`, `ImageData`, `ImageBitmap`, `Canvas`, `OffscreenCanvas`, `Tensor`,  \n- `HTMLImageElement`, `HTMLCanvasElement`, `HTMLVideoElement`, `HTMLMediaElement`\n\nAdditionally, `HTMLVideoElement`, `HTMLMediaElement` can be a standard `\u003Cvideo>` tag that links to:\n\n- WebCam on user's system\n- Any supported video type  \n  e.g. `.mp4`, `.avi`, etc.\n- Additional video types supported via *HTML5 Media Source Extensions*  \n  e.g.: **HLS** (*HTTP Live Streaming*) using `hls.js` or **DASH** (*Dynamic Adaptive Streaming over HTTP*) using `dash.js`\n- **WebRTC** media track using built-in support  \n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## Detailed Usage\n\n- [**Wiki Home**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki)\n- [**List of all available methods, properies and namespaces**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FUsage)\n- [**TypeDoc API Specification - Main class**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)\n- [**TypeDoc API Specification - Full**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002F)\n\n    ![typedoc](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_88c94b2480f6.png)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## TypeDefs\n\n`Human` is written using TypeScript strong typing and ships with full **TypeDefs** for all classes defined by the library bundled in `types\u002Fhuman.d.ts` and enabled by default  \n\n*Note*: This does not include embedded `tfjs`  \nIf you want to use embedded `tfjs` inside `Human` (`human.tf` namespace) and still full **typedefs**, add this code:\n\n> import type * as tfjs from '@vladmandic\u002Fhuman\u002Fdist\u002Ftfjs.esm';  \n> const tf = human.tf as typeof tfjs;\n\nThis is not enabled by default as `Human` does not ship with full **TFJS TypeDefs** due to size considerations  \nEnabling `tfjs` TypeDefs as above creates additional project (dev-only as only types are required) dependencies as defined in `@vladmandic\u002Fhuman\u002Fdist\u002Ftfjs.esm.d.ts`:\n\n> @tensorflow\u002Ftfjs-core, @tensorflow\u002Ftfjs-converter, @tensorflow\u002Ftfjs-backend-wasm, @tensorflow\u002Ftfjs-backend-webgl\n\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## Default models\n\nDefault models in Human library are:\n\n- **Face Detection**: *MediaPipe BlazeFace Back variation*\n- **Face Mesh**: *MediaPipe FaceMesh*\n- **Face Iris Analysis**: *MediaPipe Iris*\n- **Face Description**: *HSE FaceRes*\n- **Emotion Detection**: *Oarriaga Emotion*\n- **Body Analysis**: *MoveNet Lightning variation*\n- **Hand Analysis**: *HandTrack & MediaPipe HandLandmarks*\n- **Body Segmentation**: *Google Selfie*\n- **Object Detection**: *CenterNet with MobileNet v3*\n\nNote that alternative models are provided and can be enabled via configuration  \nFor example, body pose detection by default uses *MoveNet Lightning*, but can be switched to *MultiNet Thunder* for higher precision or *Multinet MultiPose* for multi-person detection or even *PoseNet*, *BlazePose* or *EfficientPose* depending on the use case  \n\nFor more info, see [**Configuration Details**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FConfiguration) and [**List of Models**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModels)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## Diagnostics\n\n- [How to get diagnostic information or performance trace information](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDiag)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n`Human` library is written in [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002Fintro.html) **5.1** using [TensorFlow\u002FJS](https:\u002F\u002Fwww.tensorflow.org\u002Fjs\u002F) **4.10** and conforming to latest `JavaScript` [ECMAScript version 2022](https:\u002F\u002F262.ecma-international.org\u002F) standard  \n\nBuild target for distributables is `JavaScript` [EMCAScript version 2018](https:\u002F\u002F262.ecma-international.org\u002F9.0\u002F)  \n\n\u003Cbr>\n\nFor details see [**Wiki Pages**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki)  \nand [**API Specification**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)\n\n\u003Cbr>\n\n[![](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fvladmandic)\n![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![Forks](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_5f71faae6f23.png)\n![Code Size](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Fcode-size\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![CDN](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_55e019a23495.png)\u003Cbr>\n![Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdw\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdy\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n","[![](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fvladmandic)\n![Git版本](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fpackage-json\u002Fv\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true&label=git)\n![NPM版本](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![最近提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![许可证](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![GitHub状态检查](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fchecks-status\u002Fvladmandic\u002Fhuman\u002Fmain?style=flat-square&svg=true)\n\n# Human库\n\n**AI驱动的3D人脸检测与旋转跟踪、人脸描述与识别，**  \n**人体姿态跟踪、3D手部与手指跟踪、虹膜分析，**  \n**年龄、性别与情绪预测、视线跟踪、手势识别、人体分割**  \n\n\u003Cbr>\n\n## 亮点\n\n- 兼容大多数服务器端和客户端环境及框架  \n- 结合了多种机器学习模型，可根据使用场景按需切换  \n- 相关模型以注意力流水线方式执行，在需要时提供详细信息  \n- 优化的输入预处理可提升任何类型输入的图像质量  \n- 检测帧变化以仅触发所需模型，从而提升性能  \n- 智能的时间插值技术可在不同处理性能下提供流畅结果  \n- 简单统一的API  \n- 内置图像、视频和网络摄像头处理功能\n\n[*跳转至快速入门*](#quick-start)\n\n\u003Cbr>\n\n## 兼容性\n\n**浏览器**:  \n  - 兼容桌面和移动平台  \n  - 兼容 *WebGPU*、*WebGL*、*WASM*、*CPU* 后端  \n  - 兼容 *WebWorker* 执行  \n  - 兼容 *WebView*  \n  - 主要平台：基于 *Chromium* 的浏览器  \n  - 次要平台：*Firefox*、*Safari*\n\n**NodeJS**:  \n  - 兼容 *WASM* 后端，适用于无法使用 *tensorflow* 二进制文件的架构  \n  - 兼容使用 *tensorflow* 共享库进行软件执行的 *tfjs-node*  \n  - 兼容使用 *tensorflow* 共享库和 nVidia CUDA 进行 GPU 加速执行的 *tfjs-node*  \n  - 支持的版本从 **14.x** 到 **22.x**  \n  - 由于重大变更及与 `@tensorflow\u002Ftfjs` 的兼容性问题，不支持 NodeJS **23.x** 版本  \n\n\u003Cbr>\n\n## 发布\n- [发布说明](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Freleases)\n- [NPM链接](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vladmandic\u002Fhuman)\n## 演示\n\n*请查看 [**简单实时演示**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ftypescript\u002Findex.html)，这是一款完全注释的应用程序，是一个很好的起点（[html](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Ftypescript\u002Findex.html)）（[代码](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Ftypescript\u002Findex.ts)）*  \n\n*请查看 [**主实时演示**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Findex.html)，该应用可对网络摄像头、视频流或静态图像进行高级处理，并提供所有可调参数*  \n\n- 要开始视频检测，只需按下 *播放* 按钮  \n- 要处理图像，只需在浏览器窗口中拖放即可  \n- 注意：为获得最佳性能，请仅选择您想要使用的模型  \n- 注意：如果您拥有现代显卡，建议使用 *WebGL*（默认）后端，否则请选择 *WASM* 后端\n\n\u003Cbr>\n\n\n- [**所有演示应用程序列表**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDemos)\n- [**实时示例图库**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fsamples\u002Findex.html)\n\n### 浏览器演示\n\n*所有浏览器演示均自包含，无需任何外部依赖*\n\n- **完整版** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo): 主要浏览器演示应用，展示了 Human 的全部功能  \n- **简易版** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ftypescript\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ftypescript): 使用 TypeScript 编写的简单网络摄像头处理演示  \n- **嵌入版** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fvideo\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fvideo\u002Findex.html): 更加简单的演示，代码直接嵌入在 HTML 文件中  \n- **人脸检测** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffacedetect\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacedetect): 从图像中提取人脸并进行细节处理  \n- **人脸匹配** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffacematch\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacematch): 提取图像中的人脸，计算人脸描述符和相似度，并与已知数据库进行匹配  \n- **人脸ID** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffaceid\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffaceid): 在对 IndexDB 中的人脸进行匹配之前，运行多项检查以验证网络摄像头输入  \n- **多线程** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fmultithread\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fmultithread): 将每个 Human 模块运行在独立的 Web Worker 中，以实现最高性能  \n- **NextJS** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-next\u002Fout\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-next): 使用 Human 结合 TypeScript、NextJS 和 ReactJS  \n- **ElectronJS** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-electron): 使用 Human 结合 TypeScript 和 ElectronJS 创建跨平台独立应用  \n- **使用 BabylonJS 进行3D分析** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-motion\u002Fsrc\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-motion): 对头部、面部、眼部、身体和手部进行3D跟踪与可视化  \n- **使用 Three.JS 跟踪VRM虚拟模型** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-three-vrm\u002Fsrc\u002Fhuman-vrm.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-three-vrm): 跟踪带有头部、面部、眼部、身体和手部的VR模型  \n- **使用 BabylonJS 跟踪VRM虚拟模型** [[*在线*]](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-bjs-vrm\u002Fsrc\u002Findex.html) [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-bjs-vrm): 跟踪带有头部、面部、眼部、身体和手部的VR模型\n\n### Node.js 示例\n\n*Node.js 示例可能需要额外的依赖项，这些依赖项用于解码输入*  \n*请查看每个示例的头部以了解其依赖项，因为它们不会随 `Human` 自动安装*\n\n- **主程序** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode.js): 使用原生方法处理来自文件、文件夹或 URL 的图像  \n- **Canvas** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-canvas.js): 处理来自文件或 URL 的图像，并使用 `node-canvas` 将结果绘制到新的图像文件中  \n- **视频** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-video.js): 使用 `ffmpeg` 处理视频输入  \n- **网络摄像头** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-webcam.js): 使用 `fswebcam` 处理网络摄像头截图  \n- **事件** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-event.js): 展示如何使用 `Human` 的事件机制获取处理通知  \n- **相似度** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs\u002Fnode-similarity.js): 比较两张输入图像中检测到的人脸的相似性  \n- **人脸匹配** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Ffacematch\u002Fnode-match.js): 在多个子工作线程中并行处理人脸 **匹配**  \n- **多进程** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fmultithread\u002Fnode-multiprocess.js): 通过将多个 `human` 分配到预先创建的工作进程池中来运行多个并行任务  \n- **动态加载** [[*详情*]](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Ftree\u002Fmain\u002Fdemo\u002Fnodejs): 动态加载具有多种不同后端的 Human  \n\n## 项目页面\n\n- [**代码仓库**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman)\n- [**NPM 包**](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vladmandic\u002Fhuman)\n- [**问题跟踪器**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues)\n- [**TypeDoc API 规范 - 主类**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)\n- [**TypeDoc API 规范 - 完整版**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002F)\n- [**变更日志**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n- [**当前待办事项列表**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FTODO.md)\n\n## Wiki 页面\n\n- [**首页**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki)\n- [**安装**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FInstall)\n- [**使用与功能**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FUsage)\n- [**配置细节**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FConfig)\n- [**结果详情**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FResult)\n- [**自定义绘制方法**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDraw)\n- [**缓存与平滑处理**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FCaching)\n- [**输入处理**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FImage)\n- [**人脸识别与面部描述**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FEmbedding)\n- [**手势识别**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FGesture)\n- [**常见问题**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FIssues)\n- [**背景与基准测试**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBackground)\n\n## 补充说明\n\n- [**比较后端**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBackends)\n- [**开发服务器**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDevelopment-Server)\n- [**构建流程**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FBuild-Process)\n- [**添加自定义模块**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModule)\n- [**性能注意事项**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FPerformance)\n- [**性能剖析**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FProfiling)\n- [**平台支持**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FPlatforms)\n- [**诊断与性能追踪信息**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDiag)\n- [**将 Human 应用程序 Docker 化**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDocker)\n- [**模型与致谢列表**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModels)\n- [**模型下载仓库**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-models)\n- [**安全与隐私政策**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FSECURITY.md)\n- [**许可证与使用限制**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FLICENSE)\n\n\u003Cbr>\n\n*请参阅 [**问题**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues?q=) 和 [**讨论**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fdiscussions) 以获取已知限制和计划中的改进列表*  \n\n*欢迎提出建议！*  \n\n\u003Chr>\u003Cbr>\n\n## 应用示例\n\n访问 [示例图库](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fsamples\u002Findex.html) 获取更多示例  \n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_eac284bee52c.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_eac284bee52c.jpg)\n\n\u003Cbr>\n\n## 选项\n\n演示应用程序中展示的所有选项...  \n[demo\u002Findex.html](demo\u002Findex.html)  \n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_4080e01462d6.png\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_4080e01462d6.png)\n\n\u003Cbr>\n\n**结果浏览器：**  \n[ *演示 -> 显示 -> 显示结果* ]\u003Cbr>\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_32c026738509.png\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_32c026738509.png)\n\n\u003Cbr>\n\n## 高级示例\n\n1. **人脸相似度匹配：**  \n从提供的输入图像中提取所有人脸，  \n按与选定人脸的相似度进行排序，  \n并可选地将检测到的人脸与已知人员数据库进行匹配，以猜测其姓名。  \n> [demo\u002Ffacematch](demo\u002Ffacematch\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_48156f034764.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_48156f034764.jpg)\n\n2. **人脸检测：**  \n按需从加载的图像中提取所有检测到的人脸，并在选定的人脸上突出显示面部细节。  \n> [demo\u002Ffacedetect](demo\u002Ffacedetect\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_c1cc54617e75.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_c1cc54617e75.jpg)\n\n3. **人脸身份验证：**  \n对网络摄像头输入进行验证检查，以检测真实人脸，并将其与数据库中存储的已知人脸进行匹配。  \n> [demo\u002Ffaceid](demo\u002Ffaceid\u002Findex.html)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_7513df7b63e3.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_7513df7b63e3.jpg)\n\n\u003Cbr>\n\n4. **3D 渲染：**  \n> [human-motion](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-motion)\n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_8442e697c780.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_8442e697c780.jpg)\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_ffff41509808.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_ffff41509808.jpg)\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_0bd631e8f73c.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_0bd631e8f73c.jpg)\n\n\u003Cbr>\n\n5. **VR 模型追踪：**  \n> [human-three-vrm](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-three-vrm)  \n> [human-bjs-vrm](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-bjs-vrm)  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_58b806ee9080.jpg\" width=\"640\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_58b806ee9080.jpg)\n\n\n6. **将人类作为操作系统原生应用：**  \n> [human-electron](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-electron)\n\n\u003Cbr>\n\n**468 点人脸网格细节：**  \n（以全分辨率查看以看清关键点）  \n\n[\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_aa9011483b68.png\" width=\"400\"\u002F>](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_aa9011483b68.png)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## 快速入门\n\n只需在 HTML 文件中直接从云 CDN 加载 `Human`（IIFE 版本）：  \n（选择其中一个：`jsdelirv`、`unpkg` 或 `cdnjs`）\n\n```html\n\u003C!DOCTYPE HTML>\n\u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@vladmandic\u002Fhuman\u002Fdist\u002Fhuman.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Funpkg.dev\u002F@vladmandic\u002Fhuman\u002Fdist\u002Fhuman.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fcdnjs.cloudflare.com\u002Fajax\u002Flibs\u002Fhuman\u002F3.0.0\u002Fhuman.js\">\u003C\u002Fscript>\n```\n\n有关详细信息，包括如何使用 `Browser ESM` 版本或 `NodeJS` 版本的 `Human`，请参阅 [**安装**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FInstall)。\n\n\u003Cbr>\n\n## 代码示例\n\n一个简单的应用，使用 Human 处理视频输入，并利用内置的绘制辅助函数在屏幕上绘制输出结果。\n\n```js\n\u002F\u002F 使用默认值创建一个简单配置的 Human 实例\nconst config = { backend: 'webgl' };\nconst human = new Human.Human(config);\n\u002F\u002F 从页面中选择输入的 HTMLVideoElement 和输出的 HTMLCanvasElement\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nfunction detectVideo() {\n  \u002F\u002F 使用默认配置进行处理\n  human.detect(inputVideo).then((result) => {\n    \u002F\u002F result 对象将包含检测到的详细信息，\n    \u002F\u002F 以及处理后的画布本身。\n    \u002F\u002F 首先，我们将处理后的帧绘制到画布上：\n    human.draw.canvas(result.canvas, outputCanvas);\n    \u002F\u002F 然后在同一画布上绘制检测结果：\n    human.draw.face(outputCanvas, result.face);\n    human.draw.body(outputCanvas, result.body);\n    human.draw.hand(outputCanvas, result.hand);\n    human.draw.gesture(outputCanvas, result.gesture);\n    \u002F\u002F 接着立即进入下一帧的循环：\n    requestAnimationFrame(detectVideo);\n    return result;\n  });\n}\n\ndetectVideo();\n```\n\n或者使用 `async\u002Fawait`：\n\n```js\n\u002F\u002F 使用默认值创建一个简单配置的 Human 实例\nconst config = { backend: 'webgl' };\nconst human = new Human(config); \u002F\u002F 创建 Human 实例\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function detectVideo() {\n  const result = await human.detect(inputVideo); \u002F\u002F 运行检测\n  human.draw.all(outputCanvas, result); \u002F\u002F 绘制所有结果\n  requestAnimationFrame(detectVideo); \u002F\u002F 运行循环\n}\n\ndetectVideo(); \u002F\u002F 开始循环\n```\n\n或者使用 `Events`：\n\n```js\n\u002F\u002F 使用默认值创建一个简单配置的 Human 实例\nconst config = { backend: 'webgl' };\nconst human = new Human(config); \u002F\u002F 创建 Human 实例\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nhuman.events.addEventListener('detect', () => { \u002F\u002F 当检测完成时触发事件\n  human.draw.all(outputCanvas, human.result); \u002F\u002F 绘制所有结果\n});\n\nfunction detectVideo() {\n  human.detect(inputVideo) \u002F\u002F 运行检测\n    .then(() => requestAnimationFrame(detectVideo)); \u002F\u002F 检测完成后开始处理下一帧\n}\n\ndetectVideo(); \u002F\u002F 开始循环\n```\n\n或者通过插值结果实现平滑的视频处理，将检测和绘制循环分开：\n\n```js\nconst human = new Human(); \u002F\u002F 创建 Human 实例\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\nlet result;\n\nasync function detectVideo() {\n  result = await human.detect(inputVideo); \u002F\u002F 运行检测\n  requestAnimationFrame(detectVideo); \u002F\u002F 运行检测循环\n}\n\nasync function drawVideo() {\n  if (result) { \u002F\u002F 检查是否有结果\n    const interpolated = human.next(result); \u002F\u002F 使用上次已知的结果获取平滑结果\n    human.draw.all(outputCanvas, interpolated); \u002F\u002F 绘制当前帧\n  }\n  requestAnimationFrame(drawVideo); \u002F\u002F 运行绘制循环\n}\n\ndetectVideo(); \u002F\u002F 开始检测循环\ndrawVideo(); \u002F\u002F 开始绘制循环\n```\n\n或者同样的方式，但使用内置的完整视频处理功能，而不是手动逐帧循环：\n\n```js\nconst human = new Human(); \u002F\u002F 创建 Human 实例\nconst inputVideo = document.getElementById('video-id');\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function drawResults() {\n  const interpolated = human.next(); \u002F\u002F 使用上次已知的结果获取平滑结果\n  human.draw.all(outputCanvas, interpolated); \u002F\u002F 绘制当前帧\n  requestAnimationFrame(drawResults); \u002F\u002F 运行绘制循环\n}\n\nhuman.video(inputVideo); \u002F\u002F 开始检测循环，持续更新结果\ndrawResults(); \u002F\u002F 开始绘制循环\n```\n\n或者使用内置的摄像头辅助方法，完全负责视频处理：\n\n```js\nconst human = new Human(); \u002F\u002F 创建 Human 实例\nconst outputCanvas = document.getElementById('canvas-id');\n\nasync function drawResults() {\n  const interpolated = human.next(); \u002F\u002F 使用上次已知的结果获取平滑结果\n  human.draw.canvas(outputCanvas, human.webcam.element); \u002F\u002F 绘制当前摄像头画面\n  human.draw.all(outputCanvas, interpolated); \u002F\u002F 绘制检测结果\n  requestAnimationFrame(drawResults); \u002F\u002F 运行绘制循环\n}\n\nawait human.webcam.start({ crop: true });\nhuman.video(human.webcam.element); \u002F\u002F 开始检测循环，持续更新结果\ndrawResults(); \u002F\u002F 开始绘制循环\n```\n\n为了获得更好的效果，还可以在单独的 Web Worker 线程中运行检测。\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## 输入\n\n`Human` 库可以处理所有已知的输入类型：\n\n- `Image`、`ImageData`、`ImageBitmap`、`Canvas`、`OffscreenCanvas`、`Tensor`\n- `HTMLImageElement`、`HTMLCanvasElement`、`HTMLVideoElement`、`HTMLMediaElement`\n\n此外，`HTMLVideoElement` 和 `HTMLMediaElement` 可以是标准的 `\u003Cvideo>` 标签，链接到以下内容：\n\n- 用户设备上的网络摄像头\n- 任何支持的视频格式  \n  例如 `.mp4`、`.avi` 等\n- 通过 *HTML5 媒体源扩展* 支持的其他视频格式  \n  例如：使用 `hls.js` 的 **HLS**（HTTP 实时流）或使用 `dash.js` 的 **DASH**（基于 HTTP 的动态自适应流）\n- 内置支持的 **WebRTC** 媒体轨道\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## 详细使用说明\n\n- [**Wiki 主页**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki)\n- [**所有可用方法、属性和命名空间列表**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FUsage)\n- [**TypeDoc API 规范 - 主类**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)\n- [**TypeDoc API 规范 - 完整版**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002F)\n\n    ![typedoc](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_88c94b2480f6.png)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## TypeDefs\n\n`Human` 是使用 TypeScript 强类型编写的，并随附库中定义的所有类的完整 **TypeDefs**，打包在 `types\u002Fhuman.d.ts` 中，默认启用。\n\n*注意*：这不包括嵌入的 `tfjs`。  \n如果您希望在 `Human` 中使用嵌入的 `tfjs`（`human.tf` 命名空间），同时保留完整的 **typedefs**，请添加以下代码：\n\n> import type * as tfjs from '@vladmandic\u002Fhuman\u002Fdist\u002Ftfjs.esm';  \n> const tf = human.tf as typeof tfjs;\n\n默认情况下未启用此功能，因为考虑到体积因素，`Human` 并不提供完整的 **TFJS TypeDefs**。  \n如上启用 `tfjs` 的 TypeDefs 会引入额外的项目依赖（仅开发环境所需，因为仅需类型信息），这些依赖定义在 `@vladmandic\u002Fhuman\u002Fdist\u002Ftfjs.esm.d.ts` 中：\n\n> @tensorflow\u002Ftfjs-core, @tensorflow\u002Ftfjs-converter, @tensorflow\u002Ftfjs-backend-wasm, @tensorflow\u002Ftfjs-backend-webgl\n\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## 默认模型\n\nHuman 库中的默认模型包括：\n\n- **人脸检测**：*MediaPipe BlazeFace Back 变体*\n- **人脸网格**：*MediaPipe FaceMesh*\n- **虹膜分析**：*MediaPipe Iris*\n- **人脸描述**：*HSE FaceRes*\n- **情绪识别**：*Oarriaga Emotion*\n- **人体分析**：*MoveNet Lightning 变体*\n- **手部分析**：*HandTrack & MediaPipe HandLandmarks*\n- **人体分割**：*Google Selfie*\n- **目标检测**：*CenterNet 配合 MobileNet v3*\n\n请注意，库中提供了替代模型，可通过配置启用。  \n例如，人体姿态检测默认使用 *MoveNet Lightning*，但也可以切换为 *MultiNet Thunder* 以获得更高精度，或切换为 *Multinet MultiPose* 以实现多人检测；此外，还可以根据具体应用场景选择 *PoseNet*、*BlazePose* 或 *EfficientPose*。\n\n更多详细信息，请参阅 [**配置说明**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FConfiguration) 和 [**模型列表**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FModels)。\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n## 诊断工具\n\n- [如何获取诊断信息或性能追踪信息](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDiag)\n\n\u003Cbr>\u003Chr>\u003Cbr>\n\n`Human` 库采用 [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002Fintro.html) **5.1** 编写，基于 [TensorFlow\u002FJS](https:\u002F\u002Fwww.tensorflow.org\u002Fjs\u002F) **4.10** 构建，并遵循最新的 `JavaScript` [ECMAScript 2022](https:\u002F\u002F262.ecma-international.org\u002F) 标准。\n\n可分发版本的目标环境为 `JavaScript` [ECMAScript 2018](https:\u002F\u002F262.ecma-international.org\u002F9.0\u002F)。\n\n\u003Cbr>\n\n详情请参阅 [**Wiki 页面**](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki) 和 [**API 文档**](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html)。\n\n\u003Cbr>\n\n[![](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fvladmandic)\n![星标数](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![叉子数](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_5f71faae6f23.png)\n![代码大小](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Fcode-size\u002Fvladmandic\u002Fhuman?style=flat-square&svg=true)\n![CDN](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_readme_55e019a23495.png)\u003Cbr>\n![npm 下载量（日均）](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdw\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![npm 下载量（月均）](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@vladmandic\u002Fhuman.png?style=flat-square)\n![npm 下载量（年均）](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdy\u002F@vladmandic\u002Fhuman.png?style=flat-square)","# Human 库快速上手指南\n\n**Human** 是一个功能强大的 AI 库，支持 3D 人脸检测与旋转跟踪、人脸描述与识别、身体姿态跟踪、3D 手部追踪、虹膜分析、年龄\u002F性别\u002F情绪预测、视线跟踪、手势识别及人体分割等功能。它适用于浏览器（前端）和 Node.js（后端）环境。\n\n## 环境准备\n\n### 系统要求\n- **浏览器端**：\n  - 首选基于 **Chromium** 的浏览器（如 Chrome, Edge）。\n  - 支持 Firefox 和 Safari（作为次要平台）。\n  - 支持后端：WebGPU, WebGL, WASM, CPU。\n- **Node.js 端**：\n  - 支持版本：**14.x** 至 **22.x**。\n  - **注意**：不支持 Node.js 23.x（因 `@tensorflow\u002Ftfjs` 的破坏性变更）。\n  - 后端支持：WASM（通用）、`tfjs-node`（CPU\u002FGPU 加速，需 NVIDIA CUDA 支持 GPU）。\n\n### 前置依赖\n确保已安装 Node.js 和 npm。若需在 Node.js 中使用 GPU 加速或视频处理，可能需要额外安装系统级依赖（如 ffmpeg, cuda toolkit），但基础功能仅需 Node.js 环境。\n\n## 安装步骤\n\n你可以通过 npm 或 yarn 安装 Human 库。国内开发者建议使用淘宝镜像源加速安装。\n\n```bash\n# 使用 npm 安装（推荐国内用户配置淘宝镜像）\nnpm config set registry https:\u002F\u002Fregistry.npmmirror.com\nnpm install @vladmandic\u002Fhuman\n\n# 或者直接使用 yarn\nyarn add @vladmandic\u002Fhuman\n```\n\n> **提示**：模型文件通常在首次运行时自动下载，也可手动从 [模型仓库](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-models) 获取并配置本地路径以提升加载速度。\n\n## 基本使用\n\n以下是一个最简单的浏览器端示例，展示如何初始化 Human 并检测人脸。\n\n### 1. HTML 结构\n创建一个简单的 HTML 文件，引入库并添加视频元素。\n\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n  \u003Ctitle>Human Quick Start\u003C\u002Ftitle>\n  \u003C!-- 引入构建好的库文件，或通过打包工具引入 -->\n  \u003Cscript type=\"module\">\n    import Human from 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@vladmandic\u002Fhuman\u002Fdist\u002Fhuman.min.js';\n\n    async function run() {\n      \u002F\u002F 初始化配置\n      const config = {\n        backend: 'webgl', \u002F\u002F 或 'wasm', 'webgpu'\n        face: { enabled: true }, \u002F\u002F 启用人脸检测\n        debug: false\n      };\n\n      const human = new Human(config);\n\n      \u002F\u002F 加载模型\n      await human.load();\n\n      \u002F\u002F 获取摄像头流\n      const video = document.getElementById('video');\n      const stream = await navigator.mediaDevices.getUserMedia({ video: true });\n      video.srcObject = stream;\n      \n      await video.play();\n\n      \u002F\u002F 执行检测\n      const result = await human.detect(video);\n      \n      console.log('检测结果:', result);\n      if (result.face && result.face.length > 0) {\n        console.log(`检测到 ${result.face.length} 张人脸`);\n        console.log('第一张人脸情绪:', result.face[0].emotion);\n      }\n    }\n\n    run();\n  \u003C\u002Fscript>\n\u003C\u002Fhead>\n\u003Cbody>\n  \u003Cvideo id=\"video\" style=\"display:none;\">\u003C\u002Fvideo>\n  \u003Ch1>请查看控制台输出检测结果\u003C\u002Fh1>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\n### 2. Node.js 端使用示例\n在服务器端处理图片文件：\n\n```javascript\nimport Human from '@vladmandic\u002Fhuman';\nimport fs from 'fs';\n\nasync function detectImage() {\n  const config = {\n    backend: 'wasm', \u002F\u002F Node.js 中若无 TF 二进制文件，推荐使用 WASM\n    face: { enabled: true },\n    emotion: { enabled: true }\n  };\n\n  const human = new Human(config);\n  await human.load();\n\n  \u002F\u002F 读取图片文件\n  const imageBuffer = fs.readFileSync('.\u002Ftest.jpg');\n  \n  \u002F\u002F 执行检测\n  const result = await human.detect(imageBuffer);\n  \n  console.log('检测完成:', result.face?.length || 0, '张人脸');\n}\n\ndetectImage().catch(console.error);\n```\n\n### 关键配置说明\n- **按需加载模型**：在 `config` 中仅启用需要的模块（如 `face`, `hand`, `gesture`），可显著提升性能。\n- **后端选择**：现代浏览器默认使用 `webgl`；若无独立显卡或兼容性有问题，可切换为 `wasm`。\n- **平滑处理**：库内置了时间插值算法，无需额外代码即可实现结果的平滑过渡。\n\n更多高级用法（如人脸比对、3D 姿态可视化）请参考官方 Demo 源码。","某在线教育平台正在开发一款\"AI 互动课堂”功能，旨在通过摄像头实时分析学生的听课状态与专注度，以优化教学反馈。\n\n### 没有 human 时\n- **开发周期漫长**：团队需分别集成人脸检测、姿态估计、情绪识别等多个独立的开源模型，代码耦合度高，调试耗时数周。\n- **浏览器兼容性差**：不同模型对后端（WebGL\u002FWASM）支持不一，导致在部分老旧设备或 Safari 浏览器上功能直接不可用。\n- **画面抖动严重**：由于缺乏时序插值算法，单帧检测结果波动大，学生轻微晃动会被误判为“频繁走神”或“异常动作”。\n- **资源占用过高**：所有模型全量运行且无动态调度机制，导致用户笔记本风扇狂转，视频流卡顿甚至崩溃。\n\n### 使用 human 后\n- **一站式快速集成**：human 提供统一 API，将 3D 人脸、手势、视线及情绪分析等能力打包，原本数周的整合工作缩短至两天完成。\n- **全平台流畅运行**：自动适配 WebGPU、WebGL 或 WASM 后端，确保从高端台式机到移动端 WebView 均能稳定执行推理。\n- **数据平滑精准**：内置智能时序插值与帧变化检测，有效过滤噪点，输出的专注度曲线平滑自然，真实反映学生状态。\n- **性能动态优化**：根据场景需求按需加载模型（如仅有人脸时暂停姿态追踪），大幅降低 CPU\u002FGPU 负载，保证视频流高清流畅。\n\nhuman 通过高度集成的多模态感知能力与智能性能调度，让复杂的端侧 AI 交互应用得以低成本、高性能地落地。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvladmandic_human_eac284be.jpg","vladmandic","Vladimir Mandic","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvladmandic_8faf6a8a.jpg",null,"Miami, Florida \u002F Rijeka, Croatia","mandic00@live.com","vmandic00","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcyan051\u002F","https:\u002F\u002Fgithub.com\u002Fvladmandic",[82,86,90,94,98],{"name":83,"color":84,"percentage":85},"HTML","#e34c26",71.9,{"name":87,"color":88,"percentage":89},"TypeScript","#3178c6",24,{"name":91,"color":92,"percentage":93},"JavaScript","#f1e05a",2.3,{"name":95,"color":96,"percentage":97},"CSS","#663399",1.8,{"name":99,"color":100,"percentage":101},"Shell","#89e051",0,3069,419,"2026-04-05T22:53:11","MIT","Linux, macOS, Windows","非必需。浏览器端支持 WebGL\u002FWebGPU\u002FWASM\u002FCPU；NodeJS 端若需 GPU 加速，需 nVidia CUDA 及对应的 tensorflow 共享库。","未说明",{"notes":110,"python":111,"dependencies":112},"1. 核心运行环境为 NodeJS (版本 14.x 至 22.x)，不支持 23.x。2. 浏览器端主要支持 Chromium 内核，其次为 Firefox 和 Safari。3. 在无 tensorflow 二进制的架构上，NodeJS 可使用 WASM 后端运行。4. 该工具是一个 JavaScript\u002FTypeScript 库，非 Python 项目。","不适用 (基于 NodeJS\u002FJavaScript)",[113,114,115,116,117],"@tensorflow\u002Ftfjs","@vladmandic\u002Fhuman","node-canvas (NodeJS 可选)","ffmpeg (NodeJS 视频处理可选)","fswebcam (NodeJS 摄像头可选)",[14,60,15],[120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"face-detection","gender-prediction","iris-tracking","body-tracking","hand-tracking","tensorflowjs","age-estimation","face-position","tfjs","emotion-detection","gesture-recognition","face-recognition","face-mesh","gaze-tracking","body-segmentation","face-matching","faceid","2026-03-27T02:49:30.150509","2026-04-07T00:48:54.905795",[140,145,150,155,160,164],{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},20554,"使用 humangl 后端时，faceres 模型返回 null 或 NaN 值怎么办？","这是由于 humangl 后端启用了 GL uniforms 优化导致的兼容性问题。临时解决方案如下：\n1. 对于 human 2.7 - 2.9 版本：将配置设置为 `config.backend = 'webgl'`（默认 webgl 后端未启用该优化）。\n2. 对于 human 2.10 及以上版本：显式禁用该优化，设置 `config.flags.WEBGL_USE_SHAPES_UNIFORMS = false`。\n注意：humangl 后端具有显著的性能优势（编译速度约快 2 倍），若非必要不建议全局禁用，可针对特定应用调整配置。","https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues\u002F291",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},20555,"为什么在没有真实人脸时（如对着摄像头握拳），系统仍会检测到人脸？","这是因为默认的 BlazeFace 模型在单独运行时容易产生误检。建议方案：\n1. 如果只需要人脸检测，可以改用独立的 FaceBoxes 检测器，它在 standalone 模式下表现更好。\n2. 配置示例：\n```js\nconst myConfig = {\n  videoOptimized: false,\n  face: {\n    enabled: true,\n    detector: { modelPath: '\u002Fhuman\u002Fmodels\u002Ffaceboxes.json', enabled: true, minConfidence: 0.5 },\n    mesh: { enabled: false },\n    iris: { enabled: false },\n    age: { enabled: false },\n    gender: { enabled: false },\n    emotion: { enabled: false },\n  },\n  body: { enabled: false },\n  hand: { enabled: false },\n};\n```\n注意：FaceBoxes 模型在 human 1.0 版本后已被移除，如需使用需安装 0.9.x 旧版本或自行克隆仓库回退版本。","https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues\u002F84",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},20556,"如何在 React Native 中使用 human 库？","在 React Native 环境中使用时可能会遇到 DOM 相关的错误（如 AppRegistry 未注册）。维护者已在 human 3.0.5 版本中发布了可能的修复方案。请尝试升级库至最新版本：\n`npm install @vladmandic\u002Fhuman@latest`\n如果问题仍然存在，请检查入口文件路径是否正确或 JS bundle 是否损坏。","https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues\u002F327",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},20557,"情绪检测准确率很低，是否有替代模型或优化方法？","默认的情绪模型基于 Oarriaga，在远距离或低分辨率下准确率可能受限。优化建议：\n1. 提高输入图像的分辨率有助于提升准确率。\n2. 确保库已对裁剪后的人脸进行了必要的预处理（如灰度化、归一化等）。\n3. 目前官方 Wiki 提到了 GEAR 作为潜在替代方案，但需确认具体集成状态。用户可以关注后续版本更新或参与讨论贡献新的姿态估计和情绪模型。","https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fissues\u002F335",{"id":161,"question_zh":162,"answer_zh":163,"source_url":159},20558,"如何获取 human 库的下一个 npm 发布版本时间？","目前没有固定的发布计划。通常当有重大更新或与最新 TensorFlow.js 版本同步时会发布新版本（例如等待 tfjs 4.3.0 发布后进行全量刷新）。预计周期通常在 2-3 周内。如果急需使用最新功能，可以直接通过 GitHub 安装：\n`npm install github:vladmandic\u002Fhuman`",{"id":165,"question_zh":166,"answer_zh":167,"source_url":149},20559,"WASM 后端开启 mesh 后性能变差怎么办？","如果在 WASM 后端下启用 mesh 导致性能下降，可以尝试以下调整：\n1. 确认 `videoOptimized` 设置：如果输入是视频流，设为 `true` 可跳过部分边界检测以提升性能；如果是静态图片则必须设为 `false`。\n2. 若内存受限，可尝试设置 `deallocate: true` 以在每次使用后积极释放 GPU 内存（仅适用于 WebGL 后端首次调用）。\n3. 避免在不必要时开启 `profile` 模式，这会显著影响性能。",[169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,243,247,251,255,259],{"id":170,"version":171,"summary_zh":172,"released_at":173},126538,"3.2.1","更新发布：\n\n- 工具包升级：TypeScript 5.3.3、TSLib 2.6.2、TFJS 4.17.0、ESLint 8.55.0、ESBuild 0.19.22\n- 自定义 CI 平台重大更新，以兼容新工具包\n- 新增公共配置变量 `face.detector.scale` 和 `face.iris.scale`\n","2024-02-15T17:57:56",{"id":175,"version":176,"summary_zh":177,"released_at":178},126539,"3.1.2","## 更新发布\n\n- 重大工具链升级：\n  `node` v20、`npm` v10、`typescript` v5.1、`tfjs`：4.11\n- 增加 Electron 环境检测\n- 修复 `gender-ssrnet-imdb`\n- 修复 `movenet-multipose`\n- 为 *emotion*、*description*、*ssrnet* 和 *gear* 模型添加可选的 `crop` 参数值\n","2023-09-18T16:58:36",{"id":180,"version":181,"summary_zh":182,"released_at":183},126540,"3.0.1","## 优化项：  \n- 启用了高分辨率优化  \n  内部限制从 **2k** 提升至 **4k**  \n- 增强了设备能力检测  \n  详情请参阅 `human.env.[agent, wasm, webgl, webgpu]`  \n- 如果未设置 `config.backend`，Human 将根据设备能力自动选择最佳后端  \n- 加强了对 `webgpu` 的支持  \n- 减少了构建依赖  \n  `Human` 现在体积缩小了 30% :)  \n  与往常一样，`Human` 的运行时依赖为 **零**，  \n  所有的 *devDependencies* 仅用于重新构建 `Human` 自身  \n- 默认的手部骨骼模型由 `handlandmark-full` 更改为 `handlandmark-lite`  \n  两种模型仍受支持，此举可减小默认包大小并提升性能  \n\n## 功能特性：  \n- 新增 [绘制标签模板](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fwiki\u002FDraw)  \n  方便自定义在画布上绘制的结果标签  \n- 新增 `config.filter.autoBrightness`（默认启用）  \n  每帧视频的实时亮度调整  \n  在光线不足的场景下可显著提升性能和精度  \n- 新增演示 [人脸检测]((https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ffacedetect\u002Findex.html))  \n- 改进了 `config.filter.equalization`（默认关闭）  \n  支持按需对图像和视频进行直方图均衡化处理  \n- 支持在多摄像头环境下选择特定的视频源  \n  请参阅 `human.webcam.enumerate()`  \n- 更新了基于虹膜大小计算与相机距离的算法  \n  详情请查看 `human.result.face[n].distance`  \n\n## 架构改进：  \n- 升级至 **TFJS 4.1**，并引入 **强类型定义**  \n  使用方法请参阅 [说明](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman#typedefs)  \n- 重构了 `TypeDef`  \n- 重新设计了 `human.models` 命名空间，以更好地支持动态模型加载  \n  新增了 `load`、`list`、`loaded`、`reset` 等方法  \n- 重新打包了外部类型定义  \n  移除了所有对外部类型定义的依赖  \n- 重构了命名空间导出  \n  生成了更完善的 [TypeDoc 文档](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Findex.html)  \n- 添加了具名导出，以提升使用非默认导入方式时的打包工具兼容性  \n- 清理了 `dist`\u002F`typedef`\u002F`types` 目录下的 Git 历史记录  \n- 对 `@vladmandic\u002Fhuman-models` 进行了清理  \n- 增加了对 **NodeJS v19** 的支持  \n- 升级至 **TypeScript 4.9**  \n- 支持在 **NodeJS** 中动态加载模块  \n  详情请参阅 \u003Chttps:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fnodejs\u002Fnode-bench>  \n\n## 破坏性变更：  \n- 用 `result.face[n].distance` 替代了原有的 `result.face[n].iris`  \n- 用 `human.models.stats()` 替代了 `human.getModelStats()`  \n- 将 `human.similarity`、`human.distance` 和 `human.match` 移至 `human.match.*` 命名空间  \n- 废弃了 `human.enhance()`  \n- 废弃了 `human.gl`  \n- 将模型 `mb3-centernet` 重命名为 `centernet`","2022-11-22T15:58:39",{"id":185,"version":186,"summary_zh":187,"released_at":188},126541,"2.11.1","简而言之：新增了多项方法和模型，但唯一具有破坏性的改动在于 `human.segmentation` 的处理方式。\n\n- 新增方法 [`human.webcam.*`](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FWebCam.html)  \n  支持对 **WebCam** 流的内置配置与控制。  \n- 新增方法 [`human.video()`](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#video)  \n  可对输入的 **视频** 进行连续检测，  \n  而无需再手动使用 `human.detect()` 处理每一帧。  \n- 针对 **webcam** 和 **video** 方法的新演示 [*实时预览*](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fvideo\u002Findex.html) | [*代码*](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Fvideo\u002Findex.html)  \n  *完整的 HTML 和 JavaScript 代码仅占不到一屏*。  \n- 重新设计了 [`human.segmentation`](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#segmentation)  \n  *存在破坏性变更*。  \n- 新增模型 `rvm`，用于实现高质量的实时人体分割。  \n  *该模型未包含在默认部署中，需从 [human-models](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-models\u002Ftree\u002Fmain\u002Fmodels) 下载*。  \n- 针对 **segmentation** 方法的新演示 [*实时预览*](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Fsegmentation\u002Findex.html) | [*代码*](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fdemo\u002Fsegmentation\u002Findex.html)  \n  *完整的 HTML 和 JavaScript 代码仅占不到一屏*。  \n- 新增基于 **BabylonJS 和 VRM** 的高级演示 [*实时预览*](https:\u002F\u002Fvladmandic.github.io\u002Fhuman-bjs-vrm) | [*代码*](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-bjs-vrm)。  \n- 更新 **TypeDoc** 文档生成 [*链接*](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc)。  \n- 更新 **TypeDefs** 打包生成 [*链接*](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Ftypes\u002Fhuman.d.ts)。  \n  不再依赖外部依赖项。  \n- 修复使用 Web Worker 时的模型缓存问题。  \n- 修复使用插值时的 `face.rotation` 问题。  \n- 改进在使用 ESM 时的 Node.js 模块解析器。  \n- 更新演示 `demo\u002Ftypescript`。  \n- 更新演示 `demo\u002Ffaceid`。  \n- 更新演示 `demo\u002Fnodejs\u002Fprocess-folder.js`，  \n  并重新处理 `\u002Fsamples` 目录 [*链接*](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fsamples)。","2022-10-13T13:13:50",{"id":190,"version":191,"summary_zh":192,"released_at":193},126542,"2.10.1","**Human v2.10** 被标记为重大版本，仅仅是因为变更和修复的数量较多，但并没有引入任何破坏性更改。\n\n- 将 **TFJS** 更新至 **3.20.0**  \n- 将 **TypeScript** 更新至 **4.8**  \n- 将默认后端从自定义的 `humangl` 切换为 `webgl`  \n  由于标准 **TFJS** 的稳定性和功能可用性，现在可以切换回原方案  \n- 添加 **InsightFace** 模型作为人脸嵌入\u002F描述符检测的替代方案  \n  兼容多种变体的 **InsightFace** 模型  \n  可通过 `config.face.insightface` 配置项进行配置  \n  使用示例请参见 `demo\u002Ffaceid\u002Findex.ts`  \n  模型可从 \u003Chttps:\u002F\u002Fgithub.com\u002Fvladmandic\u002Finsightface> 下载  \n- 添加 `human.check()` 方法，用于验证当前加载的所有模型在当前所选后端上的所有内核操作是否有效  \n  示例：`console.error(human.check());`  \n- 添加 `config.softwareKernels` 配置选项，当缺少某些操作时，将使用 **CPU** 实现来替代  \n  默认关闭  \n  如果启用，它将用于人脸和手部旋转校正（`config.face.rotation` 和 `config.hand.rotation`）  \n- 在 NodeJS 环境中运行时，添加对底层 **tensorflow** 库版本的检测，并将其记录到 `human.env` 中，同时检查是否使用了 **GPU** 进行加速  \n  示例：`console.log(human.env.tensorflow)`  \n- 对于无法找到或加载的模型，不再视为严重错误  \n  相比之前抛出运行时异常的做法，`human` 现在会报告模型未能加载  \n- 改进 `human.reset()` 方法，使其能够将所有配置值重置为默认值  \n- 将模型托管在 \u003Chttps:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-models>  \n  用户可以直接使用这些模型，无需下载到本地存储  \n  示例：`modelBasePath: 'https:\u002F\u002Fvladmandic.github.io\u002Fhuman-models\u002Fmodels\u002F'`  \n- 允许将模型托管在 **Google Cloud Bucket** 中  \n  托管的模型可以直接使用，无需下载到本地存储  \n  示例：`modelBasePath: 'https:\u002F\u002Fstorage.googleapis.com\u002Fhuman-models\u002F'`  \n- 对 **TypeScript** 和 **JavaScript** 代码实施更严格的 linting 规则  \n  详细规则请参阅 `.\u002Feslintrc.json`  \n- 提升了整个库的类型安全性  \n- 修复 **MobileFaceNet** 模型，作为人脸嵌入\u002F描述符检测的替代方案  \n  可通过 `config.face.mobilefacenet` 配置项进行配置  \n- 修复 **EfficientPose** 模块，作为人体姿态检测的替代方案  \n- 修复 **NanoDet** 模块，作为目标检测的替代方案  \n- 修复 `demo\u002Fmultithread\u002Fnode-multiprocess.js` 示例  \n- 修复在混合描述符长度情况下使用 `human.match` 的问题  \n- 修复 TFJS 在 Edge\u002FChromium 浏览器中 **WASM** 功能检测的问题  \n  示例：`console.log(human.env.wasm)`  \n- 重新组织了初始化和加载顺序，以加快库的启动速度  \n- 提高了 **NodeJS** 测试覆盖率  \n  可通过 `npm run test` 命令运行测试，涵盖 `tfjs-node`、`tfjs-node-gpu` 和 `wasm` 环境  \n- 提高了 **浏览器** 测试覆盖率  \n  可通过打开 `demo\u002Fbrowser.html` 页面运行测试，涵盖 `webgl`、`humangl`、`webgpu` 和 `wasm` 环境；同时支持 ESM 和 IIFE 版本的库  \n- ","2022-09-07T16:45:57",{"id":195,"version":196,"summary_zh":197,"released_at":198},126543,"2.9.1","- 默认安装仅用于生产环境的依赖项  \n  这将使 `human` 的安装速度更快、体积更小  \n  如果需要安装所有依赖项，请使用 `npm install @vladmandic\u002Fhuman --production=false`  \n- 在浏览器中切换到生产环境的 `@tensorflow\u002Ftfjs`  \n  `tfjs` 在最近的版本中已经趋于稳定，因此不再需要运行自定义打包  \n- 添加 **WebView** 支持  \n- 添加 `getModelStats` 方法  \n- 在构建过程中提取模型统计信息  \n- 修复 TypeDoc 相关问题  \n- 在结果中添加人脸轮廓  \n- 改进演示应用中的人脸比对功能  \n- 更新依赖项和 `tfjs`  \n- 修复 `gear` 模型相关问题  \n","2022-07-25T12:35:51",{"id":200,"version":201,"summary_zh":202,"released_at":203},126544,"2.8.1","- 更新了 **FaceMesh-Landmarks** 模型\n- 新增了 **FaceMesh-with-Attention** 模型，默认情况下已禁用，可通过设置  \n  `config.face.mesh.attention = true` 来启用\n- 如果启用了 **FaceMesh-with-Attention** 模型，则虹膜模型会被自动禁用，  \n  因为其功能已被注意力模型所取代\n- 结果中包含更详细的面部网格标注：  \n  `result.face[].annotations`\n- 更新了基准测试：`demo\u002Fbenchmark`\n- 使用 `WASM` 后端进行画布读取时，性能略有提升\n- 默认使用 `WASM` 二进制文件的 RTM 版本\n- 提升了对 `WebGPU` 的兼容性\n- 支持 **NodeJS v18**\n- 更新了 **已知问题**  \n  请参阅 \u003Chttps:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002FTODO.md>\n","2022-06-08T12:56:30",{"id":205,"version":206,"summary_zh":207,"released_at":208},126545,"v2.7.1","- 添加 **MediaPipe FaceMesh-with-Attention** 模型  \n  该模型可在 `@vladmandic\u002Fhuman-models` 仓库中获取  \n  启用方法：将 `config.face.attention = true` 设置为 true  \n  该模型会用高细节的关键点替换原有的 **iris**、**eyes** 和 **lips** 关键点  \n- 在 `warmup` 方法中添加模型的 **预编译** 阶段  \n  结果是在浏览器环境中，首次推理的速度提升约 30%  \n- 将默认的人脸裁剪比例由 120% 调整为 140%  \n  以更好地利用帧间缓存和人脸网格映射  \n- 重构 **draw** 方法至独立模块，并修复着色函数  \n- 为注意力关键点添加高亮显示  \n  当同时启用关键点绘制和注意力绘制时生效：  \n  `human.draw.options.drawAttention = true` 和 `human.draw.options.drawPoints = true`\n- 添加 **ElectronJS** 示例：  \n  详见 \u003Chttps:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-electron>  \n- 增强了 **3D** 示例：  \n  详见 \u003Chttps:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman-motion>\n- 支持 **4K** 输入  \n- 将 **TFJS** 更新至 3.16.0  \n- 更新构建平台及依赖项","2022-05-09T12:18:08",{"id":210,"version":211,"summary_zh":212,"released_at":213},126546,"2.6.1","- 在 *浏览器* 环境中使用 **IndexDB** 添加模型缓存处理器  \n  详情请参阅 `config.cacheModels` 配置项  \n- 新增额外的示例  \n  `human-motion` 和 `human-avatar`  \n- 更新了示例图片库  \n- 允许在 Node.js 中对 `fetch` 进行猴子补丁  \n  如果已定义 `fetch` 函数，则可使用它从 HTTP\u002FHTTPS URL 加载模型，而无需考虑 `tfjs` 是否支持该平台  \n- 修复面部部分遮挡时 `BlazeFace` 的检测问题  \n- 修复 `BlazeFace` 框架缩放问题  \n- 修复手部位于面部前方时 `HandTrack` 的跟踪问题  \n- 修复 `ElectronJS` 兼容性问题\n- 修复身体关键点插值算法\n- 更新了 `BlazePose` 的计算逻辑  \n- 对 `BlazePose` 和 `HandLandmark` 的注释进行了调整  \n- 为字符串枚举添加强类型检查  \n- 更新了 `TFJS`  \n","2022-01-20T13:19:49",{"id":215,"version":216,"summary_zh":217,"released_at":218},126547,"2.5.6","新增：\n- 演示程序 `demos\u002Ffaceid`，利用多种算法在触发人脸识别前对输入进行验证。\n- 为 `Human` 和 `TFJS` 提供的类型定义 Rollup。\n- 可选模块 `liveness`：用于检测输入是否为真实世界的实时图像，而非录制内容；建议与 `antispoofing` 模块配合使用，后者用于判断输入中是否存在逼真的面部特征。\n- 在 `face.config.detector.mask` 中新增人脸遮罩选项：在人脸区域之外对图像进行遮罩处理，有助于提高依赖检测到的人脸作为输入的其他模块的灵敏度。\n- 在 `face.config.detector.cropFactor` 中新增人脸裁剪选项：允许用户自定义微调，以更好地适配依赖检测到的人脸作为输入的其他模块。\n\n其他：\n- 将 **TFJS** 更新至 3.12.0 版本。\n- 全面重构文档。\n- 改进对 **Safari** 浏览器的兼容性。\n- 优化了 `similarity` 和 `match` 分数范围的归一化处理。\n- 改进了错误处理机制。\n- 优化了 VSCode 的开箱即用体验。\n- 修复了可选模块 `gear`、`ssrnet` 和 `mobilefacenet` 的问题。\n- 修复了 Firefox 浏览器中 WebGPU 兼容性问题。\n- 修复了人脸检测框的缩放和旋转问题。\n- 修复了人体姿态插值问题。\n- 更新了 `blazepose` 实现。\n- 对 `config` 和 `results` 中的所有字符串枚举进行了强类型化。","2021-12-15T14:33:10",{"id":220,"version":221,"summary_zh":222,"released_at":223},126548,"2.5.1","## New\r\n- New frame change detection algorithm used for [cache determination](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Finterfaces\u002FConfig.html#cacheSensitivity)  \r\n  based on temporal input difference  \r\n- New built-in Tensorflow profiling [human.profile](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#profile)\r\n- New optional input histogram equalization [config.filter.equalization](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002F)  \r\n  auto-level input for optimal brightness\u002Fcontrast\r\n- New event-baseed interface [human.events](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#events)  \r\n- New configuration validation [human.validate](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#validate)  \r\n- New input compare function [human.compare](https:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Ftypedoc\u002Fclasses\u002FHuman.html#compare)  \r\n  this function is internally used by `human` to determine frame changes and cache validation  \r\n- New [custom built TFJS](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Ftfjs) for browser bundled version  \r\n  result is a pure module with reduced bundle size and include built-in support for all backends  \r\n  note: **nobundle** and **node** versions link to standard `@tensorflow` packages  \r\n\r\n## Changed\r\n- [Default configuration values](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fsrc\u002Fconfig.ts#L262) have been tuned for precision and performance\r\n- Supports all built-in modules on all backends  \r\n  via custom implementation of missing kernel ops  \r\n- Added additional [hand gestures](https:\u002F\u002Fgithub.com\u002Fvladmandic\u002Fhuman\u002Fblob\u002Fmain\u002Fsrc\u002Fhand\u002Ffingergesture.ts)\r\n- Performance and precision improvements  \r\n  - **face**, **hand**\r\n  - **gestures** modules  \r\n  - **face matching**\r\n- Fix **ReactJS** compatibility  \r\n- Better precision using **WASM**  \r\n  Previous issues due to math low-precision in WASM implementation  \r\n- Full **TS** type definitions for all modules and imports  \r\n- Focus on simplified demo  \r\n  \u003Chttps:\u002F\u002Fvladmandic.github.io\u002Fhuman\u002Fdemo\u002Ftypescript\u002F>  \r\n","2021-11-08T12:44:33",{"id":225,"version":226,"summary_zh":227,"released_at":228},126549,"2.4.1","New:\r\n- Time based caching  \r\n  add `skipTime` in addition to `skipFrames`\r\n- Utility class `human.env`\r\n- Add optional **Anti-Spoof** module\r\n\r\nChanged:\r\n- Enhanced **MoveNet** post-processing\r\n- Increase `human.similarity` resolution\r\n- Remove old **HandDetect** and **PoseNet** models from default installation\r\n- Multiple bug fixes\r\n- Updated configuration default values\r\n\r\nInternals:\r\n- Update to TFJS 3.10.0\r\n- Update to Node v17 for dev environment\r\n- Updated TS type definitions\r\n- Updated JSDoc comments and **TypeDoc** documentation\r\n- Refactor **ImageFX** module\r\n- Experimental `human.custom.esm` module with custom **TFJS** build\r\n","2021-10-25T17:41:21",{"id":230,"version":231,"summary_zh":232,"released_at":233},126550,"2.3.2","Major release of `Human`:\r\n\r\n- Default hand models is now new **HandTrack** *(old configuration is supported)*\r\n- Support for **BlazePose v2** models *(old v1 models are no longer supported)*\r\n- New face matching structure and algorithms: `human.match()` and `human.similarity()` *(breaking change)*\r\n- Workaround for GPU memory leak on Chrome 93\u002F94\u002F95 *(other Chrome versions are not affected)*\r\n- Support for running Human in Docker containers\r\n- New examples gallery\r\n- Major code refactoring for face and body modules\r\n- Performance and precision improvements for hand and body modules\r\n- Experimental support for **WebGPU**\r\n- Autodetect desired number of targets for body and hand based on detected number of faces\r\n- Optimized interpolation method `human.next()`\r\n\r\n*Rereleased due to issues with 2.3.1 build*\r\n","2021-10-06T15:42:59",{"id":235,"version":236,"summary_zh":237,"released_at":238},126551,"2.2.1","release 2.2 with major code refactoring, multiple bug fixes and precision and performance improvements","2021-09-16T14:53:51",{"id":240,"version":241,"summary_zh":75,"released_at":242},126552,"2.0.1","2021-06-08T11:22:13",{"id":244,"version":245,"summary_zh":75,"released_at":246},126553,"1.8.1","2021-05-02T13:07:50",{"id":248,"version":249,"summary_zh":75,"released_at":250},126554,"1.4.1","2021-04-09T12:14:41",{"id":252,"version":253,"summary_zh":75,"released_at":254},126555,"1.0.1","2021-03-09T18:44:30",{"id":256,"version":257,"summary_zh":75,"released_at":258},126556,"0.3","2021-01-29T16:30:00",{"id":260,"version":261,"summary_zh":75,"released_at":262},126557,"0.1","2020-10-12T15:25:43"]