基于MTCNN/TensorFlow实现人脸检测


Posted in Python onMay 24, 2018

人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等。对于opencv的人脸检测方法,有点是简单,快速;存在的问题是人脸检测效果不好。正面/垂直/光线较好的人脸,该方法可以检测出来,而侧面/歪斜/光线不好的人脸,无法检测。因此,该方法不适合现场应用。对于dlib人脸检测方法 ,效果好于opencv的方法,但是检测力度也难以达到现场应用标准。

MTCNN是基于深度学习的人脸检测方法,对自然环境中光线,角度和人脸表情变化更具有鲁棒性,人脸检测效果更好;同时,内存消耗不大,可以实现实时人脸检测。

代码如下:

from scipy import misc 
import tensorflow as tf 
import detect_face 
import cv2 
import matplotlib.pyplot as plt 
%pylab inline 
 
minsize = 20 # minimum size of face 
threshold = [ 0.6, 0.7, 0.7 ] # three steps's threshold 
factor = 0.709 # scale factor 
gpu_memory_fraction=1.0 
 
 
print('Creating networks and loading parameters') 
 
with tf.Graph().as_default(): 
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction) 
    sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False)) 
    with sess.as_default(): 
      pnet, rnet, onet = detect_face.create_mtcnn(sess, None) 
 
image_path = '/home/cqh/faceData/multi_face/multi_face3.jpg'       
 
img = misc.imread(image_path)       
bounding_boxes, _ = detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor) 
nrof_faces = bounding_boxes.shape[0]#人脸数目 
print('找到人脸数目为:{}'.format(nrof_faces)) 
 
print(bounding_boxes) 
 
crop_faces=[] 
for face_position in bounding_boxes: 
  face_position=face_position.astype(int) 
  print(face_position[0:4]) 
  cv2.rectangle(img, (face_position[0], face_position[1]), (face_position[2], face_position[3]), (0, 255, 0), 2) 
  crop=img[face_position[1]:face_position[3], 
       face_position[0]:face_position[2],] 
   
  crop = cv2.resize(crop, (96, 96), interpolation=cv2.INTER_CUBIC ) 
  print(crop.shape) 
  crop_faces.append(crop) 
  plt.imshow(crop) 
  plt.show() 
   
plt.imshow(img) 
plt.show()

实验效果如下:

基于MTCNN/TensorFlow实现人脸检测

  基于MTCNN/TensorFlow实现人脸检测

基于MTCNN/TensorFlow实现人脸检测

基于MTCNN/TensorFlow实现人脸检测

再上一组效果图:

基于MTCNN/TensorFlow实现人脸检测

基于MTCNN/TensorFlow实现人脸检测

 关于MTCNN,更多资料可以点击链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
学习Python selenium自动化网页抓取器
Jan 20 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
python实现维吉尼亚加密法
Mar 20 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
python实现画循环圆
Nov 23 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Python中requests做接口测试的方法
May 30 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 #Python
基于python神经卷积网络的人脸识别
May 24 #Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 #Python
Tensorflow实现卷积神经网络的详细代码
May 24 #Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 #Python
Tensorflow卷积神经网络实例进阶
May 24 #Python
Tensorflow卷积神经网络实例
May 24 #Python
You might like
用PHP解决的一个栈的面试题
2014/07/02 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
Angular实现的进度条功能示例
2018/02/18 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
Python实现栈的方法
2015/05/26 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
python可迭代对象去重实例
2020/05/15 Python
重构Python代码的六个实例
2020/11/25 Python
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书