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

2017-05-22 11:24:23 +08:00
 zzcchh
从视频中提取数据,开启视频窗口的话每秒处理 5-6 帧,一小时视频要 5-6 小时处理完,我想慢点也没关系,但是 cpu 占用率只有 2%。这就不让我淡定了,明显是偷懒了,安排了多线程,好像也是不能提升速度,请问 windows 就是不会给 python 太多资源么?我开了几路脚本一起做,cpu 仍然占用率也很低。这是怎么回事?
5750 次点击
所在节点    Python
32 条回复
zzcchh
2017-05-22 22:37:41 +08:00
@itfanr 初级菜鸟,还不会那些语言。我也不会多进程,就是在系统下一次运行了 9 个脚本分别处理 9 个视频。发现内存占用多了一些,cpu 仍然是 2-10%。关闭 imshow 函数会快一点,大概是 3 个小时能处理一个小时视频。 @zhidian 采样量已经非常小了 288:100。我觉得可能是 io 的问题
zzcchh
2017-05-22 22:39:10 +08:00
@zhidian 请问具体是哪个函数呢?
bookit
2017-05-22 23:01:40 +08:00
把事情分解开来做

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

这样来找出瓶颈在哪里,

如果 cpu 利用率不高,可以开 50 个进程,同时分析 50 帧嘛
Hzzone
2017-05-22 23:26:19 +08:00
给自己一个入 1080 的理由
ironstars
2017-05-22 23:58:07 +08:00
首先,和 GPU 没关系,上 1080 也没用,不单独写针对 GPU 的特定版本是在 CPU 上跑的;
其次,换 GO 和 RUST,也要 OpenCV 支持,现在只支持 python、Java、C 和 C++;
最后没有代码的话,猜测是 IO 跟不上或者后面一直在等前面处理完?
建议一次读入比如 10 张图像,开 10 个线程并行处理。语言换 C++也行,速度会快一点。
zzcchh
2017-05-23 07:18:43 +08:00
@ironstars 谢谢,我试下
Michaelssss
2017-05-23 07:49:53 +08:00
CPU 不高肯定是非 CPU 瓶颈,你得先找出瓶颈再分析。。。
zhuangzhuang1988
2017-05-23 09:32:07 +08:00
上 tbb 直接让你的 cpu 100%
Justkkk
2017-05-23 10:53:17 +08:00
放代码出来看看。。如果处理是可并行的,可以考虑多线程,or 用 gpu 来加速,但做这些可能都还是用 C++来做方便些
zhidian
2017-05-23 12:33:59 +08:00
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
2017-05-24 08:01:17 +08:00
多线程换多进程。。
itfanr
2017-05-24 12:52:00 +08:00
@zzcchh 加时延统计 慢慢分析

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

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

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

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

© 2021 V2EX