深度学习-智能视频监控

Deep Surveillance with Deep Learning – Intelligent Video Surveillance

原文地址:

https://data-flair.training/blogs/deep-surveillance-with-deep-learning-intelligent-video-surveillance-project/

监视安全是一项非常乏味和耗时的工作。在本文中,将构建一个自动分析视频监视任务的系统。将实时分析视频反馈,并识别任何异常活动,如暴力或盗窃。

其中,视频监控行业正在进行大量的研究,央视视频的作用已经过大。监控和保安的地方到处都有闭路电视摄像机。

近十年来,用于深度监视的深度学习算法有了很大的发展。这些进展已显示出深入监视的一个基本趋势,并有望大幅提高效率。深度监视的典型应用是盗窃识别、暴力检测和爆炸机会检测。

Intelligent Video Surveillance with Deep Learning

将使用时空编码器来识别异常活动。

网络架构

通常看到用于计算机视觉、图像分类和目标检测任务的深层神经网络。在这个项目中,必须将深度神经网络扩展到三维,以学习视频馈送的时空特征。

针对这个视频监控项目,将介绍一种基于三维卷积网络的时空自动编码器。编码器部分提取空间和时间信息,然后解码器重构帧。利用重建批次与原始批次之间的欧氏距离计算重建损失,识别异常事件。

视频监控异常事件检测数据集 The dataset for abnormal event detection
in video surveillance

以下是用于训练异常检测任务模型的综合数据集。

CUHK Avenue Dataset

这个数据集包含16个训练和21个测试视频片段。视频总共包含30652帧。

训练视频包含正常情况下的视频。测试视频包含标准和异常事件视频。

数据集下载链接:

http://www.cse.cuhk.edu.hk/leojia/projects/detectabnormal/dataset.html

UCSD pedestrian Dataset

这个数据集包含行人视频。包括一组走向、离开和平行于摄像机的人。

异常事件包括

非行人实体

异常行人运动模式

数据集下载链接:http://www.svcl.ucsd.edu/projects/anomaly/dataset.html

Project Source Code

在继续之前,请下载在这个深度学习项目中使用的源代码:视频监控项目代码

Video Surveillance – Anomaly Even Detection
Code

视频监控-异常偶数检测代码:

首先,下载上述任何一个数据集并将其放入名为“train”的目录中。

生成新的python文件train.py并粘贴以下步骤中描述的代码:

一. Imports

  1. from keras.preprocessing.image import
    img_to_array,load_img

  2. import numpy as np

  3. import glob

  4. import os

  5. from scipy.misc import imresize

  6. from keras.layers import
    Conv3D,ConvLSTM2D,Conv3DTranspose

  7. from keras.models import Sequential

  8. from keras.callbacks import ModelCheckpoint,
    EarlyStopping

  9. import imutils

二. 初始化目录路径变量并描述处理和存储视频帧的函数Initialize directory path variable and describe a function to process and store video frames:

  1. store_image=[]

  2. train_path=’./train’

  3. fps=5

  4. trian_videos=os.listdir(‘train_path’)

  5. train_images_path=train_path+’/frames’

  6. os.makedir(train_images_path)

  7. def store_inarray(image_path)

  8. image=load_img(image_path)

  9. image=img_to_array(image)

  10. image=cv2.resize(image, (227,227), interpolation = cv2.INTER_AREA)

  11. gray=0.2989image[:,:,0]+0.5870image[:,:,1]+0.1140*image[:,:,2]

  12. store_image.append(gray)

三. Extract frames from video and call store function:

  1. from video and call store function

  2. for video in train_videos:

  3. os.system( ‘ffmpeg -i {}/{} -r 1/{} {}/frames/%03d.jpg’.format(train_path,video,fps,train_path))

  4. images=os.listdir(train_images_path)

  5. for image in images:

  6. image_path=framepath+ ‘/’+ image

  7. store_inarray(image_path)

四. Store the store_image list in a numpy file “training.npy”

  1. store_image=np.array(store_image)

  2. a,b,c=store_image.shape

  3. store_image.resize(b,c,a)

  4. store_image=(store_image-store_image.mean())/(store_image.std())

  5. store_image=np.clip(store_image,0,1)

  6. np.save(‘training.npy’,store_image)

