Supervision: Reusable Computer Vision
github.com
github.com
I must say, my expectations of where things are in terms of reliability and performance have not been met. Sure on my new threadripper machine with an RTX4080 I can get a decent realtime result, but this is for a month long art installation in another country..
On a Raspberry Pi 3b+ I can decode one frames every 2.5 seconds using the smallest model. Nwed to consider my old notebook.
So I might have to annotate my own data and train my own model. I found one top view dataset by ZHDK Zürich and I got my own test footage.
I will figure out how well I can make it run on my old laptop (has a Nvidia GPU at least).
Turns out my expectations were wrong, or I have been at least fooled by the marketing material.
This is a "(broke) artist friend asked me for an art installation"-scenario, so if I don't have to I'd like to not reinvent the wheel and invest my time where it makes the biggest impact.
I'm wondering of how useful pre-assembled programs like "draw detections on an image or video" are. There might be more here, but that's not a very compelling slogan. In my experience, these kinds of tasks only come up when you are demoing something like an object detector, or maybe for diagnostics, but in that case your diagnostics are highly specific to your task at hand. Dataset loaders are useful if you are creating a demo on public datasets, but in product work there is no pre-existing dataset. You're usually extracting the data yourself.
The API for creating polygon zones to filter detections looks nice, but that's a rather limited capability to warrant adopting a whole library. This looks like a toolkit for making computer vision demos, but not something I could see using to build a product. Usually, things like drawing bounding boxes on an image frame, or testing rectangle intersections are the easy stuff.
I do think there's a lot of room for reusable parts in CV, though. Of course the heavyweight in that space is OpenCV, but I wouldn't mind seeing a competitor that doesn't feel like a thinly wrapped C++ library in Python. The multi-view geometry space has few reliable tools in Python, and you spend a lot of time re-implementing classical formulas in NumPy, which I believe could be abstracted away with a 3D geometry toolkit. The kicker is that high-level, readable geometric abstractions (like lens distortion) always end up being a hot path in the code, and at some point they have to get replaced by specialized JIT-ed code.
Regarding "drawing detections on an image or video," we aim for maximum flexibility. We offer 18 different annotators for detection and segmentation models, available at https://supervision.roboflow.com/latest/annotators. Each annotator is customizable and can be combined with others. Moreover, we strive to simplify the integration of these annotators with the most popular computer vision libraries.
Edit: I just check your LinkedIn. I think we met on CVPR last year.
I hope I don't come off as critical, I appreciate the work you're doing. I'd really like to see this take off. My only point is that tasks like annotating a video with tracking are things I've only seen in demos. If I could custom-order the reusable parts I want, it would include geometry, camera transforms, lens distortion, etc. Your polygon zone filtering looks imminently useful. Maybe I should shut up and just contribute something.
I remember meeting you! Maybe I'll see you in Seattle this year.
I'm 95% sure I'll be in Seattle this year.
As someone who works in the video-security space, you would be surprised on the number of customers who love exactly this. All they want is something to draw the attention of the bored security guard watching the cameras.
- Gesture recognition to detect different hand gestures
- Skeleton detection to infer people's positions and whether they have a raised hand
- Object detection (e.g., YOLO) to detect hands
I believe in this case you could go for skeleton detection as you get information from which you could infer raised hands.
you could imagine "massively multiplayer computer vision" is pretty useful for some real life scenarios like switzerland direct democracy elections
It should be "raise your right hand if... and your left hand if not...", then you can exclude people who don't raise any hand.
Slightly more difficult to count though.
Diespace internet community for the deceased HD:
https://www.youtube.com/watch?v=aQz_irTiqGE
PIPS: lab at TEDxAmsterdam
https://www.youtube.com/watch?v=ApyDSq_DbQo
PIPS lab Showreel 2017 @ 1:24:
I see you recommending roboflow universe in the comments, is there any way to download those models and running them locally? Or is an API key always required?
As for Roboflow, you can use the `inference` package to run (among other things) all Roboflow Universe models locally. Take a look at README examples: https://github.com/roboflow/inference.
We also have a hosted API[4] you can hit for most models we support (except some of the large vision models that are really GPU-heavy) if you prefer.
[1] https://github.com/roboflow/inference
[2] https://github.com/roboflow/notebooks
What I do prefer is something like a GUI with features like previewing detections and specifying data for training, maybe in the form of built-in components, which would have a smoother learning curve but still allow me to dig deeper whenever needed. Any such tools available?
They aren't mine - they are yours.