基于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闭包及其作用域详解
Aug 28 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python键盘输入转换为列表的实例
Jun 23 Python
python实现顺序表的简单代码
Sep 28 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
python用match()函数爬数据方法详解
Jul 23 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
python如何通过twisted搭建socket服务
Feb 03 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
python多线程爬取西刺代理的示例代码
Jan 30 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 日期时间函数的高级应用技巧
2009/10/10 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php常用表单验证类用法实例
2015/06/18 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
js 数组操作代码集锦
2009/04/28 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
element中的$confirm的使用
2020/04/26 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python线程之定位与销毁的实现
2019/02/17 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python中请不要再用re.compile了
2019/06/30 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
python logging模块的使用
2020/09/07 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
石油大学毕业生自荐信
2014/01/28 职场文书
银行转正自我鉴定
2014/09/29 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js