人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等。对于opencv的人脸检测方法,有点是简单,快速;存在的问题是人脸检测效果不好。正面/垂直/光线较好的人脸,该方法可以检测出来,而侧面/歪斜/光线不好的人脸,无法检测。因此,该方法不适合现场应用。对于dlib人脸检测方法 ,效果好于opencv的方法,但是检测力度也难以达到现场应用标准。

MTCNN是基于深度学习的人脸检测方法,对自然环境中光线,角度和人脸表情变化更具有鲁棒性,人脸检测效果更好;同时,内存消耗不大,可以实现实时人脸检测。

代码如下:

[python] view plain copy
  1. from scipy import misc
  2. import tensorflow as tf
  3. import detect_face
  4. import cv2
  5. import matplotlib.pyplot as plt
  6. %pylab inline
  7. minsize = 20 # minimum size of face
  8. threshold = [ 0.6, 0.7, 0.7 ]  # three steps's threshold
  9. factor = 0.709 # scale factor
  10. gpu_memory_fraction=1.0
  11. print('Creating networks and loading parameters')
  12. with tf.Graph().as_default():
  13. gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction)
  14. sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False))
  15. with sess.as_default():
  16. pnet, rnet, onet = detect_face.create_mtcnn(sess, None)
  17. image_path = '/home/cqh/faceData/multi_face/multi_face3.jpg'
  18. img = misc.imread(image_path)
  19. bounding_boxes, _ = detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor)
  20. nrof_faces = bounding_boxes.shape[0]#人脸数目
  21. print('找到人脸数目为:{}'.format(nrof_faces))
  22. print(bounding_boxes)
  23. crop_faces=[]
  24. for face_position in bounding_boxes:
  25. face_position=face_position.astype(int)
  26. print(face_position[0:4])
  27. cv2.rectangle(img, (face_position[0], face_position[1]), (face_position[2], face_position[3]), (0, 255, 0), 2)
  28. crop=img[face_position[1]:face_position[3],
  29. face_position[0]:face_position[2],]
  30. crop = cv2.resize(crop, (96, 96), interpolation=cv2.INTER_CUBIC )
  31. print(crop.shape)
  32. crop_faces.append(crop)
  33. plt.imshow(crop)
  34. plt.show()
  35. plt.imshow(img)
  36. plt.show()

实验效果如下:

再上一组效果图:

关于MTCNN,更多资料可以参见:https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html?from=timeline&isappinstalled=1

欢迎大家参考我复现的https://github.com/AITTSMD/MTCNN-Tensorflow,欢迎提出宝贵意见~

基于 MTCNN/TensorFlow 实现人脸检测相关推荐

  1. mtcnn人脸检测python_基于MTCNN/TensorFlow实现人脸检测

    人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等.对于opencv的人脸检测方法,有点是简单,快速:存在的问题是人脸检测效果不好.正面/垂直/光线较好的人脸,该 ...

  2. 基于facenet的实时人脸检测

    参考自https://github.com/shanren7/real_time_face_recognition 本人的项目代码https://github.com/zouzhen/real_tim ...

  3. TensorFlow入门 | 人脸检测与识别

    人脸识别概述 人脸识别,特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术.属于生物特征识别技术的一种. 广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集.人脸定位.人脸 ...

  4. 基于YOLO的密集人脸检测(课程设计)

    基于YOLO的密集人脸检测(课程设计) 数据集+代码下载地址:下载地址 实现的功能 添加关键点检测分支,使用wing loss Installation Clone and install 使用src ...

  5. 简单的基于YCrCb颜色空间的人脸检测(肤色)

    简单的基于YCrCb颜色空间的人脸检测(肤色) 环境:Windows XP+MATLAB 2010b 基本思路: 1)将基于彩色空间的RGB模型转换为YCbCr模型(考虑到人脸的生理特征,只采取了Cr ...

  6. 基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统

    基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统 一.功能需求 二.数据库建立 2.1 初始化数据库 2.2 压缩/解压数据流 2.3 输入数据 三.宿舍管理 3.1 新建录入 ...

  7. 基于深度学习的人脸检测和关键点检测推理实践(OpenCV实现,含代码)

    目录 一.任务概述 二.环境准备 三.实现步骤 3.1 Python推理 3.2 C++推理 3.2.1 环境准备 3.2.2 推理 3.3 Java推理 一.任务概述 最近项目中大量场景需要用到人脸 ...

  8. 【FPGA教程案例91】机器视觉2——通过FPGA实现基于肤色模型的人脸检测,使用MATLAB辅助测试

    FPGA教程目录 MATLAB教程目录 本课程成果预览(将FPGA处理结果导入到matlab显示效果) 目录 1.软件版本 2.基于肤色模型的人脸检测原理

  9. github优秀项目分享:基于yolov3的轻量级人脸检测、增值税发票OCR识别 等8大项目...

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 文章来源:七月在线实验室 01  yolo-face-with-landmark ...

最新文章

  1. QT textedit 滚动条自动往下滚动
  2. 这群人学做AI架构师,目标却是让人们感知不到AI的存在
  3. OpenMP的一点使用经验
  4. 神策 2021 数据驱动大会「积分有礼」榜单今日揭晓!快来看看你排第几?
  5. 用jQuery实现简单的加入收藏页面的功能
  6. java中阻止类的继承
  7. 百度地图电子围栏功能的实现
  8. android 弹跳动画效果下载,SpringyFX-SpringyFX(MG弹跳动画制作AE脚本)下载 v1.1官方版--pc6下载站...
  9. 1 Spark机器学习 spark MLlib 入门
  10. 重磅宣布|强强联合,腾讯云携手Veeam提供云上数据存储服务
  11. Android 12刷机教程
  12. 扫雷小游戏(可选择简单、一般、困难三种模式、可展开,可标记)
  13. signal 11 linux,关于运行时Signal 11 Caught的错误
  14. 关于微软无线鼠标适配的问题
  15. 用旭日图展示数据的三种方法
  16. Oracle创建定时任务教程
  17. C++我的世界源代码
  18. ios真机调试,iTunes检测得到,hbuilder未检测到手机和模拟器的解决办法
  19. Oracle等待事件(一)—— latch cache buffers chains 分析与优化思路
  20. java版 我的世界 win10_我的世界win10版

热门文章

  1. oracle索引与mysql区别_MySQL和Oracle中的唯一性索引从差别(r12笔记第83天)
  2. 总线制和多线制示意图_知识||RS485简介及与其他总线网络的区别
  3. linux进程地址空间没有段,Linux进程的虚拟地址空间
  4. oracle中lang能不能查找,oracle中的查询语句
  5. 零基础的你还在纠结怎么学习Python编程吗?
  6. 怎么用express搭建一个服务器
  7. redis内部分享ppt
  8. kindeditor扩展粘贴截图功能修改图片上传路径并通过webapi上传图片到图片服务器...
  9. 淘宝自营“护肤品”精准引流加粉分享
  10. PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