Giter VIP home page Giter VIP logo

vorloncd / bi-aidetection Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gentlepumpkin/bi-aidetection

208.0 208.0 45.0 386.46 MB

Alarm system for Blue Iris based on Artificial Intelligence.

Home Page: https://ipcamtalk.com/threads/tool-tutorial-free-ai-person-detection-for-blue-iris.37330/

License: GNU General Public License v2.0

C# 75.63% Inno Setup 24.02% Batchfile 0.01% HTML 0.32% C 0.01% Pascal 0.01%

bi-aidetection's People

Contributors

classobject avatar edalquist avatar gentlepumpkin avatar jdom avatar lazersfly avatar mayop avatar vhkristof avatar vorloncd avatar youzer-name avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bi-aidetection's Issues

TelegramUpload>> ERROR: Could not upload image

In 1.7.6 I'm getting an error every time a Telegram alert tried to send

TelegramUpload>> ERROR: Could not upload image T:\aiinput\Front.20200917_142715739.jpg to Telegram: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) [FileLoadException] Mod: <TelegramUpload>d__30 Line:1342:33
[1714:33:05]: Trigger>> Error: Could not load file or assembly 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) [FileLoadException] Mod: <Trigger>d__32 Line:1570:29

I've attempted to remove and re-extract the files again but it's still not working.

Unable to connect to MQTT server

Using the latest pre-release 1.8.1.

Getting an MQTT error:
[16:56:21.498]: btTest_ClickAsync> ------ TESTING MQTT --------
[16:56:21.509]: PublishAsync> MQTT: Sending topic 'ai/Driveway/motion' with payload 'No Detections Found' to server '192.168.2.94:1883'...
[16:56:21.551]: PublishAsync> MQTT: ### DISCONNECTED FROM SERVER ### - Reason: NormalDisconnection, ClientWasDisconnected: False, An existing connection was forcibly closed by the remote host
[16:56:21.564]: PublishAsync> MQTT: Unexpected Error: Topic 'ai/Driveway/motion' Payload 'No Detections Found': An existing connection was forcibly closed by the remote host [SocketException] Mod: <b__0>d Line:233:41
[16:56:21.575]: btTest_ClickAsync> ------ DONE TESTING MQTT --------

Also tried the test.mosquitto.org server with the same error.

My MQTT broker is Mosquitto 1.6..12 in Windows 10.

Any ideas?

Thanks.

Cant access history file

This error message occured today and all the processing stopped.

[28.09.2020, 08:00:00]: WaitForFileAccess>> Error: File not found: C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: Error: Could not gain access to history file for 8ms - C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: WaitForFileAccess>> Error: File not found: C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: Error: Could not gain access to history file for 5ms - C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: WaitForFileAccess>> Error: File not found: C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: Error: Could not gain access to history file for 5ms - C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: WaitForFileAccess>> Error: File not found: C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: Error: Could not gain access to history file for 4ms - C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: WaitForFileAccess>> Error: File not found: C:\AI Tool 1.65\Release\cameras\history.csv
[28.09.2020, 08:00:00]: Error: Could not gain access to history file for 5ms - C:\AI Tool 1.65\Release\cameras\history.csv

Feature request: MQTT support

Would love to see MQTT as an alerting option, including the metadata in the payload.

Right now, I'm using EventGhost to translate alerts to MQTT, but this would be much more efficient.

Keep up the great work!

History deletion

Is the History of objects found supposed to be removed from the list in Dynamic mask detail/History UI after the time set in settings/clear object history in x seconds?

(I'm also struggling to see the grey boxes on the image possibly change to yellow?).

Request - Database management/Purge History after n days

With many cameras and a lot of triggers the history database takes a long time to load on startup and also slows down the GUI a lot.
Having the option to purge saved history data after x days would speed up a lot of things, at least in my setup.
History is only relevant for so many days back anyway. The stats could be more interesting over a longer time period, but maybe that data could be saved separately?

Camera page camera highlight

Observation. When viewing the cameras page if you click on a camera in the list it is nicely highlighted blue. If you the click on the details /settings /custom tabs when you come back off that page the camera is no longer highlighted in blue.

Ability to save Deepstack's annotated images to folder

Similar to @Bisquit4407's request, please add the ability to export/save the marked-up alert image from Deepstack and save it out to a folder on the file system. We're interested in the image that includes the boxes around the detected object and text "Person (87%)." The option to "use the original filename" as well as "append text ____ to the original filename" would be great.

The BI dev said he supports using this image as the alert image for BI and push notifications. Thanks!

Feature request: Dynamic Masking for specific objects.

Would love to see dynamic masking only for specific objects. For example, in my driveway, when there is a car parked, AITool will create a dynamic mask in that area for the car after a few detections, but when a person is detected in the same area, the tool will trigger.

Static masks still being shown.

Some of my static masks don't seem to be working. I'm getting telegram messages and they are showing up in the history tab but then they are not showing in the cameras/details/history window. I already have a static mask set up for them in the cameras/details/active masks. I will provide further details when i have bit more time tomorrow.

DeepStack Crashing

I was experiencing errors after a few hours with my setup so I decided to stress test. I'm running the latest version of AI Tool I have set up one camera to send an image every 2 seconds (I'm using my camera onboard motion processing and sending through FTP instead of Blue Iris) and everything runs fine. However, if I set up a second camera to do the same thing, AI Tool experiences errors. I think this might be due to how AI Tool processes the queue for multiple DeepStack URLs causing DeepStack to crash?

Here are some of the errors I have:
DetectObjects>> 192.168.1.146:1234 - ERROR: A task was canceled. [TaskCanceledException] Mod: d__23 Line:693:44

ImageQueueLoop>> ***** Not showing further warnings about skipping disabled URL: http://192.168.1.146:1234/v1/vision/detection

ImageQueueLoop>> ...Error: AI URL for 'DeepStack' failed '10' times. Disabling: 'http://192.168.1.146:1234/v1/vision/detection', URLQueue.Count=1

Craches daily

I experience a lot of crashes. I'm running release 1.77.

Latest crash was this morning.

Event logg shows:
Application Error:
Faulting application name: AITool.exe, version: 1.67.8.0, time stamp: 0x5f677d79
Faulting module name: clr.dll, version: 4.7.3661.0, time stamp: 0x5f054591
Exception code: 0xc00000fd
Fault offset: 0x0000000000053f4a
Faulting process id: 0x2cf8
Faulting application start time: 0x01d694b2166f43ff
Faulting application path: C:\AI.Tool.1.67\Release\AITool.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Report Id: 041f9749-f2eb-4374-a987-860d7ee2f3bb
Faulting package full name:
Faulting package-relative application ID:

I have now enabled "Log Everything", and also realized the log is overwritten on restart of AITool, I'll save it after next crash before restarting.

Anyone else experiencing instability?

Cancel Trigger question/request

Right now as far as I understand the cancel button just send the trigger URL if it's a false alert could we implement a logic where it triggers a trigger url as usual and a cancel URL with flag=0 for example to cancel the alert? I think this could help to keep the alerts list on the app clean

Future of DeepQuest and DeepStack?

@VorlonCD
Just curious if anyone here has thought about the ominous absence of the deepquest folks and the future of DeepStack viability. They haven't had a release in a long time, their website hasn't had much revision in a long time and from this post, they don't seem too interested in sales requests.
https://forum.deepstack.cc/t/is-deepquest-dead/431

I'm just wondering with all of these wonderful changes, how difficult would it be to pivot this work over to another AI engine?

Feature Request: include match data (car, cat, ...) in program parameter

Slightly related to my previous request. I'm using the 'Run external program option' with parameters, but unless I'm seeing something, I don't see a way of including the match results in a parameter. Example:

program.exe -parameter1 %objects%

Which would include all the detected objects as a (JSON) string. Would love to see this feature, and hopefully isn't too difficult to implement.

Feature request: Add eraser to Draw Mask tool

The ability to draw a mask natively inside AI Tool is awesome, but it'd also be great if we could erase like in BI. Either by holding down a modifier key and using the brush/rectangle, or by adding a separate eraser tool.

I often mess up when drawing a mask and would like to erase just a small portion, but instead have to click "clear" and start over.

Please let me know if this is already possible and I missed it. Thanks!

Another Telegram Issue

On 1.77 and cannot get images to Telegram either with a legit trigger or using the settings test button.

I just downloaded, unzipped, and pasted over my previous install.

Legit Trigger

[23:07:11.725]:           ImageQueueLoop> Adding task for file 'AiFP.20200921_230711337.jpg' (Image QueueTime='0.0' mins, URL Queue wait='0ms', URLOrder=1 of 1, URLOriginalOrder=1) on URL 'http://127.0.0.1:82/v1/vision/detection'
[23:07:11.742]:           ImageQueueLoop> Done adding 1 total threads, ErrCnt=0, ImageProcessQueue.Count=0
[23:07:11.803]:            DetectObjects> 127.0.0.1:82 - Starting analysis of C:\BlueIris\AI_Input\AiFP.20200921_230711337.jpg...
[23:07:11.815]:            DetectObjects> 127.0.0.1:82 - (1/6) Uploading a 227228 byte image to DeepQuestAI Server at http://127.0.0.1:82/v1/vision/detection
[23:07:12.327]:            DetectObjects> 127.0.0.1:82 - (2/6) Posted in 598ms, Received a 123 byte response.
[23:07:12.331]:            DetectObjects> 127.0.0.1:82 - (3/6) Processing results...
[23:07:12.350]:            DetectObjects> 127.0.0.1:82 -    Detected objects: Person (61.52%),
[23:07:12.356]:            DetectObjects> 127.0.0.1:82 - (4/6) Checking if detected object is relevant and within confidence limits:
[23:07:12.365]:              Outsidemask> ->Camera has no mask, the object is OUTSIDE of the masked area.
[23:07:12.372]:            DetectObjects> 127.0.0.1:82 -    Person (61.52%) confirmed.
[23:07:12.381]:            DetectObjects> 127.0.0.1:82 - The summary:Person (61.52%)
[23:07:12.388]:            DetectObjects> 127.0.0.1:82 - (5/6) Performing alert actions:
[23:07:12.398]:          CallTriggerURLs> -> trigger URL called: http://192.168.1.10:81/admin?trigger&camera=Porch&user=[user]&pw=[password], response: 'signal=green profile=1 lock=0 clip=520436657 camera=Front Porch '
[23:07:12.408]:                  Trigger> -> ERROR sending image to Telegram.
[23:07:12.431]:            DetectObjects> 127.0.0.1:82 - (6/6) SUCCESS.
[23:07:12.437]:            DetectObjects> 127.0.0.1:82 - Adding detection to history list.
[23:07:12.459]:            DetectObjects> 127.0.0.1:82 -          Total Time:   966ms (Count=10, Min=854ms, Max=1218ms, Avg=1006ms)
[23:07:12.465]:            DetectObjects> 127.0.0.1:82 -DeepStack (URL) Time:   598ms (Count=10, Min=566ms, Max=940ms, Avg=659ms)
[23:07:12.476]:            DetectObjects> 127.0.0.1:82 -      File lock Time:   0ms (Count=0, Min=0ms, Max=0ms, Avg=ms)
[23:07:12.481]:            DetectObjects> 127.0.0.1:82 -    Image Queue Time:   342ms (Count=10, Min=266ms, Max=364ms, Avg=321ms)
[23:07:12.491]:            DetectObjects> 127.0.0.1:82 -   Image Queue Depth:   1 (Count=97, Min=1, Max=1, Avg=1)
[23:07:12.499]:           OnCreatedAsync> 

