当前位置: 首页 > 编程笔记 >

基于MTCNN/TensorFlow实现人脸检测

华季萌
2023-03-14
本文向大家介绍基于MTCNN/TensorFlow实现人脸检测,包括了基于MTCNN/TensorFlow实现人脸检测的使用技巧和注意事项,需要的朋友参考一下

人脸检测方法有许多,比如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,更多资料可以点击链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍OpenCV实现人脸检测功能,包括了OpenCV实现人脸检测功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了OpenCV实现人脸检测功能的具体代码,供大家参考,具体内容如下 1、HAAR级联检测 2、 DNN人脸检测 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我成功地获得了tflite文件。 在android部分,我选择了Java语言来加载tflite文件和预测新图像的情绪。我已经过了Tensorflow-lite网站中给出的“图像分类”的例子,但是我很困惑如何使用它。我不知道如何阅读tflite并用它来预测新图像的输出并在android应用上显示结果。请帮助我一些好的资源和解释

  • 本文向大家介绍使用JavaScript 实现的人脸检测,包括了使用JavaScript 实现的人脸检测的使用技巧和注意事项,需要的朋友参考一下 我一直对视频和图片中的人脸标记、检测和人脸识别技术很感兴趣。尽管我知道获取逻辑和算法去开发人脸识别软件或者插件已经超出了我的想象。当我知道Javascript库可以识别微笑,眼睛和脸部结构时,我得到启发去写一个教程。有许多的库,这些库要不就是纯粹的基于Ja

  • 本文向大家介绍python利用OpenCV2实现人脸检测,包括了python利用OpenCV2实现人脸检测的使用技巧和注意事项,需要的朋友参考一下 最近,带领我的学生进行一个URTP项目设计,需要进行人脸识别。由于现在的OpenCV已经到了2.X版本,因此就不想用原来的1.X版本的代码,而网上存在的代码都是1.X版本的代码,尝试自己写一段2.X版本的代码,反复查阅资料,今天终于测试成功(很明显2.

  • 本文向大家介绍Android FaceDetector实现人脸检测功能,包括了Android FaceDetector实现人脸检测功能的使用技巧和注意事项,需要的朋友参考一下 关于人脸检测被折磨了半个月,前2周开需求会时需要要做一个“人脸认证上传功能,具体是打开前置摄像头,识别出用户的脸并且脸在一个指定的圆圈内然后自动保存这个状态的图像待用户是否确定上传”。听到这个需求我第一时间想到比较专业的图形

  • 1.接口描述 对照片中的人脸进行检测,返回人脸数目和每张人脸的位置信息 图片要求 格式为 JPG(JPEG),BMP,PNG,GIF,TIFF 宽和高大于 8px,小于等于4000px 小于等于 5 MB 请求方式: POST 请求URL: https://cloudapi.linkface.cn/face/face_detect 2.请求参数 字段 类型 必需 描述 api_id string

  • 本文向大家介绍基于Python实现人脸自动戴口罩系统,包括了基于Python实现人脸自动戴口罩系统的使用技巧和注意事项,需要的朋友参考一下 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的L

  • 本文向大家介绍Python基于Dlib的人脸识别系统的实现,包括了Python基于Dlib的人脸识别系统的实现的使用技巧和注意事项,需要的朋友参考一下 之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别。 人脸识别系统的实现流程与之前是一样的,只是这里我们借助了dlib和face_recognition