Video2Frame:一个视频抽帧工具包

2019-01-31 18:15:23 +08:00
 jinyu121

Video2Frame 是一个为 Video 魔药师们和 CV 魔药师们准备的一个视频抽帧工具包。

地址: https://github.com/jinyu121/video2frame

为啥写了这个工具

作为一个初级魔药师,前些日子在入门炼 Video 的丹。

很多 Paper 里面的实验部分都会将视频抽成帧,然后输入到 CNN/RNN 里面。然后,各个文章里面的要求又不尽相同:有些是做了 resize,有些是调整了输出 FPS,有些是取连续的 XXX 帧,有些是一个视频随机取 X 段…… 反正各种乱就是了。

Life is short。

在此之前,实验室同学写了一个视频抽帧的代码。自己用了一下,感觉「差不多够用」,但是一些概念不太清楚。于是就在这份代码的基础上增加了许多东西,做成了一个功能更加全面的工具包。

这个工具包都能干啥?

一句话:Video to Frames,以最清晰的方式满足大多数的要求。

其实就是 ffmpeg 套层壳子啦~不过不用自己去学 ffmpeg 那么多奇奇怪怪的参数啦。

具体说来:

  1. 批量将视频文件转换为帧
  2. 指定输出文件的格式(如果磁盘对小文件支持好话可以选择直接用 JPG 来存储,否则可以选择将 JPG 文件集合成一个大的 HDF5 或者 LMDB 文件)
  3. 从每段视频里面随机选 N 段长度为 M 秒的视频(下个月会加上 这 N 段视频怎么选取 的参数,敬请期待)
  4. 将输出的帧进行 resize (固定大小、按照长 /短边进行缩放)
  5. 指定输出帧率(例如,短视频的话,每秒 1 帧,每秒 2 帧……;长视频的话,每 10 秒 1 帧之类的)
  6. 重采样:从抽出来的每段视频里面采样 X 帧
  7. 最后当然是多线程啦~

我该怎么用这个工具包?

首先,Readme 里面带有比较详细的例子了。其他情况自己组合就好了。

其次,工具包里面带有 PyTorch 的 Dataset 接口示例。前几周时间都已经都逐个验证过了,一般情况下可以直接使用。

最后,工具包里面带有几个常见数据集转换标注脚本,上手十分容易。

关于搭环境这个事儿……用 conda 基本上也能一键解决了吧。

所以,代码在哪儿?

https://github.com/jinyu121/video2frame

欢迎试用,欢迎星星。欢迎吐槽,欢迎 PR。

还有啥要说的么?

当然有啊。

首先感谢一下实验室小伙伴的原作啊~ https://github.com/forwchen/vid2frame

然后是…… Readme 里面英文写得确实比较…… 嗯…… 凑合看懂就行了……

最后是…… 求各位神仙帮忙 Debug 一下另一份代码…… P3D 的 classification。在训练集上跑得很欢腾的,但在测试集上面精度死活只有 40 几。怀疑人生好久了,但是自己找不出来 BUG 啊…… 555 …… 求好心人帮忙。 谢过~

5485 次点击
所在节点    分享创造
1 条回复
keith1126
2019-02-01 20:34:47 +08:00
不错的工具,已 star

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX