-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Increasing Video FPS running on CPU Using Threading #1411
Comments
Have you tried InferencePipeline from our other open source repo? It handles multithreading for video and can even handle processing multiple streams concurrently. |
Hi @yeldarby, Let me give it a try with the Inference Pipeline. If its successful, I will close the issue. Thanks for the help 👍 |
Hi @dsaha21, |
Hi @SkalskiP, Yes actually its very slow. I am trying by resizing the frames and InferencePipeline like mentioned above. Will let you if it runs with a good fps. Thank you :) |
Hi @dsaha21, were you able to fix it, if not I can submit a pull request on this and work on it |
Hi @Sapienscoding, you can continue with this .. I really did not get the time to continue this. I opened the issue after reading an article posted by pyimagesearch about speeding up fps using threading. However, before continuing with threading you can go through this https://inference.roboflow.com/using_inference/inference_pipeline/ I hope it will solve. |
Hi @Sapienscoding 👋 Great to see you're eager to help us out! I'm assigning this to you. |
Hi @dsaha21, what and where did you change to see the difference in frames improvement? |
Hi @Sapienscoding, you can follow the steps :
Please try this on a google colab first. If you have an roboflow apikey - its very good otherwise download a manually - like for e.g yolov8n.pt for basic object detection. Then start the inference pipeline and test the fps. @LinasKo Just wanted to know that if we dont have a roboflow apikey, is the above thing like manually downloading the model a correct thing to do ? Please let me know once. Then @Sapienscoding can follow the above steps. |
There is a set of models that do not need an API key: All others will need a key. @dsaha21, you gave a very good example of using |
@LinasKo Actually I did not test the algorithm using threading, very sorry. I will try testing it. Till then I think let give @Sapienscoding a chance to try as he told he will approach with this issue. If the testing is done I will post the fps improvement ASAP |
@Sapienscoding Then I will use Queue data structure using threading. There will be a class name This was my plan. Have you tried like this once ? |
Search before asking
Description
I want to increase FPS of a video running on my CPU system. I tested with few annotated and object tracking videos. When I am running the frames without passing through the model the fps is still low thus resulting lesser while passing them through YOLO or any model.
The code snippet I am using is
So, with the following method and running the normal frames I am getting something like the following :
With normal supervision's frame generator - fps is around 1-10 max
With threading its increasing to a greater value
Use case
If we notice there is a significant change with threading. I was wondering if we could add a MainThread Class in the supervision utils in sv.VideoInfo or add a total new class so that frames running on CPU can have such fps. Let me know if we can handle such case. I can share the python file on drive if necesssary.
Thanks
Additional
No response
Are you willing to submit a PR?
The text was updated successfully, but these errors were encountered: