I have a solution for object detection in videos I'd like to put in front of you all. I have been very frustrated with the false positives in my home 2-cam + BI setup. I can't seem to tune the triggers to account for wind, rain, the sun behind clouds and other things like that. My alerts are basically useless because of all the false positives.
Recently, I have discovered Amazon's Rekognition and Google's Vision AI services that do image recognition in videos and images. Both of these return labels such as "Car", "Person" and "Animal" when they scan images. I thought I could generate alerts only when objects I care about are detected. I do a little bit of software development and I know the AWS cloud services pretty well and decided to give it a go. What I ended up with is pretty useful to me and may be useful for others as well.
What you see below is delivered to me in email 3 minutes after a Blue Iris trigger is done. It shows the trigger image, clickable to view the video, all the objects detected by Amazon and Google and their confidence, 0-100, in their object detection. The numbers in the brackets are object detection confidence for each of the images being analyzed. Since video analysis is expensive at $0.10 per minute, I set up BI to capture images every 5 seconds along with the video during an event. Using a series of images rather than just one dramatically improved the object detection for the event.
What you don't see is that both Google and Amazon detect 20-30 objects in this view even when nothing is going on. I have set up an ignore list so the normal things like "asphalt" and "trees" are ignored. Alerts are emailed to me only when there is an object detected that isn't on my ignore list.
It was a fun hobby project and is useful for me. I am tending to use these more for a summary of activity like a morning report of what happened at my house last night than for actionable alerts. Nevertheless, I can now actually see what is happening rather than pouring through false positives.
I build this for myself so it is not really usable by anyone else without doing some work to make it more generic but if there is any interest, I can answer questions, share code, or just talk more about how I implemented this.
Cheers!
Recently, I have discovered Amazon's Rekognition and Google's Vision AI services that do image recognition in videos and images. Both of these return labels such as "Car", "Person" and "Animal" when they scan images. I thought I could generate alerts only when objects I care about are detected. I do a little bit of software development and I know the AWS cloud services pretty well and decided to give it a go. What I ended up with is pretty useful to me and may be useful for others as well.
What you see below is delivered to me in email 3 minutes after a Blue Iris trigger is done. It shows the trigger image, clickable to view the video, all the objects detected by Amazon and Google and their confidence, 0-100, in their object detection. The numbers in the brackets are object detection confidence for each of the images being analyzed. Since video analysis is expensive at $0.10 per minute, I set up BI to capture images every 5 seconds along with the video during an event. Using a series of images rather than just one dramatically improved the object detection for the event.
What you don't see is that both Google and Amazon detect 20-30 objects in this view even when nothing is going on. I have set up an ignore list so the normal things like "asphalt" and "trees" are ignored. Alerts are emailed to me only when there is an object detected that isn't on my ignore list.
It was a fun hobby project and is useful for me. I am tending to use these more for a summary of activity like a morning report of what happened at my house last night than for actionable alerts. Nevertheless, I can now actually see what is happening rather than pouring through false positives.
I build this for myself so it is not really usable by anyone else without doing some work to make it more generic but if there is any interest, I can answer questions, share code, or just talk more about how I implemented this.
Cheers!