Test from settings page

[23:16:40.192]:          CallTriggerURLs> -> trigger URL called: http://192.168.1.10:81/admin?trigger&camera=Porch&user=[user]&pw=[password], response: 'signal=green profile=1 lock=0 clip=521693022 camera=Front Porch '
[23:16:40.193]:                  Trigger> -> ERROR sending image to Telegram.
[23:16:40.196]:             btTest_Click> ------ DONE TESTING TRIGGERS --------

Actually a feature request...

Is there any way to interact with the AI Tool when it's running as a service? In order to change settings, it seems I have to stop the service, open the AI Tool and do what I need to do, and then restart the service. Sometimes it doesn't go smoothly so I simply restart the entire machine.

Fantastic

Great work ๐Ÿ‘ good with the implementation of MQTT ๐Ÿ‘

UI Issues / minor improvement

@VorlonCD Thanks for doing all this awesome work on this AI bridge program. I just grabbed the latest release and tried it out.

I noticed 2 minor UI issues. One is on the history tab. The filter options are gone. I've had this issue before and I was able to resize it somehow and it would show the checkboxes. But I can not get it to show anything other than the drop down for camera filtering.
Screenshot from 2020-09-01 12:45:27

The other issue I noticed the buttons on the settings tab under masking shrink when the window is smaller. Don't think it is really needed as there is enough room to display them. Also noticed the checkbox for sent alert messages to telegram gets cut off.

Screenshot from 2020-09-01 12:45:47

The only improvement I was thinking that would help speed up adding cameras is under the settings tab add a blue iris login name and password. This would let you fill in the full trigger path completely. As it is now the text box doesn't resize and it is hard to see the end of the string. I only noticed it because I had to replace the user and password for the trigger URL. Had to copy and paste the string in to notepad to see the whole thing. If it was populated from the settings info it would work automatically without needing any modifications.

Thanks again!

Log scroll button

If you have the Scroll log button un-ticked and right click on the log it scrolls.

Feature requests

What a super duper tool! I love it so much!!!!!!!!!!!!!

here are some features that I missed:

  • defining a specific path/file for masking images
  • defining a image/log rotation timer for the processed images and logfile
  • processing the url-parameter "manrec" for starting/stopping manual recording via url in BI (only record when AI triggers)

greetings and thanks for your awesome work!!!

Feature: Separate settings/logs/etc from app

Consider separating the settings, cameras, history, logs (all dynamic files) from the app folder itself. This would allow just getting the latest version of the app and running, it, without making sure to copy all the files from the previous version of the app, nor making sure you over-write the right files.
A good option is to put stuff under the user folder (there's good APIs to help create an app folder inside the user's profile). The user profile would be an issue if you plan to run as a service.
Alternatively, at least put all the files inside a specific folder (if you make that configurable, then sure, you can put this setting alone along side the app), or a sub-folder that you can copy in its entirety.
Today the experience is that you need to copy the cameras folder as well as some other files in the root folder, which is error prone.

No image or box when looking at masks on some cameras

ShowImageMask> Error: Object reference not set to an instance of an object. [NullReferenceException] Mod: ShowImageMask(PaintEventArgs e) Line:85:21

When looking at the dynamic masks in cameras there is no image or box. Only occurring on some cameras.

Crash

Last night was the first time I've ever ran in to this issue. I'm assuming it got overloaded. During the time it crashed BI was creating a bunch of images.

