基于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实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
用Python代码来解图片迷宫的方法整理
Apr 02 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
Python3实现的反转单链表算法示例
Mar 08 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
python 统计文件中的字符串数目示例
Dec 24 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
实现Python3数组旋转的3种算法实例
Sep 16 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实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
使用JS动态显示文本
2017/09/09 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python CSV模块使用实例
2015/04/09 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
.NET现在共支持多少种语言
2014/02/26 面试题
《长城》教学反思
2014/02/14 职场文书
师范生自我鉴定
2014/03/20 职场文书
计算机系本科生求职信
2014/05/31 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
小学生手册家长意见
2015/06/03 职场文书
JavaScript函数柯里化
2021/11/07 Javascript
SQL Server中使用表变量和临时表
2022/05/20 SQL Server