没有合适的资源?快使用搜索试试~ 我知道了~
1、视频采集 本次训练以实验为目的,采集7段30秒以上的货车相关的视频! 2、视频抽帧 目的有3个: 1是为了统一各个视频的长度(测试发现,若视频时长不一,训练过程可能出现问题,未作进一步验证) 2是为了1秒抽1帧图片,目的是用来标注,ava数据集就是1秒1帧。 3是为了1秒抽30帧图片,目的是为了训练,据说因为slowfast在slow流里1秒会采集到15帧,在fast流里1秒会采集到2帧。 以下是解析脚本,脚本仅支持在linux系统下运行:
资源推荐
资源详情
资源评论
slowfast 模型自定义数据集标注
1、视频采集
本次训练以实验为目的,采集 7 段 30 秒以上的货车相关的视频!
2、视频抽帧
目的有 3 个:
1 是为了统一各个视频的长度(测试发现,若视频时长不一,训练过程可能出现问题,未作
进一步验证)
2 是为了 1 秒抽 1 帧图片,目的是用来标注,ava 数据集就是 1 秒 1 帧。
3 是为了 1 秒抽 30 帧图片,目的是为了训练,据说因为 slowfast 在 slow 流里 1 秒会采集到 15
帧,在 fast 流里 1 秒会采集到 2 帧。
以下是解析脚本,脚本仅支持在 linux 系统下运行:
lzj_video2img.py
import os
import shutil
from tqdm import tqdm
start = 0
seconds = 30
video_path = './ava/videos'
labelframes_path = './ava/labelframes'
rawframes_path = './ava/rawframes'
cut_videos_sh_path = './cut_videos.sh'
if os.path.exists(labelframes_path):
shutil.rmtree(labelframes_path)
if os.path.exists(rawframes_path):
shutil.rmtree(rawframes_path)
fps = 30
raw_frames = seconds*fps
with open(cut_videos_sh_path, 'r') as f:
sh = f.read()
sh = sh.replace(sh[sh.find(' ffmpeg'):], f' ffmpeg -ss {start} -t {seconds} -i "${{video}}" -r 30
-strict experimental "${{out_name}}"\n fi\ndone\n')
with open(cut_videos_sh_path, 'w') as f:
f.write(sh)
# 902 打到 1798
os.system('bash cut_videos.sh')
os.system('bash extract_rgb_frames_ffmpeg.sh')
os.makedirs(labelframes_path, exist_ok=True)
video_ids = [video_id[:-4] for video_id in os.listdir(video_path)]
for video_id in tqdm(video_ids):
for img_id in range(2*fps+1, (seconds-2)*30, fps):
shutil.copyfile(os.path.join(rawframes_path, video_id, 'img_'+format(img_id, '05d')+'.jpg'),
os.path.join(labelframes_path, video_id+'_'+format(start+img_id//30, '05d')+'.jpg'))
lzj_extract_rgb_frames_ffmpeg.sh
IN_DATA_DIR="./ava/videos_cut"
OUT_DATA_DIR="./ava/rawframes"
if [[ ! -d "${OUT_DATA_DIR}" ]]; then
echo "${OUT_DATA_DIR} doesn't exist. Creating it.";
mkdir -p ${OUT_DATA_DIR}
fi
for video in $(ls -A1 -U ${IN_DATA_DIR}/*)
do
video_name=${video##*/}
if [[ $video_name = *".webm" ]]; then
video_name=${video_name::-5}
else
video_name=${video_name::-4}
fi
out_video_dir=${OUT_DATA_DIR}/${video_name}
mkdir -p "${out_video_dir}"
out_name="${out_video_dir}/img_%05d.jpg"
ffmpeg -i "${video}" -r 30 -q:v 1 "${out_name}"
done
lzj_cut_videos.sh
IN_DATA_DIR="./ava/videos"
OUT_DATA_DIR="./ava/videos_cut"
if [[ ! -d "${OUT_DATA_DIR}" ]]; then
echo "${OUT_DATA_DIR} doesn't exist. Creating it.";
mkdir -p ${OUT_DATA_DIR}
fi
for video in $(ls -A1 -U ${IN_DATA_DIR}/*)
do
out_name="${OUT_DATA_DIR}/${video##*/}"
if [ ! -f "${out_name}" ]; then
ffmpeg -ss 0 -t 3 -i "${video}" -r 30 -strict experimental "${out_name}"
fi
done
以上 3 个脚本放在同一目录下,并在目录下创建 ava/videos 文件夹,
将准备的 7 个视频放在 videos 是文件夹下,由于 7 个视频的时长都在 30 秒以上,所以修改
video2img.py 中的 seconds 为 30(这里要注意,seconds 为视频结束时间,所以准备的视频
文件时长都必须超过 30 秒)。
剩余36页未读,继续阅读
资源评论
搬砖者(视觉算法工程师)
- 粉丝: 342
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功