自定义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
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自定义时空动作/行为视频数据集的制作过程需要以下步骤: 1. 数据收集:收集与目标动作/行为相关的视频片段。可以通过在公共视频平台上搜索相关关键词,或者使用摄像头拍摄自己感兴趣的动作/行为。确保视频片段的质量和多样性。 2. 数据预处理:对收集到的视频进行预处理,包括视频剪辑、格式转换和标注。选择关键帧或者将视频切割成短小的视频片段,并将其转换成计算机可读取的格式(如mp4)。同时,根据视频内容对每个视频片段进行标注标注目标动作/行为的位置和类别。 3. 数据标注:使用标注工具(如LabelImg)对每个视频片段进行标注。通过框选或者用关键点标记目标动作/行为的起始点和终止点,以形成标注数据。 4. 数据划分:将整个数据集分成训练集和测试集。通常,将80%的数据作为训练集,20%的数据作为测试集。确保训练集和测试集的数据分布均匀,避免数据集不平衡的问题。 5. 数据增强:对训练集进行数据增强,以提高模型的泛化能力。可以使用图像处理技术如平移、旋转、缩放等进行图像增强,也可以使用视频处理技术如帧采样、速度调整等进行视频增强。 6. 模型训练:选择合适的深度学习模型(如YOLOv5、Deep等),使用训练集对模型进行训练。在训练过程中,将训练集输入到模型中,通过最小化损失函数来优化模型参数,使其能够准确地检测时空动作/行为。 7. 模型评估:使用测试集对训练好的模型进行评估。将测试集输入到模型中,计算模型的精确度、召回率等评价指标,以评估模型的性能。 8. 模型优化:根据评估结果,对模型进行优化。可以调整模型的超参数,增加训练集的规模,或者增加训练轮数等,以进一步提高模型的性能。 通过以上步骤,就可以完成自定义时空动作/行为视频数据集的制作,并使用YOLOv5、Deep等深度学习模型进行训练和测试。这样训练出来的模型可以用于检测和识别视频中的时空动作/行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值