Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

人体行为识别(人流、摔倒、打架)

一、项目文件介绍
这里

文件夹名 解释

paddledetection/datasets 部分数据集(摔倒、打架和正常情况)

模型已经处理后的视频,一般是这边服务器提供
paddledetection/demo
客户端一开始参考的视频
模型处理后的视频,对来自客户端请求处理后的
paddledetection/final 视频存放位置,提供给客户端请求的视频,程序
启动时会清空。
存放的实际使用的最终模型(包含多个,如人体
paddledetection/models
识别、摔倒识别、打架识别)
模型训练后存放的结果,训练后可替换models里
paddledetection/output
面对应的模型,训练专用
模型训练时,需要将视频拆解成图片,平时可以
paddledetection/rawframes
将其中内容删除,训练专用
最重要的文件夹,里面是服务器实际运行处理视
paddledetection/scripts 频的地方,会对视频进行行为识别,并在视频上
画出结果。
训练模型专用,目前只训练了打架模型,包含对
paddledetection/train
打架视频预处理,模型训练

paddledetection/train_datasets 训练专用,里面包含训练和测试使用的视频

这里存放着客户端上传的视频,往往视频处理
paddledetection/uploads
后,会直接将视频删除,所以只是暂时性的存储

paddledetection/infer_all.py 调用模型推理的模块,建议不动

定义服务器IP和端口,往往需要修改第一个
paddledetection/config.py
SERVER_IP,改成你电脑或者服务器实际的IP。
接受来自客户端的视频请求,同志
paddledetection/run_server.py
socket_server.py处理视频
视频处理Socket服务器,接受本地请求,处理视
paddledetection/socket_server.py

paddledetection/socket_client.py 提供了与socket_server.py通信的模块

简陋的视频平台,需要修改里面97行的
people_behaviour.html serverAddress="http://127.0.0.1:5000";将
127.0.0.1改称和config.py的SERVER_IP一致
二、安装环境
在这里假设你已经安装了pip。进入paddledetection文件夹
python 3

1 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

三、具体使用
首先需要进入paddledetection/文件夹。
修改config.py文件和people_behaviour.html,将SERVER_IP和serverAddress里面127.0.0.1字段换成
你实际的IP,如果你是本地自己电脑测试,客户端也是你的电脑,就可以不用改变。

1 # 第一个窗口, 启动视频处理服务器
2 python socket_server.py
3

4 #等第一个窗口看到"Socket 后,启动平台请求服务器,运行一下就启动了,
Server start to run!"
很快的。
5 python run_server.py

这里有两个服务器的缘故是,python这门语言是单线程的,如果在一个文件跑, 视频在预测行为时会
占用绝大多数资源,导致请求端一直得不到响应。
客户端就可以打开平台,进行请求了,这里考虑到你那里已经有平台了,就直接提供了一个html,测
试的时候,直接打开即可,具体你那边平台,我不是很清楚,需要你根据你的平台,具体调整。

四、补充
这里提供一部分模型训练的方法,经过测试,部分公开的模型预测能力更好,且对行为识别的数据集
进行预处理实际人工开销太大了,这里只提供打架识别训练方法。

1 #同样在paddledetection文件夹,需要再装个插件
2 pip install SimpleITK
3 # 1. 视频拆分成图片
4 python train/extract_rawframes.py
5 # 2. 划分训练集和测试集
6 python train/split_fight_train_test_dataset.py
7 # 3. 训练模型
8 python train/main.py --validate
9 # 4. 更新模型,将output/文件夹的模型替换models文件夹对应的模型,建议事先对models的模型进行备
份。

其他比较重要的可能后续需要修改的文件,关系到整体模型加载什么样的模型,如何处理视频的文
件。
在paddledetection/scripts/config/infer_cfg_pphuman.yml文件

1 crop_thresh: 0.60 # 人体识别的预测阈值,超过


这个值,是人体
2 attr_thresh: 0.55 # 目前不用
3 kpt_thresh: 0.2
4 visual: True # 可视化标注结果
5 warmup_frame: 50
6

7 MOT:
8 model_dir: models/people-detect/ # MOT 做人体识别,这里指定了模
型存放位置
9 tracker_config: scripts/config/tracker_config.yml
10 batch_size: 1
11 skip_frame_num: 3 # 为了加快处理速度,会跳过部
分帧,如果想提高精度降低速度,可改为1
12 enable: True
13

14 KPT: # 人体关键点模型
15 model_dir: models/keypoint/
16 batch_size: 1
17

18

19 VIDEO_ACTION: # 打架行为
20 model_dir: models/ppTSM/
21 batch_size: 1
22 frame_len: 8
23 sample_freq: 7
24 short_size: 340
25 target_size: 320
26 enable: True
27

28 SKELETON_ACTION: #基于关键点的行为识别
29 model_dir: models/base_on_keypoint/
30 batch_size: 1
31 max_frames: 24
32 display_frames: 30
33 coord_size: [384, 512]
34 enable: True
35

36

37

38

39

大致用不到
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh
chmod +x Miniconda3-4.2.12-Linux-x86_64.sh
./Miniconda3-4.2.12-Linux-x86_64.sh
source ~/.bashrc
conda install anaconda-client
sudo apt-get install g++ gcc
conda create -n paddlegpu python=3.7
conda activate paddlegpu

You might also like