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

Does this just remove the alert? It would be nice if it could cancel record for folk that only record incidents rather than record continously. This would finally enable us to stop using clone cameras.
I'd like to hear more specifics with how this could work. In the end, I'd much prefer a way for BI to only trigger and record based on what AI "sees". Thanks
 
New to Deepstack AI and need a little help if possible. I installed BI, AI and Deepstack (docker CPU version) and all worked fine. I wanted to see if installing an NVIDIA GPU would speed up processing. So I installed an NVIDA card and then removed the CPU docker and tried to install the GPU version, but it fails to install. I get part way through the pulling the deepstack:gpu-x3-beta and then I get "unauthorized: authentication required" Any guidance would be appreciated. I have attached a screengrab of the error if it helps.
 

Attachments

  • Capture.PNG
    Capture.PNG
    62.5 KB · Views: 36
Saw that the new version adds support so no duplicate cameras are needed so I gave it a go. But I think I have something setup incorrectly and want to get some help

If we are using the same camera for alerts/triggers, then won't all triggers cause an alert, whether it went through Aitools or not? Since in the Alerts tab you can either choose "Fires when: Never" which turns off external sources as an option, or "Fires when: this camera is triggered", which would send an alert every time the camera is triggered, not every time AItools triggers it.

So now it either never fires an alert, or fires an alert every time the camera triggers it, not every time AItools triggers it.

Any help is appreciated!
 
Saw that the new version adds support so no duplicate cameras are needed so I gave it a go. But I think I have something setup incorrectly and want to get some help

If we are using the same camera for alerts/triggers, then won't all triggers cause an alert, whether it went through Aitools or not? Since in the Alerts tab you can either choose "Fires when: Never" which turns off external sources as an option, or "Fires when: this camera is triggered", which would send an alert every time the camera is triggered, not every time AItools triggers it.

So now it either never fires an alert, or fires an alert every time the camera triggers it, not every time AItools triggers it.

Any help is appreciated!

I use the “delay” option in BI so it waits to fire the alert until AI Tool has had time to process, and confirm or cancel the alert.

IMG_2842.jpg
 
Last edited:
  • Haha
Reactions: whoami ™
Updated/forked version of AI Tool by [mention]Chris Dodge [/mention] has the features you’re looking for: VorlonCD/bi-aidetection
Sorry to ask again. I downloaded from the github the exe you linked and tested it out. If the result is positive, it would send the trigger URL, however it doesn't seem to send anything when the result is negative.

Log:
[11.10.2020, 04:42:02.819]: DetectObjects> 127.0.0.1:83 - (1/6) Uploading a 326543 byte image to DeepQuestAI Server at [11.10.2020, 04:42:03.940]: DetectObjects> 127.0.0.1:83 - (2/6) Posted in 1119ms, Received a 33 byte response.
[11.10.2020, 04:42:03.947]: DetectObjects> 127.0.0.1:83 - (3/6) Processing results...
[11.10.2020, 04:42:03.950]: DetectObjects> 127.0.0.1:83 - Detected objects: ((NONE))
[11.10.2020, 04:42:03.952]: DetectObjects> 127.0.0.1:83 - (5/6) Performing CANCEL actions:
[11.10.2020, 04:42:03.955]: DetectObjects> 127.0.0.1:83 - (6/6) Camera frontdoor caused a false alert, nothing detected.
[11.10.2020, 04:42:03.959]: DetectObjects> 127.0.0.1:83 - Total Time: 1455ms (Count=18, Min=1310ms, Max=3167ms, Avg=1609ms)
[11.10.2020, 04:42:03.964]: DetectObjects> 127.0.0.1:83 -DeepStack (URL) Time: 1119ms (Count=18, Min=1020ms, Max=2830ms, Avg=1258ms)



