# 家·谱——智能人脸家谱系统
家·谱——智能家谱录入查询是一款基于人脸识别与图像标签的在线家谱查询录入系统,提供从人脸录入、识别到家谱构建展示的一站式服务。使用django+python+paddlehub+BaiduAPI。
支持使用paddlehub或者face_recognition两种本地库路线。
目前的功能有:
- 人脸录入、人脸识别
- 社交关系展示
- 自动家谱构建与展示
- 地图标点展示
- 家族合照分析联想
示例部署DEMO:http://124.221.104.193/
github链接:[家·谱——智能人脸家谱系统](https://github.com/KirigiriSuzumiya/familytree-paddle)
![识别 00_00_07-00_00_13](README.assets/识别 00_00_07-00_00_13.gif)
![录入 00_00_06-00_00_11](README.assets/录入 00_00_06-00_00_11.gif)
![详情](README.assets/详情.gif)
## 环境
python3.6及以上
#### windows 配置
```python
pip install django
pip install xlwt
pip install pypinpyin
pip install pyecharts
pip install paddlepaddle
pip install paddlehub
安装 Graphviz
```
#### linux 配置
```
sudo apt-get install graphviz
pip install pandas
pip install face_recognition
pip install django
pip install xlwt
pip install pypinpyin
pip install pyecharts
pip install paddlepaddle
pip install paddlehub
```
> 因为是web服务,不保证在能AIstudio上跑通,可以到github克隆后运行
## 初始化
首先需要去百度智能开放平台申请人脸的api-key
### 1. 领取免费测试资源
前往[百度智能云-管理中心 (baidu.com)](https://console.bce.baidu.com/ai/#/ai/face/overview/resource/getFree)点击`基础服务`->`全部`免费领取人脸识别测试资源
### 2. 创建应用
前往[百度智能云-管理中心 (baidu.com)](https://console.bce.baidu.com/ai/#/ai/face/app/create)按引导创建应用,之后在应用列表中获取`api-key`和`secret-key`
![image-20220801161632383](README.assets/image-20220801161632383.png)
### 3. 替换api-key和secret-key
在`cv/cv/codes/FaceExtractor.py`
`cv/cv/codes/FaceRecognition.py`
`cv/cv/views.py`
这三个文件的头部有
```
# client_id 为官网获取的AK, client_secret 为官网获取的SK
api_key = "你的api_key"
secret_key = "你的secret_key"
```
将他们替换成你之前申请的api-key和secret-key。大功告成!
## 运行
```
cd cv
python manage.py runserver 0.0.0.0:80
```
**repo中的数据库已经创建了一个超级用户:用户名 `admin` 密码 `passwd`
## 功能展示与实现
#### 1. **人员录入**
作为系统的入口,通过web服务接口实现数据平台的访问,由管理人员/访客上传需要数字化的资源并经由服务端实时处理进行初步的自动化筛选。该功能一共分为三个步骤——上传相片、录入姓名、补充信息。
- 上传相片
可以在此处上传需要录入人员的照片,可以是多人合照也可以是单人照,之后系统会找出相片中的可识别人脸并进入下一步。
- 录入姓名
格式化展示从上一步所上传图片中识别出的人脸,并为每一个人脸提供一个输入框以录入姓名,提交后人脸将会被编码成128维数组并存入服务端。之后可以在人脸列表中查询与添加更多信息。
- 补充信息
这是完成录入姓名后的一个跳转页面,能够方便的跳转到人员的详情页面以编辑和补全信息并使用地图标点与自动家谱构建等功能。
<img src="README.assets/image-20220730213624753.png" alt="image-20220730213624753" style="zoom: 25%;" />
#### 2. **人员识别**
上传一张相片,可以是单人或者多人合照。随后返回与已存储人人脸的比对结果,并提供详情跳转。
- 上传相片
可以在此处上传需要识别人员的照片,可以是多人合照也可以是单人照,之后系统会找出相片中的人脸并与已录入的人脸进行比对。
- 查看结果
返回上一步识别的结果,提供识别结果详情页的跳转与识别数据的下载(包括识别结果的可视化图层叠加相片和EXCEL表格)。
<img src="README.assets/image-20220730213656426.png" alt="image-20220730213656426" style="zoom:25%;" />
#### 3. **人员列表**
为所有已经录入的人员提供一个统一查询与编辑的入口,同时提供更多详细资料的上传与展示功能。包括人员一览、人员概述、地图标点、家谱展示、图像列表、编辑信息等功能
- 人员一览
作为人员列表功能的入口,列表展示录入人员的姓名与大头照
- 人员详情页
集中提供人员概述、地图标点、家谱展示、图像列表、编辑信息等功能
- 人员概述
展示人员的大头贴及人物简述
- 地图标点
提供地图标点的展示与详情功能
- 家谱展示
根据所填资料自动生成家谱,并提供家族成员详情页面的跳转
- 图像列表
提供所有已上传人脸的展示,也可以跳转到来源图片查看合照信息。
- 编辑信息
提供所有相关信息的编辑与展示功能,包括生卒年月,家族信息,经纬度标记,概述等。
![详情](README.assets/详情.jpg)
#### 4. 其他支持功能
- 用户登录注册
- 后台数据管理
- 合照重识与分析
- ……
## 部分功能代码
### 1. 人脸分割后处理
源代码位置`cv/cv/codes/FaceExtractor.py`
使用`Paddlehub`中`pyramidbox_lite_mobile`模型快速分割相片中的的人脸后分割出每一张人脸大头贴。之后将合照与大头贴分别存储进数据库。提供两种预测方式:`paddlehub`推理或者`baiduAPI`接口推理。
```python
from PIL import Image,ImageDraw,ImageFont
import glob
import os
from pathlib import Path
from dbmodel.models import FaceImage, People
from dbmodel.models import Image as image_db
import requests
import paddlehub as hub
import cv2
# client_id 为官网获取的AK, client_secret 为官网获取的SK
api_key = "你的api_key"
secret_key = "你的secret_key"
face_detector = hub.Module(name="pyramidbox_lite_mobile")
def face_locations(path):
results = face_detector.face_detection(images=[cv2.imread(path)])
print(results)
locations = []
for result in results[0]["data"]:
locations.append([result["top"], result["right"], result["bottom"], result["left"]])
return locations
def extractor(img_path):
BASE_DIR = Path(__file__).resolve().parent.parent.parent
origin = Image.open(img_path)
locations = face_locations(img_path)
# 保存合照人头画框
pil_image = Image.open(img_path)
draw = ImageDraw.Draw(pil_image)
font_size = pil_image.size[0] // 30
ft = ImageFont.truetype(os.path.join(BASE_DIR, 'cv', 'files', 'arialuni.ttf'), font_size)
face_list = locations
for i in range(len(face_list)):
box = (face_list[i][3], face_list[i][0], face_list[i][1], face_list[i][2])
draw.rectangle(box, None, 'yellow')
draw.text((box[0:2]), str(i+1), "red", ft)
img_path = os.path.join(BASE_DIR, 'cv', 'model_image', os.path.split(img_path)[-1])
pil_image.save(img_path)
img_path = os.path.join(BASE_DIR, 'statics', 'temp_image', os.path.split(img_path)[-1])
image = image_db(path=os.path.split(img_path)[-1], count=len(face_list))
image.save()
# 保存各个人头大头贴
count = 1
for location in locations:
box = (location[3], location[0], location[1], location[2])
face = origin.crop(box)
save_path = img_path[0:img_path.rfind('.')]+'-'+str(count)+img_path[img_path.rfind("."):]
face.save(save_path)
#print(save_path+" saved!")
count += 1
return count-1
def baidu_extractor(img_path):
BASE_DIR = Path(__file__).resolve().parent.parent.parent
url = 'http://124.221.104.193/static/'+img_path
print("地址:", url)
img_path = os.path.join(BASE_DIR, "upload",img_path)
# 获取access_token
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credent
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 Python毕业设计 基于Django++paddlehub+BaiduAPI人脸识别与图像标签的在线家谱查询录入系统。设计与实现源码+详细文档+全部资料(高分项目).zipPython毕业设计 基于Django++paddlehub+BaiduAPI人脸识别与图像标签的在线家谱查询录入系统。设计与实现源码+详细文档+全部资料(高分项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕设项目、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
Python毕业设计基于Django++BaiduAPI人脸识别的在线家谱查询录入系统设计与实现+详细文档+全部资料(高分项目) (247个子文件)
bootstrap.css 134KB
bootstrap.min.css 120KB
bootstrap.min.css 111KB
font-awesome.css 37KB
fontAwesome.css 37KB
font-awesome.min.css 30KB
bootstrap-theme.css 22KB
bootstrap-theme.min.css 19KB
templatemo-main.css 13KB
fileinput.min.css 10KB
templatemo-style.css 7KB
nivo-lightbox.css 6KB
theme.css 4KB
light-box.css 4KB
default.css 3KB
fontawesome-webfont.eot 162KB
fontawesome-webfont.eot 162KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.eot 20KB
flexslider-icon.eot 2KB
详情.gif 704KB
家·谱——华惠成详情 - 个人 - Microsoft Edge 2022-07-30 21-37-57 00_00_00-00_00_30.gif 704KB
识别 00_00_07-00_00_13.gif 185KB
录入 00_00_06-00_00_11.gif 150KB
loading.gif 134KB
loading@2x.gif 18KB
loading.gif 8KB
loading.gif 7KB
facelist.html 19KB
device_control.html 15KB
demo.html 14KB
recognition_again.html 9KB
recognition_result.html 8KB
pic_info.html 8KB
index.html 8KB
recognition.html 7KB
NameUpload.html 7KB
piclist.html 6KB
namelist.html 6KB
faceupload.html 6KB
about.html 6KB
user.html 6KB
info.html 4KB
namelist-old.html 2KB
facelist-old.html 2KB
NameUpload-old.html 1KB
recognition-old.html 1KB
social_graph.html 970B
faceupload-old.html 885B
recognition_result-old.html 835B
index-old.html 593B
wp.jpeg 598KB
wp.jpeg 598KB
home-bg.jpg 1.49MB
详情.jpg 1.15MB
contact-header.jpg 998KB
wall.jpg 816KB
brick003.JPG 816KB
image5.jpg 538KB
portfolio-header.jpg 484KB
image2.jpg 423KB
image3.jpg 420KB
image4.jpg 365KB
_10.jpg 333KB
image8.jpg 277KB
image7.jpg 275KB
______24.jpg 217KB
about-header.jpg 172KB
image1.jpg 167KB
image9.jpg 153KB
ninth_big_item.jpg 153KB
wall——1.jpg 150KB
third_big_item.jpg 150KB
fourth_bg.jpg 146KB
team1.jpg 143KB
image6.jpg 133KB
fifth_bg.jpg 117KB
eight_big_item.jpg 111KB
celling.jpg 108KB
second_big_item.jpg 101KB
first_big_item.jpg 101KB
about_image.jpg 80KB
third_bg.jpg 75KB
about-img.jpg 72KB
seventh_big_item.jpg 69KB
sixth_big_item.jpg 69KB
team3.jpg 66KB
team2.jpg 60KB
fourth_big_item.jpg 51KB
second_bg.jpg 50KB
first_bg.jpg 42KB
fifth_big_item.jpg 39KB
M_2011011615221320070827095955757935684_Big.jpg 38KB
first_service.jpg 33KB
ninth_item.jpg 25KB
third_item.jpg 24KB
Stone_Vein_Gray.jpg 23KB
eight_item.jpg 23KB
clip_image022.jpg 19KB
clip_image024.jpg 18KB
共 247 条
- 1
- 2
- 3
资源评论
不走小道
- 粉丝: 3221
- 资源: 5113
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功