基于Keras和tensorflow深度学习Python实现的支持人脸识别和情绪分类的社区APP网站和微信小程序

YoungTime

发布日期: 2018-10-31 22:23:19 浏览量: 942
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

1 项目介绍

1.1 背景

视觉使人类得以感知和理解周边的世界,人的大脑皮层大约有 70%的活动在处理 视觉相关信息。计算机视觉即通过电子化的方式来感知和理解影像,以达到甚至超 越人类视觉智能的效果。

从 1966 年学科建立(MIT:TheSummerVisionProject)至今,尽管计算机视觉在 感知与认知智能方向仍有大量难以解决、尚待探索的问题,但得益于深度学习算法 的成熟应用(2012 年,采用深度学习架构的 AlexNet 模型,以超越第二名 10 个百 分点的成绩在 ImageNet 竞赛中夺冠),侧重于感知智能的图像分类技术在工业界逐 步实现商用价值,助力金融、安防、互联网、手机、医疗、工业等领域智能升级。

2016 年下半年开始,人脸识别、视频结构化等计算机视觉相关技术在安防领域 的实战场景中突破工业化红线,敲响了计算机视觉行业市场大规模爆发的前奏。预 计在未来三年内中国计算机视觉行业市场规模将迎来较大增长。

伴随人脸识别、物体识别等分类、分割算法不算提升精度,在 2017 年占比较高 的安防、视频广告、泛金融、手机及互联网娱乐领域之外,医疗影像、工业制造、 批发零售等现阶段的创新领域也将逐步解锁, 成为行业整体快速发展的重要支 撑。

目前,市场上出现很多的计算机视觉科技公司,如下图所示:

  • 从整体上看,商汤技术的覆盖面最广,依图最少;但核心技术:人脸识别、 文字识别、图像识别、车辆识别、行人监测等技术三家公司都有

  • 从细分上看,只商汤拥有图像及视频编辑技术,且有深度学习框架;而旷视 的人脸技术在三家公司中最为完善,且拥有人体识别技术,能对手势进行识别;反之依图则拥有目标跟踪技术

  • 商汤,旷视,依图三家公司都在金融、安防领域中重点布局;在金融领域,旷视和商汤布局更深更广;而依图和旷视则在安防领域与公安紧密协作,且 旷视房地产安防上也有较深涉足

  • 商汤与手机厂商、运营商合作密切,未来大有借智能手机普及其人脸识别技术,成为最大的技术提供商,打造用户口碑,为将来打开 C 端开口树立品牌优势

总结下来,计算机视觉巨头们都比较注重大公司的业务链,对于中小企业, 普通游客的人脸识别,情绪分类反而发力不足。

1.2 项目意义

正因为巨头们对普通用户,中小企业的情绪分类业务发力不足,我决定开始此处 情绪社区项目。

一方面,中小企业,商场的视频监控流量巨大,同时人工处理十分低效且耗费人 力物力财力,另一方面,巨大的普通用户的的视频可以进行分类处理,激发普通用 户的分享欲望,可以搭建一个社区开发普通用户的分享乐趣,并以社区的形式,拥 有点评分享的功能。

总结下来就是可以从以下几个角度阐释我们做这个项目的意义:

  • 从中小企业,商场,公共场所,人脸识别,情绪分类的需求很迫切;

  • 对于部分开发者来说,廉价合适的情绪分类 api 接口需求很大

  • 对于普通用户来说,情绪识别并分享(识别前后的)视频的乐趣很大,落地场景很多

1.3 项目目标

关于“情绪社区”这个项目,我们希望最终能做成一个线上平台,以各种形式开放 使用以提供服务,包括但不限于移动端设备应用、个人电脑软件应用、网站平台、公众号,微信小程序。为了能方便快捷地提供服务,多样全面的使用形式亦是这款产品 的一个亮点。

最终将做成一个 B/S 框架app和微信小程序的人脸情绪识别app,并都拥有社区论坛功能的。同时将识别分类模型部署在服务器,可以提供给中小型企业 api。

按照初期计划,我们希望达到的效果(可提供的服务)主要包括:

  • 对于中小企业,商场,公共场合,提供 CNN 模型 api 接口,以及技术支持

  • 对于部分开发者,我们提供 api 接口,处理视频,图像,json 形式返回处理后的结果

  • 对于普通用户,我们提供这款 app 的 web 端和微信小程序端,用户可以通过手机或者 pc 浏览 app,上传视频,返回情绪识别结果,并可以分享在 app 的 BBS 社区,同时可以发表评论与帖子

2 功能需求描述

2.1 系统角色

  • 管理员:视频信息审核用户资格审查论坛数据审查

  • 用户:用户注册与登录上传视频论坛社区分享 论坛社区评论 论坛社区发帖论坛社区管理板块 修改个人信息

2.2 用户信息获取与维护

2.2.1 功能说明

初次注册,系统要求用户进行相关信息的填写,并记录至系统中。

2.2.2 激励/响应序列

  • 刺激:用户注册或初次登录

    响应:给出信息填写要求

  • 刺激:用户选择答案

    响应:记录用户年龄等情况并给出对应论坛版块选择列表

