pico
pico 是一个极简主义的实时物体检测框架,专为快速识别人脸等特定目标而设计。它基于经典的 Viola-Jones 方法进行了改进,核心思路是通过一系列二元分类器级联,在不同位置和尺度上扫描图像,从而高效判断目标是否存在。
pico 主要解决了在资源受限环境下实现高速检测的难题。与传统方法不同,它无需预先进行图像预处理,也不需要计算积分图、图像金字塔或 HOG 特征等复杂数据结构。其独特技术亮点在于,分类器内部的决策树节点仅依赖像素强度比较这一种特征类型,这不仅极大提升了处理速度,还使其能轻松支持平面旋转物体的检测,且无需重新训练模型或重采样图像。
不过,pico 的简洁性也意味着其适用范围有限:它适合外观变化较小的简单物体类别(如人脸或固定模板),而不适合外观差异巨大的场景(如行人检测),后者建议使用现代深度神经网络。
这款工具非常适合需要嵌入轻量级检测功能的开发者,尤其是那些希望在不依赖外部库的情况下,通过标准 C 编译器即可将实时检测能力集成到应用中的工程师。对于追求极致效率的原型验证或嵌入式项目,pico 提供了一个干净、高效且易于定制的解决方案。
使用场景
某嵌入式安防团队需要在低算力的旧款监控摄像头上实现实时人脸打卡功能,且无法依赖云端服务。
没有 pico 时
- 引入主流深度学习模型导致设备 CPU 占用率飙升至 90% 以上,视频流严重卡顿,无法达到实时检测要求。
- 必须预先计算积分图或构建图像金字塔等复杂数据结构,不仅增加了内存开销,还让代码移植到 C 语言环境变得异常繁琐。
- 为了适配不同角度的侧脸输入,不得不采集大量旋转数据重新训练模型,或直接对输入图像进行耗时的重采样处理。
- 缺乏轻量级方案,团队被迫升级硬件批次,显著增加了项目的整体部署成本。
使用 pico 后
- 凭借基于像素强度比较的二元分类器级联架构,pico 在低端芯片上也能轻松实现高帧率实时检测,CPU 占用率大幅降低。
- 无需任何图像预处理或生成积分图,直接通过标准 C 编译器即可将
picornt.c嵌入现有固件,开发周期从数周缩短至几天。 - 利用其独特的内部节点旋转机制,pico 无需重新训练或图像重采样即可直接检测平面内旋转的人脸,完美覆盖侧脸场景。
- 极小的资源占用使得旧款摄像头无需更换硬件即可复用,直接节省了数十万元的硬件升级预算。
pico 通过极致的算法精简,成功在资源受限的嵌入式设备上实现了零依赖、高鲁棒性的实时人脸检测。
运行环境要求
- Linux
- macOS
- Windows
不需要 GPU,仅依赖 CPU 运行
未说明(算法轻量,标准内存即可)

快速开始
基于像素强度比较的目标检测(pico)
本仓库包含实时人脸检测的代码。 请观看演示视频 http://www.youtube.com/watch?v=1lXfm-PZz0Q 以获得更直观的了解。
pico 框架是对标准 Viola-Jones 方法的一种改进。其基本思想是在所有合理的尺度和位置上,使用一个由二元分类器组成的级联来扫描图像。如果某个图像区域能够成功通过级联中的每一个分类器,则该区域会被判定为感兴趣的目标。每个二元分类器由一组决策树组成,这些树的内部节点采用像素强度比较作为二值测试。这种设计使得检测器能够以极高的速度处理图像区域。详细内容请参见 http://arxiv.org/abs/1305.4537。
pico 的一些亮点包括:
- 处理速度快;
- 无需在检测前对图像进行预处理;
- 无需计算积分图、图像金字塔、HOG 金字塔或其他类似的数据结构;
- 树的内部节点中所有的二值测试都基于同一种特征类型(而在 V-J 框架中并非如此);
- 该方法可以轻松修改,用于快速检测平面内旋转的目标。
可以说,pico 的主要局限性也正源于它的简单性:当目标类别的外观变化较大时,应避免使用 pico。例如,不建议使用 pico 来检测行人。对于这类任务,大型的现代卷积神经网络更为合适。
然而,当需要实时性能且目标类别较为简单时(如人脸或模板),pico 仍然非常适用。
在图像和视频中检测目标
文件夹 rnt/ 包含了使用预先训练好的分类级联在图像和视频流中执行目标检测所需的所有资源。具体来说,可以在 rnt/samples/ 文件夹中找到执行人脸检测的示例程序。
需要注意的是,该库还能够在无需重新采样图像或重新训练分类级联的情况下检测旋转后的目标。这是通过旋转树的内部节点中的二值测试来实现的,相关细节已在论文中说明。
将运行时嵌入到您的应用程序中
要在您自己的应用程序中使用该运行时,您需要:
- 在代码中包含
find_objects(...)的原型声明(例如,添加#include picornt.h) - 将
picornt.c与您的代码一起编译 - 加载并包含使用
picolrn生成的分类级联(例如,rnt/cascades/facefinder) - 使用适当的参数调用
find_objects(...)
请注意,该库没有特定的依赖项,即您可以直接使用标准 C 编译器进行编译。
为了更好地理解该库的工作方式,我们建议您查看 rnt/samples/native/sample.c,因为它就是专门作为文档编写的。
学习自定义目标检测器
程序 picolrn.c(位于 gen/ 文件夹中)允许您学习并构建自己的自定义目标检测器。训练数据必须以特定的格式提供。当您不带参数调用 picolrn 时,详细信息会打印到标准输出。通常,您可以将这些信息重定向到一个文本文件中:
$ ./picolrn > howto.txt
在 gen/sample/ 文件夹中,您可以找到一个指导您学习人脸检测器的教程。
引用
如果您在工作中使用了提供的代码或二进制文件,请引用以下论文:
N. Markus, M. Frljak, I. S. Pandzic, J. Ahlberg 和 R. Forchheimer,“基于决策树组织的像素强度比较的目标检测”,http://arxiv.org/abs/1305.4537
联系方式
如有任何其他问题,请通过 nenad.markus@fer.hr 与我联系。
版权所有 © 2013,Nenad Markus。保留所有权利。
版本历史
v10002013/08/21常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。