基于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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
在Python中使用SimpleParse模块进行解析的教程
Apr 11 Python
python中字典(Dictionary)用法实例详解
May 30 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
Python数据持久化存储实现方法分析
Dec 21 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
python分别打包出32位和64位应用程序
Feb 18 Python
Python3自定义json逐层解析器代码
May 11 Python
python中entry用法讲解
Dec 04 Python
如何用用Python将地址标记在地图上
Feb 07 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 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的输出:缓存并压缩动态页面
2013/06/11 PHP
javascript some()函数用法详解
2014/11/13 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
python多进程实现进程间通信实例
2017/11/24 Python
把pandas转换int型为str型的方法
2019/01/29 Python
Python转换时间的图文方法
2019/07/01 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
如何获得EntityManager
2014/02/09 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Python制作表白爱心合集
2022/01/22 Python
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript