- 人工智能
- 计算机视觉
- 机器学习
- 后端
【免费下载链接】Finding-missing-person-using-AI
The project focuses on Tracking missing people. We are using Image processing and Machine learning along with Postgres Database.
Finding-missing-person-using-AI 是一个基于 Streamlit + MediaPipe 人脸检测 + KNN 机器学习的失踪人员追踪系统:上传一张照片,AI 自动提取 468 点面部网格,后续公众提交的目击照片会被自动比对,匹配成功后案件自动标记为 Found 并邮件通知报案人。本文手把手带你跑通系统,完成第一起失踪人员案件的注册,重点讲解多脸检测与照片上传的实战细节。
系统能做什么?
在进入实操之前,先了解这个失踪人员追踪系统的核心能力:
| 能力 | 说明 |
|---|---|
| 🧠 AI 人脸检测 | MediaPipe Face Landmarker,支持同一张照片多张人脸检测(最多 5 张) |
| 🎯 自动匹配 | 基于 1,404 维面部向量的 KNN 算法,显示匹配置信度百分比 |
| 📱 公众上报门户 | 独立的移动端页面,无需登录即可提交目击照片或视频 |
| 🗺️ 城市地图 | Folium 交互地图,按城市统计案件密度与解决率 |
| 📧 邮件告警 | 匹配确认后自动邮件通知报案人 |
| 🔐 角色权限 | Admin 可匹配/编辑/删除;Officer 可注册和查看自己登记的案件 |
技术栈包括 Streamlit(界面)、MediaPipe(人脸网格)、scikit-learn(KNN 匹配)、SQLModel + SQLite(数据存储)、Folium(地图)。
快速安装:3 条命令跑起系统
git clone https://gitcode.com/gh_mirrors/fi/Finding-missing-person-using-AI.git cd Finding-missing-person-using-AI pip install -r requirements.txt依赖清单见 requirements.txt。然后分别启动两个门户:
# 警察/管理员门户(案件注册在这里进行) streamlit run Home.py # 公众目击上报门户(可选,另开一个终端) streamlit run mobile_app.py💡 首次运行时会自动下载约 30 MB 的 face landmarker 模型并缓存到本地,之后即可完全离线使用。SQLite 数据库
sqlite_database.db也会自动创建,无需手动建库。
配置登录账号(一次性设置)
案件注册页需要登录后才能访问。账号配置在login_config.yml(仓库默认 git-ignored):
1. 生成 bcrypt 密码哈希:
import bcrypt print(bcrypt.hashpw(b"你的密码", bcrypt.gensalt()).decode())2. 编辑login_config.yml:
credentials: usernames: your_username: name: Your Display Name email: you@example.com city: Delhi area: Sector 1 role: Admin # Admin 或 Officer password: '$2b$12$...' # 粘贴第 1 步生成的哈希两种角色的权限差异:
| 角色 | 权限 |
|---|---|
| Admin | 注册案件、查看全部案件、触发人脸匹配、编辑/删除案件 |
| Officer | 注册案件、查看自己登记的案件 |
注册第一起失踪案件:分步实战
第 1 步:登录,查看案件看板
启动后输入账号登录,首页(Home.py)会显示你的姓名、所属区域、角色徽章,以及已找到 / 未找到案件计数和按城市分布的地图:
第 2 步:上传照片,见证多脸检测
进入侧边栏的Register New Case页面(源码:pages/1_Register New Case.py),点击Upload Photo拖入照片(支持 JPG / JPEG / PNG,单文件上限 200MB)。上传后系统立刻自动检测人脸,界面效果如下:
系统最多检测5 张人脸,有三种结果:
- 未检测到人脸:提示 "No face detected",请换一张光照充足、正脸清晰的照片;
- 检测到 1 张脸:绿色方框自动框住并标注 "Face detected",自动选中,无需任何操作;
- 检测到多张脸:每张脸用不同颜色编号(Face 1、Face 2…),页面出现 "Select face" 单选按钮,点击选中要登记的那个人,被选中的脸会变为绿色高亮(标注 "Face N (selected)"),其余变灰。
⚠️ 多人合影中一定确认选中的是失踪者本人——只有你选中的那张脸的 468 点网格会被入库。
第 3 步:填写案件信息表单
照片就绪后,右侧表单解锁。带*的为必填项,其余选填:
| 字段 | 说明 | 校验规则 |
|---|---|---|
| Name * | 失踪者姓名 | 不能为空 |
| Father's Name | 父亲姓名 | 选填 |
| Age | 年龄(数字,1–120) | 默认 10 |
| Mobile Number | 手机号 | 如填写必须恰好 10 位数字 |
| Aadhaar Card | Aadhaar 卡号 | 如填写必须恰好 12 位数字 |
| Address / Birth Marks | 住址 / 胎记特征 | 选填 |
| City * | 所在城市 | 不能为空(用于地图统计) |
| Last Seen * | 最后出现地点 | 不能为空 |
| Description | 补充描述 | 选填 |
下方还有报案人信息(Complainant Details):Complainant Name *、Complainant Phone *(恰好 10 位数字)、Complainant Email(用于匹配成功后接收邮件通知,强烈建议填写)。
第 4 步:提交并验证
点击Save Case。所有校验通过后,案件以初始状态NF(Not Found)写入 SQLite,页面显示 "✅ Case registered successfully."。
此时去All Cases页面(源码:pages/2_All Cases.py)即可看到新登记的案件卡片:照片、姓名、年龄、状态、最后出现地点,支持按状态/姓名/日期过滤和导出 CSV:
多脸检测背后的原理(进阶阅读)
人脸检测的核心逻辑在 pages/helper/utils.py:
detect_all_faces()调用 MediaPipe Face Landmarker,对每张照片最多返回 5 个脸的468 个 3D 关键点(展平后为 1,404 维向量);draw_face_boxes()为每张脸绘制带编号的彩色检测框,选中脸用绿色高亮;- 提交时只取你选中的那张脸的 landmarks 序列化为 JSON,存入
face_mesh字段(数据模型见 pages/helper/data_models.py)。
后续公众在 mobile_app.py 门户提交目击照片(或视频,视频会自动抽帧提取去重后的独立人脸)后,Admin 在Match Cases页面(pages/3_Match Cases.py)点击🔄 Refresh触发 KNN 比对,距离越近置信度越高,超过阈值即自动将案件翻转为Found并给报案人发邮件。
照片拍摄建议:一次成功的关键
AI 识别高度依赖照片质量,建议:
- ✅ 光线充足,避免逆光、昏暗环境
- ✅ 正脸朝向镜头,面部无遮挡
- ✅ 画面中失踪者脸清晰、占比适中
- ✅ 若为合影,确保要登记的人清晰突出(方便多脸选择)
数据都存到了哪里?
- 案件与目击记录:项目根目录的
sqlite_database.db(git-ignored) - 照片文件:
resources/目录下按案件 ID 命名的 JPG(git-ignored) - 所有数据仅保存在本地,不会发送到任何外部服务器
🔄 想从零重新演示?直接删除
sqlite_database.db即可,下次启动会自动重建。
常见问题
Q: 提示 "No face detected" 怎么办?换一张正脸、光照好的照片;检测框选功能对侧脸、遮挡、低分辨率图片效果有限。
Q: 地图上看不到我填写的城市?地图使用内置的城市坐标表(CITY_COORDS,定义于 Home.py),未收录的城市会在下方提示,不影响案件本身登记。
Q: 可以配置邮件通知吗?可以,设置环境变量SMTP_HOST、SMTP_PORT、SMTP_USER、SMTP_PASSWORD后,匹配成功会自动向报案时填写的 Complainant Email 发送通知。
到这里,你已经完成了从安装、配置账号,到上传照片、多脸检测、填写表单的完整案件注册流程。接下来不妨启动 mobile_app.py 公众门户提交一条目击记录,体验 KNN 自动匹配与邮件通知的完整闭环 🎉
- 人工智能
- 计算机视觉
- 机器学习
- 后端
【免费下载链接】Finding-missing-person-using-AI
The project focuses on Tracking missing people. We are using Image processing and Machine learning along with Postgres Database.
相关推荐
photoo 端侧 AI 深度解析:ML Kit 图像标注与人脸检测如何实现零上传
photoo 端侧 AI 深度解析:ML Kit 图像标注与人脸检测如何实现零上传 photoo 是一款 Android 原生的极简照片整理工具,滑动卡片就能左
如何用Glance注册多张人脸:同一人不同外观与多人脸管理的完全指南
如何用Glance注册多张人脸:同一人不同外观与多人脸管理的完全指南 Glance 是一款 Mac 人脸解锁(Face Unlock)应用:注册一次人脸,锁屏时
人工智能计算机视觉AI 应用桌面应用身份认证its-trip 新手上手指南:上传一张工单照片,AI 如何 3 步给出风险等级与管控方案?
its trip 新手上手指南:上传一张工单照片,AI 如何 3 步给出风险等级与管控方案? its trip 是 CANN 社区交通大模型方向的开源智能决策闭
人工智能大模型AI 应用AI Agent多智能体本地部署智慧城市CANNAscendopenEuler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考