news 2026/11/6 3:09:52

Finding-missing-person-using-AI新手指南:如何注册第一起失踪人员案件?多脸检测与照片上传实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Finding-missing-person-using-AI新手指南:如何注册第一起失踪人员案件?多脸检测与照片上传实战
  • 人工智能
  • 计算机视觉
  • 机器学习
  • 后端

【免费下载链接】Finding-missing-person-using-AI

The project focuses on Tracking missing people. We are using Image processing and Machine learning along with Postgres Database.

项目地址:https://gitcode.com/gh_mirrors/fi/Finding-missing-person-using-AI
点击查看免费下载

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 CardAadhaar 卡号如填写必须恰好 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:

  1. detect_all_faces()调用 MediaPipe Face Landmarker,对每张照片最多返回 5 个脸的468 个 3D 关键点(展平后为 1,404 维向量);
  2. draw_face_boxes()为每张脸绘制带编号的彩色检测框,选中脸用绿色高亮;
  3. 提交时只取你选中的那张脸的 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.

项目地址:https://gitcode.com/gh_mirrors/fi/Finding-missing-person-using-AI
点击查看免费下载

相关推荐

上一篇:如何快速搭建专业摄影作品集:Expose静态网站生成器完整指南
下一篇:【解锁更高效的模型优化】—— 探秘SparseML:模型瘦身大师

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 3:05:38

RK3576上I3C实测提速10倍:DTS配置与协议落地详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:05:36

电压失控时谁在保护芯片?分层电源保护架构与实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:05:07

STM32参考方案的本质:不是抄代码,而是复用可验证的硬件上下文

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:03:49

工程师如何科学开展系统调试与故障排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:03:37

无感FOC电流环实战:从采样到SVPWM的代码实现与调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 3:03:37

56G PAM4 SerDes接收机LC-DCO设计与工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华