本文将实现静默活体检测, 网络为二分类, 输出图片中的人脸为真人脸 还是照片视频替代的假人脸. 具体的代码实现方式如下.
其中face_detector的百度网盘下载地址: 密码: hgu4

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/3/25 12:03 下午
# @Author  : sarah feng
# @File    : Slient_liveness_detect.py
# @attention: 尽量在光线充足的地方进行检测, 一般光线教暗的情况下检测是不通过的, 同时要保证眼睛正视前方。from imutils.video import VideoStream
from keras.preprocessing.image import img_to_array
from keras.models import load_model
import numpy as np
import argparse
import imutils
import pickle
import time
import cv2
import osclass SilenceDetect(object):def __init__(self):self.protoPath = os.path.sep.join(["face_detector", "deploy.prototxt"])self.modelPath = os.path.sep.join(["face_detector","res10_300x300_ssd_iter_140000.caffemodel"])self.net = cv2.dnn.readNetFromCaffe(self.protoPath, self.modelPath)self.model = load_model("liveness.model")self.le = pickle.loads(open("le.pickle", "rb").read())self.confidence = 0.5def liveness_detect(self, frame):labels, confidences, start_box, end_box, areas = [], [], [], [], []# 对图像进行预处理,https://blog.csdn.net/weixin_42216109/article/details/103010206(h, w) = frame.shape[:2]blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)), 1.0,(300, 300), (104.0, 177.0, 123.0))self.net.setInput(blob)detections = self.net.forward()# print("detect", detections.shape) # (1, 1, 200, 7)for i in range(0, detections.shape[2]):confidence = detections[0, 0, i, 2]# filter out weak detectionsif confidence > self.confidence: #识别人的时候的置信度# 拿到人脸的区域框box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])(startX, startY, endX, endY) = box.astype("int")# 保证拿到的人脸区域框不在整张图片的范围外startX = max(0, startX)startY = max(0, startY)endX = min(w, endX)endY = min(h, endY)# 将人脸部分提取出来, 对应的数组进行操作和训练时候的方式一样face = frame[startY:endY, startX:endX]face = cv2.resize(face, (32, 32))face = face.astype("float") / 255.0face = img_to_array(face)face = np.expand_dims(face, axis=0)# 把提取的人脸部分放入到网络中判断是真的人脸还是假的人脸preds = self.model.predict(face)[0]j = np.argmax(preds)label = self.le.classes_[j]labels.append(label)confidences.append(preds[j])start_box.append([startX, startY])end_box.append([endX, endY])areas.append((endY - startY) * (endX - startX))return labels, confidences, start_box, end_box, areasif __name__ == '__main__':print("[INFO] starting video stream thread...")vs = VideoStream(src=0).start()time.sleep(1.0)silence_detect = SilenceDetect()fake_num = 0fake_frame = 5while True:frame = vs.read()frame = imutils.resize(frame, width=600)labels, confidences, start_bbox, end_bbox, areas = silence_detect.liveness_detect(frame)# 只使用最前面的人脸进行检测if labels:index_num =np.argmax(areas)label, confidence, start_box, end_box = labels[index_num], confidences[index_num], \start_bbox[index_num], end_bbox[index_num]# 连续5帧内是fake的时候if label == b'fake' and confidence > 0.8:fake_num += 1else:fake_num = 0if fake_num < fake_frame:label == b'real'label = "{}: {:.4f}".format(label, confidence)cv2.putText(frame, label, (start_box[0], start_box[1] - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)cv2.rectangle(frame, (start_box[0], start_box[1]), (end_box[0], end_box[1]),(0, 0, 255), 2)cv2.imshow("Frame", frame)key = cv2.waitKey(1) & 0xFF# if the `q` key was pressed, break from the loopif key == ord("q"):breakcv2.destroyAllWindows()
vs.stop()