[11.10.2020, 04:41:42.612]: DetectObjects> 127.0.0.1:83 - (1/6) Uploading a 293947 byte image to DeepQuestAI Server at [11.10.2020, 04:41:43.807]: DetectObjects> 127.0.0.1:83 - (2/6) Posted in 1196ms, Received a 122 byte response.
[11.10.2020, 04:41:43.812]: DetectObjects> 127.0.0.1:83 - (3/6) Processing results...
[11.10.2020, 04:41:43.815]: DetectObjects> 127.0.0.1:83 - Detected objects: Person (93.40%),
[11.10.2020, 04:41:43.817]: DetectObjects> 127.0.0.1:83 - (4/6) Checking if detected object is relevant and within confidence limits:
[11.10.2020, 04:41:43.820]: DetectObjects> Person (93.4%): Upper: 10 Lower: 100
[11.10.2020, 04:41:43.823]: Outsidemask> ->Camera has no mask, the object is OUTSIDE of the masked area.
[11.10.2020, 04:41:43.825]: DetectObjects> 127.0.0.1:83 - Person (93.40%) confirmed.
[11.10.2020, 04:41:43.829]: DetectObjects> 127.0.0.1:83 - The summary:person (93.40%)
[11.10.2020, 04:41:43.832]: DetectObjects> 127.0.0.1:83 - (5/6) Performing alert actions:
[11.10.2020, 04:41:43.834]: CallTriggerURLs> -> trigger URL called: , response: 'signal=green profile=1 lock=0 clip=1565947499 camera=Front Door '
[11.10.2020, 04:41:43.838]: Trigger> frontdoor last triggered at 10/11/2020 4:41:43 AM.
[11.10.2020, 04:41:43.856]: DetectObjects> 127.0.0.1:83 - (6/6) SUCCESS.
[11.10.2020, 04:41:43.859]: DetectObjects> 127.0.0.1:83 - Adding detection to history list.
[11.10.2020, 04:41:43.864]: DetectObjects> 127.0.0.1:83 - Total Time: 1549ms (Count=14, Min=1374ms, Max=3167ms, Avg=1645ms)
[11.10.2020, 04:41:43.868]: DetectObjects> 127.0.0.1:83 -DeepStack (URL) Time: 1196ms (Count=14, Min=1039ms, Max=2830ms, Avg=1288ms)

Do I need to enable the cancel function anywhere?
 
Sorry to ask again. I downloaded from the github the exe you linked and tested it out. If the result is positive, it would send the trigger URL, however it doesn't seem to send anything when the result is negative.

Do I need to enable the cancel function anywhere?

I’ll test it today, but [mention]B-Murda [/mention]mentioned this earlier which sounds like a great solution:

FYI in the latest release at my request Ken added so if you cancel an alert it removes from the timeline. This means once cancel URL's are working/fixed in the AI you don't have to use Flags if you use cancel also and enable in BI to delay to wait for since only valid ones would be marked. That means flags can now be used for other purposes if one wanted also and makes the timeline in BI much more useful!

Do you know if this is available in the latest BI release or not out yet?
 
  • Haha
Reactions: whoami ™
I use the “delay” option in BI so it waits to fire the alert until AI Tool has had time to process, and confirm or cancel the alert.

Unfortunately this facility is aimed at users that record continuously. It cancels the alert but does not impact the record trigger.
Copied from Help File: The Allow disarm time by delaying alerts setting basically gives you time to prevent an
alert, perhaps as you enter the home or building where the camera would normally be
triggered. If you are using the Sentry Smart Alerts, this is basically what is employed—the
camera still triggers for recording, but the alerts are delayed until the Sentry service makes a
determination on the accuracy of the detection.
 
Last edited:
  • Like
Reactions: whoami ™
Hello Everyone,
Thanking everyone for the work on this. I recently tried switching from AI Tool 1.67 to the latest VorlonCD fork and been having the following issue. Setup camera and Deepstack and Telegram stuff. Log file indicates issues connecting to database. Any idea or thoughts, I can stop the Vorlon fork and restart AI Tool 1.67 and it works fine.
 

Attachments

So Now that I know I have the latest version installed I am getting (lots of) this error I am also getting- Error sending image to Telegram and Error Could not upload text... Do I need to change something or what is the deal? Telegram is getting images though? If there was a better way to upload the error sorry, tried to attach it in a txt file but would not work

DTypeTimeIdxDetailMemberName
Detail10/11/2020 1:08:34 PM22-> trigger URL called: {admin}&pw={RDTFPE}, response: '<!DOCTYPE html> <html lang="en"> <head> <script> function renew(){ key_mode = false var admin_key = "" if (key_mode == true){ admin_key = prompt("Enter your admin key","") } document.getElementById("loader").style.display = "" var req = new XMLHttpRequest() req.onreadystatechange = function(){ if(this.readyState == 4 && this.status == 200){ response = JSON.parse(this.responseText) if(response.success == false){ document.getElementById("error_message_renew").innerText = response.error } else { document.getElementById("renew_success").style.display = "" document.getElementById("renew_button").style.display = "none" document.getElementById("expiringdate").innerText = response.expiringdate document.getElementById("daysleft").innerText = response.daysleft document.getElementById("error_message_renew").innerText = "" var plan = response.plan if (plan == 0){ document.getElementById("subscriptiontype").innerHTML = "Free" } else if (plan == 1){ document.getElementById("subscriptiontype").innerHTML = "Business" } else if(plan == 2){ document.getElementById("subscriptiontype").innerHTML = "Standard" } } document.getElementById("loader").style.display = "none" } } req.open("POST","/v1/admin/activate",true) req.setRequestHeader("Content-Type","application/x-www-form-urlencoded") req.send("admin_key="+admin_key) } function activate(re_activation){ key_mode = false var admin_key = "" if (key_mode == true){ admin_key = prompt("Enter your admin key","") } if (re_activation == false){ document.getElementById("loader1").style.display = "" } else{ document.getElementById("loader").style.display = "" } if(re_activation == true){ document.getElementById("error_message_new").innerText = "" } else { document.getElementById("error_message").innerText = "" } var req = new XMLHttpRequest() req.onreadystatechange = function(){ if(this.readyState == 4 && this.status == 200){ response = JSON.parse(this.responseText) if(response.success == false){ document.getElementById("error_message_new").innerText = response.error if(re_activation == true){ document.getElementById("error_message_new").innerText = response.error } else { document.getElementById("error_message").innerText = response.error } } else { if(re_activation == true){ document.getElementById("form-renew-key").style.display = "none" document.getElementById("renew_button").style.display = "none" document.getElementById("re_activate_success").style.display = "" document.getElementById("error_message_new").innerText = "" } document.getElementById("form-renew").style.display = "" document.getElementById("form").style.display = "none" document.getElementById("expiringdate").innerText = response.expiringdate document.getElementById("daysleft").innerText = response.daysleft document.getElementById("error_message").innerText = "" var plan = response.plan if (plan == 0){ document.getElementById("subscriptiontype").innerHTML = "Free" } else if (plan == 1){ document.getElementById("subscriptiontype").innerHTML = "Business" } else if(plan == 2){ document.getElementById("subscriptiontype").innerHTML = "Standard" } } if (re_activation == false){ document.getElementById("loader1").style.display = "none" } else{ document.getElementById("loader").style.display = "none" } } } if (re_activation == false){ key = document.getElementById("activation_key").value } else{ key = document.getElementById("activation_key_new").value } req.open("POST","/v1/admin/activate",true) req.setRequestHeader("Content-Type","application/x-www-form-urlencoded") req.send("key="+key+"&admin_key="+admin_key) } function onload(){ activation = true key_mode = false plan = 0 if(activation == true || plan != null ){ document.getElementById("form-renew").style.display = "" if (plan == 0){ document.getElementById("subscriptiontype").innerHTML = "Free" } else if (plan == 1){ document.getElementById("subscriptiontype").innerHTML = "Business" } else if(plan == 2){ document.getElementById("subscriptiontype").innerHTML = "Standard" } } else { document.getElementById("form").style.display = "" } } </script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="description" content=""> <meta name="author" content="s"> <title>DeepStack</title> <link rel="icon" href="assets/img/deepstack.png" > <link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet"> <link rel="stylesheet" href="assets/vendor/simple-line-icons/css/simple-line-icons.css"> <link rel="stylesheet" href="assets/device-mockups/device-mockups.min.css"> <link href="assets/css/new-age.min.css" rel="stylesheet"> </head> <body id="page-top" onload="onload()"> <nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav"> <div class="container"> <a class="navbar-brand js-scroll-trigger" href=""><img src="assets/img/deepstack.png" width="30" height="30" class="d-inline-block align-top" alt=""> <b style="color: white;" >DeepStack</b> </a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> Menu <i class="fas fa-bars"></i> </button> </div> </nav> <header class="masthead"> <div class="container h-100" > <div class="row h-100" id="form" style="display: none;"> <div class="col-lg-7 my-auto"> <div class="header-content mx-auto"> <h1 class="mb-5" style="font-size: 70px;"><b>DeepStack 3.4</b></h1> <p class="mb-5">Congratulations! You have successfully installed DeepStack AI Server on your machine. To activate all the Recognition and Detection APIs, get an <b>Activation Key</b> and Enter the Key on the right.</p> <div class="row" > <div class="col-sm-12" > <a href="Sign Up" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger btn-primary" style="margin: 10px;">Get Activation Key!</a> </div> </div> <div class="row" > <div class="col-sm-8" > <a href="Dev Center - DeepStack" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Dev Center </a> </div> </div> <div class="row" > <div class="col-sm-8" > <a href="DeepStack Forum" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Forum </a> </div> </div> </div> </div> <div class="col-lg-5 my-auto" style="background-image: url('assets/img/dark-background.png')"> <br> <br> <div class="form-group"> <label for="activation_key">Enter Activation Key </label> <input type="text" class="form-control" id="activation_key" aria-describedby="emailHelp" placeholder=""> <span id="error_message" style="color: orangered;"></span> <span class="form-text" style="color: white;font-size: 14px;">Get a Key from <b><a href="Sign Up" target="_blank" style="color: green;">DeepStack AI Server</a></b></span> </div> <button type="submit" onclick="activate(false)" class="btn btn-primary btn-block">Activate Now!</button> <br> <br> <center><img src="assets/img/loader.gif" id="loader1" style="width: 60px; height: 60px; display: none;"/></center> </div> </div> <div class="row h-100" id="form-renew" style="display: none;"> <div class="col-lg-7 my-auto"> <div class="header-content mx-auto"> <h1 class="mb-12" style="font-size: 70px;"><b>DeepStack Activated</b></h1> <p class="mb-5">Your DeepStack Installation is Activated. </p> <p class="mb-5">Visit the Developer Center for Tutorials and Documentations </p> <div class="row" > <div class="col-sm-8" > <a href="Dev Center - DeepStack" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Dev Center</a> </div> </div> <div class="row" > <div class="col-sm-8" > <a href="DeepStack Forum" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Forum </a> </div> </div> </div> </div> <div class="col-lg-5 my-auto" style="background-image: url('assets/img/dark-background.png')"> <br> <br> <div class="form-group" > <p><b>Days left on Subscription:</b> <span id="daysleft"> 694<span></p> <p><b>Subscription Expiration:</b> <span id="expiringdate"> 2022-09-06 </span> </p> <p><b>Subscription Type:</b> <span id="subscriptiontype"> </span> </p> <button onclick="renew()" id="renew_button" class="btn btn-primary btn-block">Renew Current Subscription</button> <span id="error_message_renew" style="color: orangered;"></span> <h2 id="renew_success" style="color: green; display: none;"> Renewal Successful </h2> <br> <br> </div> <div class="form-group" id="form-renew-key" > <h1> New Key Activation </h1> <label for="activation_key">Enter New Activation Key </label> <input type="text" class="form-control" id="activation_key_new" aria-describedby="emailHelp" placeholder=""> <span id="error_message_new" style="color: orangered;"></span> <span class="form-text" style="color: white;font-size: 14px;">Get a Key from <b><a href="Sign Up" target="_blank" style="color: green;">DeepStack AI Server</a></b></span> <button type="submit" onclick="activate(true)" class="btn btn-primary btn-block"> Activate New Key </button> </div> <h2 id="re_activate_success" style="color: green; display: none;"> Reactivation Successful </h2> <br> <br> <center><img src="assets/img/loader.gif" id="loader" style="width: 60px; height: 60px;display: none;"/></center> </div> </div> <div class="row h-100" id="response" style="display: none;"> <div class="col-lg-7 my-auto"> <div class="header-content mx-auto"> <h1 class="mb-12" style="font-size: 70px;"><b>DeepStack Activated</b></h1> <p class="mb-5">Your DeepStack Installation is Activated. </p> <p class="mb-5">Visit the Developer Center for Tutorials and Documentations </p> <div class="row" > <div class="col-sm-8" > <a href="DeepStack AI Server" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Dev Center</a> </div> </div> <div class="row" > <div class="col-sm-8" > <a href="DeepStack Forum" target="_blank" class="btn btn-outline btn-xl js-scroll-trigger" style="margin: 10px;">DeepStack Forum</a> </div> </div> </div> </div> </div> </div> </header> </body> </html> ' CallTriggerURLs>
 
I'm paying a $60 Paypal reward to anyone who can help fix my deepquestai/deepstack:gpu setup. Regular deepquestai/deepstack already works.
Intially deepstack:gpu works but then stops with errors.
Alternatively, I'll pay a $100 reward to anyone who can help me replace deepstack in my system with a Coral Edge TPU or similar hardware accelerator.
Thanks in advance!