Crash report attached:
Log Name: Application Source: Application Error Date: 9/30/2020 5:20:34 AM Event ID: 1000 Task Category: (100) Level: Error Keywords: Classic User: N/A Computer: DESKTOP Description: Faulting application name: AITool.exe, version: 1.67.8.0, time stamp: 0x5f5ea760 Faulting module name: mscorlib.ni.dll, version: 4.8.4220.0, time stamp: 0x5f03a9e2 Exception code: 0xc00000fd Fault offset: 0x003f8565 Faulting process id: 0x2090 Faulting application start time: 0x01d68ea3870a98fe Faulting application path: C:\Users\shane\source\repos\bi-aidetection\src\UI\bin\Release\AITool.exe Faulting module path: C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\00b9a45b7a0e1b0c1507b52befccdc63\mscorlib.ni.dll Report Id: 2ccf572c-36fc-470c-b6c3-42cad63db0bd Faulting package full name: Faulting package-relative application ID: Event Xml: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Application Error" /> <EventID Qualifiers="0">1000</EventID> <Level>2</Level> <Task>100</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2020-09-30T09:20:34.705112800Z" /> <EventRecordID>12726</EventRecordID> <Channel>Application</Channel> <Computer>DESKTOP</Computer> <Security /> </System> <EventData> <Data>AITool.exe</Data> <Data>1.67.8.0</Data> <Data>5f5ea760</Data> <Data>mscorlib.ni.dll</Data> <Data>4.8.4220.0</Data> <Data>5f03a9e2</Data> <Data>c00000fd</Data> <Data>003f8565</Data> <Data>2090</Data> <Data>01d68ea3870a98fe</Data> <Data>C:\Users\shane\source\repos\bi-aidetection\src\UI\bin\Release\AITool.exe</Data> <Data>C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\00b9a45b7a0e1b0c1507b52befccdc63\mscorlib.ni.dll</Data> <Data>2ccf572c-36fc-470c-b6c3-42cad63db0bd</Data> <Data> </Data> <Data> </Data> </EventData> </Event>

Enhancements to variables

Please let me know if this request should be directed elsewhere.

There are a few adjustments or additions to the variables list that would help make the data more easily digestible. I'm passing this data to BI via the Trigger URL for push notification text and trying to make the info as "pretty" as possible for the non-techy family members to read.

Is it possible to add these modified variables to the list of current ones, so as not to affect existing users?

  • Object names in Title Case (For example, Person rather than person, Dog rather than dog)
  • Confidence percentage that doesn't include surrounding parenthesis. (For example, I want to use the confidence percentage in the text of a push notification without parenthesis around the value.)
  • Confidence percentages as whole numbers, without tenths or hundredths values. (For example, 79% rather than 79.84%) Same comment about this value where it appears in the annotated image, below the bounding box.

Thank you in advance for considering.

Error with "Start with user login (Non-Service)"

I'm currently running v1.77 with the "Start with user login (Non-Service)" checkbox checked, but I'm getting the following two messages immediately after login. (I have my user set to auto-login after boot.)

Screen Shot 2020-09-19 at 04 31 16 PM@2x

and after I click "Yes" then this appears:

Screen Shot 2020-09-18 at 10 27 19 AM@2x

Apologies if this has been discussed and addressed on the forum. I didn't see an answer, but I assume it's a very simple fix I'm just not aware of.

How to execute

I downloaded the current Version and installed Visual Studio but I do not know how to execute the "bi-aidetection.sln". It only opens the project in Visual Studio.

Statistics Reset

Not sure if there is currently a way to reset stats as clearing it in the camera files no longer works. Would it be possible to have a reset button on the stats page?

New image processing cooldown

Hey! Love to tool and updated form Gentle Pumpkins 1.67 to this forks 1.77.

I have a question about image processing cooldowns. I have BI set to send an image once per second during a motion event, but AI tools seems to reject the subsequent images in the series because they fall within a "halfcool" timer. This is causing me to miss some motion events that were not missed with Gentle pumpkins 1.67 version.

Is there something I need to change so every image in the input folder is run through deepstack?

Logs here - https://pastebin.pl/view/644e3451

ImageQueueLoop> Warning: Unexpected - Waiting for a task to finish

Getting the above error and telegram notification. Using 2 Deepstack URL's

Still getting duplicates in the file history.

[03.09.2020, 23:14:39.782]: OnCreatedAsync> Adding new image to queue: D:\AI\WorkshopSideAI.20200903_231439971.WorkshopSide.jpg
[03.09.2020, 23:14:40.167]: OnCreatedAsync>
[03.09.2020, 23:14:40.174]: OnCreatedAsync> Adding new image to queue: D:\AI\WkshopSideFrontAI.20200903_231440304.WorshopSideFront.jpg
[03.09.2020, 23:14:40.788]: DetectObjects> 127.0.0.1:81 - (2/6) Posted in 1239ms, Received a 33 byte response.
[03.09.2020, 23:14:40.793]: DetectObjects> 127.0.0.1:81 - (3/6) Processing results...
[03.09.2020, 23:14:40.797]: DetectObjects> 127.0.0.1:81 - Detected objects:
[03.09.2020, 23:14:40.820]: Save> Settings saved to C:\Program Files\AI Tool\aitool.Settings.json
[03.09.2020, 23:14:40.820]: DetectObjects> 127.0.0.1:81 - (6/6) Camera GardenPoolAI caused a false alert, nothing detected.
[03.09.2020, 23:14:40.828]: DetectObjects> 127.0.0.1:81 - Adding false to history list.
[03.09.2020, 23:14:40.833]: DetectObjects> 127.0.0.1:81 - ...Object detection finished:
[03.09.2020, 23:14:40.838]: DetectObjects> 127.0.0.1:81 - Total Time: 68ms (Count=263, Min=10ms, Max=3632ms, Avg=309ms)
[03.09.2020, 23:14:40.845]: DetectObjects> 127.0.0.1:81 - DeepStack Time: 1239ms (Count=263, Min=846ms, Max=2012ms, Avg=1095ms)
[03.09.2020, 23:14:40.859]: DetectObjects> 127.0.0.1:81 - File lock Time: 29ms (Count=20, Min=1ms, Max=39ms, Avg=24ms)
[03.09.2020, 23:14:40.865]: DetectObjects> 127.0.0.1:81 - Image Queue Time: 10ms (Count=263, Min=4ms, Max=3632ms, Avg=305ms)
[03.09.2020, 23:14:40.872]: DetectObjects> 127.0.0.1:81 - Image Queue Depth: 1 (Count=265, Min=1, Max=6, Avg=1)
[03.09.2020, 23:14:40.881]: ImageQueueLoop> ...Task at index 0 done. Status='RanToCompletion'
[03.09.2020, 23:14:40.886]: ImageQueueLoop> Adding task #1 for file 'WorkshopSideAI.20200903_231439971.WorkshopSide.jpg' on URL 'http://192.168.3.12:81/v1/vision/detection'
[03.09.2020, 23:14:40.893]: ImageQueueLoop> Adding task #2 for file 'WkshopSideFrontAI.20200903_231440304.WorshopSideFront.jpg' on URL 'http://127.0.0.1:81/v1/vision/detection'
[03.09.2020, 23:14:40.896]: DetectObjects> 192.168.3.12:81 - Starting analysis of D:\AI\WkshopSideFrontAI.20200903_231440304.WorshopSideFront.jpg...
[03.09.2020, 23:14:40.902]: ImageQueueLoop> Waiting for any of 2 tasks to get done...
[03.09.2020, 23:14:40.911]: DetectObjects> 192.168.3.12:81 - (1/6) Uploading image to DeepQuestAI Server at http://192.168.3.12:81/v1/vision/detection
[03.09.2020, 23:14:40.918]: DetectObjects> 127.0.0.1:81 - Starting analysis of D:\AI\WkshopSideFrontAI.20200903_231440304.WorshopSideFront.jpg...
[03.09.2020, 23:14:40.948]: DetectObjects> 127.0.0.1:81 - (1/6) Uploading image to DeepQuestAI Server at http://127.0.0.1:81/v1/vision/detection
[03.09.2020, 23:14:41.917]: DetectObjects> 192.168.3.12:81 - (2/6) Posted in 972ms, Received a 33 byte response.
[03.09.2020, 23:14:41.925]: DetectObjects> 192.168.3.12:81 - (3/6) Processing results...
[03.09.2020, 23:14:41.932]: DetectObjects> 192.168.3.12:81 - Detected objects:
[03.09.2020, 23:14:41.979]: Save> Settings saved to C:\Program Files\AI Tool\aitool.Settings.json
[03.09.2020, 23:14:41.979]: DetectObjects> 192.168.3.12:81 - (6/6) Camera WkshopSideFrontAI caused a false alert, nothing detected.
[03.09.2020, 23:14:42.002]: DetectObjects> 192.168.3.12:81 - Adding false to history list.
[03.09.2020, 23:14:42.018]: DetectObjects> 192.168.3.12:81 - ...Object detection finished:
[03.09.2020, 23:14:42.027]: DetectObjects> 192.168.3.12:81 - Total Time: 718ms (Count=264, Min=10ms, Max=3632ms, Avg=309ms)
[03.09.2020, 23:14:42.035]: DetectObjects> 192.168.3.12:81 - DeepStack Time: 972ms (Count=264, Min=846ms, Max=2012ms, Avg=1095ms)
[03.09.2020, 23:14:42.044]: DetectObjects> 192.168.3.12:81 - File lock Time: 0ms (Count=20, Min=1ms, Max=39ms, Avg=24ms)
[03.09.2020, 23:14:42.056]: DetectObjects> 192.168.3.12:81 - Image Queue Time: 718ms (Count=264, Min=4ms, Max=3632ms, Avg=306ms)
[03.09.2020, 23:14:42.069]: DetectObjects> 192.168.3.12:81 - Image Queue Depth: 2 (Count=265, Min=1, Max=6, Avg=1)
[03.09.2020, 23:14:42.082]: ImageQueueLoop> ...Task at index 0 done. Status='RanToCompletion'
[03.09.2020, 23:14:42.093]: ImageQueueLoop> Warning: Unexpected - Waiting for a task to finish...
[03.09.2020, 23:14:42.195]: DetectObjects> 127.0.0.1:81 - (2/6) Posted in 1240ms, Received a 33 byte response.
[03.09.2020, 23:14:42.199]: DetectObjects> 127.0.0.1:81 - (3/6) Processing results...
[03.09.2020, 23:14:42.204]: DetectObjects> 127.0.0.1:81 - Detected objects:
[03.09.2020, 23:14:42.235]: Save> Settings saved to C:\Program Files\AI Tool\aitool.Settings.json
[03.09.2020, 23:14:42.234]: DetectObjects> 127.0.0.1:81 - (6/6) Camera WkshopSideFrontAI caused a false alert, nothing detected.
[03.09.2020, 23:14:42.245]: DetectObjects> 127.0.0.1:81 - Adding false to history list.
[03.09.2020, 23:14:42.251]: DetectObjects> 127.0.0.1:81 - ...Object detection finished:
[03.09.2020, 23:14:42.260]: DetectObjects> 127.0.0.1:81 - Total Time: 718ms (Count=265, Min=10ms, Max=3632ms, Avg=312ms)
[03.09.2020, 23:14:42.266]: DetectObjects> 127.0.0.1:81 - DeepStack Time: 1240ms (Count=265, Min=846ms, Max=2012ms, Avg=1095ms)
[03.09.2020, 23:14:42.277]: DetectObjects> 127.0.0.1:81 - File lock Time: 0ms (Count=20, Min=1ms, Max=39ms, Avg=24ms)
[03.09.2020, 23:14:42.284]: DetectObjects> 127.0.0.1:81 - Image Queue Time: 718ms (Count=265, Min=4ms, Max=3632ms, Avg=308ms)
[03.09.2020, 23:14:42.294]: DetectObjects> 127.0.0.1:81 - Image Queue Depth: 2 (Count=265, Min=1, Max=6, Avg=1)
[03.09.2020, 23:14:42.300]: ImageQueueLoop> ...Task finished.
[03.09.2020, 23:14:42.310]: ImageQueueLoop> Done processing current image queue with 3 image(s), ErrCnt=0
[03.09.2020, 23:14:49.774]: OnCreatedAsync>
[03.09.2020, 23:14:49.779]: OnCreatedAsync> Adding new image to queue: D:\AI\WorkshopSideAI.20200903_231450008.WorkshopSide.jpg
[03.09.2020, 23:14:49.838]: ImageQueueLoop> Adding task #1 for file 'WorkshopSideAI.20200903_231450008.WorkshopSide.jpg' on URL 'http://127.0.0.1:81/v1/vision/detection'
[03.09.2020, 23:14:49.842]: ImageQueueLoop> Waiting for any of 1 tasks to get done...
[03.09.2020, 23:14:49.844]: DetectObjects> 127.0.0.1:81 - Starting analysis of D:\AI\WorkshopSideAI.20200903_231450008.WorkshopSide.jpg...
[03.09.2020, 23:14:49.851]: DetectObjects> 127.0.0.1:81 - (1/6) Uploading image to DeepQuestAI Server at http://127.0.0.1:81/v1/vision/detection
[03.09.2020, 23:14:50.349]: OnCreatedAsync>
[03.09.2020, 23:14:50.356]: OnCreatedAsync> Adding new image to queue: D:\AI\WkshopSideFrontAI.20200903_231450456.WorshopSideFront.jpg
[03.09.2020, 23:14:50.980]: DetectObjects> 127.0.0.1:81 - (2/6) Posted in 1120ms, Received a 33 byte response.
[03.09.2020, 23:14:50.986]: DetectObjects> 127.0.0.1:81 - (3/6) Processing results...
[03.09.2020, 23:14:51.013]: DetectObjects> 127.0.0.1:81 - Detected objects:
[03.09.2020, 23:14:51.050]: Save> Settings saved to C:\Program Files\AI Tool\aitool.Settings.json
[03.09.2020, 23:14:51.050]: DetectObjects> 127.0.0.1:81 - (6/6) Camera WorkshopSideAI caused a false alert, nothing detected.
[03.09.2020, 23:14:51.077]: DetectObjects> 127.0.0.1:81 - Adding false to history list.
[03.09.2020, 23:14:51.081]: DetectObjects> 127.0.0.1:81 - ...Object detection finished:
[03.09.2020, 23:14:51.093]: DetectObjects> 127.0.0.1:81 - Total Time: 61ms (Count=266, Min=10ms, Max=3632ms, Avg=312ms)
[03.09.2020, 23:14:51.098]: DetectObjects> 127.0.0.1:81 - DeepStack Time: 1120ms (Count=266, Min=846ms, Max=2012ms, Avg=1095ms)
[03.09.2020, 23:14:51.105]: DetectObjects> 127.0.0.1:81 - File lock Time: 0ms (Count=20, Min=1ms, Max=39ms, Avg=24ms)
[03.09.2020, 23:14:51.112]: DetectObjects> 127.0.0.1:81 - Image Queue Time: 61ms (Count=266, Min=4ms, Max=3632ms, Avg=308ms)
[03.09.2020, 23:14:51.117]: DetectObjects> 127.0.0.1:81 - Image Queue Depth: 1 (Count=267, Min=1, Max=6, Avg=1)
[03.09.2020, 23:14:51.129]: ImageQueueLoop> ...Task at index 0 done. Status='RanToCompletion'

[03.09.2020, 23:18:54.600]: ImageQueueLoop> Adding task #1 for file 'WkshopSideFrontAI.20200903_231853463.WorshopSideFront.jpg' on URL 'http://192.168.3.12:81/v1/vision/detection'
[03.09.2020, 23:18:54.633]: ImageQueueLoop> Adding task #2 for file 'WkRearFldAI.20200903_231853905.WKRearFld.jpg' on URL 'http://127.0.0.1:81/v1/vision/detection'
[03.09.2020, 23:18:54.635]: DetectObjects> 192.168.3.12:81 - Starting analysis of D:\AI\WkRearFldAI.20200903_231853905.WKRearFld.jpg...
[03.09.2020, 23:18:54.647]: ImageQueueLoop> Waiting for any of 2 tasks to get done...
[03.09.2020, 23:18:54.668]: DetectObjects> 192.168.3.12:81 - (1/6) Uploading image to DeepQuestAI Server at http://192.168.3.12:81/v1/vision/detection
[03.09.2020, 23:18:54.701]: DetectObjects> 127.0.0.1:81 - Starting analysis of D:\AI\WkRearFldAI.20200903_231853905.WKRearFld.jpg...
[03.09.2020, 23:18:54.726]: DetectObjects> 127.0.0.1:81 - (1/6) Uploading image to DeepQuestAI Server at http://127.0.0.1:81/v1/vision/detection
[03.09.2020, 23:18:54.849]: OnCreatedAsync>
[03.09.2020, 23:18:54.871]: OnCreatedAsync> Adding new image to queue: D:\AI\KitchenDoor.20200903_231854848.KitchenDoor.jpg

Cannot Access Images That Aren't in Subfolders

Most Blue Iris setups have all of the AI alert images dumped into one universal folder, rather than multiple subfolders (one for each camera). It seems as if I am having a problem now that each camera has it's own input folder location to choose. I do specify the AI alert image input folder under the Settings tab. However, if I do not specify an input folder under each camera, it acts as if no images are being found. If I do specify the universal input folder under each camera, I see the following error in the log:

Error: Could not match combobox dropdown '' to a known camera name?

Note: AI Tool is installed on the same computer as Blue Iris. Deep Stack is installed on an Ubuntu machine and accessed over the network. Everything worked fine with the original version of AI Tool 1.67.

Requesting a Separate Cool Down for Alerts

Hello. I've been using Blue Iris's sound alerts, but I wanted to try using sound alerts in AITool instead because it allows me to have different sounds for different objects. One thing that I've noticed is that if the object stays in the picture, AITool will continuously send sound alerts. With my setup on Blue Iris, it would alert only when first triggered. Then, it will stay triggered if the object is detected again within a set amount of time. It will only reset if AITool stops sending triggers to Blue Iris within a specified timeframe. I'm wondering if this could be implemented. It might work in a similar way to the dynamic masking, but only considering what object is detected and not position? Since Blue Iris depends on the triggers from AITool to continue recording, I can't use the normal cooldown for this case.

Thoughts- object variance %

I find that I have to set the object variance pretty high (20%) for most of my cameras as the images detected are often quite small and far away. This is OK but then if an image detected is large and close to the camera this variance % is going to cover a large area.

Would it be an idea that, say, 2 object variance % could be set and which ever is used base on a 'settable' detected image area.

Parallel Processing Deepstack Time Issue

First of I just want to say thank you for adding the multiple Deepstack IP's. This feature is extremely helpful for my server without a GPU and allows me to use Deepstack for multiple cameras.

So I've finally had some time to play around with multiple Deepstack docker containers and noticed some weird timing in the AI Tool logs.

If I use 1 IP in the Deepstack URL(s) field the the log is showing DeepStack Time as under 1000ms for almost all posts. If I add another IP to the Deepstack URL(s) field the log shows Deepstack Time double or triple what you would normally see.

The 2 docker containers are exactly the same. I can swap out and use either IP and both are showing the same 1000ms time. It is only when I use more than 1 that the times seem wrong. I would of suspected the times to stay the same but the Image queue to not pile up as much.

I'm not sure if this is just a log issue and the times are really not that high. Everything seems to be working fine in Blue Iris.

Feature Request: Adjustable font size & placement for image annotation object labels

The recent improvements to the annotations have been awesome!

I'm wondering if it'd be possible to allow users to specify the font size for the object name that appears below the bounding box? I often view these merged JPEGs as small thumbnails on a phone screen, and the current size can be difficult to read. (Changing the font itself would be a bonus, but obviously not necessary!)

In addition, would it be possible to specify the position of that same object label? The current placement (at the bottom left corner of the bounding box) looks nice, but if the object is at the bottom of the frame, then the name is often cut off outside of the frame.

