基于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中join 和 split详解(推荐)
Jun 30 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
Python 中的Selenium异常处理实例代码
May 03 Python
python批量修改文件编码格式的方法
May 31 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Django实现文件上传下载功能
Oct 06 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
基于FME使用Python过程图解
May 13 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
python opencv通过4坐标剪裁图片
Jun 05 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文件的实现方法
2007/03/19 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
浅析vue数据绑定
2017/01/17 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Python线程同步的实现代码
2018/10/03 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
Python3 读取Word文件方式
2020/02/13 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
python生成word合同的实例方法
2021/01/12 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
P/Invoke是什么
2015/07/31 面试题
六十大寿答谢词
2014/01/12 职场文书
文艺晚会策划方案
2014/06/11 职场文书
租房协议书样本
2014/08/20 职场文书
解除同居协议书
2015/01/29 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python