Peer-to-peer surveillance camera architecture using shared metadata datastore
Systems, video cameras, and methods for a peer-to-peer surveillance camera architecture using a shared metadata datastore are described. Each video camera may be configured to detect objects of interest in the video data captured by their respective image sensors and selectively upload metadata from object detection events to the shared metadata datastore. Responsive to detecting an object of interest, each camera may also use the metadata from the object detection to query the datastore for similar events detected by other video cameras. Responsive to the query, the video camera may receive a peer camera identifier and initiate peer-to-peer communication with the identified peer video camera to exchange video metadata directly with that peer video camera.
1 . A system, comprising:
a first video camera comprising:
a network interface configured for communication over a network, wherein the first video camera is a video camera of a plurality of networked video cameras configured for communication over the network;
an image sensor configured to selectively capture video data;
a non-volatile storage medium configured to store video data captured by the image sensor;
a controller circuit configured to:
detect, from the video data, an object of interest;
determine, based on the object of interest, a set of metadata corresponding to the object of interest;
send, over the network and to a peer metadata datastore, a query comprising selected metadata from the set of metadata;
receive, responsive to the query, at least one peer camera identifier for at least one other video camera in the plurality of networked video cameras;
send, responsive to receiving the at least one peer camera identifier, an alert message to a second video camera of the at least one other video camera in the plurality of networked video cameras; and
receive, responsive to the alert message and from the second video camera, a set of peer metadata for an object detection event by the second video camera.
2 . The system of claim 1 , further comprising:
the plurality of networked video cameras, wherein:
each video camera of the plurality of networked video cameras is configured with a network address;
the at least one peer camera identifier comprises at least one network address corresponding to that at least one other video camera; and
sending the alert message to the second video camera uses the network address of the second video camera.
3 . The system of claim 2 , wherein, responsive to the alert message, a second video camera is further configured to determine, based on the alert message:
the network address for the first video camera;
a timestamp corresponding to the object detection event by the second video camera; and
the set of peer metadata for the object detection event.
4 . The system of claim 3 , wherein the first video camera is further configured to, responsive to the set of peer metadata for the object detection event:
determine at least one video capture parameter from the set of peer metadata;
modify, based on the at least one video capture parameter, video capture operations; and
capture, using the modified video capture operations, additional video data.
5 . The system of claim 1 , wherein:
the first video camera is further configured to:
determine at least one object detection event corresponding to the object of interest detected by the first video camera; and
send, to the second video camera, at least one set of peer metadata for the at least one object detection event by the first video camera;
the second video camera is further configured to:
determine, based on the at least one set of peer metadata from the first video camera, the object detection event by the second video camera corresponding to the object of interest detected by the second video camera; and
determine the set of peer metadata for the at object detection event by the second video camera; and
the first video camera and the second video camera are further configured to modify corresponding video capture operations to increase a likelihood of capturing the object of interest.
6 . The system of claim 1 , further comprising:
the peer metadata datastore, wherein the peer metadata datastore comprises:
a non-volatile memory configured to store metadata from the plurality of networked video cameras structured in a key-value memory architecture; and
a processor configured to:
receive metadata uploads from the plurality of networked video cameras;
store metadata from the metadata uploads in the key-value memory architecture;
process queries from the plurality of networked video cameras against the key-value memory architecture; and
return, responsive to the queries, corresponding responses to the plurality of networked video cameras.
7 . The system of claim 6 , wherein:
a key of the key-value memory architecture comprises:
a peer camera identifier; and
a network address corresponding to the peer camera identifier; and
the corresponding responses comprise at least the network address of a video camera of the networked video cameras corresponding to a set of metadata in that query matching a set of metadata in the key-value memory architecture.
8 . The system of claim 7 , wherein the key of the key-value memory architecture further comprises at least one identifier corresponding to a hierarchical topology of the plurality of networked video cameras.
9 . The system of claim 6 , wherein:
a value of the key-value memory architecture comprises a set of metadata corresponding to an object detection event by a video camera of the plurality of networked video cameras indicated by a corresponding key; and
the set of metadata comprises:
at least one gradient from a video frame corresponding to a detected object of interest in the video frame;
a timestamp for the video frame; and
at least one object tag corresponding to the detected object of interest.
10 . The system of claim 1 , wherein
the controller circuit comprises:
a processor;
a memory; and
an object detection model configured for execution by the processor using the memory; and
the object detection model comprises a neural network:
sized for the memory and processor using at least one process selected from:
quantization;
pruning; and
model compression; and
using pretrained parameters for the object of interest originating outside of the controller circuit.
11 . A computer-implemented method, comprising:
detecting, by a first video camera and from video data captured by an image sensor of the first video camera, an object of interest, wherein:
the first video camera is a video camera among a plurality of networked video cameras configured for communication over a network; and
each video camera of the plurality of networked video cameras comprises a non-volatile storage medium configured to store video data captured by an image sensor of that video camera;
determining, by the first video camera, at least one object detection event corresponding to the object of interest detected by the first video camera;
determining, by the first video camera and based on the object of interest, a set of metadata corresponding to the object of interest;
sending, by the first video camera to a peer metadata datastore over the network, a query comprising selected metadata from the set of metadata;
receiving, by the first video camera and responsive to the query, a peer camera identifier for a second video camera in the plurality of networked video cameras;
initiating, by the first video camera and responsive to receiving the peer camera identifier, network communication with the second video camera in the plurality of networked video cameras;
sending, by the first video camera to the second video camera, at least one set of peer metadata for the at least one object detection event by the first video camera, wherein the second video camera is configured to determine at least one object detection event corresponding to the object of interest detected by the second video camera; and
receiving, by the first video camera and from the second video camera, at least one set of peer metadata for the at least one object detection event by the second video camera.
12 . The computer-implemented method of claim 11 , further comprising:
determining, by the first video camera and based on the peer camera identifier, a network address for the second video camera; and
sending, by the first video camera, an alert message to the network address corresponding to the second video camera, wherein each video camera of the plurality of networked video cameras is configured with:
a corresponding network address for that video camera; and
a corresponding peer camera identifier comprising the corresponding network address for that video camera.
13 . The computer-implemented method of claim 12 , further comprising, responsive to the alert message:
determining, by the second video camera and based on the alert message:
the network address for the first video camera; and
a timestamp corresponding to an object detection event of the second video camera;
determining, by the second video camera and based on the timestamp, a set of peer metadata for the object detection event; and
sending, by the second video camera to the first video camera, the set of peer metadata for the object detection event.
14 . The computer-implemented method of claim 13 , further comprising, responsive to receiving the set of peer metadata for the object detection event:
determining, by the first video camera, at least one video capture parameter from the set of peer metadata;
modifying, by the first video camera and based on the at least one video capture parameter, video capture operations; and
capturing, by the first video camera and using the modified video capture operations, additional video data.
15 . The computer-implemented method of claim 11 , further comprising:
modifying, by the first video camera and based on the at least one set of peer metadata for the at least one object detection event by the second video camera, corresponding video capture operations to increase a likelihood of capturing the object of interest at the first video camera; and
modifying, by the second video camera and based on the at least one set of peer metadata for the at least one object detection event by the first video camera, corresponding video capture operations to increase a likelihood of capturing the object of interest at the second video camera.
16 . The computer-implemented method of claim 11 , further comprising:
receiving, by the peer metadata datastore, metadata uploads from the plurality of networked video cameras;
storing, by the peer metadata datastore, metadata from the metadata uploads in a key-value memory architecture in a non-volatile memory of the peer metadata datastore;
processing, by the peer metadata datastore, queries from the plurality of networked video cameras against the key-value memory architecture; and
returning, by the peer metadata datastore and responsive to the queries, corresponding responses to the plurality of networked video cameras.
17 . The computer-implemented method of claim 16 , further comprising:
comparing a set of metadata in a query to sets of metadata in the key-value memory architecture, wherein:
a key of the key-value memory architecture comprises:
a peer camera identifier; and
a network address corresponding to the peer camera identifier; and
the corresponding responses comprise the network address of a video camera of the networked video cameras corresponding to the set of metadata in that query matching a set of metadata in the key-value memory architecture having a key corresponding to that video camera.
18 . The computer-implemented method of claim 17 , wherein the key of the key-value memory architecture further comprises at least one identifier corresponding to a hierarchical topology of the plurality of networked video cameras.
19 . The computer-implemented method of claim 16 , wherein:
a value of the key-value memory architecture comprises a set of metadata corresponding to an object detection event by a video camera of the plurality of networked video cameras indicated by a corresponding key; and
the set of metadata comprises:
at least one gradient from a video frame corresponding to a detected object of interest in the video frame;
a timestamp for the video frame; and
at least one object tag corresponding to the detected object of interest.
20 . A system, comprising:
a plurality of networked video cameras comprising a first video camera and a second video camera, wherein:
the plurality of networked video cameras is configured for communication over a network; and
each video camera of the plurality of networked video cameras comprises a non-volatile storage medium configured to store video data captured by an image sensor of that video camera;
means for detecting, by the first video camera and from the video data captured by the image sensor of the first video camera, an object of interest;
means for determining, by the first video camera and based on the detected object of interest, a set of metadata corresponding to the object of interest;
means for sending, by the first video camera to a peer metadata datastore over the network, a query comprising selected metadata from the set of metadata, wherein the selected metadata comprises at least one gradient from a video frame corresponding to the detected object of interest in the video frame;
means for receiving, by the first video camera and responsive to the query, a peer camera identifier for a second video camera in the plurality of networked video cameras, wherein the second video camera was identified from the peer metadata datastore based on the at least one gradient corresponding to a stored gradient for a video frame captured by the second video camera; and
means for initiating, by the first video camera and responsive to receiving the peer camera identifier, network communication with the second video camera in the plurality of networked video cameras.