2.3 视频分析

2.3.1 功能说明

用户可进行上传视频和得到反馈结果。

2.3.2 激励/响应序列

  • 刺激:用户选择上传视频功能

    响应:进入上传视频页面

  • 刺激:用户按下上传按钮,上传视频

    响应:提醒用户并生成结果

  • 刺激:用户按下其他按钮

    响应:进入其他页面

2.4 社区论坛

2.4.1 功能说明

用户可以浏览论坛社区,或者分享视频,发布帖子,发表评论。

2.4.2 激励/响应序列

  • 刺激:用户进入社区论坛

    响应:按一定顺序列出相关板块和帖子

  • 刺激:用户关键字搜索

    响应:给出板块或帖子中含有该关键字的搜索结果

  • 刺激:用户编写帖子或者评论

    响应:系统提示是否提交,更新页面以及相关数据

2.5 用例图

2.6 E-R 图

2.7 系统流程图

2.8 系统交互图

2.9 概念类图和数据流图

2.10 数据流图

3 总体设计

3.1 总体目标

3.1.1 满足的需求

满足的核心需求是:用户能够通过该平台上传视频得到系统分析的结果,同时可以在论坛社区分享评论发帖需求。

3.1.2 技术基础与运行环境

  • Web 端操作系统:Win95 以及以上版本

  • 微信小程序端:wechat 6.6.7 以及以上版本

  • 数据库:MySQL 数据库

  • Web 框架:Django

  • 系统编写语言:Python

  • 深度学习平台:Keras, tensorflow

3.2 系统总体结构

对于用户来说,有如下系统功能:包括用户管理模块,用户视频情绪分析模块,用户论坛社区模块;对于管理员来说,主要是参与系统的管理与维护,审核相关信息。按照这几个准则将整个系统按照下图分为若干模块。

3.3 各功能模块描述

3.3.1 用户管理模块

用户注册登录之后,系统会记录相关信息,同时可以修改个人信息,以及每次使用视频文件和社区之后,用户的管理模块的用户文件数据管理信息都会更新记录,同时也保留了管理员删除用户的权限,如果该用户有违法违规操作。

3.3.2 用户视频情绪分析模块

  • 用户视频上传:用户点击上传视频按钮后,从文件夹打开选择的视频,上传系统,同时会检查视频格式,大小,分辨率,时长,对于不满足格式的视频,会弹窗相关信息

  • 算法模型分析:调用已经训练好了的 CNN 模型,将用户上传的视频切割成一帧一帧的图像,然后用模型先切割出人脸然后用模型对人脸表情进行 分类,然后把结果按照帧数打印成时序图写入 js 代码中,嵌入在 html 页面

  • 用户结果反馈:将嵌入结果时序图的 html 发送给用户,用户得到视频分析的结果

3.3.3 用户社区模块

  • 版块管理:用户可以自设定一些版块,也可以提交举报或者删除,填写系统申请单,由后台审核之后会发布在系统之内

  • 帖子发布:用户可以自己在相应版块下申请发布帖子,按照系统格式,填写完毕,提交等待管理员审核

  • 跟帖,评论:用户可以在别人的帖子下选择“回复”来跟帖或者评论,帖子的底部有转发按钮,可以支持转发

4 数据设计

用户表

视频表

帖子信息表

版块信息表

5 算法

主要是 CNN 深度学习算法。其他算法见源码。

本次项目的基础模型是参考开源项目 Xception 框架设计而成。我们提出了一个用于设计实时 CNN 的通用卷积神经网络构建框架。我们通过创建一个实时视觉系统来验证我们的模型,该系统使用我们提出的 CNN 架构在一个混合步骤中同时完成人脸检测,性别分类和情感分类等任务。在介绍了培训程序设置的细节之后,我们继续评估标准基准组。我们报告 IMDB 性别数据集中 96%的准确率和 FER2013 情绪数据集中 66%的准确率。除此之外,我们还介绍了最近实时启用的反向传播可视化技术。引导式反向传播揭示了体重变化的动态变化并评估学习到的特征。我们认为,为了减少慢速性能和实时体系结构之间的差距,现代 CNN 体系结构的谨慎实施,当前正则化方法的使用和以前隐藏功能的可视化是必要的。我们的系统已通过部署在 RoboCup @ Home 比赛期间使用的 Care-O-bot 3 机器人进行验证。我们的所有代码,演示和预训练架构均已在我们公共存储库的开放源代码许可下发布。

我们提出两种模型,我们根据他们的测试精度和参数数量进行评估。两种型号的设计思路都是在参数数量比率上创建最佳精度,减少参数数量有助于我们克服两个重要问题:

  • 首先,使用小型 CNN 可以缓解我们在硬件受限系统如机器人平台中的低速表现

  • 其次,参数的减少在奥卡姆剃刀架构下提供了更好的泛化

我们的第一个模型依赖于消除完全相连的层,第二种架构将完全连接层的删除和深度方向可分离卷积和残留模块组合在一起,两种体系结构均使用 ADAM 优化器进行了培训。

