推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
zzcchh
V2EX  ›  Python

在 windows 下用 Python 和 opencv 做了一个视频分析程序,如何加速?

  •  
  •   zzcchh · May 22, 2017 · 7192 views
    This topic created in 3454 days ago, the information mentioned may be changed or developed.
    从视频中提取数据,开启视频窗口的话每秒处理 5-6 帧,一小时视频要 5-6 小时处理完,我想慢点也没关系,但是 cpu 占用率只有 2%。这就不让我淡定了,明显是偷懒了,安排了多线程,好像也是不能提升速度,请问 windows 就是不会给 python 太多资源么?我开了几路脚本一起做,cpu 仍然占用率也很低。这是怎么回事?
    32 replies  •  2017-05-24 12:52:00 +08:00
    comesx4
    comesx4
    May 22, 2017
    1
    用的是 GPU?
    misaka19000
    misaka19000
    May 22, 2017
    2
    放代码
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    3
    @misaka19000 不敢放,太丑了,流程比较简单,识别轮廓,拟和椭圆和质点,记录 csv,甚至没有定义函数。
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    4
    @comesx4 没有就是 cpu。
    cnnblike
    cnnblike
    May 22, 2017 via iPhone
    5
    用的是机械硬盘?或者内存比较小?
    laodao
    laodao
    May 22, 2017
    6
    上异步,分分钟跑满你的 cpu。
    Finest
    Finest
    May 22, 2017
    7
    多线程改为多进程
    XYxe
    XYxe
    May 22, 2017 via Android
    8
    计算密集的任务试试多进程
    scream7
    scream7
    May 22, 2017
    9
    是不是时间消耗在 IO 操作上了
    baicheng
    baicheng
    May 22, 2017 via iPhone
    10
    试着多将几帧一次性读入内存看看行不行?运行的时候看下资源占用率是不是硬盘开销比较大,如果你 CPU 相当牛叉有十几个核可以试试用 MATLAB 并行。
    adodo1
    adodo1
    May 22, 2017❤️1
    11
    5/6 帧一秒,视频好歹也 25 帧一秒最少
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    12
    @adodo1 我说的是处理速度,不是播放速度,一小时视频 5 个小时处理完没毛病
    itfanr
    itfanr
    May 22, 2017 via Android
    13
    建议用 go 或者 rust
    zhidian
    zhidian
    May 22, 2017
    14
    1. 可以只处理部分帧(关键帧?); 2. 每帧太大的话,降采样变小点;
    itfanr
    itfanr
    May 22, 2017 via Android
    15
    @adodo1 是处理速度
    zhidian
    zhidian
    May 22, 2017
    16
    如果只是线、椭圆检测啥的,OpenCV 好像提供跟踪,应该快点吧。
    ytmsdy
    ytmsdy
    May 22, 2017 via iPhone
    17
    应该是 io 没跟上,导致 cpu 工作不饱和
    uucloud
    uucloud
    May 22, 2017
    18
    换 c++
    zhidian
    zhidian
    May 22, 2017
    19
    @uucloud OpenCV 的 Python 绑定,调的也是 C++。
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    20
    @ytmsdy 我觉得可能是,其实硬盘没有跟忙。
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    21
    @itfanr 初级菜鸟,还不会那些语言。我也不会多进程,就是在系统下一次运行了 9 个脚本分别处理 9 个视频。发现内存占用多了一些,cpu 仍然是 2-10%。关闭 imshow 函数会快一点,大概是 3 个小时能处理一个小时视频。 @zhidian 采样量已经非常小了 288:100。我觉得可能是 io 的问题
    zzcchh
    zzcchh
    OP
    May 22, 2017 via Android
    22
    @zhidian 请问具体是哪个函数呢?
    bookit
    bookit
    May 22, 2017
    23
    把事情分解开来做

    比如一段视频,2000 帧,提取出 100 帧出来,把这个时间算一下,花了多长时间
    然后分析其中 1 帧,看多长时间,

    这样来找出瓶颈在哪里,

    如果 cpu 利用率不高,可以开 50 个进程,同时分析 50 帧嘛
    Hzzone
    Hzzone
    May 22, 2017
    24
    给自己一个入 1080 的理由
    ironstars
    ironstars
    May 22, 2017
    25
    首先,和 GPU 没关系,上 1080 也没用,不单独写针对 GPU 的特定版本是在 CPU 上跑的;
    其次,换 GO 和 RUST,也要 OpenCV 支持,现在只支持 python、Java、C 和 C++;
    最后没有代码的话,猜测是 IO 跟不上或者后面一直在等前面处理完?
    建议一次读入比如 10 张图像,开 10 个线程并行处理。语言换 C++也行,速度会快一点。
    zzcchh
    zzcchh
    OP
    May 23, 2017 via Android
    26
    @ironstars 谢谢,我试下
    Michaelssss
    Michaelssss
    May 23, 2017
    27
    CPU 不高肯定是非 CPU 瓶颈,你得先找出瓶颈再分析。。。
    zhuangzhuang1988
    zhuangzhuang1988
    May 23, 2017
    28
    上 tbb 直接让你的 cpu 100%
    Justkkk
    Justkkk
    May 23, 2017
    29
    放代码出来看看。。如果处理是可并行的,可以考虑多线程,or 用 gpu 来加速,但做这些可能都还是用 C++来做方便些
    zhidian
    zhidian
    May 23, 2017
    30
    There are at least 5 types of tracker algorithms that can be used:

    - MIL
    - BOOSTING
    - MEDIANFLOW
    - TLD
    - KCF

    [OpenCV: Introduction to OpenCV Tracker]( http://docs.opencv.org/3.1.0/d2/d0a/tutorial_introduction_to_tracker.html )
    Trim21
    Trim21
    May 24, 2017 via Android
    31
    多线程换多进程。。
    itfanr
    itfanr
    May 24, 2017 via Android
    32
    @zzcchh 加时延统计 慢慢分析
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1365 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 22:29 · PVG 06:29 · LAX 14:29 · JFK 17:29
    ♥ Do have faith in what you're doing.