[tool] [tutorial] Free AI Person Detection for Blue Iris

Good question. No, the CPU version I am comparing it with is a Windows version that I downloaded off the DeepStack website 6 months or so ago and been using with Blue Iris since. It's only an i3 NUC (ESXi VM) so the plan was to offload the intense image processing to a Jetson as the NUC is already kept pretty busy with Blue Iris and Home Assistant.
I am using a linux NUC i7 as a test with the deepstuck and i was thinking to go to jetson...But now i dont know if it is a good idea..
 
I am using a linux NUC i7 as a test with the deepstuck and i was thinking to go to jetson...But now i dont know if it is a good idea..
Hopefully one of the guys who's cleverer than me can figure out why they are different and knows how to build docker images.

I don't understand why different models for the different versions would be used to be honest. Perhaps it was done because the Nano only has 2GB or 4GB of RAM but I would rather have (much) better recognition and just increase the Swap File size.

It's probably worth getting one for playing around with anyway if you can afford it but I would personally hold off on using the Jetson for object detection until it improves.
 
Good question. No, the CPU version I am comparing it with is a Windows version that I downloaded off the DeepStack website 6 months or so ago and been using with Blue Iris since. It's only an i3 NUC (ESXi VM) so the plan was to offload the intense image processing to a Jetson as the NUC is already kept pretty busy with Blue Iris and Home Assistant.

Since you downloaded it six months ago then it's not the current version. The new Beta versions were released this month. The one that you are running is rather old. Same goes for the Jetson version. There was a very recent new release. Perhaps you have somewhat been comparing apples to oranges.

 
  • Like
Reactions: maximosm
Since you downloaded it six months ago then it's not the current version. The new Beta versions were released this month. The one that you are running is rather old. Same goes for the Jetson version. There was a very recent new release. Perhaps you have somewhat been comparing apples to oranges.

I'm just a bit surprised that a 6 month old apple is better than a 1 week old orange :-(
 
I'm just a bit surprised that a 6 month old apple is better than a 1 week old orange :-(

Better can be relative. Perhaps as someone previously mention, that the thresholds have been changed so the scales between the newer and older versions can not be directly compared. It would be interesting to see how the latest Nano version compares to the latest Windows and generic Docker versions, and then how those compare to the older version. If it's just a matter of scale, and not the accuracy of the newer versions, then I think compensation can be made in AI Tool with the confidence limits setting, but I'm not absolutely sure about that.
 
Better can be relative. Perhaps as someone previously mention, that the thresholds have been changed so the scales between the newer and older versions can not be directly compared. It would be interesting to see how the latest Nano version compares to the latest Windows and generic Docker versions, and then how those compare to the older version. If it's just a matter of scale, and not the accuracy of the newer versions, then I think compensation can be made in AI Tool with the confidence limits setting, but I'm not absolutely sure about that.

yep, and it's likely possible to adjust the minimum confidence level of detection (0.45) in deepstack - Object Detection | DeepStack v1.1.2 documentation | minimum confidence

lots of other good info being added to their documentation too.

With all the speed gains in their recent models, i wouldn't be surprised if there was some compromise on the accuracy. the general models are getting better and better overtime, but you can always create a custom model for your image environment, which could be much more accurate (if you do it right) since it is specific to your images.
 
Better can be relative. Perhaps as someone previously mention, that the thresholds have been changed so the scales between the newer and older versions can not be directly compared. It would be interesting to see how the latest Nano version compares to the latest Windows and generic Docker versions, and then how those compare to the older version. If it's just a matter of scale, and not the accuracy of the newer versions, then I think compensation can be made in AI Tool with the confidence limits setting, but I'm not absolutely sure about that.
I use Docker CPU, Windows GPU and Jetsun and find the results very similar but times different. GPU best 81ms , docker CPU 220ms second then Jetsun 450ms all on high.
 
Is there a variation that load shares between the GPU and CPU? Or is this a one or the other thing?

No. I use the GPU as URL 1 Jetsun as 2 and CPU as 3 and have Queued unchecked.

To quote Chris;

This is the way the queuing system works right now:

If only one image is in the queue and you have "Queued" checked in Settings the URL's take turns:
1. Image 1 in queue gets sent to URL 1

2. Image 1 in queue gets sent to URL 2

3. Image 1 in queue gets sent to URL 3


If more than one image is in the queue and you have "Queued" checked in Settings:

1. Image 1 in queue gets sent to URL 1

2. Image 2 in queue gets sent to URL 2

3. Image 3 in queue gets sent to URL 3 (or waits until a URL is available and takes them in order)


If "Queued" is not checked, then only the first URL will be used UNLESS it is busy in which case the next URL in line will be used only if needed.
 
  • Like
Reactions: SyconsciousAu
I use Docker CPU, Windows GPU and Jetsun and find the results very similar but times different. GPU best 81ms , docker CPU 220ms second then Jetsun 450ms all on high.

Based on your report it appears that the difference in confidence level that AskNoOne saw between the Nano and CPU versions has more to do with the version of DS being used, and not the platform. This is assuming that you are using the latest DS on all your platforms.

I've only been running the new versions for a few days but I just went through all of my motion alerts and I didn't find any alert that should have been flagged by AI that was not flagged. So at least for now in my situation the new version of DS has not missed any objects. I did have a false alert today when a wasp was crawling on a lens, but the older Windows version did the same thing.
 
No. I use the GPU as URL 1 Jetsun as 2 and CPU as 3 and have Queued unchecked.

