V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
damngoto
V2EX  ›  视频技术

有没有认识搞视频处理的大牛,有问题请教

  •  
  •   damngoto · 2020-08-23 08:21:54 +08:00 via Android · 2163 次点击
    这是一个创建于 1583 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对视频中的每一帧图片用深度神经网络进行处理, 然后对处理好的每一帧合成为新的视频
    现在的解法: 将图片加载到 GPU 显存, 然后用神经网络在 GPU 上进行处理, 对得到的处理结果, 移到内存, 用 CPU 进行后处理, 然后使用 opencv VideoWriter 指定 mp4v 编码写视频。
    遇到的问题: 用 opencv videoWriter 合并图片生成视频这步很慢, 且会消耗大量 cpu .

    有没有什么方法可以优化和加速这个流程:?
    5 条回复    2020-08-23 15:38:50 +08:00
    ohao
        1
    ohao  
       2020-08-23 08:49:40 +08:00 via iPhone
    不知道你是什么平台和硬件
    使用 intel 的 e-2288 处理器,使用编译 igpu,搭配 nvme 存储

    可以快不少
    使用处理器的 gpu 处理,cpu 占用资源很低

    你先使用 time,确认瓶颈在哪,然后折中针对性处理
    可以先 opencv vw 写内存在 gpu encoder 在写盘
    damngoto
        2
    damngoto  
    OP
       2020-08-23 08:55:07 +08:00 via Android
    @ohao 谢谢回复,今天试试。
    fgodt
        3
    fgodt  
       2020-08-23 08:58:25 +08:00
    路子错了 既然得到的结果在 gpu 根本不应该再回到 cpu,如果你用的 gpu 是 nVidia 的那么你可以直接用 nvenc 处理成 x264 这样就很快了
    icylogic
        4
    icylogic  
       2020-08-23 10:00:58 +08:00 via iPhone
    你一定要回 cpu 吗,如果都是 opencv 的 api,可以看看 cv::cuda 能不能替代。或者编码用 avcodec 直接搞,有优化余地
    mcone
        5
    mcone  
       2020-08-23 15:38:50 +08:00
    既然都已经在显存里面了,就别再回到 CPU 了,用一个支持 GPU 的库直接合完直接写入存储或者取回到内存应该会快很多了。
    另外同一楼,建议看看时间瓶颈在哪里,近两三年的 opencv 好像默认是支持 GPU 加速的,我怀疑是有硬盘 IO 了……如果确实是 IO 费时多,上 SSD 或 ramdisk 之类的会好很多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5460 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:33 · PVG 09:33 · LAX 17:33 · JFK 20:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.