Facial Recognition / ANPR

AnthonyOwen
Conversationalist

Facial Recognition / ANPR

Morning all,

 

I'm looking at a deployment of MV cameras to allow for facial recognition (internal and external cameras) and ANPR (external cameras only). Does anyone have any documentation on the 3rd party products that would be required to allow for this functionallity? Looking at MV72 and mainly MV32W for the hardware.

 

Many thanks

16 Replies 16
Roska
A model citizen

Curious to hear your use case. Check out this doc https://developer.cisco.com/meraki/mv-sense/#!mqtt/what-is-mqtt

Julian
Getting noticed

check this post: https://community.meraki.com/t5/Smart-Cameras/meraki-mqtt-alpr-A-program-that-uses-MV-to-do-people-v...

 

I did some test with vehicles, for facial recognition i suppose is going to be similar, you can get a screenshot and forward to an api to do the recognition (https://aws.amazon.com/rekognition/)

 

 

 

 

PhilipDAth
Kind of a big deal
Kind of a big deal

I've written an ANPR integration for openalpr.com and platrecognizer.com.  I'd personally recommend platerecognizer.com - cheaper and better.

https://www.ifm.net.nz/cookbooks/meraki-icu.html 

 

The same script can also use Amazon AWS Rekognition to identify a persons age range, gender and emotional state.

 

 

I'm playing with facial recognition (using Amazon AWS Rekognition).  Not sure if I'll release that publicly or not.  The potential for abuse is much higher.

 

 

For ANPR make sure you use the MV72X or MV72.  Try and get the MV72X if you can.  The greater the detail the better.

 

For people recognition try and spring for an MV22X.  If that is too expensive then you can use an MV12 (or any second generation camera).  The camera needs to be able to capture a good full on picture of the persons face and it should fill most of the frame.  You don't want to be capturing images from high above or on a great angle.

Ricardo_Soares
Comes here often

I have performed AWS recognition tests with Meraki cameras, but I found two limitations. First one is related the availability of images. When I ask Meraki Cloud to donwload an image, the hiperlink is genereted in real time, but the image is available after two minutes. Second is related with timestamp, I only can ask one frame per second, I cant ask a timestamp in terms of millisecond - for example I would like 12 frames per second, but I can only ask 1 frame per second. Is it a characteristic of the solution or a interpretation error by my self?

PhilipDAth
Kind of a big deal
Kind of a big deal

>\the hiperlink is genereted in real time, but the image is available after two minutes.

 

There is some delay in requesting the image.  I typically start off by waiting 10s, and then double it each subsequent try, and give up after 10 tries.

Sometimes you can get the images quickly (like after 10s).

 

>but I can only ask 1 frame per second. Is it a characteristic of the solution or a interpretation error by my self?

 

I typically get the images at 500ms intervals.  Note that you can make a maximum of 5 concurrent API requests.

 

You'll need to use an async based system to get them at this speed as well.  I use node.js when performance is an issue.  The new Python AIO support should be able to do it this quickly as well.

 

You wont be able to manage this speed using the standard SDK without using AIO.

Ricardo_Soares
Comes here often

What timestamp format do you use to get images with 500ms?

PhilipDAth
Kind of a big deal
Kind of a big deal

ISO 8601

Ricardo_Soares
Comes here often

Ok.. ISO 8601 is mandatory. But could you share an example of a timestamp tos ask milliseconds? For example:

 

--data '{ "timestamp": "2020-08-03T09:20:04", "fullframe": false }'

 

in this case I am asking for the four second. How should I write this timestamp to get the 04 and half secound for example?

PhilipDAth
Kind of a big deal
Kind of a big deal

--data '{ "timestamp": "2020-08-03T09:20:04.500", "fullframe": false }'

Ricardo_Soares
Comes here often

Tks.. I will try it.

Ricardo_Soares
Comes here often

Philip, I really appreciate your attention. So thank you a lot. 

 

a really appreciate your attention. I trying construct the following snapshots:

 

payload = {
"timestamp" : "2020-08-06T13:05:24-03:00",
"fullframe" : False
}
payload = {
"timestamp" : "2020-08-06T13:05:24.500-03:00",
"fullframe" : False
}

 

payload = {
"timestamp" : "2020-08-06T13:05:25-03:00",
"fullframe" : False
}
payload = {
"timestamp" : "2020-08-06T13:05:25.500-03:00",
"fullframe" : False
}

 The case is that the frame available for download in the half second is exactly the same as the entire second.

 

For example: the ...24.500 is the same frame as ...24. And ...25.500 is the same as ...25. I don't know what is wrong, or if is it a characteristic of the Meraki solution.

 

Could you help me?

PhilipDAth
Kind of a big deal
Kind of a big deal

Try setting up an MQTT server (use Mosquito, free and super popular).  Have a look at the timestamps it produces.

 

I use the timestamps from the MQTT messages to request the snapshots.

 

 

I don't understand the format:

"2020-08-06T13:05:24.500-03:00"

Why would you have -03:00 there?  That doesn't seem valid to me.

Ricardo_Soares
Comes here often

Huuumm I am trying geneterate a POST request. I don't have captured via Mosquito. I will try it. 

 

The -03:00 is the time zone. I am in Brazil, than my time zone is GMT-3.

PhilipDAth
Kind of a big deal
Kind of a big deal

I think all times are UTC.  I'm not sure if you can put a timezone on.  Might work.  Don't know.

Ricardo_Soares
Comes here often

Philip,

Here is my results: Step by step

 

I have implemented Mosquito server. They has generated the following intraseconds timestamps:

 

# /merakimv/[serial oculted]/raw_detections b'{"ts":1596807750359,"objects":[{"frame":21456,"oid":10,"x0":0.479,"x1":0.404,"y0":0.313,"y1":0.0481,"type":"person"}]}'
# /merakimv/[serial oculted]/raw_detections b'{"ts":1596807750557,"objects":[{"frame":21458,"oid":10,"x0":0.484,"x1":0.412,"y0":0.313,"y1":0.06,"type":"person"}]}'
# /merakimv/[serial oculted]/raw_detections b'{"ts":1596807750757,"objects":[{"frame":21460,"oid":10,"x0":0.48,"x1":0.41,"y0":0.313,"y1":0.0659,"type":"person"}]}'
# /merakimv/[serial oculted]/raw_detections b'{"ts":1596807750959,"objects":[{"frame":21462,"oid":10,"x0":0.487,"x1":0.409,"y0":0.316,"y1":0.0332,"type":"person"},{"frame":21462,"oid":11,"x0":0.341,"x1":0.202,"y0":0.724,"y1":0.213,"type":"person"}]}'

 

I did normalize to: 

 

2020-08-07T10:42:30.359
2020-08-07T10:42:30.557
2020-08-07T10:42:30.757
2020-08-07T10:42:30.959

 

I did create four POST requests with it. The result was four url links to the exact same image. Then I am asking my self, and you: Is possible capture snapshot intrasecond? How can I achieve this goal?

BobaTeaGood
Getting noticed

Anthony - go ahead and give Plate Recognizer a (free) try for ANPR on a Meraki camera.  The integration is found here: https://platerecognizer.com/integrations/meraki/

Get notified when there are additional replies to this discussion.
Welcome to the Meraki Community!
To start contributing, simply sign in with your Cisco account. If you don't yet have a Cisco account, you can sign up.