针对视频处理和数据集文件——在window上操作

  • 一、视频的处理
    • 1.1ffmpeg安装
      • 1.1.1ffmpeg环境变量的配置
    • 1.2视频准备
    • 1.3git安装
    • 1.4切割视频
    • 1.5在window中运行sh文件,进行切割视频
  • 二、数据集文件的处理
    • 2.1labelimg安装
      • 2.1.1下载与安装Anaconda3
      • 2.1.2下载与安装labelimg
    • 2.2labelimg使用
    • 2.3描写数据集
      • 2.3.1person_box
    • 2.4labelimg使用遇到的问题

一、视频的处理

1.1ffmpeg安装

ffmpeg的官网地址是:https://www.ffmpeg.org/

下载完成后解压,打开bin就会看到有三个程序。

1.1.1ffmpeg环境变量的配置

1.将下载的ffmpeg解压到指定的目录下,我解压在D盘目录下
2.右击此电脑——>属性——>高级系统设置——>环境变量。或者键盘按win键输入环境变量。在系统变量的path变量中添加ffmpeg解压的路径。

3.配置完成后运行win+r,输入cmd回车。输入ffmpeg。若显示如下图,则说明配置成功。

1.2视频准备

若我们下载的视频很长,而我们只需要几秒或者几分钟的视频的时候,我们则需要使用ffmpeg对视频进行剪辑。
例如,下面使用ffmpeg将一段长视频剪辑为0-4s视频的命令。

ffmpeg -ss 00:00:00.0 -to 00:00:4.0 -i "d:\Users\zlx\Desktop\train.mp4" "d:\Users\zlx\Desktop\1.mp4"


到这一步就算把需要使用的视频准备好了。接下来我们要对视频进行切割。在对视频进行切割前,我们需要先下载git软件。因为我们切割视频所使用的是.sh文件,在Ubuntu上我们可以直接用bash xxx.sh就可以直接运行了,但是现在我们需要在window上实现,就需要借助git。

1.3git安装

大家可以参考这篇博客,写的很详细了Git 详细安装教程

1.4切割视频

用两种切割方式去切割视频,第一种是一秒一帧,第二种是一秒三十帧。
!!这个注意哦两个代码的路径他的斜杠和电脑属性直接复制的不一样,要记得改

第一种,一秒一帧
代码(cut_videos.sh)如下:

#切割图片,每秒1帧
IN_DATA_DIR="d:/Users/zlx/Desktop"
OUT_DATA_DIR="d:/Users/zlx/Desktop"if [[ ! -d "${OUT_DATA_DIR}" ]]; thenecho "${OUT_DATA_DIR} doesn't exist. Creating it.";mkdir -p ${OUT_DATA_DIR}
fifor video in $(ls -A1 -U ${IN_DATA_DIR}/*)
dovideo_name=${video##*/}if [[ $video_name = *".webm" ]]; thenvideo_name=${video_name::-5}elsevideo_name=${video_name::-4}fiout_video_dir=${OUT_DATA_DIR}/${video_name}/mkdir -p "${out_video_dir}"out_name="${out_video_dir}/${video_name}_%06d.jpg"ffmpeg -i "${video}" -r 1 -q:v 1 "${out_name}"
done

第二种,一秒三十帧
代码(cut_videos_frames.sh)如下:

#切割图片,每秒30帧
IN_DATA_DIR="d:/Users/zlx/Desktop"
OUT_DATA_DIR="d:/Users/zlx/Desktop"if [[ ! -d "${OUT_DATA_DIR}" ]]; thenecho "${OUT_DATA_DIR} doesn't exist. Creating it.";mkdir -p ${OUT_DATA_DIR}
fifor video in $(ls -A1 -U ${IN_DATA_DIR}/*)
dovideo_name=${video##*/}if [[ $video_name = *".webm" ]]; thenvideo_name=${video_name::-5}elsevideo_name=${video_name::-4}fiout_video_dir=${OUT_DATA_DIR}/${video_name}/mkdir -p "${out_video_dir}"out_name="${out_video_dir}/${video_name}_%06d.jpg"ffmpeg -i "${video}" -r 30 -q:v 1 "${out_name}"
done

