Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FamFace

家庭照片/视频人脸识别系统 — 本地运行,隐私安全,跨平台

基于 InsightFace + DBSCAN 的本地人脸识别系统,支持照片和视频的自动检测、聚类、命名和浏览。所有数据本地处理,无需云端 API。

Dashboard

截图预览

仪表盘 照片画廊 人脸聚类
Dashboard Gallery Clusters

截图中的人脸区域已脱敏处理,实际使用时显示真实人脸缩略图。

功能特性

  • 文件扫描: 自动发现目录下的照片和视频文件,支持增量扫描和文件搬迁追踪
  • 人脸检测: InsightFace (buffalo_l) 模型,GPU 加速 (CUDA/DirectML/CoreML/CPU)
  • 视频处理: 自适应抽帧策略,同一视频中重复人脸自动去重
  • 视频缩略图: 静态封面 + 鼠标悬停 Sprite 动画预览(每个视频仅 ~34KB)
  • 人脸聚类: DBSCAN 算法自动将相似人脸归为同一人
  • 命名管理: CLI 或 Web 界面为聚类命名,关联到具体人物
  • Web 界面: 暗色主题 UI,画廊浏览、聚类管理、时间轴、多人搜索
  • 实时进度: SSE 流式进度推送 + 手动取消长时间操作
  • 跨平台: Windows / macOS / Linux,自动检测硬件选择最优推理后端
  • 多目录支持: 本地目录 + UNC 网络路径,Web 端管理
  • HEIC 支持: 全链路支持 HEIC/HEIF 格式(读取→检测→缩略图→Web预览)
  • 导出功能: JSON 导出 + mklink 符号链接按人分类

跨平台支持

平台 硬件条件 推理后端 onnxruntime 包
Windows / Linux NVIDIA GPU CUDA onnxruntime-gpu
Windows 任意 GPU (AMD/Intel/NVIDIA) DirectML onnxruntime-directml
macOS Apple Silicon (M1/M2/M3/M4) CoreML onnxruntime-silicon
macOS Intel CPU CPU onnxruntime
Linux 无 GPU CPU onnxruntime

硬件自动检测优先级: CUDA → DirectML → CoreML → CPU

快速开始

环境要求

  • Python 3.10+
  • GPU(可选)

安装

自动安装(推荐):

git clone https://github.com/YOUR_USERNAME/famface.git
cd famface
python install.py

手动安装:

pip install -r requirements.txt
# 根据平台选择:
pip install -r requirements-cuda.txt       # NVIDIA GPU
pip install -r requirements-directml.txt   # Windows 任意 GPU
pip install -r requirements-silicon.txt    # Apple Silicon
pip install -r requirements-cpu.txt        # 纯 CPU

配置

首次运行前,设置媒体文件目录:

# 方式1: 环境变量
export MEDIA_DIR=/path/to/your/photos

# 方式2: Web 端添加(启动后在仪表盘页面操作)

# 方式3: CLI 添加
python main.py scan --root-dir /path/to/your/photos

可选环境变量:

变量 说明 示例
MEDIA_DIR 默认媒体目录 /path/to/photos
CUDA_PATH CUDA Toolkit 路径 /usr/local/cuda
CUDA_BIN_PATH CUDA bin 目录 /usr/local/cuda/bin

使用

# 查看硬件检测
python main.py hw

# 扫描文件
python main.py scan

# 检测人脸
python main.py detect

# 聚类分析
python main.py cluster

# 启动 Web 界面
python main.py serve

# 查看所有命令
python main.py --help

CLI 命令

命令 说明
scan 扫描媒体文件,--type image|video|all 过滤类型
detect 检测人脸,--limit N 限制数量,--type 过滤类型
cluster 聚类分析,--eps 0.45 --min-samples 3 调参
name 命名聚类,--list-unnamed 列出待命名
export 导出数据,--mklink 创建符号链接
stats 显示统计信息
serve 启动 Web UI,--host 0.0.0.0 --port 8765
hw 显示硬件检测结果
ignore-dir 管理忽略目录,--add --remove --list
extract-dates 从 EXIF 提取拍摄日期
regenerate-thumbs 重新生成缩略图

Web 界面

启动 python main.py serve 后访问 http://localhost:8765

页面 功能
仪表盘 统计概览 + 快速操作 + 文件夹管理
照片画廊 分页浏览 + 文件夹筛选 + 类型筛选 + 视频悬停预览
聚类管理 查看/命名/修改/忽略聚类,就地操作无需刷新
时间轴 按月份查看文件分布
多人搜索 查找同时包含多人的照片

项目结构

famface/
├── main.py              # CLI 入口
├── config.py            # 配置 + 跨平台硬件检测
├── database.py          # SQLite 数据库操作
├── scanner.py           # 文件扫描 + 指纹 + EXIF日期
├── detector.py          # 人脸检测 + 视频抽帧 + HEIC支持 + 视频缩略图
├── clusterer.py         # DBSCAN 聚类
├── progress.py          # 进度报告 (CLI + SSE) + 取消机制
├── install.py           # 跨平台自动安装脚本
├── requirements.txt     # 基础依赖
├── requirements-cuda.txt      # NVIDIA GPU
├── requirements-directml.txt  # Windows 任意 GPU
├── requirements-silicon.txt   # Apple Silicon
├── requirements-cpu.txt       # 纯 CPU
├── docs/                # 截图(已脱敏)
├── tests/               # 测试套件
└── web/
    ├── app.py           # FastAPI 后端
    ├── static/          # CSS + JS + Favicon
    └── templates/       # HTML 模板

设计决策

  1. 本地推理: InsightFace + ONNX Runtime,无需云端 API,隐私安全
  2. 跨平台硬件自检测: CUDA → DirectML → CoreML → CPU 自动回退
  3. 边扫描边写入: 每个文件立即写入 DB,批量 commit 减少 IO 瓶颈
  4. 增量检测: "detecting" 状态 + 断点续跑,中断后不丢失进度
  5. 视频 Sprite 预览: 8帧拼成竖条图 + CSS 动画,每个视频仅 ~34KB
  6. HEIC 全链路: pillow-heif 读取 → 检测 → 缩略图 → Web 自动转 JPEG
  7. SSE 实时进度: 流式推送 + 手动取消,长时间操作可感知可控制

隐私说明

  • 所有数据(人脸嵌入、缩略图、数据库)仅存储在本地 data/ 目录
  • data/ 目录已加入 .gitignore,不会被提交到 Git
  • 截图中的人脸区域已脱敏处理
  • Web 界面默认绑定 localhost,仅本机可访问

License

MIT

About

人脸识别应用:自动聚类、Web界面、GPU加速

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages