团队项目(2.2) -- 人脸检测和瞳孔检测

    在本项目中,人脸检测参考的主要理论依据为 Kaipeng Zhang,Zhanpeng Zhang,Zhifeng Li,Yu Qiao. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks. IEEE Signal Processing Letters(SPL), vol.23,no10, pp.1499-1503,2016.,后来在CSDN中找到了一个系列的实战应用及详细的教程和讲解:tensorflow入门教程(三十五)facenet源码分析之MTCNN--人脸检测及关键点检测,博客中讲的肯定比我叙述得更详细,所以这部分尽可能去参考这个系列吧(题外话,这个博主感觉确实是个大牛,尤其是针对于Tensorflow这一块,做了很多详尽的研究)。瞳孔检测部分没有使用神经网络,主要是觉得全都是神经网络解决的话那这个项目就过于简单了,意义不大,因此从这一步起均采用传统图像处理的方法。事实上为了完成瞳孔位置的定位着实花了我很多时间,尝试了很多方法,最后效果虽然一般,但是在这个过程中充分锻炼了自己的思考能力和解决问题的能力。瞳孔检测在人脸识别的基础上需要先进行眼部ROI区域的划定,因此会分为单独的一点来介绍。
    下面对环境的搭建和本项目中的具体使用作简单讲解:

一、开发平台及辅助工具等

开发平台:Anaconda
编译环境:Spyder
编程语言:Python
辅助库:OpenCV

二、安装

    1、Anaconda安装:手把手教你如何安装Tensorflow(Windows和Linux两种版本
    2、Spyder安装:选择Tensorflow环境,点击Spyder下面的Install按钮即可。(我的是已经安装好了,所以显示的是Launch)

20899536-73cd0ae77712a1ef.png

 

    3、OpenCV安装:点击Environments → tensorflow,在搜索栏输入opencv,全点上安装就好了。

20899536-38d7035a6203061e.png

 

       4、Facenet源码下载:https://github.com/davidsandberg/facenet/tree/master(参考博客

三、启动

    通常来说我们启动应用时只需要在搜索栏搜索应用然后回车即可,但是由于Anaconda是一个对开发环境的统一管理平台,也就意味着可能同时存在多种环境,比如这次所需的Tensorflow开发环境,因此直接启动的话有可能进不去我们所需的目标环境,所以需要注意下启动方式。
    我采用的方式如下:

1、在Windows搜索栏搜索Anaconda Prompt并启动,可以看到一个类似于cmd的窗口被打开:
 

20899536-07625e9e06850910.png

 

2、注意到上图中括号内的“base”字样,表示当前为默认环境;

3、输入 activate Tensorflow ,按下回车,可以注意到括号内的字符串变为tensorflowle了,这意味着我们成功进入了搭建的tensorflow环境:
 

20899536-e0cbaad742301d86.png

 
4、输入Spyder启动Spyder编译器即可进行代码撰写
 

20899536-482e144b5b007ccb.png

 

    至此,开发环境已经搭建完毕,打开对应的py文件即可进行编译。这里贴一个我遇到的问题:

20899536-0711b347304e0959.png

 

    图源及解决方法参考:https://www.cnblogs.com/Terrypython/p/10467859.html

四、完整源码

    为便于下面各部分的讲解,先给出完整的源码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 26 22:40:32 2019

@author: Beta
"""
import cv2
import tensorflow as tf
import align.detect_face
from Filter import Filtercol
from Filter import Findboundcol
from Filter import Findboundrow
video_capture = cv2.VideoCapture(0)
#video_capture = cv2.VideoCapture("E:\\TensorCode\\facenet-master-Mine\\src\\Test.mp4")

totalimgnum = 0;
successnum = 0;

capture_interval = 1
capture_num = 100
capture_count = 0
frame_count = 0
detect_multiple_faces = False #因为是训练目标对象,一次只有一张人脸
 
#这里引用facenet/src/align/align_dataset_mtcnn.py文件的代码对采集帧进行人脸检测和对齐
minsize = 20 # minimum size of face
threshold = [ 0.6, 0.7, 0.7 ]  # three steps's threshold
factor = 0.709 # scale factor
        
with tf.Graph().as_default():
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.5)
    sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False))
    with sess.as_default():
        pnet, rnet, onet = align.detect_face.creat
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值