在window里面如何创建.sh文件:
在桌面创建一个txt文档,然后将代码复制进去并保存。然后选中文档,按F2进行重命名(修改文件后缀名,将txt改成sh)。
如果电脑不显示后缀名的话,打开我的电脑——点击查看——在文件扩展名那边打勾。

1.5在window中运行sh文件,进行切割视频

将上面的步骤都完成后,在window上运行.sh文件需要用到git。
方法一:
1.打开git bash ,进入到你.sh所在的文件路径下。(也可以在该路径下输入git bash 回车也可以快速进入——进入后就是在这个路径下了)
2.输入sh cut_videos.sh
他就会将该路径下的所有视频进行切割。

二、数据集文件的处理

2.1labelimg安装

2.1.1下载与安装Anaconda3

anaconda官网点击下载,并安装。
anaconda安装完成之后记得切换国内的源来提高下载速度,命令如下(在cmd上运行):

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

查看自己是否换源成功:
在自己C:\Users\zlx用户路径下,会看到一个.condarc,打开方式用记事本,就会看到

出现这个就算成功了。

然后创建并激活虚拟环境:
这里mmaction2,是我虚拟环境的名字,你们可以替换成自己想要的名字。

conda create -n mmaction2 python==3.8.5
conda activate mmaction2

2.1.2下载与安装labelimg

labelimg下载地址
点击Clone or download——选择Doenload ZIP,下载完成后解压。

安装依赖库:
分别需要安装lxml、PyQt5、PyQt5_tools:

pip install lxml

pip install PyQt5

pip install PyQt5_tools

如果遇到下载失败,可能是pip需要更新:

pip install --upgrade setuptools && python -m pip install --upgrade pip

运行:

在文件中labelimg.py就是我们要执行的文件,它相当于主函数。
在图片标1的地方输入cmd,进入到命令窗口。就会发现这样进入命令窗口后的路径是该文件夹,如果是win+r,输入cmd的话,进入命令窗口的路径是C盘下的用户路径。
然后在labelimg文件夹路径下输入python labelimg.py就可以运行该py文件。
回车后弹出以下界面,说明安装成功。

2.2labelimg使用

labelimg界面:
labelimg的快捷键如下:

按键 功能
ctrl+Q 退出软件
ctrl+O openfile
ctrl+U openDir
ctrl+R ChangeSaveDir
ctrl+S 保存
ctrl+L boxlineColor
ctrl+J move and edit Boxes
ctrl+D 复制框
ctrl+H 隐藏所有的框
ctrl+A 显示所有的框
ctrl+ + 放大
ctrl+ - 缩小
ctrl+ = 原始大小
ctrl+F fit window
ctrl+E 编辑标签
ctrl+shift+O 打开的文件夹只显示.xml文件
ctrl+shift+S
ctrl+shift+F fit Width
d 下一张图
a 上一张图
space 标记当前图片已标记
w 创建一共矩形框
Delete 删除

2.3描写数据集

2.3.1person_box


然后在保存标签的地址里就会看到1_000001.txt,打开就能得到四个数据。这就是我们所需要的person_box数据。
标记完后,如下图:
标记了多少张图就会有多少个文本,然后可以使用dos命令轻松实现合并。

在当前目录下,输入合并指令:

type *.txt >>d:\Users\zlx\Desktop\2\A.txt

然后就会得到合并好的A.txt文件了。

2.4labelimg使用遇到的问题

1.遇到切下一张图闪退问题
报错如下图:

