Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A toy project, which achieves Human Abnormal Action Detection base on Neural Network methods.

Notifications You must be signed in to change notification settings

mna12478/ActionDetection

Repository files navigation

ActionDetection


项目描述

基于机器学习的监控视频中人类异常行为检测小程序。
这个程序能做的事就是读取一段视频流,然后判断内容是否属于异常行为。

视频预处理

利用高斯核对视频的帧进行背景减差,做镜像翻转以扩充样本,并分类存放。

效果大概如下图所示:



UI(03/07更新)

UI


实现功能

如下图所示:






运行方式

(训练阶段已完成,过程可以通过代码了解)

模型与Tensorboard: http://pan.baidu.com/s/1jHPdMFc

分类和预处理好的数据: http://pan.baidu.com/s/1kV1B0sZ

将数据和模型解压到根目录下,然后在UI内操作,每隔5帧启动一个20帧的SEQ用来预测:

python UI_video.py

训练过程可视化

cd ActionDetection
tensorboard --logdir=Board/

模型是收敛的。 单帧预训练的TensorBoard如下:

Loss/Validation

Accuracy

Accuracy_validation


训练与运行环境

硬件:i7-6700HQ + GTX1060 + 16G DDR4
系统与组件:Win10-64-bit + Cuda-8.0 + Anaconda3-4.1.1 (Python3.5 .ver)
软件包:Tensorflow-gpu-1.0 + Tflearn-0.3.0 + OpenCV-3.2.0 + Numpy-1.12.0

所使用数据集

ICPR 2010 Contest on Semantic Description of Human Activities (SDHA 2010)

相关链接:SDHA 2010


所使用算法

单帧预训练:AlextNet (tflearn, 步长0.001)
概率序列训练:双隐层网络 (tensorflow)

DATA包下文件夹内容说明

/ borad

用于存放Tensorboard文件

/ binary_frame

用于存放单帧图训练集, 存放格式为:
---- / binary_frame
 --- /0
 -- 1.png
 -- 2.png
 ..
 --- /1
 -- 3.png
 -- 4.png
 ..
 --- /2
 -- 5.png
 -- 6.png
 ..
 ...
 ...
 ...
本项目有六个类别,对应 0~5 :['handshake', 'hug', 'kick', 'quiet', 'hit', 'push']

/ csv_file

文件夹下有两个文件:
1, seq.csv, 第一次预训练后,对每个视频隔帧取得的概率序列
2, video_labels.csv, 整段视频原有的标签(正常0, 异常1),用作第二次训练的标签

/ file_zip

预训练时Tflearn使用build_image_dataset_from_dir()产生的dataset文件(data.pkl)

/ frame2

所有视频每隔5帧取一帧,帧上注明该帧所属的视频序号和帧数
文件存放格式:
---- /frame2
 --- 0_5.png
 --- 0_10.png
 ...
 --- 5_15.png
 --- 5_20.png
 ...

/ model_alexnet

用于存放第一次训练结束后的tflearn model

/ moddel_nn

用于存放第二次训练结束后的 tensorflow model

/ video

所有视频文件,存放格式为:
---- /video
 --- 0_1_4.avi
 --- 0_11_4.avi
 --- 1_1_2.avi
 ...

脚本

BackSub.py

1, 读取/video下的视频单帧
2, 执行镜像和背景减除操作
3, 存入对应标签的文件夹 /binary_frame

Generate_data.py

1, 对/binary_frame下的单帧图进行预训练
2, 并将结果模型存入/model_alexnet
3, 并对/frame2下所有视频对应的单帧打上概率标签
4, 将每个视频对应的标签概率序列写入seq.csv
5, 将seq.csv存入/csv_file

Train_multiple.py

1,/video下的视频对应的标签写于/csv_file/video_labels.csv
2,每个视频的概率序列已由Generate_data生成于seq.csv
3,将seq.csv作为训练集,video_labels.csv作为标签,使用双隐层进行训练
4,训练结果模型存入/model_nn

Test_multiple.py

二次训练的预测模块

UI_video.py

启动一个PYQT5写成的简单UI,可以读取视频文件并进行预测

About

A toy project, which achieves Human Abnormal Action Detection base on Neural Network methods.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /