blakeblackshear / frigate

NVR with realtime local object detection for IP cameras
https://frigate.video
MIT License
18.14k stars 1.65k forks source link

Visualize / exaggerate the single pixel at the bottom of the detection box used for zones #3911

Open bagobones opened 1 year ago

bagobones commented 1 year ago

Describe what you are trying to accomplish and why in non technical terms The documentation states that zones are determined only by a single pixel at the bottom of the object. I suggest adding a dot/square/crosshair at the bottom of every detection bounding box to help call this out.

Describe the solution you'd like I suggest adding a dot/square/crosshair at the bottom of every detection bounding box to help show how a zone detection was made.

I personally keep forgetting that the zone needs to basically be at the FEET of the object to work and at various camera angles this creates some interesting problems where I wish zone detection was based on the box clipping the object instead of a single pixel.

NickM-27 commented 1 year ago

Yeah that's probably a good idea to be a reminder.

I also have a PR up that adds configuration to make it the top center, left center, right center, or bottom center

bagobones commented 1 year ago

I also have a PR up that adds configuration to make it the top center, left center, right center, or bottom center

Even more important to visualize it then.. Sounds like a nice option to have.

Is a center of object also possible? It would be useful for heavily overhead views.

andrey-skat commented 7 months ago

I wish zone detection was based on the box clipping the object instead of a single pixel.

I agree. It would likely be more accurate considering that bounding boxes don't always perfectly align with objects. For example, we could set it to only record events if a zone covers a quarter (or a third, or option in settings) of the detected object. This method would simplify masking as well. Currently, an event can be triggered if even one pixel goes outside the mask

blakeblackshear commented 7 months ago

It would likely be more accurate considering that bounding boxes don't always perfectly align with objects. For example, we could set it to only record events if a zone covers a quarter (or a third, or option in settings) of the detected object

This would be far less precise and almost impossible to use for cameras mounted at a front door. It started this way and it was almost useless.

andrey-skat commented 7 months ago

In my case it ends up something like this :) изображение изображение

Maybe it can be per-camera setting? Something like in_zone_method: [bottom_center_point|area_fill]? The center of the object is also good, but it seems like this is a specific case of 25-50% object filling

arunes11 commented 7 months ago

It would likely be more accurate considering that bounding boxes don't always perfectly align with objects. For example, we could set it to only record events if a zone covers a quarter (or a third, or option in settings) of the detected object

This would be far less precise and almost impossible to use for cameras mounted at a front door. It started this way and it was almost useless.

For me the easiest solution to understand from the end user's point of view would be to be able to use the center point of the entire area surrounded by the bounding box (not a point on the bounding box). The cat example above makes this clear. It should also be inexpensive to calculate from the perspective of CPU cycles consumed. For a possible modification https://github.com/blakeblackshear/frigate/pull/3263 I would vote to allow this choice. Anyway, congratulations on the great work you do!

bagobones commented 2 months ago

This appears on events now on some of the timeline markers, would be nice if the yellow indicator was more consistently visualized. However the 0.13 markers in events was a nice addition.