Moving it to another side of the bounding box would cause the same problem when an object reaches that edge of the frame. Not sure if adding some logic that would position the label in-view at all times is too complex, but maybe you have a more simple and elegant solution that would work. (This doesn't appear to be a problem in the AI Tool interface, but it still is on the merged JPEG.)

Thank you in advance.

Driveway_AI 20200919_160435047

Idea, detections are hidden when behind a custom mask

At the moment the program still logs detection's in the mask history even if they are hidden behind a custom mask. Might it be a good idea that these are not stored making it easier to go through the relevant dynamic mask detail history and also reducing the size of the json file. It may also reduce processing time? or perhaps not.

Feature Request: Option to hide annotation labels for irrelevant objects on history tab

I'd love the option to show annotations for only relevant objects on the history tab, and hide the annotations for irrelevant objects.

For example, my front doorbell camera can see lots of cars parked on the street and draws a box around each one, even though I don't have "Car" selected in the list of Relevant objects. Since there are so many car boxes, they can sometimes cover up the box drawn around a human, which I actually care to see. It'd be great to have to an option to show/hide the boxes and labels for irrelevant objects on the history tab images.

Hope that makes sense. Please let me know if this is already possible and I missed it.

Feature Request

Would it be possible to put a button to enable sending the photo with the detection overlay to Telegram instead of the plain photo? Then the user may choose which one to notify with. Thanks for the great work. Awesome programming!

DRAW MASK

Hi,
first of all, thanks a fantastic effort!!! ๐Ÿ‘

I use your last version 1.81 relesed for some days ago, under draw mask I have one of my cam marked the pic since the AI thinks its persons but it just garden blubs so no problem to just mark this area.
Since the last version some small problem in this draw mask:

  1. the dra mask do not give me the full pic but just a part of it so that the mask is not more on the right place
  2. the draw maks main frame with all its buttons is not full and when I drag the window out to see all it is not autmaticalyl refrecing so that point 1 same problem and I dont see all buttons in main windows of draw mask.

thanks in advance

Processing speed

The average time per image processed is 1100ms even though the deepstack instance is returning requests in 300ms, I do not know what is causing the slowdown but maybe processing multiple images at the same time would help. I am running the deepstack instance on a different machine so the issue may be uploading the image to that machine, but both machines are running via a gigabit connection. Any help with increasing the processing rate would be appreciated!

Custom Masking - Unhandled exception error

Hi,

I am trying to draw some custom mask and when I try to save I get an error.

image

This is happening for all the cameras. I cannot proceed to save any masks because of this.

Using version

image

Virtual Windows 10 with latest patches applied.

Thanks

Cancel Flag Error

Just checking out the cancel flag but unable get past the error in the log. I have confirmed that the command to BI is accepted. This what I am sending.

http://192.168.1.6:81/admin?camera=Drive&flagalert=0&user=admin&pw=xxxxx

[21:56:31.665]: OnCreatedAsync> Adding new image to queue: E:\BlueIris\AI_Input\Drive.20200830_215631624.jpg
[21:56:31.674]: ImageQueueLoop> Adding task #1 for file 'Drive.20200830_215631624.jpg' on URL '
http://127.0.0.1:82/v1/vision/detection
'
[21:56:31.677]: ImageQueueLoop> Waiting for any of 1 tasks to get done...
[21:56:31.693]: DetectObjects> 127.0.0.1:82 - Starting analysis of E:\BlueIris\AI_Input\Drive.20200830_215631624.jpg...
[21:56:31.695]: DetectObjects> 127.0.0.1:82 - (1/6) Uploading image to DeepQuestAI Server at
http://127.0.0.1:82/v1/vision/detection
[21:56:34.003]: DetectObjects> 127.0.0.1:82 - (2/6) Posted in 2279ms, Received a 33 byte response.
[21:56:34.006]: DetectObjects> 127.0.0.1:82 - (3/6) Processing results...
[21:56:34.009]: DetectObjects> 127.0.0.1:82 - Detected objects:
[21:56:34.011]: DetectObjects> 127.0.0.1:82 - (5/6) Performing alert CANCEL actions:
[21:56:34.020]: Trigger> Index was out of range. Must be non-negative and less than the size of the collection. | Parameter name: index [ArgumentOutOfRangeException] Mod: d__25 Line:1115:29
[21:56:34.031]: CallTriggerURLs> ERROR: Could not trigger URL '', please check if '' is correct and reachable: Value cannot be null. | Parameter name: address [ArgumentNullException] Mod: CallTriggerURLs(String[] trigger_urls) Line:993:21
[21:56:34.088]: Save> Settings saved to C:\Users\Chris\Documents\AI Tool\Release\AITool.Settings.json
[21:56:34.088]: DetectObjects> 127.0.0.1:82 - (6/6) Camera Drive caused a false alert, nothing detected.
[21:56:34.102]: DetectObjects> 127.0.0.1:82 - Adding false to history list.
[21:56:34.113]: DetectObjects> 127.0.0.1:82 - ...Object detection finished:
[21:56:34.115]: DetectObjects> 127.0.0.1:82 - Total Time: 2432ms (Count=1, Min=2432ms, Max=2432ms, Avg=2432ms)
[21:56:34.118]: DetectObjects> 127.0.0.1:82 - DeepStack Time: 2279ms (Count=1, Min=2279ms, Max=2279ms, Avg=2279ms)
[21:56:34.121]: DetectObjects> 127.0.0.1:82 - File lock Time: 0ms (Count=0, Min=0ms, Max=0ms, Avg=ms)
[21:56:34.123]: DetectObjects> 127.0.0.1:82 - Image Queue Time: 12ms (Count=1, Min=12ms, Max=12ms, Avg=12ms)
[21:56:34.127]: DetectObjects> 127.0.0.1:82 - Image Queue Depth: 1 (Count=1, Min=1, Max=1, Avg=1)
[21:56:34.132]: ImageQueueLoop> ...Task at index 0 done.
[21:56:34.134]: ImageQueueLoop> Done processing current image queue.

Interface cut off at bottom of History tab

I'm running v1.77 and the bottom of the History tab is cut off so I cannot access the checkboxes for "Only Relevant Alerts" and "Only False/Irrelevant Alerts." Below are two screenshots (default window size and maximized) where you can barely see the first checkbox visible. My screen resolution is pretty low at 1920x1080, if that's relevant.

Screenshot 2020-09-19 164723

Screenshot 2020-09-19 164744

In addition, for some reason, I'm seeing "All Cameras" listed twice in the filter list. Once at the top and once at the bottom. I assume this is a config error on my end, but please let me know how to remove the duplicate.

Screen Shot 2020-09-19 at 04 28 25 PM@2x

Thank you again for all the great work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.