基于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 yield使用方法示例
Dec 04 Python
Python中splitlines()方法的使用简介
May 20 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
关于Python 3中print函数的换行详解
Aug 08 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
Python实现全排列的打印
Aug 18 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
python numpy元素的区间查找方法
Nov 14 Python
WxPython实现无边框界面
Nov 18 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
python中if和elif的区别介绍
Nov 07 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
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
js 走马灯简单实例
2013/11/21 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
jQuery常用数据处理方法小结
2015/02/20 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python内置模块logging用法实例分析
2018/02/12 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
opencv实现简单人脸识别
2021/02/19 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python装饰器代替set get方法实例
2019/12/19 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python相对企业语言优势在哪
2020/06/12 Python
Python实现疫情地图可视化
2021/02/05 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
应届护士推荐信
2013/11/16 职场文书
就业协议书怎么填
2014/09/15 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
Python 内置函数速查表一览
2021/06/02 Python
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js