五. Create spatial autoencoder architecture

  1. stae_model=Sequential()

  2. stae_model.add(Conv3D(filters=128,kernel_size=(11,11,1),strides=(4,4,1),padding=‘valid’,input_shape=(227,227,10,1),activation=‘tanh’))

  3. stae_model.add(Conv3D(filters=64,kernel_size=(5,5,1),strides=(2,2,1),padding=‘valid’,activation=‘tanh’))

  4. stae_model.add(ConvLSTM2D(filters=64,kernel_size=(3,3),strides=1,padding=‘same’,dropout=0.4,recurrent_dropout=0.3,return_sequences=True))

  5. stae_model.add(ConvLSTM2D(filters=32,kernel_size=(3,3),strides=1,padding=‘same’,dropout=0.3,return_sequences=True))

  6. stae_model.add(ConvLSTM2D(filters=64,kernel_size=(3,3),strides=1,return_sequences=True, padding=‘same’,dropout=0.5))

  7. stae_model.add(Conv3DTranspose(filters=128,kernel_size=(5,5,1),strides=(2,2,1),padding=‘valid’,activation=‘tanh’))

  8. stae_model.add(Conv3DTranspose(filters=1,kernel_size=(11,11,1),strides=(4,4,1),padding=‘valid’,activation=‘tanh’))

  9. stae_model.compile(optimizer=‘adam’,loss=‘mean_squared_error’,metrics=[‘accuracy’])

六. Train the autoencoder on the “training.npy” file and save the model with name “saved_model.h5”

  1. training_data=np.load(‘training.npy’)

  2. frames=training_data.shape[2]

  3. frames=frames-frames%10

  4. training_data=training_data[:,:,:frames]

  5. training_data=training_data.reshape(-1,227,227,10)

  6. training_data=np.expand_dims(training_data,axis=4)

  7. target_data=training_data.copy()

  8. epochs=5

  9. batch_size=1

  10. callback_save = ModelCheckpoint(“saved_model.h5”, monitor=“mean_squared_error”, save_best_only=True)

  11. callback_early_stopping = EarlyStopping(monitor=‘val_loss’, patience=3)

  12. stae_model.fit(training_data,target_data,
    batch_size=batch_size, epochs=epochs, callbacks = [callback_save,callback_early_stopping])

  13. stae_model.save(“saved_model.h5”)

运行此脚本以训练并保存自动编码器模型。

现在制作另一个python文件“train.py“并在任何自定义视频上观察异常事件检测的结果。将下面的代码粘贴到“train.py”

import cv2
import numpy as np
from keras.models import load_model
import argparse
from PIL import Image
import imutils

def mean_squared_loss(x1,x2):
difference=x1-x2
a,b,c,d,e=difference.shape
n_samples=abcde
sq_difference=difference**2
Sum=sq_difference.sum()
distance=np.sqrt(Sum)
mean_distance=distance/n_samples

return mean_distance

model=load_model(“saved_model.h5”)

cap = cv2.VideoCapture("__path_to_custom_test_video")
print(cap.isOpened())

while cap.isOpened():
imagedump=[]
ret,frame=cap.read()

for i in range(10):
ret,frame=cap.read()
image = imutils.resize(frame,width=700,height=600)

frame=cv2.resize(frame, (227,227), interpolation =
cv2.INTER_AREA)
gray=0.2989frame[:,:,0]+0.5870frame[:,:,1]+0.1140*frame[:,:,2]
gray=(gray-gray.mean())/gray.std()
gray=np.clip(gray,0,1)
imagedump.append(gray)

imagedump=np.array(imagedump)

imagedump.resize(227,227,10)
imagedump=np.expand_dims(imagedump,axis=0)
imagedump=np.expand_dims(imagedump,axis=4)

output=model.predict(imagedump)

loss=mean_squared_loss(imagedump,output)

if frame.any()==None:
print(“none”)

if cv2.waitKey(10) & 0xFF==ord(‘q’):
break
if loss>0.00068:
print(‘Abnormal Event Detected’)
cv2.putText(image,“Abnormal Event”,(100,80),cv2.FONT_HERSHEY_SIMPLEX,2,(0,0,255),4)

cv2.imshow(“video”,image)

cap.release()
cv2.destroyAllWindows()

现在,运行这个脚本并观察视频监控的结果,将突出显示异常事件。

Summary

在这个深度学习项目中,训练一个异常事件侦测的自动编码器。在普通视频上训练自动编码器。根据自定义视频源的欧氏距离和自动编码器预测的帧来识别异常事件。
为异常事件设置了一个阈值。在这个项目中,是0.0068;可以改变这个阈值来实验获得更好的结果。

