Giter Club home page Giter Club logo

videohunter's Introduction

基于深度学习的视频人脸检测

这里旨在说明开发前大致准备工作,未记录详细开发过程,可参考 项目Commit记录

[TOC]

前期调研

网上查看相关论文、博客、github源码

方案选型

选择原则

  • 时间成本

    完成视频中人脸检测项目,时间进度上还是很紧张的,确定方案要参考时间限制

  • 投入成本

    偏向短期时间节点内能快速上手且使用的方式

  • 检测效率

    视频中包含大量的帧画面,所以对于检测的速度方面选择尽可能快速的

网上查看相关检测的资料,选择了各个方面综合能力较好的预选方案,并做出对比。

模型 速度 精度 成本 小物体 训练周期
OpenCV + CNN 一般 一般 一般
YOLO/YOLO2 一般 较低
SSD 一般

由于人脸在视频画面中相对较小,因此这里没有选择在小物体检测上有劣势的YOLO模型。OpenCV + CNN的方式精度上虽然不高,但是处理速度还是蛮快的,在实时检测方面效果不错,于是将该方案作为兜底方案。SSD模型检测是目前调研出的各方面相对表现都比较优异的,作为最终选择方案。

即:选择OpenCV + CNN作为兜底方案,SSD作为最终方案。

数据收集

Pubfig数据

处理脚本

由于版权问题,数据源是以链接的形式存在,于是下载脚本对链接图片进行下载,下载过程很多图片无法下载,无奈放弃该数据源。

爱情公寓

处理脚本

  • OpenCV对视频的每一帧进行人脸检测
  • 将检测区域抠下来保存为人脸图片的数据源
  • 对该部分数据源进行手动分类

模型训练

由于人脸的图片比较小,再加上类别数量不多,所以这里用的是小型的CNN网络,结构如下

def build_model(self):
	model = Sequential()
	model.add(Conv2D(8, (3, 3), activation='relu', input_shape=(128, 128, 3)))
	model.add(MaxPooling2D(pool_size=(2, 2)))
	model.add(Dropout(0.25))
	model.add(Conv2D(16, (3, 3), activation='relu'))
	model.add(MaxPooling2D(pool_size=(2, 2)))
	model.add(Dropout(0.25))
	model.add(Flatten())
	model.add(Dense(256, activation='relu'))
	model.add(Dropout(0.5))
	model.add(Dense(8, activation='softmax'))
	return model

SSD模型是在基于keras的SSD开源项目进行改造的,主要替换训练数据的载入方式和输出的类别。

模型测试

图片版测试

视频版测试 点击查看演示视频

参考链接

videohunter's People

Contributors

puke3615 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.