静默活体检测的python实现相关推荐

  1. 38、静默活体检测测试及ncnn、mnn部署

    基本思想:因为最近需要搞个Android端的活体检测,github了一下,git到小视科技公司的一个开源项目,听了大佬的介绍,因此测试了一下,效果还可以,于是进行了模型转换和ncnn.mnn部署 本实 ...

  2. 配合式活体检测的python实现

      前段时间发布的活体检测相关的调研文章中提到目前常用的检测方法有配合式活体检测.静默活体检测以及双目活体防伪检测. 本文将实现配合式的活体检测, 主要从常见的脸部的眨眼. 张嘴. 摇头. 点头四个操 ...

  3. Android NDK开发——人脸检测与静默活体检测

    前言 1.开发环境是win10,IDE是Android studio 北极狐,用到的库有NCNN,OpenCV. 2.NCNN库可以用官方编译好的releases库,也可以按官方文档自己编译. 3.O ...

  4. 基于深度学习的人脸检测与静默活体检测——C++实现

    前言 1.系统环境是win10,显卡RTX3080;cuda10.2,cudnn7.1;OpenCV4.5,ncnn版本是20210525;C++ IDE vs2019. 2.使用NCNN作模型推理加 ...

  5. 人脸静默活体检测最新综述

    ©PaperWeekly 原创 · 作者|燕皖 单位|渊亭科技 研究方向|计算机视觉.CNN 活体检测在人脸识别中的重要环节.以前的大多数方法都将面部防欺骗人脸活体检测作为监督学习问题来检测各种预定义 ...

  6. 错过直播不用急,回顾小视科技工业级静默活体检测算法解读,视频已备好

    上周发布的『9ms 静默活体检测,小视开源工业级品质算法』得到很多小伙伴的喜欢. 23日晚间,小视科技副总裁.AI研究院院长胡建国在52CV技术交流群里进行了线上分享,为大家详解这一工业级静默活体检测 ...

  7. 静默活体检测-人脸活体识别

    活体检测技术一般分为配合式活体检测和非配合式活体检测. 配合式活体检测是最常见的活体检测方式,通过眨眼.张嘴.摇头.点头.甚至读出随机数字等配合式组合动作,使用人脸关键点定位和人脸追踪等技术,验证用户 ...

  8. 工业级静默活体检测开源算法技术解析记录

    工业级静默活体检测开源算法技术解析(小视科技分享) 视频链接: https://www.bilibili.com/video/BV1qZ4y1T7CH 相关背景 定义:无感鉴别镜头前人脸的真伪,人脸识 ...

  9. 活体识别6:小视科技开源的静默活体检测

    说明 该项目为小视科技的静默活体检测项目.开源地址在 https://github.com/minivision-ai/Silent-Face-Anti-Spoofing. 由于不是论文衍生项目,所以 ...

最新文章

  1. 三大运营商抢夺物联网市场 中国联通物联网连接数突破5000万
  2. sublime python linux 安装教程,Sublime Text Windows及Linux Python环境搭建
  3. 请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
  4. python镜像下载包_python包详解
  5. @ParameterizedTest在@CvsSource中具有空值
  6. android tabhost 多个activity,Android:TabHost中Activity的生命周期问题
  7. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
  8. MySQL优化详解(四)——MySQL缓存设置
  9. Java编程风格与命名规范整理(转载)
  10. 大数据 | 从阿里核心场景看实时数仓的发展趋势
  11. MSP430如何给板子下载程序?(IAR MSPFET CCS)
  12. linux安装无头浏览器
  13. Pycharm中文字体变成繁体解决方法
  14. python计算平均数、众数、中位数、极差、方差、标准差……
  15. 一.机器人概率学笔记_定位
  16. 小程序验证:人的男女偏见对出生性别比例平衡的影响
  17. 《大话西游3》首曝海报 韩庚唐嫣分饰至尊宝和紫霞
  18. Cookie 攻防世界
  19. 【精益生产】用思维导图分析精益生产体系,完整科学
  20. MySQL下载与安装、mysql服务启动与停止、mysql使用cmd命令行登录、SQLyog下载与安装,sqlyog登录与操作mysql

热门文章

  1. 【java】多个音频文件拼接实例之普通话转粤语发音
  2. luckysheet添加文本后缀(kg)、金额大写等单元格格式
  3. 高性能计算:系统领先 应用待赶
  4. hosts 添加主机和ip映射
  5. 使用mt管理器访问iis创建的ftp站点
  6. cc9.3 indesign_InDesign CC实战从入门到精通(全彩版)
  7. 《计算机网络(第7版)-谢希仁》期末考试复习题和答案(总结整理)
  8. mysql中employees的意思_MySQL 示例数据库 employees 详解
  9. 基于Cesium的实景三维模型动态更新-以3Dtiles为例(二)
  10. 如何清除“远程桌面连接”的历史记录?