深度学习-智能视频监控相关推荐

  1. 360°大视野安全帽识别系统-深度学习智能视频分析

    经济飞速发展,科技进步日新月异.360°大视野安全帽将有效保证工地.矿区等易有掉落物体的作业区域发生危险的几率大大降低,减少人员伤亡和财产损失,维护正常的作业秩序.安全帽识别系统运用科技手段来进行监督 ...

  2. 计算道路超高lisp_5G+AI超高清智能视频监控将迎来增长期

    在安防行业5G+AI赋能下,高清视频将为安防行业带来重要的发展机遇期. 5G具有增强移动宽带.高可靠低时延和广覆盖大连接的优势,使AI能与物联网融为一体. AI和5G近80%的典型应用是重叠的,5G能 ...

  3. 低成本、云边端、软硬件一体化智能视频监控解决方案

    背景 智能视频监控是利用计算机视觉技术对视频信号进行处理.分析和理解,在不需要人为干预的情况下,通过对序列图像自动分析对监控场景中的变化进行定位.识别和跟踪,并在此基础上分析和判断目标的行为,能在异常 ...

  4. 深度学习在视频分析中的架构、算法及应用

    直播与短视频业务的兴起,代表了一种内容交互方式的变化,更加追求强交互,这种变化催化了很多技术和架构的转型,由传统的传输.存储优先演进为计算与智能.本文是由360人工智能研究院视频大数据组技术负责人陈强 ...

  5. 基于SiamMask网络的智能视频监控实时人员跟踪系统

    实时视频监控系统广泛应用于公共区域.商业建筑和公共基础设施等各种环境中.在不同的视频监控应用中,人的检测.分割和跟踪是一个关键和关键的任务.研究人员提出了不同的图像处理和基于人工智能的方法(包括机器和 ...

  6. 智能视频监控分析人员行为着装分析 OpenCv

    智能视频监控分析人员行为着装分析通过OpenCv+yolo网络深度学习技术对现场人员行为着装分实时分析检测.我们选择当下YOLO最新的卷积神经网络YOLOv5来进行行为和着装识别检测.YOLOv5是完 ...

  7. 【智能安防】人像态势识别及其在智能视频监控中的应用

    来源:警用科技 安防已经成为人工智能落地场景中的重要赛道,其涉及的智能视频分析.人脸识别等关键技术也在研究领域受到了极大的关注.那么安防领域中涉及的人脸识别有何痛点?人工智能+安防的未来又有哪些新的趋 ...

  8. 深度学习赋能视频编码

    深度学习赋予了诸如计算机视觉等领域新的研究契机,其应用也获得了视频编码领域的诸多关注.在LiveVideoStack线上分享中北京大学信息技术学院 助理研究员王苫社详细介绍了当下深度学习在视频编码中的 ...

  9. 高孟平:深度学习是视频技术与人眼视觉连结的重要桥梁

    LiveVideoStack通过邮件专访了腾讯音视频实验室专家高孟平,他聊起了自己的成长与从业经历,并畅谈了带领AI.视频处理.编解码.质量等团队打造人眼视觉为标准的视频服务平台--丽影平台的前前后后 ...

最新文章

  1. XML PUBLISHER的一些技巧
  2. web前端研发工程师编程能力成长之路
  3. springcloud alibab + sentinel1.8.1集成文档
  4. 7 Steps for becoming Deep Learning Expert
  5. nginx https http2
  6. javascript设计模式-Constructor(构造器)模式
  7. 46 - 算法 -Leetcode-141-环形链表-快慢指针
  8. 服务器虚拟化techtarget技术社区,服务器上的应用程序虚拟化
  9. window.location.href = basePath + paper/deleteExpertComment.action?expertId=+$(this).prev().val();
  10. 谁说大龄程序员不能学 Java?
  11. 彻底理解js是单线程
  12. C++_智能指针shared_ptr、unique_ptr、weak_ptr、auto_ptr总结
  13. java 设置内存参数_Java虚拟机内存参数设置
  14. 什么是全栈工程师,为什么全栈开发用Python,Python web全栈开发究竟有多高薪?
  15. qgc地面站如何导入离线地图_离线地图
  16. opencv23:Histogram直方图反向投影
  17. 顺序查找与二分查找时间复杂度的比较
  18. nrf51822+rfx2401c系统板(开源原理图、PCB)
  19. 天津2019全国计算机二级,2019年上半年全国计算机等级考试报名啦
  20. 嵌入式软件工程师面试题收录(4)

热门文章

  1. Linux通过端口号杀死指定进程
  2. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
  3. 【数据结构】链表中的 指针,地址
  4. batch normalization
  5. NVIDIA Nsight Systems CUDA 跟踪
  6. 2021年大数据Flink(二十五):Flink 状态管理
  7. HarmonyOS UI开发 DirectionalLayout(定向布局) 的使用
  8. python 中 is 与 == 的区别
  9. 微信小程序模板template
  10. 一个整型数组里除了两个数字之外,其他的数字都出现了两次