MMaction2中自定义AVA数据集(在window上实现)相关推荐

  1. 08【mmaction2 行为识别商用级别】自定义ava数据集 之 将视频裁剪为帧

    github(新版):https://github.com/Whiffe/mmaction2_YF 码云(新版):https://gitee.com/YFwinston/mmaction2_YF.gi ...

  2. 自定义AVA数据集流程及在SlowFast中训练

    目录 前言 一,视频的处理 1.1视频准备 1.2切割视频为图片 二.数据集文件 2.1数据集文件总览 2.2annotations 2.2.1ava_train_v2.2.csv 2.2.2ava_ ...

  3. 自定义ava数据集及训练与测试 完整版 时空动作/行为 视频数据集制作 yolov5, deep sort, VIA MMAction, SlowFast

    前言 这一篇博客应该是我花时间最多的一次了,从2022年1月底至2022年4月底. 我已经将这篇博客的内容写为论文,上传至arxiv:https://arxiv.org/pdf/2204.10160. ...

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

    1.AI平台与项目下载 AI平台:极链云 实例镜像:Pytorch 1.8.0,python 3.8,CUDA 11.1.1 项目下载:码云 AI平台上执行: cd /home git clone h ...

  5. 将Vue项目methods中的方法暴露在window上

    这座城市风很大,孤独的人总是晚回家. 我是一个H5,咱们在写APP的时候,也就是APP内部嵌套咱们H5代码的时候,肯定会遇到交互问题,如果使用普通html js css的话应该没有什么太大的问题,因为 ...

  6. Android中自定义农历日历,CalendarView Android 上一个优雅、万能自定义 UI、性能高效的日历控件,热插拔!热插拔!热插拔!重要的事 @codeKK Android开源站...

    An elegant CalendarView on Android platform. Freely draw UI with canvas, fast.efficient and low memo ...

  7. 自制AVA数据集工具/slowfast模型训练数据集制作

    AVA2.1版本更新了追踪这一列. 那2.2版本请参考此链接文章:自定义ava数据集及训练与测试 完整版 时空动作/行为 视频数据集制作 yolov5, deep sort, VIA MMAction ...

  8. 在自定义的数据集上训练YOLOv5详细教程分享

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了. ...

  9. mmaction2下载并处理AVA数据集

    Introduction 基本信息上官网查看,开始操作之前需确保目录定位于$MMACTION2/tools/data/ava/ ,便于后续操作 Step 1. Prepare Annotations ...

最新文章

  1. 开发log4j配置_Spring 使用 Log4J 记录日志
  2. mybatis之动态SQL操作之查询
  3. Informatica通过人工智能重新定义数据管理助力数据驱动型数字化转型
  4. torchtext 中文语料加载
  5. MySQL - 常见SQL笔试题整理(长期更新)
  6. 瑞星、360、金山卫士、BaiduPlayer、SOSO开聚会,电脑吃不消了
  7. VS2010 SP1发布及下载地址
  8. gif转换成jpg,这个方法很简单
  9. 【小技巧】PhotoShop + lllustrator制作电子签名矢量图
  10. SQL Server 数据库之视图(二)
  11. C语言编程实现数兔子问题
  12. 【SVAC2.0】国家安防监控SVAC2.0标准支持特性
  13. Get Out of My Lab: Large-scale, Real-Time Visual-Inertial Localization文章理解
  14. Spark安装-环境搭建
  15. ajax传递数组怎么传?ajax数组传递
  16. mysql慢日志查询的阈值_mysql慢日志查询
  17. 宝塔面板部署nuxt项目线程守护启动以及Nginx反向代理
  18. STM32工程模板文件夹
  19. Elasticsearch-2.4.3的单节点安装(多种方式图文详解)
  20. synaptic 图形界面下载工具

热门文章

  1. 数据治理服务解决方案
  2. html页面导出pdf截断问题,利用wkhtmltopdf(thead)将网页导出为pdf方法;以及存在表格图片被分页打断的问题解决方法...
  3. 脉冲神经网络大致流程
  4. Linux运维之道-基础命令
  5. Shiny进阶:Busy Button
  6. SQL千万级大数据量查询优化
  7. python--斗地主
  8. 关于机器指令和微指令
  9. glassfish java ee_GlassFish 3.1.2发布 开源的JavaEE应用服务器
  10. JS三元表达式动态改变显示内容