导 语

学习如何构建可以将视频分为三类的AI系统:犯罪或暴力活动视频,潜在可疑的活动视频、安全活动视频。

本文介绍了一种视频分类技术的实现方法。我们的目标是解释我们如何实现的以及我们获得的结果,以便大家从中学习。

通过本文,您将了解到这类问题的解决方案的架构、遵循的一套方法、使用的数据集、如何实现以及实现后的结果。

您可以使用该文章作为开发自己的视频分类器的起点。

本文中描述的系统能够将视频分为三类:

1、犯罪或暴力活动;

2、可能是可疑的;

3、安全;

我们解决这个问题是基于卷积神经网络和递归神经网络架构。

解决方案架构描述

第一个神经网络——卷积神经网络,目的是提取图像的高级特征,并降低输入的复杂性。我们将使用由Google开发的Inception层预训练模型。Inception v3在ImageNet大型视觉识别挑战数据集上进行了训练。这是计算机视觉中的标准任务,模型试图将整个图像分为1000个类,如“斑马”、“达尔马提亚狗”和“洗碗机”。

我们利用这个模型来使用迁移学习技术。现代物体识别模型具有数百万个参数,并且可能需要数周才能完全训练。转移学习是把类似于ImageNet这样公共的数据集的知识迁移到自己的问题上,即将已经训练好的模型的一部分知识(网络结构)直接应用到另一个新的类似模型中。

第二个神经网络——递归神经网络,它的目的是理解所描绘动作的顺序。该网络在第一层有一个LSTM单元,随后是两个隐藏层(一个有11024个神经元和ReLU激活;另一个有50个神经元,一个sigmoid激活),输出层是一个带有softmax激活的三神经元层,它给出了最后的分类。

方法

第一步,提取视频的帧。每隔0.2秒提取一帧,使用Inception 模型对提取的该帧进行预测。由于使用的是迁移学习技术,因此,将不提取Inception 模型的最终分类。我们最终提取最后一个池化层的结果,该层是2048个值的向量(高级特征映射)。到目前为止,我们拥有了一个单帧的特征图。然而,我们希望该系统了解序列。为此,我们不考虑用单帧进行最终预测。我们采用一组帧对一段视屏进行分类,而不是对帧进行分类。

我们认为一次分析3秒钟的视频就足以对当时正在发生的活动做出很好的预测。为此,我们存储了由Inception 模型预测生成的15个特征映射,相当于3秒的视频。然后,将这组特征映射连接成一个单独的模式,这将是第二个神经网络的输入,即递归,以便获得系统的最终分类。

最后,在屏幕上看到的是视频的实时分类,每3秒钟会看到视频的分类:安全、可疑或犯罪活动。

训练数据集

用于训练网络的数据集包括150分钟,分为38个视频。这些视频大多数都记录在商店和仓库的安全摄像机里。采用每0.2秒长的帧,用于训练的数据集共有45000帧——相当于3000段视频,考虑到视频的一段代表3秒钟(或15帧)。

我们对整个数据集标记并分组:80%用于训练,20%用于测试。

如您所见,最终数据集实际上非常小。由于使用了迁移学习技术,可以用更少的数据获得良好的结果。当然,为了使系统更准确,最好使用更多的数据;这就是为什么我们不断努力获取越来越多的数据来改进我们的系统。

执行

整个系统是用Python 3.5实现的。

使用OpenCV for Python来分割帧中的视频,并将它们调整成为200*200像素。当拥有了所有帧,就可以使用它们中的每一个对Inception 模型进行预测。每个预测结果表示从该特定帧提取的高级特征映射的“传输值”。将变量保存在transfer_value变量中,将其各自的标签保存在label_train变量中。

当有了这些变量,我们需要将它们分成15帧的组,并将结果保存在joint_transfer变量中。

frames_num=15count = 0joint_transfer=[]for i in range(int(len(transfer_values)/frames_num)):    inc = count+frames_num    joint_transfer.append([transfer_values[count:inc],labels_train[count]])    count =inc

现在我们有了转移值及其标签,我们可以使用这些数据来训练我们的递归神经网络。该网络的实现在Keras中,用于创建模型的代码如下:

from keras.models import Sequentialfrom keras.layers import Dense, Activationfrom keras.layers import LSTMchunk_size = 2048n_chunks = 15rnn_size = 512model = Sequential()model.add(LSTM(rnn_size, input_shape=(n_chunks, chunk_size)))model.add(Dense(1024))model.add(Activation('relu'))model.add(Dense(50))model.add(Activation(sigmoid))model.add(Dense(3))model.add(Activation('softmax'))model.compile(loss='mean_squared_error', optimizer='adam',metrics=['accuracy'])

上面的代码描述了模型的构造。下一步是训练它:

data =[]target=[]epoch = 1500batchS = 100for i in joint_transfer:    data.append(i[0])    target.append(np.array(i[1]))model.fit(data, target, epochs=epoch, batch_size=batchS, verbose=1)

训练模型后,保存如下:

model.save("rnn.h5", overwrite=True)

现在该模型已经经过了完全训练,可以开始对视频进行分类。

结果和其他应用

在尝试不同的网络架构和调整超参数后,可以实现的最佳结果是98%的准确性。

