V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jinyu121
V2EX  ›  分享创造

Video2Frame:一个视频抽帧工具包

  •  
  •   jinyu121 · 2019-01-31 18:15:23 +08:00 · 5469 次点击
    这是一个创建于 1912 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 …… 求好心人帮忙。 谢过~

    1 条回复    2019-02-01 20:34:47 +08:00
    keith1126
        1
    keith1126  
       2019-02-01 20:34:47 +08:00
    不错的工具,已 star
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2602 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:38 · PVG 09:38 · LAX 18:38 · JFK 21:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.