1.AI平台与项目下载
AI平台:极链云
实例镜像:Pytorch 1.8.0,python 3.8,CUDA 11.1.1
项目下载:码云
AI平台上执行:
cd /home
git clone https://gitee.com/YFwinston/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset.git
2.数据集视频准备
从AVA数据集中随机选择1个,从该视频中裁剪出3个10秒的片段
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/videos
wget https://s3.amazonaws.com/ava-dataset/trainval/2DUITARAsWQ.mp4 -O ./1.mp4
3.视频裁剪与抽帧
3.1安装ffmpeg
conda install x264 ffmpeg -c conda-forge -y
3.2 视频裁剪
AI平台上执行:
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
sh cut_video.sh
其中cut_video.sh文件内容如下:
IN_DATA_DIR="./videos"
OUT_DATA_DIR="./video_crop"
ffmpeg -ss 1030 -t 11 -y -i "${IN_DATA_DIR}/1.mp4" "${OUT_DATA_DIR}/1.mp4"
ffmpeg -ss 1340 -t 11 -y -i "${IN_DATA_DIR}/1.mp4" "${OUT_DATA_DIR}/2.mp4"
ffmpeg -ss 1850 -t 11 -y -i "${IN_DATA_DIR}/1.mp4" "${OUT_DATA_DIR}/3.mp4"
结果如下图:
注: 裁剪得到的视频最好是长度一致的,并且以阿拉伯数字命名。如全部视频都是1分钟或30秒。
3.3视频抽帧
参考AVA数据集,每秒裁剪30帧
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
bash cut_frames.sh
3.4整合与缩减帧choose_feames_all
在10秒的视频中,对部分图片(每隔30帧的抽样图片,即x_000001.jpg、x_000031.jpg、x_000061.jpg、…、x_000301.jpg)进行检测与标注,
此步骤得到的是裁减并整合到一起的文件choose_feames_all用于yolov5的检测
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
python choose_frames_all.py 10 0
其中10表示视频长度,0表示从第0秒开始
3.5不整合的缩减帧choose_frames
此步骤得到的是裁剪但不整合的文件choose_frames用于via标注
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
python choose_frames.py 10 0
4.yolov5与deep sort安装
4.1安装
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort
pip install -r requirements.txt
pip install opencv-python-headless==4.1.2.30
wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt -O /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/yolov5/yolov5s.pt
mkdir -p /root/.config/Ultralytics/
wget https://ultralytics.com/assets/Arial.ttf -O /root/.config/Ultralytics/Arial.ttf
4.2检测裁减并整合到一起的文件choose_frams_all(yolov5第一次检测)
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort
python ./yolov5/detect.py --source ../Dataset/choose_frames_all/ --save-txt --save-conf
结果存储在:
/home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/yolov5/runs/detect/exp
5查看dense_proposals_train.pkl(用于产生行为标注)
dense_proposals_train.pkl是由yolo第一次检测生成的
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/mywork
python dense_proposals_train.py ../yolov5/runs/detect/exp/labels ./dense_proposals_train.pkl show
6导入via
6.1生成不含前2张和后2张图片的文件夹
choose_frames 文件夹中包含10秒视频中11张图片,但是在最后生成的标注文件,不包含前2张图片和后2张图片。所以需要创建一个choose_frames_middle文件夹,存放不含前2张图片与后2张图片的文件夹。
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/
python choose_frames_middle.py
6.2生成via标注文件
自定义动作在:
/home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/mywork/dense_proposals_train_to_via.py
具体内容如下:
执行以下代码:
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/mywork/
python dense_proposals_train_to_via.py ./dense_proposals_train.pkl ../../Dataset/choose_frames_middle/
生成标注文件
6.3去掉via默认值
标注时有默认值,会影响标注,故需取消掉
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
python chang_via_json.py
6.4准备choose_frames_middle文件夹
apt-get update
apt-get install zip
apt-get install unzip
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset
zip -r choose_frames_middle.zip choose_frames_middle
下载choose_frames_middle.zip到本地,并解压
6.5下载via
点此下载via标注工具
打开标注工具中的via_image_annotator.html
7提取标注信息
从json文件中获取csv文件
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/
python json_extract.py
这一步执行后,会生成train_without_personId.csv文件(包含 坐标、actions)
8deep sort
8.1通过deepsort检测图片
由于deepsort需要提前送入2帧图片,然后才能从第三帧开始标注人的ID,dense_proposals_train.pkl是从第三张开始的(即缺失了0,1),所以需要将0,1添加上
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/mywork
python dense_proposals_train_deepsort.py ../yolov5/runs/detect/exp/labels ./dense_proposals_train_deepsort.pkl show
首先将ckpt.t7下载到./deep_sort_pytorch/deep_sort/deep/checkpoint/文件夹(也可自行下载,然后上传),然后使用deepsort关联人的id,用datasets/frames中的图片进行检测
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/
wget https://drive.google.com/drive/folders/1xhG0kRH1EX5B9_Iz8gQJb7UNnn_riXi6 -O ./deep_sort_pytorch/deep_sort/deep/checkpoint/ckpt.t7
python yolov5_to_deepsort.py --source /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/frames
这一步执行后,会生成train_personID.csv文件(包含 坐标、personID)
8.2融合actions与personID
将train_personID.csv和train_without_personID.csv两个文件进行融合
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/
python train_temp.py
运行结束后,会发现有些ID是-1,这些-1是deepsort未检测出来的数据,原因是人首次出现或者出现时间过短,deepsort未检测出ID
这一步执行,生成train_temp.csv文件
8.3修正ava_train_temp.csv
针train_temp.csv中存在很多-1进行修正
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/
python train.py
这一步执行,生成Dataset/annotations/train.csv
8.4生成其他标注文件
生成train_excluded_timestamps.csv
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/annotations
touch train_excluded_timestamps.csv
生成included_timestamps.txt
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/annotations
touch included_timestamps.txt
在included_timestamps.txt中写入
02
03
04
05
06
07
08
这里的内容与视频长度有关,如果长度是10秒的话,这里的内容就是去除前两秒和后两秒的数字。
生成action_list.pbtxt
cd /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/annotations
touch action_list.pbtxt
在其中写入行为:
item {
name: "talk"
id: 1
}
item {
name: "bow"
id: 2
}
item {
name: "stand"
id: 3
}
item {
name: "sit"
id: 4
}
item {
name: "walk"
id: 5
}
item {
name: "hand up"
id: 6
}
item {
name: "catch"
id: 7
}
生成dense_proposals_train.pkl
cp /home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/yolovDeepsort/mywork/dense_proposals_train.pkl //home/Custom-ava-dataset_Custom-Spatio-Temporally-Action-Video-Dataset/Dataset/annotations