我们设计了以下前端页面,可以在其中上传视频并开始实时分类。可以看到类是如何不断变化的,以及该类对应的准确性。这些值每3秒更新,直到视频结束。

我们可以用这个视频分类器做的事情之一是:将它连接到安全摄像机,对视频进行实时分析,当系统检测到犯罪或可疑活动时,可以激活报警或是提醒警察。

此外,还可以使用经过适当数据训练的类似系统来检测不同类型的活动,例如:使用位于学校的摄像头,检测目标(可能是学生等,待检测对象)是否受到欺凌。

参考资料

1,TensorFlow图像识别教程:

tensorflow.org/tutorials/image_recognition

2,TensorFlow图像再培训教程:

tensorflow.org/tutorials/image_retraining

3,Python网站:https://www.python.org

4,OpenCV和Python:

https://pypi.python.org/pypi/opencv-python

5,Keras网站:https://keras.io

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

基于深度学习的可疑活动视频分析相关推荐

  1. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...

  2. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读   ...

  3. 基于深度学习的图像隐写分析综述 阅读

    背景 隐写术英文为Steganography. 现有的通信安全保障主要分为加密和信息隐藏:加密主要对秘密信息本身进行操作,但经过特殊处理后的明文更加容易受到第三方的怀疑;而信息隐藏则隐藏秘密数据的存在 ...

  4. 基于深度学习的多任务人脸属性分析(基于飞桨PaddlePaddle)

    目录 一.概述 1.1 多任务人脸属性分析 1.2 本文任务 二.环境配置 2.1 安装PaddlePaddle 2.2 安装PaddleClas 三.算法模型开发 3.1 算法原理 3.2 数据集准 ...

  5. 毕业设计-基于深度学习的图像隐写分析

    目录 前言 课题背景和意义 实现技术思路 一.隐写术介绍 二.半学习隐写分析 三.全学习隐写分析 实现效果图样例 最后 前言

  6. 综述|基于深度学习的低光图像增强

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题&作者团队 本文是南开大学程明明与南洋理工大学Chen ChangeLoy等人关于深度学习 ...

  7. 史上最全机器学习_深度学习毕设题目汇总——视频

    下面是该类的一些题目: 题目 基于RGB-D视频序列的大尺度场景三维语义表面重建技术研究 基于上下文信息的视频目标跟踪问题研究 基于上下文的视频理解关键技术研究 基于动态纹理和卷积神经网络的视频烟雾探 ...

  8. 基于深度学习分析与检索海量短视频内容

    在RTC 2018 实时互联网大会上,美图云视觉技术总监赵丽丽分享了美图在短视频领域的AI技术应用,内容主要包括三部分:美图短视频的业务场景,基于此业务场景所做的短视频内容分析和检索技术,以及遇到的问 ...

  9. 综述:基于深度学习的情感分析

    近年来,深度学习有了突破性发展,NLP 领域里的情感分析任务逐渐引入了这种方法,并形成了很多业内最佳结果.本文中,来自领英与伊利诺伊大学芝加哥分校的研究人员对基于深度学习的情感分析研究进行了详细论述. ...

最新文章

  1. Spark运行模式(local standalond,yarn-client,yarn-cluster,mesos-client,mesos-cluster)
  2. c语言基础 验证ascii 码表
  3. Python多模块文件共享变量
  4. 频率分布直方图组距如何确定_吃透教材理解教参,《直方图》教学反思
  5. matlab三参数拟合函数,数据拟合,有三个参数,提示拟合参数太多,谢谢您啦!...
  6. 软件包管理 2 -----基本知识 rpm yum
  7. Python地信专题 |基于geopandas的空间数据分析-深入浅出分层设色
  8. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】
  9. Visual Studio 2017 、2019安装Windows SDK失败的解决办法(改盘符引起)
  10. element-ui组件中的input等的change事件中传递自定义参数
  11. 游戏开发物语方案点数分配_直播开发平台解决方案——如何开发游戏直播平台...
  12. C#语法之event关键字
  13. 将QLV 格式的视频转换为 mp4 格式
  14. 自控原理学习笔记-系统稳定性分析(1)-BIBO稳定及Routh判据
  15. 微云解析直链php源码,微云分享文件直链解析源码
  16. 微信支付宝收款二维码还能用吗?权威解读
  17. 元素显示类型-快元素、行内元素、行内快元素、盒子模型以及元素类型相互转换
  18. 【已解决】群晖套件中心无法添加第三方源
  19. 概率复习 第一章 基本概念
  20. 【论文笔记】基于 VR 的移动机器人真实环境三维建模系统

热门文章

  1. 2021湖北省普通高考成绩查询果,2021年湖北高考录取结果查询登录网址入口
  2. mysql sys库 oom_MySQL 5.6因为OOM导致数据库重启
  3. lookup函数和vlookup_5个实用案例告诉你,为什么说Lookup函数比vlookup更简单
  4. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》
  5. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  6. 0x43.数据结构进阶 - 线段树
  7. 麒麟处理器是基于arm的吗_麒麟芯片是基于ARM构架,如果得不到授权华为还能活吗?...
  8. 不同平台上安装python一样吗_在多个平台如何安装Python
  9. python统计元素个数_python怎么统计列表中元素的个数
  10. 学计算机应用英语词汇,计算机应用常用英语词汇 10