从视频中提取数据,开启视频窗口的话每秒处理 5-6 帧,一小时视频要 5-6 小时处理完,我想慢点也没关系,但是 cpu 占用率只有 2%。这就不让我淡定了,明显是偷懒了,安排了多线程,好像也是不能提升速度,请问 windows 就是不会给 python 太多资源么?我开了几路脚本一起做,cpu 仍然占用率也很低。这是怎么回事?
|
comesx4May 22, 2017
1
用的是 GPU?
|
|
misaka19000May 22, 2017
2
放代码
|
|
3
@misaka19000 不敢放,太丑了,流程比较简单,识别轮廓,拟和椭圆和质点,记录 csv,甚至没有定义函数。
|
|
cnnblikeMay 22, 2017 via iPhone
5
用的是机械硬盘?或者内存比较小?
|
|
laodaoMay 22, 2017
6
上异步,分分钟跑满你的 cpu。
|
|
FinestMay 22, 2017
7
多线程改为多进程
|
|
XYxeMay 22, 2017 via Android
8
计算密集的任务试试多进程
|
|
scream7May 22, 2017
9
是不是时间消耗在 IO 操作上了
|
|
baichengMay 22, 2017 via iPhone
10
试着多将几帧一次性读入内存看看行不行?运行的时候看下资源占用率是不是硬盘开销比较大,如果你 CPU 相当牛叉有十几个核可以试试用 MATLAB 并行。
|
|
11
5/6 帧一秒,视频好歹也 25 帧一秒最少
|
|
itfanrMay 22, 2017 via Android
13
建议用 go 或者 rust
|
|
zhidianMay 22, 2017
14
1. 可以只处理部分帧(关键帧?); 2. 每帧太大的话,降采样变小点;
|
|
zhidianMay 22, 2017
16
如果只是线、椭圆检测啥的,OpenCV 好像提供跟踪,应该快点吧。
|
|
ytmsdyMay 22, 2017 via iPhone
17
应该是 io 没跟上,导致 cpu 工作不饱和
|
|
uucloudMay 22, 2017
18
换 c++
|
|
21
|
|
bookitMay 22, 2017
23
把事情分解开来做
比如一段视频,2000 帧,提取出 100 帧出来,把这个时间算一下,花了多长时间 然后分析其中 1 帧,看多长时间, 这样来找出瓶颈在哪里, 如果 cpu 利用率不高,可以开 50 个进程,同时分析 50 帧嘛 |
|
HzzoneMay 22, 2017
24
给自己一个入 1080 的理由
|
|
ironstarsMay 22, 2017
25
首先,和 GPU 没关系,上 1080 也没用,不单独写针对 GPU 的特定版本是在 CPU 上跑的;
其次,换 GO 和 RUST,也要 OpenCV 支持,现在只支持 python、Java、C 和 C++; 最后没有代码的话,猜测是 IO 跟不上或者后面一直在等前面处理完? 建议一次读入比如 10 张图像,开 10 个线程并行处理。语言换 C++也行,速度会快一点。 |
|
MichaelssssMay 23, 2017
27
CPU 不高肯定是非 CPU 瓶颈,你得先找出瓶颈再分析。。。
|
|
zhuangzhuang1988May 23, 2017
28
上 tbb 直接让你的 cpu 100%
|
|
JustkkkMay 23, 2017
29
放代码出来看看。。如果处理是可并行的,可以考虑多线程,or 用 gpu 来加速,但做这些可能都还是用 C++来做方便些
|
|
zhidianMay 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 ) |
|
Trim21May 24, 2017 via Android
31
多线程换多进程。。
|