遵循先前的架构模式,我们的初始架构使用全局平均池来完全移除任何完全连接的层。这是通过在最后的卷积层中具有与类数量相同数量的特征图并且应 softmax 激活函数到每个缩小的特征地图。

我们最初提出的架构是一个标准的全卷积神经网络,由 9 个卷积层 ReLUs ,Batch Normalization 和 Global Average Pooling 组成。该模型包含约 600,000 个参数。它在 IMDB 性别数据集上进行了训练,其中包含 460,723 个 RGB 图像,其中每个图像属于“女人”或“男人”类,并且在该数据集中达到了 96%的准确性。我们还在 FER-2013 数据集中验证该模型。该数据集包含 35,887 个灰度图像,其中每个图像属于以下类别之 一{“愤怒”,“厌恶”,“恐 惧”,“高兴”,“悲伤”,“惊讶”,“中立”}。

我们的初始模型在这个数据集中达到了 66%的准确率,我们将此模型称为“顺序完全 CNN”。

我们的第二个模型受到了 Xception 架构的启发。这种架构结合了残余模块 和深度智能可分离卷积的使用。剩余模块修改两个后续图层之间所需的映射,以便学习的特征成为原始特征映射和所需特征的差异。因此,为了解决更容易的学习问题 F(x),希望的特征 H(x)被修改,使得:

  1. H(x) = F(x) + x

我们设计的基于 Xeception 的模型如下图:

我们预测结果的热力图表示如下图:

6 人机交互设计

6.1 web 登录界面

用户首先进入登录界面,如果没有注册过的用户就会跳转到注册界面,如果注册过的 普通用户就会跳转到主界面,管理员跳转到后台管理界面。

6.2 web 注册界面

注册界面会对输入进行检验,并弹窗提示。

6.3 主界面

主界面有多个跳转接口,可以跳转到任何一个位置,同时主界面会显示出最近 的帖子和热门帖子,点击帖子的链接可以跳到帖子的正文 html。同时在 page 上面有搜索引擎,可以支持全站搜索相关帖子,以及关键词。

6.4 热门帖子界面

显示最多点赞数的帖子,点击 readme 可以跳转到具体页面。

6.5 发帖界面

6.6 情绪分类界面

首先是上传文件按钮,选择文件上传后,点击上传就可以把文件上传进服务 器,然后服务器运行算法模型分析每一帧图像的人脸以及情绪分类,并合成新的 视频文件,显示在本页面之间。同时,支持弹窗提示,提示不能传空。

显示分析结果

6.7 问答界面

6.8 联系我们界面

6.9 数据库界面

7 总结

本次项目是我一个人独立完成的,选题的立意来自自己寒假看的一篇关于 CNN 的论文,于是想着这学期做出一个情绪分类搭载论坛社区的系统。

总的来说,自己按照软件工程书上的步骤,一步步每一个步骤每一个文档写下来,PPT 写了好几份,文档写了七八份,虽然很辛苦,但是也对软件工程的知识理解更加深厚了。

首先,我先谈谈我对软件工程的理解。软件工程在我的脑海里就是如何利用工程化管理的技术 来做软件。为什么会诞生软件工程呢?随着代码量的增大,人对代码的掌控能力越来越弱, 代码的逻辑、进度和成本越来越不好控制,产生了软件危机!为了解决软件危机,软件工程 应运而生。

在代码上,我在软件工程中学习到的是在细节上:

  • 第一、需要遵守代码规范,好处是便于修改和维护。让别人看的清楚你的代码

  • 第二、数据和业务逻辑的分离。我们需要将代码进行模块化,从而更好地维护和复用代码

  • 第三、懂得合理地设计接口,既不能面面俱到,也不能太过笼统,够用就好。比如说:链 表的接口设计和菜单的接口设计就有所不同。链表需要增删查改的接口,而菜单的接口就无 需如此太过细节化

  • 第四、非功能性需求,比如说安全性。这里尤其需要谈到的是线程安全,如何利用加锁的 机制构建出写出安全的代码

  • 第五、设计思想,这里需要应用一些前人总结的设计模式,比如说工场模式、观察者模式、 适配器模式等。应用这些模式能大大增加代码的延展性,更好地包容变化,更好地复用代码。 当然,为了拓展视野,老师也提到函数式、形式化方法的编程

所以,总的来说,我觉得自己一个人在大学阶段独立完成软件工程项目还是很有意思且富有挑战的,对于以后就业来说,应该帮助很大的。

上传的附件 cloud_download 支持人脸识别和情绪分类的社区网站.7z ( 46.27mb, 28次下载 )
error_outline 下载需要11点积分

keyboard_arrow_left上一篇 : 基于C语言的八大排序算法的比较 基于VC++控制台实现的图书信息管理系统 : 下一篇keyboard_arrow_right



YoungTime
2018-10-31 22:24:10
基于Keras和tensorflow深度学习Python实现的支持人脸识别和情绪分类的社区APP网站和微信小程序

发送私信

最合适你的人,是不需要奔跑着去追赶,拼了命去靠近的

5
文章数
9
评论数
eject