To quote Chris;

This is the way the queuing system works right now:

If only one image is in the queue and you have "Queued" checked in Settings the URL's take turns:
1. Image 1 in queue gets sent to URL 1

2. Image 1 in queue gets sent to URL 2

3. Image 1 in queue gets sent to URL 3


If more than one image is in the queue and you have "Queued" checked in Settings:

1. Image 1 in queue gets sent to URL 1

2. Image 2 in queue gets sent to URL 2

3. Image 3 in queue gets sent to URL 3 (or waits until a URL is available and takes them in order)


If "Queued" is not checked, then only the first URL will be used UNLESS it is busy in which case the next URL in line will be used only if needed.

Have you tested if that actually improves processing times? I ran a 2700 images stress test with BI running on both CPU in Docker and the Windows GPU version, and it didn't process them any faster. About 12 minutes (16:13:43 - 16:25:36) to do all 2700 images, about the same result I got from the CPU only.

Give me another 12 minutes I'm going to run a GPU only test.
 
furthermore, to my earlier errors with all images going into the queue...

---- All URL's are in use, disabled, camera name doesnt match or time range was not met. (1 inuse, 0 disabled, 0 wrong camera, 0 not in time range, 0 at max per month limit) Waiting...

See screenshot: Screenshot

Any ideas?
 
furthermore, to my earlier errors with all images going into the queue...

---- All URL's are in use, disabled, camera name doesnt match or time range was not met. (1 inuse, 0 disabled, 0 wrong camera, 0 not in time range, 0 at max per month limit) Waiting...

See screenshot: Screenshot

Any ideas?

I just had that error. I thought the beta of deepstack GPU that I'm running crashed.
 
Have you tested if that actually improves processing times? I ran a 2700 images stress test with BI running on both CPU in Docker and the Windows GPU version, and it didn't process them any faster. About 12 minutes (16:13:43 - 16:25:36) to do all 2700 images, about the same result I got from the CPU only.

Give me another 12 minutes I'm going to run a GPU only test.

GPU(Windows Beta)+CPU(Docker) 11m53s

So first observation is GPU only queues more images than both, but not that many more, 1076 max queue size for GPU vs 1006 for both GPU and CPU.

Time wise 17:16:54 - 17:30:31 13m37s

I thought I would run CPU only again just to make sure

CPU only queued less images than Both GPU only and combined CPU and GPU at 902.

Time wise it started at 17:38:20 and finished at 17:50:05 - 11m45s

There appears to be zero benefit to running the windows GPU Beta Version in addition to the CPU docker version. Strangely the GPU version reports slightly faster processing times than the CPU version, so it has to be something to do with the way the Windows GPU version is passing the requests to the card and returning them.

This test was run on a I7-10750H with a GTX1650. YMMV.
 
Just FYI reference the ---- All URL's are in use, disabled, camera name doesn't match or time range was not met. (1 inuse, 0 disabled, 0 wrong camera, 0 not in time range, 0 at max per month limit) Waiting... line in the log pretty sure this is not an error but more of an information entry. @VorlonCD could you verify. Thanks
 
GPU(Windows Beta)+CPU(Docker) 11m53s

So first observation is GPU only queues more images than both, but not that many more, 1076 max queue size for GPU vs 1006 for both GPU and CPU.

Time wise 17:16:54 - 17:30:31 13m37s

I thought I would run CPU only again just to make sure

CPU only queued less images than Both GPU only and combined CPU and GPU at 902.

Time wise it started at 17:38:20 and finished at 17:50:05 - 11m45s

There appears to be zero benefit to running the windows GPU Beta Version in addition to the CPU docker version. Strangely the GPU version reports slightly faster processing times than the CPU version, so it has to be something to do with the way the Windows GPU version is passing the requests to the card and returning them.

This test was run on a I7-10750H with a GTX1650. YMMV.

I'm not sure what your trying to do. My GPU windows is certainly much faster than the CPU Docker. All versions I run are the latest including AITool.

I'm not trying to stress test it just run it in real world conditions in AITool.
 
Based on your report it appears that the difference in confidence level that AskNoOne saw between the Nano and CPU versions has more to do with the version of DS being used, and not the platform. This is assuming that you are using the latest DS on all your platforms.

Yes all latest versions. Their is a big difference between the old and new versions in Deepstack not only in processing time but also the confidence % they show.
 
FYI, Docker now supports GPU in WSL 2: WSL 2 GPU Support is Here - Docker Blog

Saw that but wasn't entirely happy with the level of access the Windows insider ring wanted to my computer activity so have decided to wait a bit.

I'm not sure what your trying to do.

Just trying to get some semi scientific metric by which I can justify spending the money for a graphics card for the BI box. Right now it's all fail because there is no improvement in actual processing times, even when the GPU and CPU version are run together.

My GPU windows is certainly much faster than the CPU Docker.

But is it? My GPU windows version reports it does the image processing part of the equation about 25 - 50ms faster than the CPU Docker version, but, when tested whollistically, the CPU docker version processes the images I fed it faster than the GPU version. I'm expecting that to change when the GPU docker version for windows becomes available to general public. Clearly there is an overhead in the round trip through the windows program that is not reflected in the actual processing time figures that deepstack is reporting.

I'm not trying to stress test it just run it in real world conditions in AITool.

2700 images in around 10 minutes is quite unrealistic as BI will never send that many images that fast to the AI tool for processing, but by throwing that many images at it in a test it created a way to measure the real world processing time in some meaningful way.