自定义AVA数据集,多人视频的时空动作数据集标注方法

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
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值