基于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中 ? : 三元表达式的使用介绍
Oct 09 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
Python队列的定义与使用方法示例
Jun 24 Python
Python实现识别手写数字大纲
Jan 29 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
python re的findall和finditer的区别详解
Nov 15 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 header Content-Type类型小结
2011/07/03 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
php ci框架验证码实例分析
2013/06/26 PHP
php的hash算法介绍
2014/02/13 PHP
php操作redis缓存方法分享
2015/06/03 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
使用python3实现操作串口详解
2019/01/01 Python
python 多线程重启方法
2019/02/18 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
用python解压分析jar包实例
2020/01/16 Python
Python数据正态性检验实现过程
2020/04/18 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
个人承诺书怎么写
2014/05/24 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书