基于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基础知识小结之集合
Nov 25 Python
Python程序中设置HTTP代理
Nov 06 Python
OpenCV实现人脸识别
Apr 07 Python
django2 快速安装指南分享
Jan 05 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
python使用thrift教程的方法示例
Mar 21 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
python入门教程之基本算术运算符
Nov 13 Python
python面向对象版学生信息管理系统
Jun 24 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之第六天
2006/10/09 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php递归创建目录的方法
2015/02/02 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
在python中安装basemap的教程
2018/09/20 Python
python修改txt文件中的某一项方法
2018/12/29 Python
深入浅析Python中的迭代器
2019/06/04 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
学生爱国演讲稿
2014/01/14 职场文书
残疾人小组计划书
2014/04/27 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
运动会加油稿100字
2014/09/19 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
公诉意见书范文
2015/06/05 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python