python相册中的人脸聚类_Dlib-人脸聚类
人脸聚类
人脸聚类属于无监督学习. 当你有许多未标记的待分类的照片时, 使用人脸聚类是非常有用的. 其 python 脚本位于 /python_examples/face_clustering.py.
待分类目录下有两张神仙的肖像和两张观海的肖像, 使用如下代码可以将神仙和观海分开.
import os
import sys
import dlib
import skimage.draw
import skimage.io
predictor_path = 'shape_predictor_68_face_landmarks.dat'
face_rec_model_path = 'dlib_face_recognition_resnet_model_v1.dat'
faces_folder_path = sys.argv[1]
detector = dlib.get_frontal_face_detector()
sp = dlib.shape_predictor(predictor_path)
facerec = dlib.face_recognition_model_v1(face_rec_model_path)
face_results = []
for entry in os.scandir(faces_folder_path):
print(f'Processing file: {entry.path}')
img = skimage.io.imread(entry.path)
dets = detector(img, 1)
print("Number of faces detected: {}".format(len(dets)))
for k, d in enumerate(dets):
shape = sp(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
face_results.append({
'path': entry.path,
'det': d,
'shape': shape,
'descriptor': face_descriptor
})
labels = dlib.chinese_whispers_clustering([e['descriptor'] for e in face_results], 0.5)
num_classes = len(set(labels))
print("Number of clusters: {}".format(num_classes))
for i, r in enumerate(face_results):
r['label'] = labels[i]
for e in face_results:
path = e['path']
d = e['det']
det = [d.top(), d.left(), d.bottom(), d.right()]
label = e['label']
print(label, path, det)
执行结果
$ python3 run.py face_tests/
Processing file: face_tests/crystal_01.jpg
Number of faces detected: 1
Processing file: face_tests/crystal_02.jpg
Number of faces detected: 1
Processing file: face_tests/obama_01.jpg
Number of faces detected: 1
Processing file: face_tests/obama_02.jpg
Number of faces detected: 1
Number of clusters: 2
0 face_tests/crystal_01.jpg [116, 201, 270, 356]
0 face_tests/crystal_02.jpg [64, 236, 219, 390]
1 face_tests/obama_01.jpg [38, 146, 113, 220]
1 face_tests/obama_02.jpg [63, 71, 138, 146]
python相册中的人脸聚类_Dlib-人脸聚类相关推荐
- python dlib学习(九):人脸聚类
前言 前面的博客介绍过使用dlib进行人脸检测.比对.检测特征点等等操作. python dlib学习(一):人脸检测 python dlib学习(二):人脸特征点标定 python dlib学习(五 ...
- 在python中利用OpenCV包实现人脸识别
一.实验环境 1.python3.6环境,numpy包,OpenCV包,pillow包 2.联想T470笔记本电脑,win10系统 3.在测试目录下新建两个文件夹,一个是Facedata用于存放采集的 ...
- OpenCV中LBPH人脸识别器识别人脸实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ Local Binary Pattern Histofram简称LBPH,即局部二进制模式直方图,这是一种基于局部二进制模式算法,这种算法善于捕获局 ...
- python人脸识别和人脸对比,face_recognition和OpenCV
前言 先用OpenCV判断图片是否模糊,模糊的话需要重拍: 再用face_recognition检测图片中是否有人脸,有才接着进行下一步: 再用face_recognition计算图片中每张人脸的12 ...
- python h5游戏_从零开始制作H5人脸融合小游戏
去年的建军节,一个展示军装照的H5人脸融合游戏火遍朋友圈,带来很好的传播效果.最近欧冠决赛要来了,公司决定做一个寻找和你最像的欧冠球星的H5游戏,那么该怎么做呢?认真分析了一下,这个游戏其实用到的技术 ...
- 基于Face++使用python+opencv来实现人脸验证及人脸解锁
csdn不方便的话转到github 源码和图片资料都在github https://github.com/ChenJian-Jia/Based-on-face-Python-and-OpenCV-ar ...
- 使用Python,OpenCV和Haar级联进行人脸检测——轻量级的人脸检测器
使用Python,OpenCV和Haar级联进行人脸检测--轻量级的人脸检测器 1. 效果图 2. 原理 2.1 项目结构 2.2 [haarcascade_frontalface_default.x ...
- 用Python几行代码实现简单的人脸识别,10分钟完成(附源码)
前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...
- 用AndroidSDK中的Face Detector实现人脸识别
很多手机图片管理应用都开始集成人脸识别功能.一提到人脸识别,模式识别,滤波,BlahBlah 一堆复杂的技术名字戳入脑海中,立刻觉得这玩意儿没法碰,太玄乎了.其实Android SDK从1.0版本中( ...
最新文章
- 2017-4-26 winform 菜单和工具栏
- apache的两种工作模式
- extjs 页面打开时表格自动加载后台传来的json数据
- 计算机二级web题目(9.1)--综合选择题3
- 【转】C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
- 还是觉得应该动手写点东西....
- java新手笔记18 类比较
- Android摄影App,这20款摄影APP,让你的照片飞上天!
- win10 64位下Oracle10g安装
- 数学建模算法之动态规划
- Python实现层次分析法
- 024 幂函数、指数函数、对数函数导数公式推导
- 赵小楼《天道》《遥远的救世主》深度解析(47)为什么要给韩楚风的司机小赵点赞?芮小丹是怎么做到“反客为主、打破阶层”的?
- 重庆电信助力新一代物联网商用平台
- Second-Order Cone Programming(SOCP) 二阶锥规划
- 快乐AK场2 E 	删删删越小越好 单调栈
- python猫眼top数据解析画图
- Lane Detection in Low-light Conditions Using an Efficient DataEnhancement : Light Conditions Style
- C语言实现FFT和IFFT,并与MATLAB编写显示的结果相对比,进行验证(蝶形运算)
- 米思齐学习例程(五):中断延时
热门文章
- 清华大学C语言程序设计作业,C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版],精品资料...
- Android 7.1 设置默认启动桌面,并设置为主屏幕应用
- Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散... http://www.apkbus.com/thread-267832-1-1.html)...
- 中国全干光缆行业市场供需与战略研究报告
- 如何快速成为点灯大师?
- hive中UDF跟UDAF使用说明
- SQL语句中使用回车换行符
- 线性回归中最大似然法的理解
- 【TeeChart Pro ActiveX教程】(十一):缩放和滚动
- Python 'gbk' codec can't decode byte 0x80