WO2021146617A1 - Image based aquatic alert system - Google Patents

Image based aquatic alert system Download PDF

Info

Publication number
WO2021146617A1
WO2021146617A1 PCT/US2021/013724 US2021013724W WO2021146617A1 WO 2021146617 A1 WO2021146617 A1 WO 2021146617A1 US 2021013724 W US2021013724 W US 2021013724W WO 2021146617 A1 WO2021146617 A1 WO 2021146617A1
Authority
WO
WIPO (PCT)
Prior art keywords
swimmer
swimming pool
criterion
tracked
camera
Prior art date
Application number
PCT/US2021/013724
Other languages
French (fr)
Inventor
Sai Akhil Reddy Konakalla
Satya Abhiram THELI
Original Assignee
Angarak, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Angarak, Inc. filed Critical Angarak, Inc.
Priority to EP21741395.4A priority Critical patent/EP4091146A4/en
Priority to US17/427,043 priority patent/US12073703B2/en
Publication of WO2021146617A1 publication Critical patent/WO2021146617A1/en

Links

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B21/00Alarms responsive to a single specified undesired or abnormal condition and not otherwise provided for
    • G08B21/02Alarms for ensuring the safety of persons
    • G08B21/08Alarms for ensuring the safety of persons responsive to the presence of persons in a body of water, e.g. a swimming pool; responsive to an abnormal condition of a body of water
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/62Extraction of image or video features relating to a temporal dimension, e.g. time-based feature extraction; Pattern tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/762Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/44Event detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/52Surveillance or monitoring of activities, e.g. for recognising suspicious objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • H04N7/188Capturing isolated or intermittent images triggered by the occurrence of a predetermined event, e.g. an object reaching a predetermined position
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20076Probabilistic image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30242Counting objects in image
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B29/00Checking or monitoring of signalling or alarm systems; Prevention or correction of operating errors, e.g. preventing unauthorised operation
    • G08B29/18Prevention or correction of operating errors
    • G08B29/185Signal analysis techniques for reducing or preventing false alarms or for enhancing the reliability of the system
    • G08B29/186Fuzzy logic; neural networks

Definitions

  • This disclosure generally relates to an aquatic alert system. More specifically, this disclosure relates to image based systems and methods for event detection in an aquatic setting.
  • Reducing, avoiding, or preventing death and/or serious injury from drowning in a swimming pool may be difficult by manually monitoring a swimming pool (e.g., with a lifeguard, with a safety personnel, with a guardian). For example, it may be difficult and/or costly for lifeguards to continuously and accurately monitor a swimming pool to reduce the risk of drowning or identify risky behavioral swimming (e.g., doggy paddling, underwater swimming). Solutions exist that may help reduce this risk by assisting the human lifeguard, but they are costly (e.g., high hardware cost, high cost of installation, long installation time), not sufficiently accurate (e.g., high false alarm rates), or both.
  • a wireless camera may be used for monitoring a swimming pool.
  • the camera s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited and power consumption can be high; a limited power source while monitoring may cause interrupted service.
  • a system comprises: a video camera configured to capture frames of a swimming pool; a computing system configured to communicate with the camera and including a processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction
  • the instructions further comprise: determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
  • the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers.
  • the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects.
  • the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
  • the criterion dynamically updates based on a depth corresponding to the swimmer’s position in the swimming pool.
  • the criterion dynamically updates based a distance of the swimmer from the camera.
  • the criterion dynamically updates based on a surrounding brightness of a camera view.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
  • the instructions further comprise generating an alert associated with the event in response to the generated detection signal.
  • the system further comprises a wearable device, wherein the instructions further comprise transmitting the generated alert to the wearable device.
  • the computing system comprises a user interface
  • the instructions further comprise: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
  • the computing system comprises a user interface
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer
  • the instructions further comprise: selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
  • the instructions further comprise: tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
  • the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
  • identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
  • the system further comprises solar panels configured to charge the camera.
  • the instructions further comprise storing the captured frames in the computing system.
  • the computing system and the camera are configured to communicate wirelessly.
  • the receiving of the frames with the video camera includes using one of real time streaming protocol (RTSP), HTTP, HTTPS, and SDP.
  • RTSP real time streaming protocol
  • HTTP HyperText Transfer Protocol
  • HTTPS HyperText Transfer Protocol
  • SDP Session Transfer Protocol
  • the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
  • the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
  • the instructions further comprises: identifying a difference between the background pixels at a first time and the background pixels at a second time, and dynamically updating the criterion based on the difference.
  • the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
  • a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block
  • the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
  • MRF Markov Random Field
  • the instructions further comprise updating the criterion based on a user input.
  • the instructions further comprise updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
  • the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
  • the instructions further comprise determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
  • a method comprises: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels corresponds to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the
  • the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
  • the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the criterion is met when a number of detected foreground objects is less than the number of swimmers. [0040] In some embodiments, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the number of swimmers is a number of detected foreground objects.
  • the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
  • the method further comprises dynamically updating the criterion based on a depth corresponding to the swimmer’s position in the swimming pool.
  • the method further comprises dynamically updating the criterion based a distance of the swimmer from the camera.
  • the method further comprises dynamically updating the criterion based on a surrounding brightness of a camera view.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
  • the method further comprises generating an alert associated with the event in response to the generated detection signal.
  • the method further comprises transmitting the generated alert to a wearable device.
  • the computing system comprises a user interface
  • the method further comprises: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
  • the method further comprises determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer; selecting, on a user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
  • the method further comprises tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
  • the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
  • identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
  • the method further comprises using solar panels to charge the camera.
  • the method further comprises storing the captured frames in a computing system.
  • the computing system and the camera are configured to communicate wirelessly.
  • the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
  • the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP.
  • the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
  • the method further comprises identifying a difference between the background pixels at a first time and the background pixels at a second time, and dynamically updating the criterion based on the difference.
  • the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
  • a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block
  • the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
  • MRF Markov Random Field
  • the method further comprises updating the criterion based on a user input.
  • the method further comprises updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers .
  • the method further comprises determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and wherein in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
  • a non-transitory computer readable storage medium stores one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform any of the above methods.
  • a system includes: a video camera configured to capture frames of a swimming pool; a processor and a memory collocated with the video camera; a computing system configured to remotely communicate with the processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: determining whether a swimmer is in the swimming pool; in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system; and in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction.
  • transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time.
  • determining whether a swimmer is in the swimming pool includes: receiving frames from the video camera; identifying foreground pixels in the frames; and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool.
  • the computing system includes an Open Network Video Interface Forum (ONVIF)/ RTSP bridge configured to receive the captured frames.
  • ONVIF Open Network Video Interface Forum
  • the computing system is configured to wirelessly communicate with the video camera.
  • the system further includes: an alarm configured to generate an alert associated with an event associated with the swimmer; and a router configured to wirelessly communicate with the computing system and the alarm over a first network connection.
  • the router is configured to wirelessly communicate with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
  • the program further includes instructions for: receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device.
  • the program further includes instructions for: receiving frames from the video camera; identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool; identifying a contour bordering the area in the one of the frames; and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames.
  • the pixels associated with the swimming pool are at least one of blue pixels and light green pixels.
  • the program further includes instructions for in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera.
  • the program further includes instructions for: in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination; and in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
  • the system further includes a sensor configured to detect an angle and a distance of an object relative to the sensor.
  • the swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range.
  • the senor is a passive infrared sensor (PIR) sensor includes a Fresnel lens.
  • PIR passive infrared sensor
  • the program further includes instructions for: capturing the frames with the video camera; and identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool, wherein the angle range and the distance range correspond to the identified area.
  • the area including the threshold amount of pixels are inside a contour of the swimming pool.
  • the computing system includes a second processor and a second memory, and a second program is stored in the second memory, configured to be executed by the second processor, and including instructions for: receiving the captured frames; and determining, based on the received captured frames, occurrence of an event associated with the swimmer.
  • the system further includes an alarm configured to generate an alert in response to receiving an event detection signal, wherein the second program includes instructions further for in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm.
  • the video camera includes the processor and the memory.
  • a method includes steps the above systems are configured to perform.
  • a non-transitory computer readable storage medium storing one or more programs, the one or more programs including instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform the above method.
  • FIG. 1 illustrates an aquatic alert system, in accordance with an embodiment.
  • FIG. 2 illustrates an aquatic alert system, in accordance with an embodiment.
  • FIG. 3 illustrates a method of operating an aquatic alert system, in accordance with an embodiment.
  • FIG. 4 illustrates an aquatic alert system, in accordance with an embodiment.
  • FIGS. 5A-5C illustrate an aquatic alert system, in accordance with an embodiment.
  • FIG. 6 illustrates a method of operating an aquatic alert system, in accordance with an embodiment.
  • FIG. 7 illustrates a computing device, in accordance with an embodiment.
  • FIG. 1 illustrates an aquatic alert system, in accordance with an embodiment.
  • the aquatic alert system may include camera 102 and alarm devices 104 A, 104B, and 104C and may be installed in a facility that includes swimming pool 100.
  • the aquatic alert system is illustrated to include one camera, it is understood that the aquatic alert system may include more than one camera without departing from the scope of the disclosure.
  • the aquatic alert system may be used to help a safety personnel or a lifeguard better or more quickly determine whether someone is risk swimming, distress swimming, or drowning.
  • the alarm device may be a display configured to visually alert occupants of the facility (e.g., lifeguard 110, swimmers 112, other occupants 114) that an event has been detected, in response to a generated detection signal.
  • the alarm device may be a speaker system configured to audibly alert occupants of the facility that an event has been detected, in response to a generated detection signal.
  • the alarm device may be a portable device (e.g., a smartwatch, a phone, a tablet) configured to alert (e.g., visual alert, audio alert, haptic alert) a user (e.g., lifeguard 110, a facility safety personnel, a facilities manager, a homeowner, a guardian of the swimmer involved in the event), in response to a generated detection signal.
  • a swimmer may be a body (e.g., a person, an animal) in the swimming pool.
  • the camera 102 and the alarm devices 104A, 104B, and 104C may be connected over a wireless network (e.g., WiFi, a mobile network, an intranet) to communicate with a computing device (not shown) for processing data (e.g., video captured from the camera) and transmitting a detection signal to the alarm devices.
  • the camera 102 includes a processor and memory storing a program including instructions for the processor to process the data, analyze the data, and transmit the detection signal to the alarm devices.
  • the camera 102 includes a solar panel configured to charge a battery in the camera.
  • the camera 102 may be configured to be installed on a wall or a mount.
  • a lifeguard may not be able to monitor each swimmer in the swimming pool at all times (e.g., when the swimming pool is crowded, when staffing is low).
  • the camera may advantageously assist the lifeguard by continuously monitoring the entire swimming pool.
  • the aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) equal or quicker than the lifeguard’s determination. For example, the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time.
  • the camera is separate from a computing system configured to process images captured by the camera (e.g., the cameras are provided by the pool facilities, a separate off-the-shelf camera is used).
  • the facility may be indoor or outdoor.
  • the facility may be an indoor swimming pool, an outdoor swimming pool, a swimming pool in a private home, a spa, or an open body of water (e.g., a beach, ocean, lake, river).
  • the event detection algorithm may vary depending on the facility (e.g., lighting conditions).
  • the disclosed aquatic alert system and methods of operating the aquatic alert system allow the system to monitor the swimming pool continuously in real-time (e.g., 24x7 monitoring), to be trained without supervision, to accurately recognize all swimmers, to accurately track all swimmers, and to detect an event (e.g., a drowning event, risk swimming, distress event) and provide an alarm accurately (e.g., low false alarm rates) and quickly (e.g., faster than a scenario with lifeguards and without this system).
  • an event e.g., a drowning event, risk swimming, distress event
  • an alarm accurately e.g., low false alarm rates
  • quickly e.g., faster than a scenario with lifeguards and without this system.
  • the disclosed aquatic alert system may detect a drowning event in less than 10 seconds, increasing the chance that the drowning swimmer can be rescued without harm.
  • the system when used in conjunction with lifeguards, the system may increase a percentage of successful rescue from 16% to above 80%.
  • FIG. 2 illustrates an aquatic alert system 200, in accordance with an embodiment.
  • the aquatic alert system 200 may be used in the facilities disclosed herein.
  • the aquatic alert system 200 includes camera 202, processor 204, memory 206, user interface 210, assistance device 212, alarm device 214, and display 216. Elements of the aquatic alert system 200 may be connected with communication link 218.
  • the communication link 218 is wireless.
  • the communication link 218 represents a wireless network, and the wireless network includes a wireless router.
  • the communication link 218 may be a WiFi, Bluetooth, or mobile network (e.g., 4G, LTE, 5G).
  • the communication link 218 may be a wired link.
  • Elements of the aquatic alert system 200 may be included in subsystems.
  • the processor 204 and memory 206 may be included in a computing device (e.g., a computer, a server, a cloud computing device), separate from the other elements, where data (e.g., video frames) from the camera 202 is processed and analyzed and a detection signal to activate the alarm device may be transmitted, depending on the analysis.
  • the computing device transmits a video stream in response to receiving a query from an application of another device.
  • the computing system and the camera are configured to communicate wirelessly.
  • the computing device is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
  • the aquatic alert system 200 includes a first computing device (e.g., a base station, a computer) in a same local network as the camera 202 for initially processing video frames from the camera and a second computing device not in the local network (e.g., a server, a cloud computing device) for subsequently processing the video frames and transmitting a video stream in response to receiving a query from an application of a third device.
  • the processor 204 and memory 206 may be included in the camera 202. That is, the processing and analysis of data (e.g., video frames) received from the camera 202 may be performed by the camera itself without a separate computing device. Depending on the analysis, the camera 202 may transmit a detection signal to the assistance device 212 and/or alarm device 214 (e.g., a swimmer is determined to be drowning, and the camera transmits the signal to activate the assistance device 212 and/or alarm device 214).
  • the assistance device 212 and/or alarm device 214 e.g., a swimmer is determined to be drowning
  • the aquatic alert system 200 may not include a camera, and the camera is separate from elements (e.g., elements of a computing system) configured to process images captured by the camera (e.g., the cameras are provided by the pool facilities, a separate off-the-shelf camera is used).
  • elements e.g., elements of a computing system
  • the cameras are provided by the pool facilities, a separate off-the-shelf camera is used.
  • the aquatic alert system 200 may be used as illustrated in FIG. 1.
  • camera 202 may be camera 102 and alarm device 214 may be at least one of alarm devices 104.
  • the alarm device 214 may provide a visual, audio, or haptic alert indicating that a swimmer is drowning.
  • the system based on whether a criterion is met (described in more detail below), the system generates a detection signal that causes an alarm device 214 to present an alarm (e.g., to a lifeguard, to a safety personnel, to a guardian of the drowning swimmer, to a facilities manager, to a homeowner).
  • the aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) and generate an alert equal or quicker than the lifeguard’s determination. For example, the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time. As a result, the lifeguard may be able to act accordingly (e.g., help the drowning swimmer) quickly.
  • an event e.g., drowning
  • the lifeguard may be able to act accordingly (e.g., help the drowning swimmer) quickly.
  • the assistance device 212 may be a life saving device (e.g., a rescue robot, the EMILY Hydronalix Rescue Robot) or a buoyancy device (e.g., a device that can lift a person experiencing a drowning event above the water).
  • the assistance device 212 is activated or made available to a user of the system (e.g., a lifeguard, a safety personnel, a facilities manager, a homeowner, a guardian of the drowning swimmer) in response to generation of a detection signal (e.g., the system determines that someone is drowning, and the system activates or makes the assistance device available to rescue the actively drowning swimmer).
  • a detection signal e.g., the system determines that someone is drowning, and the system activates or makes the assistance device available to rescue the actively drowning swimmer.
  • the display 216 may be a touch screen and configured to display the user interface 210.
  • the user interface 210 is separately presented from the display 216.
  • the user interface 210 may be configured to receive an input from a user (e.g., a touch input, a button input, a voice input), and a setting of the system may be updated in response to receiving the input from the user. Methods of operating the user interface 210 is described in more detail with respect to FIG. 3.
  • the user interface allows a user to efficiently configure the system and customize a likelihood of event detection based on the user’s requirements.
  • the display 216 may be integrated with the camera 202. In some examples, the display 216 may be included with a computer system that includes processor 204 and memory 206. In some examples, the display 216 may be a device separate from the camera 202, processor 204, and memory 206.
  • the memory 206 includes data 208A and program 208B.
  • the data 208A and/or program 208B may store instructions to cause the processor 204 to perform the methods disclosed herein (e.g., methods of operating the aquatic alert system 200, method 300).
  • the data 208A is part of a storage system of a computer system or an online storage system, and the captured frames are stored in a storage system of the computer system or an online storage system.
  • FIG. 3 illustrates a method 300 of operating an aquatic alert system, in accordance with an embodiment.
  • the method 300 is performed with a system comprising a video camera configured to capture frames of a swimming pool (e.g., camera 102, camera 202), a computing system configured to communicate with the camera and including a processor and memory (e.g., as described with respect to FIGS. 1, 2, and 4); and a program stored in the memory, configured to be executed by the processor and including instructions to perform the method.
  • a system comprising a video camera configured to capture frames of a swimming pool (e.g., camera 102, camera 202), a computing system configured to communicate with the camera and including a processor and memory (e.g., as described with respect to FIGS. 1, 2, and 4); and a program stored in the memory, configured to be executed by the processor and including instructions to perform the method.
  • a system comprising a video camera configured to capture frames of a swimming pool (e.g., camera 102, camera 202), a computing
  • the method 300 includes step 302, receiving the frames captured with the video camera.
  • the camera 102 or camera 202 receives frames of a video feed of the swimming pool.
  • the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently (e.g., sliding window method to process video).
  • the background pixels, foreground pixels, and the swimming pool information may be identified using a real-time streaming video of swimming pool.
  • the receiving of the frames with the video camera may include using one of RTSP, HTTP, HTTPS, and SDP with secure data transmission using encryption and authentication methods such as WPA, WPA2, TKIP, or AES.
  • the interior pool pixels are associated with an interior pool region in the frame.
  • the background pixels are associated with a background region (e.g., a portion of the frame associated with background objects of the pool) in the frame.
  • the foreground pixels are associated with a foreground region (e.g., swimmers) in the frame.
  • the system may advantageously assist the lifeguard by continuously and instantaneously monitoring the entire swimming pool.
  • the aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) equal or quicker than the lifeguard’s determination.
  • the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time.
  • the method 300 includes storing the captured frames in the computing system.
  • the captured frames are stored in a storage system of the computer system or an online storage system.
  • the method 300 includes step 304, for each frame captured with the video camera, identifying interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels (e.g., associated with the swimming pool) in the frame, foreground pixels (e.g., associated with the swimming pool) in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame.
  • the interior pool region may be defined by a perimeter (e.g., the pool's perimeter) surrounding the foreground objects (e.g., swimmers, people, animals, birds, objects active in a frame) and the background objects (e.g., water, static objects).
  • background pixels or region associated with e.g., facility objects such as ladder 104, lane dividers, equipment, other occupants 114
  • foreground pixels or region associated with e.g., swimmers 112
  • swimming pool information e.g., number of swimmers, facilities attributes
  • lane dividers may be removed based on their color and orientation with respect to the swimming pool (e.g., horizontal/vertical) and by applying a high pass filter across this orientation.
  • Other static objects may be removed based on stationary (e.g., substantially zero speed) movement of objects (e.g., tubes, buoyant objects, metal objects).
  • the other occupants 114 may not be in the foreground pixels, they may be tracked by the system; an alert may be generated if the other occupant 114 falls into the swimming pool, based on this tracking.
  • the background pixels may be a mean of background pixels accumulated over a number of samples (e.g., 10 consecutive samples) to account for dynamic background changes (e.g., a diving board is part of the background, but may be moving in some frames, but not others).
  • a skin complexion model may first be applied to isolate swimmer pixels (e.g., foreground pixels, pixels in foreground region) from the background pixels. Residue swimmer pixels may be removed using a temporal vector median filter.
  • the background pixels may be formed by block (e.g., cluster) centroids of homogeneous color regions within blocks of the background pixels. For example, a hierarchical k-means within each block is used.
  • identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
  • background objects such as lane divider, ladder, and diving board may be identified based on successive frames and motion tracking of objects in the pool and/or size determination of objects in case of larger/taller objects. This step may advantageously allow the system to correctly identify swimmers and background objects, reducing the likelihood of a false alarm (e.g., mistaking a background object as a drowning swimmer) or a missed event (e.g., not tracking a drowning swimmer).
  • the method 300 includes step 306, based on the identified background pixels, foreground pixels, and swimming pool information, forming a block (e.g., cluster) for each swimmer in the foreground pixels.
  • a block e.g., cluster
  • background pixels may be divided into blocks.
  • a k- means clustering algorithm may be applied to get a number of block (e.g., cluster) centroids.
  • distance from a pixel to block (e.g., cluster) centroids in the block the pixel belongs to, and surrounding blocks (e.g., eight blocks) is calculated. If eight blocks are calculated, a minimum of nine distances is chosen as color discrepancy of a pixel.
  • hysteresis thresholding may he applied to segment the foreground from the background. That is, a pixel may belong to foreground if it is of greater discrepancy than a value Ti, and if it is a part of a region of other such pixels (e.g., a part of other background pixels, the region including at least one pixel of discrepancy greater than the value Ti).
  • K-means algorithm may be used to find block (e.g., cluster) centroids in each block. This may be performed for every arriving frame.
  • color discrepancy may be measured for every pixel and its surrounding foreground blocks. Pixels with high discrepancy may be labeled as highest confidence swimmer pixels (e.g., foreground pixels).
  • the forming of the block (e.g., cluster) for each swimmer comprises determining whether the block (e.g., cluster) includes at least a threshold amount of foreground pixels. For example, a block (e.g., cluster) would be formed if a portion of the block includes a threshold percentage of foreground pixels (e.g., skin color pixels, pixels identified as potentially being a swimmer pixel), and a block (e.g., cluster) would not be formed if the portion does not include the threshold percentage of foreground pixels.
  • a threshold percentage of foreground pixels e.g., skin color pixels, pixels identified as potentially being a swimmer pixel
  • This step may advantageously allow the system to correctly identify and track swimmers, reducing the likelihood of a false alarm (e.g., mistaking that a non-drowning swimmer is drowning) or a missed event (e.g., not tracking a drowning swimmer).
  • a false alarm e.g., mistaking that a non-drowning swimmer is drowning
  • a missed event e.g., not tracking a drowning swimmer.
  • the method 300 includes step 308, based on the identified background pixels, foreground pixels, and swimming pool information, tagging each swimmer in the frame with a respective identifier. For example, each swimmer (e.g., each of swimmers 112) is assigned a unique identifier such as a tag or a number.
  • the method 300 includes step 310, tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks (e.g., clusters).
  • the image tracking and motion prediction algorithms may include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black- Jepson method.
  • the swimmer’s movement may be tracked or predicted using an initial speed and direction of the swimmer.
  • a system performing these steps may advantageously quickly track swimmers and reduce a lifeguard’s reaction to an event.
  • the method 300 includes step 312, determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer.
  • the criterion may include at least one of swimmer speed, swimmer posture, (e.g., based on the angle of the principle axis of a best fit ellipse enclosing a swimmer), a splash threshold (e.g., a threshold number of splash pixels inside a bounding box associated with the swimmer), an activity threshold (e.g., a threshold cumulative area of pixels covered by a swimmer over a defined period of time), a submergence threshold (e.g., a threshold percentage of a swimmer’s body inside the water), a submergence variance, and swimmer vertical movement, as calculated from the camera frame.
  • a splash threshold e.g., a threshold number of splash pixels inside a bounding box associated with the swimmer
  • an activity threshold e.g., a threshold cumulative area of pixels covered by a swimmer over
  • the criterion may also include at least one of swimmer speed (e.g., based on difference in centroid positions computed over a small period, using image tracking motion prediction algorithms), submersion variance (e.g., variance of submersion indicating the submersion behavior of the swimmer), and swimmer vertical movement.
  • the criterion may be user defined (e.g., the system is trained offline) or learned by the system over time (e.g., real-time event inference).
  • the criterion may be met when a splash threshold is exceeded by a swimmer splashing beyond a threshold amount while drowning and the criterion is met.
  • the criterion may be met when an angle of a best fit ellipse enclosing a swimmer indicates that the body of the swimmer is in a non-swimming posture (e.g., drowning).
  • the criterion may be met when an activity of a swimmer suddenly changes (e.g., a swimmer’s movement suddenly stops or a swimmer’s movement suddenly become swift, indicating that the swimmer may be drowning, a swimmer’s hair is over his or her eyes, a swimmer is not using his or her legs, a swimmer is trying to swim in a direction but not moving in the direction, a swimmer is trying to roll over onto his or her back, the swimmer appears to be climbing an invisible ladder).
  • the criterion may be met when greater than a threshold percentage of the swimmer’s body is submerged underwater over a defined period of time (e.g., a swimmer is under the water for too long, a swimmer’s head is low in the water).
  • the event may be accurately and consistently detected (e.g., different lifeguards may have a different determination of whether a swimmer requires assistance at different time; a lifeguard may misjudge a drowning event, diverting his or her attention away from other swimmers).
  • the method 300 includes step 314, in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
  • the detection signal indicates that a swimmer is drowning or an animal has fallen into the swimming pool.
  • more than one criterion or a combination of criterion may need to be met to generate the detection signal.
  • a generalized reduced multivariable polynomial (GRM) network may be used to combine the criterion to determine whether a detection signal should be generated.
  • GMM generalized reduced multivariable polynomial
  • the method 300 includes generating an alert associated with the event in response to the generated detection signal.
  • the detection signal causes an alarm or an alert (e.g., lifeguard 110, a guardian, a safety personnel) that expresses someone may be drowning.
  • the alert may be generated on a wearable device, a portable device, or a system user interface.
  • multiple alerts may be generated on multiple devices.
  • the system comprises a wearable device (e.g., alarm device 104C, a smart watch wore by lifeguard 110, a wearable device worn by an external supervisor), and the method 300 includes transmitting the generated alert to the wearable device.
  • the method 300 may allow detection of a drowning event in less than 10 seconds, increasing the chance that the drowning swimmer maybe rescued without harm.
  • the system 200 and the method 300 may increase a percentage of successful rescue from 16% to above 80%.
  • the method 300 includes determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, detecting a swimmer leaving or entering the interior pool region, updating the number of swimmers based on the detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
  • a number of the swimmer at a given time is determined based on the foreground pixels (e.g., number of blocks or clusters, number of tagged swimmers) or the swimming pool information (e.g., number of tagged swimmer at a time prior to the given time).
  • a new swimmer entering the swimming pool may be detected (e.g., based on the identification step) and tagged in response to the detection.
  • a swimmer leaving the swimming pool may be detected (e.g., based on the identification step) and untagged in response to the detection.
  • the method 300 includes determining a number of swimmers based on the foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers. For example, a total number of swimmers at given time may be based on the number of detected foreground objects (e.g., identified blocks, clusters, active objects) and swimming pool information such as total number swimmers at a time prior to the given time.
  • a number of swimmers at given time may be based on the number of detected foreground objects (e.g., identified blocks, clusters, active objects) and swimming pool information such as total number swimmers at a time prior to the given time.
  • partial occlusion or occlusion is determined between at least two blocks (e.g., clusters)
  • the number of swimmers is determined to less be the number of identified blocks (e.g., clusters) (e.g., due to partial occlusion or occlusion, one cluster may include more than one swimmer).
  • the system may advantageously determine more accurately the number of swimmer even with partial occlusion or occlusion in the frame.
  • the method 300 includes determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects (e.g., detected blocks, clusters, active objects). For example, a total number of swimmers at a given time may be determined by the number of identified blocks (e.g., clusters) and swimming pool information such as total number of swimmers at a time prior to the given time. If there is no partial occlusion or occlusion between the blocks (e.g., clusters), then the number of swimmers is determined to be the number of identified blocks (e.g., clusters).
  • the number of swimmers is determined to be the number of identified blocks (e.g., clusters).
  • the criterion dynamically updates based on a depth (e.g., of the swimming pool) corresponding to the swimmer’s position in the swimming pool. For example, if the swimmer is at a shallower or deeper portion of the swimming pool, then the submergence threshold may be dynamically updated accordingly. For example, a percentage threshold may be higher for a swimmer at a shallower portion of the swimming pool.
  • the criterion dynamically updates based on a distance of the swimmer from the camera. For example, if a swimmer is at a further distance from the camera, resolution of the swimmer may be reduced, and the criterion may be updated to be more conservative (e.g., the threshold meeting the criterion may be lower). In some embodiments, the criterion dynamically updates based on a surrounding brightness of a camera view.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors (e.g., swimmer skill, risk level of swimming).
  • the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met.
  • the system may learn that the tracked swimmer is a strong swimmer, and the criterion emphasis factor may deemphasize the criterion (e.g., setting higher thresholds determining whether the swimmer is drowning).
  • the system may learn that the tracked swimmer is a weak swimmer (e.g., a beginner), and the criterion emphasis factor may emphasize the criterion (e.g., setting lower thresholds for determining whether the swimmer needs assistance).
  • a system that determines an event occurrence using a criterion emphasis factor may be more robust by allowing configuration of a corresponding criterion based on learned behaviors or user inputs (e.g., compare to a system that does not allow variability of event detection parameters).
  • the height of a swimmer may be determined, and the criterion emphasis factor may be updated based on the height of the swimmer. For example, the height of the swimmer indicates that the swimmer may be a child; the criterion emphasis factor may be emphasized for higher sensitivity (e.g., the child may be more likely to drown). In some embodiments, the criterion may be deemphasized when a relatively tall swimmer passes over a relatively shallow part of the pool.
  • the computing system comprises a user interface, and the method 300 includes selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
  • the user interface may be presented on a display (e.g., display 216) of the system, and a user (e.g., a lifeguard, a home owner, an administrator) may select a current activity associated with the swimming pool (e.g., free swim, a supervised swimming class, swim meet, kids swimming lesson, scuba lessons, day, night) on the user interface.
  • a current activity associated with the swimming pool e.g., free swim, a supervised swimming class, swim meet, kids swimming lesson, scuba lessons, day, night
  • the criterion may be updated. For example, the risk of drowning during a free swim may be higher than the risk of drowning for a swim meet; the criterion associated with the free swim may be more conservative (e.g., drowning detection may be more sensitive) than the criterion associated with the swim meet.
  • a user may not want anyone in the swimming pool at night or may have reduced supervision at night; therefore, the criterion associated with night-time may be more conservative
  • the computing system comprises a user interface
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer
  • the method 300 includes selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
  • the user interface may be presented on a display (e.g., display 216) of the system, and a user (e.g., a lifeguard, a home owner, an administrator) may select a behavior of a tracked swimmer (e.g., the tracked swimmer is an advanced swimmer, the tracked swimmer is a beginner). Based on the selected behavior, the emphasis factor may be updated.
  • the risk of drowning for a beginner may be higher than the risk of drowning for a more advanced swimmer; the criterion associated with the beginner may be more conservative (e.g., drowning detection may be more sensitive) than the criterion associated with the advanced swimmer.
  • the method 300 includes tracking a history of the swimming pool, learning site attributes of the swimming pool based on the history, and updating the criterion based on the learned site attributes.
  • events and conditions of the swimming pool may be tracked over time, and the site attributes may be parameters associated with the swimming pool (e.g., indoor pool parameters, outdoor pool parameters, brightness, air quality, glare, water color, lanes or other static objects, paint color on pool floor).
  • the criterion is updated accordingly to more accurately reflect a risk of drowning associated with the particular swimming pool.
  • the system may better adapt to changing pool conditions without manual updates or calibrations.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool, in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset, and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
  • the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met.
  • the system may include presets of predetermined criterion and criterion emphasis factors associated with different types of swimming pool (e.g., indoor pool, outdoor pool, large swimming pool, small swimming pool, swimming pool including a diving board).
  • a preset of these predetermined criterion and criterion emphasis factors may be selected (e.g., by the user, by the system based on image analysis of the pool) based on the type of swimming pool.
  • the initial tuning process of the system may be reduced (e.g., short installation time).
  • identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time includes dynamically updating the criterion based on the difference. For example, the system determines that background pixels are different between a first time and a second time because swimming pool set up may be different.
  • the setup at the first time may be a swim meet, and the second up at the second time may be a free swim.
  • the setup of the swimming pool may have been renovated over time.
  • the system dynamically updates a criterion associated with the first setup (e.g., the swim meet, setup before pool renovation) to a criterion associated with the second setup (e.g., the free swim, setup after pool renovation).
  • a criterion associated with the first setup e.g., the swim meet, setup before pool renovation
  • a criterion associated with the second setup e.g., the free swim, setup after pool renovation
  • a first block (e.g., cluster) associated with a first swimmer and a second block (e.g., cluster) associated with a second swimmer at least partially overlap and form a third block (e.g., cluster), and the forming of the block (e.g., cluster) of each swimmer further comprises using a hierarchical k-means clustering algorithm to separate the first and second blocks (e.g., clusters), a Markov Random Field (MRF) to form the first and second blocks (e.g., clusters) based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
  • MRF Markov Random Field
  • two swimmers merge as one identified foreground object (e.g., one combined third block or cluster).
  • the newly formed block or cluster e.g., the third block or cluster
  • the clustering algorithm may give the two independent swimmers as an output, even if the third block (e.g., cluster) appears to be one block (e.g., cluster).
  • MRF may break that one block or cluster (e.g., the third block or cluster) into two swimmer based on body shape and background water separation.
  • Linear prediction scheme may predicts where (e.g., direction, location) the swimmer may be swimming to identify swimmer’ s centroids and to potentially better track the centroids. Each swimmer may be more accurately identified by forming the sub-blocks or sub-clusters.
  • the method 300 includes updating the criterion based on a user input.
  • the system may include a user interface, and using the user interface, the user may be able to manually adjust a criterion (e.g., manually adjusting threshold levels associated with meeting the criterion to generate the detection signal and an alert).
  • the method 300 includes updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
  • the system may be trained unsupervised using Monte-Carlo simulation training videos or graphics of normal swimming and drowning behaviors, and criterion may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection.
  • the system may be trained unsupervised using data (e.g., usage data, event occurrence data) from users (e.g., a same user, other users) of the aquatic alert system.
  • the system may be trained unsupervised using data-based methods such as neural networks or random forests.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
  • the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met.
  • the system may be trained unsupervised using Monte-Carlo simulation training videos or graphics of normal swimming and drowning behaviors, and criterion emphasis factor may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection.
  • the system may be trained unsupervised using data (e.g., usage data, event occurrence data) from users (e.g., a same user, other users) of the aquatic alert system, and criterion emphasis factor may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection.
  • data e.g., usage data, event occurrence data
  • users e.g., a same user, other users
  • criterion emphasis factor may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection.
  • the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model. For example, training using an artificial neural network (ANN) based on a Gaussian or Bayesian probabilistic models to evaluate drowning confidence level associated with a probability of drowning may be used to determine whether the criterion is met.
  • ANN artificial neural network
  • the probabilistic model is built based on ground truth. The model may allow the system to more accurately determine an occurrence of an event.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method includes determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
  • the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met.
  • a movement of a tracked swimmer is identified.
  • the movement of the tracked swimmer includes movement relative to the center of the tracked swimmer (e.g., the limbs of the swimmer are moving relative to the center of the swimmer, the swimmer is moving in a bounded box).
  • the criterion emphasis factors of the tracked swimmers are updated because the associated foreground object is more likely to be a swimmer (e.g., an inanimate object is less likely to be moving relative to its center).
  • determining whether a swimmer is moving relative to a center or whether a swimmer is moving in a bounded box and updating a criterion emphasis factor in accordance with the determination increase swimmer or active object identification confidence.
  • a person determined to be not wearing swimwear (e.g., other occupant 114A) falling into the swimming pool may be associated with a more emphasized criterion emphasis factor because it is more likely that this person is drowning.
  • the outfit may be in a non-human skin color, it may be identified using RGB color thresholding. For example, outfits such as wet- suits and swimsuits may be identified due to their stark contrast such as black, blue, and red.
  • a person wearing or not wearing a swim cap may be identified by the person’s head geometry and color (e.g., head shape, color of the top of the swimmer’s head). As an exemplary advantage, a swimmer may be more accurately determined, and misidentification of swimmers may be reduced.
  • the method 300 includes determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
  • the system may be trained to identify animals based on differentiating features such as size, shape, structure (e.g., tail, legs), and complexity.
  • an animal is determined based on the movement of a foreground object relative to a center of the foreground object (e.g., the limbs of the animal are moving relative to the center of the animal, the limbs of the animal are moving within a bounded box).
  • an alarm (as disclosed herein) may be generated in response.
  • the system in response to a selection on a user interface, the system may forgo generating an alarm when an animal is determined to be in the swimming pool (e.g., a dog may be able to swim in the swimming pool).
  • an animal e.g., a dog may be able to swim in the swimming pool.
  • other features e.g., confidence is low
  • determining whether the animal is moving relative to a center or whether the animal is moving in a bounded box increases animal identification confidence.
  • FIG. 4 illustrates an aquatic alert system 400, in accordance with an embodiment.
  • the aquatic alert system 400 includes a camera (e.g., camera 402A, 402B, 402C) and a computing system 404.
  • the aquatic alert system 400 includes an alarm (e.g., alarm 416A, 416B, 416C).
  • an alarm e.g., alarm 416A, 416B, 416C.
  • the aquatic alert system 400 is described with the illustrated elements, it is understood that the aquatic alert system 400 may include more or less elements or may be combined with elements of other embodiments described in the disclosure.
  • the aquatic alert system 400 may include any number of cameras, computing systems, and alarms, and may be configured to communicate with any number of clients and/or routers.
  • aquatic alert system 400 is described with respect to a swimmer, it is understood that “swimmer” is not limiting.
  • features of the aquatic alert system may be used to detect undesired objects (e.g., animals, someone who accidentally fell into the swimming pool, waste) or an intruder in the swimming pool.
  • the camera is camera 102 or camera 202.
  • the aquatic alert system 400 includes at least one camera (e.g., camera 402A, camera 402B, camera 402C). For example, each camera covers a different area of a swimming pool or covers the swimming pool at different angles.
  • the camera is configured to capture frames of a swimming pool (e.g., swimming pool 100).
  • the aquatic alert system 400 includes more than one camera, and each camera covers a swimming pool from a different angle; each camera is configured to capture frames of the swimming pool from a different angle.
  • the aquatic alert system 400 includes more than one camera, and each camera covers a different area of a swimming pool; each camera is configured to capture frames of a corresponding portion of the swimming pool.
  • the camera includes elements of the aquatic alert system 200 (e.g., processor 204, memory 206, data 208A, program 208B).
  • the aquatic alert system 400 includes a processor and memory separate from the camera (e.g., the processor is separate from the sensor of the camera; the processor is in a different housing than the camera; the processor and/or the memory are collocated with the camera (e.g., the processor and/or the memory and the camera are both proximate to the swimming pool)).
  • the processor and memory are in a same housing as the camera.
  • the computing system 404 is configured to communicate with the processor and the camera.
  • the processor associated with the camera is located within a range of the swimming pool (e.g., the camera is in visual range (e.g., a visual range of camera provides an image of sufficient detail/clarity that allows associated software to identify an object/swimmer in a pool) of the swimming pool, and the processor is within a communication range of the camera).
  • the processor associated with the camera is configured to determine a swimmer is in the swimming pool. In some embodiments, determining whether a swimmer is in the swimming pool includes receiving frames from the video camera, identifying foreground pixels in the frames, and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool. In some embodiments, determining whether a swimmer is in the swimming pool includes detecting, with a sensor, that an object is within the angle range and the distance range, as described in more detail herein.
  • the camera captures frames of the swimming pool, or the processor associated with the camera receives frames of the swimming pool from the camera. From these frames, the camera or the processor associated with the camera identifies foreground pixels in the frame, and determines whether the foreground pixels correspond to a swimmer in the swimming pool. Examples of foreground pixel and swimmer detection are described with respect to the system in Fig. 1, system 200, and method 300. For the sake of brevity, those examples are not described again here.
  • the processor associated with the camera is configured to transmit an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system in accordance with a determination that the swimmer is in the swimming pool.
  • the processor associated with the camera e.g., a processor in a housing of the camera, a processor in communication with the camera
  • the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection).
  • transmitting the captured frames to the computing system comprises transmitting the captured frames using a protocol for streaming in real-time.
  • the protocol is at least one of RTSP, HTTP, HTTPS, and SDP.
  • the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a first rate.
  • the process forgoes transmit the instruction (causing, e.g., the processor to transmit the frames at a second rate lower than the first, transmit no frames).
  • the camera is in wireless communication with other elements of the aquatic alert system 400, and the camera’s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited.
  • source of power e.g., a battery, a rechargeable battery, solar power
  • the computing system By transmitting the captured frames (or transmitting the captured frames at a higher rate) to the computing system in accordance with a determination that a swimmer is in the swimming pool (e.g., streaming when someone is in the swimming pool, not streaming when no one is in the swimming pool), camera power consumption (e.g., transmission power) may be advantageously reduced because less power may be consumed in scenarios when an object in the swimming pool is less likely, allowing the source of power to be a feasible primary source of power.
  • a swimmer e.g., streaming when someone is in the swimming pool, not streaming when no one is in the swimming pool
  • camera power consumption e.g., transmission power
  • the battery may power the camera for up to days to weeks a single charge, compared to hours to days for a camera that transmits the captured frames whether a swimmer is in the pool or not or a camera that performs on-board drowning detection (which may be more compute-intensive and power consuming).
  • having a more compact power source allows the camera to be installed without connecting to an alternative source of power, simplifying camera installation (e.g., less components (e.g., wires) are needed to install the camera), allowing more camera installation location options, reducing cost, and reducing maintenance.
  • a charge on a battery of the camera is low (e.g., less than a threshold charge (e.g., 10%, 20%)), an alert is generated (e.g., by the camera, by the processor associated with the camera, by the computing system) to notify a user about the low battery charge.
  • a threshold charge e.g. 10%, 20%
  • the processor associated with the camera is configured to forgo transmitting the instruction in accordance with a determination that the swimmer is not in the swimming pool. For example, in accordance with a determination that no swimmer is in the swimmer pool, the camera does not transmit captured frames to the computing system 404.
  • the processor associated with the camera receives frames from the camera.
  • the camera or the processor identifies an area of one of the frames that includes a threshold amount of pixels associated with the swimming pool and identifies a contour bordering the area in the one of the frames.
  • the contour corresponds to a perimeter of the swimming pool.
  • the aquatic alert system 400 identifies the swimming pool from the frames.
  • the pixels associated with the swimming pool are at least one of blue pixels and light green pixels (e.g., colors associated with water).
  • the camera is configured to automatically identify a swimming pool.
  • the camera captures frames in its view and identifies an area that includes more than a threshold of swimming pool pixels and identifies a contour bordering the area including more than a threshold amount of swimming pool pixels (e.g., image processing determines the area of the frame includes water pixels, the swimming pool is sufficiently in view). If the entire contour is within the field of view of the camera (e.g., entire contour of the swimming pool is within a frame), then the swimming pool is automatically identified and the camera has been properly installed.
  • the camera may not be properly installed.
  • a request to reposition the video camera is generated (e.g., to a client device, a warning on the camera, a warning on a GUI of the computing system 404).
  • the field of view of the camera does not align with the swimming pool, and the camera is not properly installed.
  • the camera may be too far from the swimming pool, and the camera is not properly installed.
  • the camera may be advantageously used to assist installation of the aquatic alert system, and the positioning of the camera may be more suitable for event detection. For example, compared to installation without camera assistance, the lighting and/or resolution of the captured frames may improve. Such improvements can be applied to other embodiments, with or without the system of FIG. 4. For example, identification of a swimming pool (e.g., for camera installation) by the camera may be applied to the embodiments of aquatic alert system in Fig. 1, aquatic alert system 200, and aquatic alert system 500.
  • more than one camera e.g., camera 402A, 402B, 402C
  • each camera is configured to capture frames from a portion of the swimming pool.
  • the entire contour of the swimming pool may not need to be in the frame of the cameras; the camera is properly installed when it is determined that the entirety of the swimming pool has been covered by the cameras.
  • some conditions may cause the accuracy of swimmer and/or event detection to reduce. For example, a view of the swimming pool is obstructed. As another example, bad weather condition causes the swimming pool and/or swimmer pixels to be less identifiable.
  • the camera or the processor determines that a swimming pool area of a frame includes less than a threshold amount of pixels associated with the swimming pool. In accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, the aquatic alert system (e.g., the camera, the processor associated with the camera, the computing system 404) generates a notification corresponding to the determination (e.g., an alert notification to a user indicating a view of the swimming pool is obstructed or reduced).
  • the camera or the processor associated with the camera is configured to perform aspects of the disclosed aquatic alert system associated with system in Fig. 1, system 200, and method 300. For the sake of brevity, these aspects are not described again.
  • the computing system 404 includes elements of the aquatic alert system 200 (e.g., processor 204, memory 206, data 208A, program 208B, user interface 210).
  • the computing system 404 includes a bridge 406.
  • the bridge 406 is an ONVIF/RTSP bridge configured to receive frames captured from the camera (e.g., after a swimmer is determined to be in the swimming pool).
  • the computing system 404 wirelessly communicates with the camera.
  • the elements and/or methods described herein allows the camera to be installed wirelessly and communicate wirelessly. By allowing the camera to be installed wirelessly and communicating wirelessly, camera installation is simplified, and more camera installation location options are possible. Additionally, with a more simplified system, cost and maintenance are reduced.
  • the alarm is alarm device 104A, 104B, 104C, or 216. In some embodiments, the alarm is configured to generate an alert associated with an event associated with the swimmer. In some embodiments, the alarm generates an alert in response to receiving an event detection signal.
  • the computing system 404 or the processor 408 transmits the event detection signal to the alarm (e.g., to generate the alert).
  • the alert includes an alert on a client device (e.g., client 414A, 414B, 414C) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). For example, an alert is broadcasted using a smart speaker.
  • the aquatic alert system 400 includes a processor 408.
  • the processor 408 is an AI processor.
  • the processor 408 is included in the computing system 404.
  • the processor 408 receives the captured frames (e.g., from the camera, in accordance to a determination that a swimmer is in the swimming pool, etc.).
  • the processor 408 determines, based on the received captured frames, occurrence of an event associated with the swimmer.
  • the processor 408 is configured to perform aspects of the disclosed aquatic alert system associated with system in Fig. 1, system 200, and method 300. For the sake of brevity, these aspects are not described again.
  • the processor 408 performs more computation intensive and power-consuming processes such as analysis of the frames captured by the camera and determination of an occurrence of an event (e.g., associated with system in Fig. 1, system 200, and method 300).
  • the processor associated with the camera does not perform these more computation intensive and power-consuming processes. By performing more computation intensive and power-consuming processes at a different processor and not at the processor associated with the camera, the processor associated with the camera may advantageously be more power efficient.
  • the aquatic alert system 400 includes a first router 410 configured to wirelessly communicate with the computing system and the alarm over a first network connection.
  • the first router 410 is a part of the computing system 404.
  • the first router 410 wirelessly communicates with the camera and/or computing system 404 and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
  • the first router 410 is a fallback router that is configured for wireless connection over a first network (e.g., an internal network, a network different than a second network).
  • the camera, the computing system 404, and/or the alarm are in wireless communication initially over a second network (e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network).
  • a second network e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network.
  • the second network becomes unavailable (e.g., unstable network connection, power outage), and in accordance with a determination that the camera, the computing system 404, and/or the alarm is not connected to the second network (e.g., due to the unavailability), the camera, the computing system 404, and/or the alarm wirelessly communicate over the first network using the first router 410.
  • an alert is generated to notify a user that the first router is active and/or the
  • the first router allows the aquatic alert system to continue to detect for an event in the swimming pool. Allowing the aquatic alert system to continue to detect for an event during an unavailability may improve safety for a swimmer or a user of the aquatic alert system. For example, without the first router, if a swimmer is experiencing difficulty (e.g., drowning, injured) during connection unavailability, no alert may be generated to indicate that the swimmer requires assistance. As another example, without the first router, if an intruder enters the swimming pool during connection unavailability, no alert may be generated to warn a user about the intruder.
  • difficulty e.g., drowning, injured
  • the aquatic alert system 400 includes a second router 412 configured to wirelessly communicate with the computing system 404 and the alarm over a second network connection.
  • the second router 412 is a WiFi router, and the WiFi router is connected to the alarm over a WiFi or an internet connection.
  • the aquatic alert system 400 is connected to a client (e.g., client 414A, 414B, 414C).
  • the client is a client device.
  • the client is at least one of a user of the aquatic alert system, a lifeguard, a safety personnel, a guardian of a swimmer, a facilities manager, and a homeowner
  • the client device is at least one of a phone, a tablet, a laptop, an IoT device (e.g., a smart speaker), a smart home terminal, a security monitor, and a display.
  • the client transmits a request for frames from the camera.
  • the camera, the processor associated with the camera, or the computing system 404 receives the request for frames from the video camera from the client device, and in response to receiving the request for the frames, the camera, the processor associated with the camera, or the computing system 404 transmits the frames to the device.
  • a user of the aquatic alert system requests a live stream of the swimming pool.
  • a request for the live stream is transmitted.
  • the camera, the processor associated with the camera, or the computing system 404 receives the request for the live stream, and in response to receiving the request, the camera, the processor associated with the camera, or the computing system 404 transmits the requested live stream to the user’s device (e.g., for display).
  • the aquatic alert system 400 includes a sensor (not shown) configured to detect an angle and a distance of an object relative to the sensor.
  • the swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting that the object (e.g., a swimmer) is within the angle range and the distance range with the sensor.
  • the sensor is a passive infrared sensor (PIR) sensor comprising a Fresnel lens.
  • the swimming pool is located between -30 degrees and 30 degrees and between 5 m to 7.2 m relative to the sensor. It is understood that these values are exemplary. If the sensor detects an object within the angle range and the distance range relative to the sensor, then a swimmer is determined to be in the swimming pool (e.g., then frames from the camera is transmitted to the computing system for further processing).
  • the camera is in wireless communication with other elements of the aquatic alert system 400, and the camera’s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited.
  • source of power e.g., a battery, a rechargeable battery, solar power
  • camera power consumption e.g., transmission power, power used to capture/analyze frames for swimmer detection
  • the battery may power the camera for up to days to weeks on a single charge, compared to hours to days for a camera that transmits the captured frames whether a swimmer is in the pool or not.
  • having a more compact power source allows the camera to be installed without connecting to an alternative source of power, simplifying camera installation (e.g., less components (e.g., wires) are needed to install the camera), allowing more camera installation location options, reducing cost, and reducing maintenance.
  • the angle range and distance range relative to the sensor is determined using the camera to identify the swimming pool.
  • the camera captures frames, and the camera or the processor associated with the camera identifies an area of one of the frames as including a threshold amount of pixels associated with the swimming pool (e.g., using the methods described herein).
  • the angle range and the distance range correspond to the identified area, and the area includes the threshold amount of pixels are inside a contour of the swimming pool (e.g., as described herein).
  • FIGS. 5A-5C illustrate an aquatic alert system 500, in accordance with an embodiment.
  • the aquatic alert system 500 includes a camera 502, a computing system 504 including a bridge and a processor 508, and an alarm 514.
  • a processor associated with the camera 502 is located within a housing of the camera. In some embodiments, a processor associated with the camera 502 is located outside a housing of the camera (not shown).
  • the aquatic alert system 500 includes elements of at least one of aquatic alert system in Fig. 1, aquatic alert system 200, and aquatic alert system 400.
  • camera 502 is at least one of camera 102, camera 202, 402A, 402B, and 402C
  • computing system 504 is computing system 404 or includes elements of aquatic system 200
  • alarm 514 is at least one of alarm device 104, alarm device 212, alarm 416A, alarm 416B, and alarm 416C.
  • exemplary advantages of the aquatic alert system 500 are described with respect to FIGS. 1-4. For the sake of brevity, those advantages are not described here.
  • the frame 518 illustrates a frame captured by the camera 502. In some embodiments, the frame 518 illustrates a portion of a frame captured by the camera 502. In some embodiments, the frame 518 illustrates a view of the swimming pool from a third person’s view (e.g., not the camera view). Although the frame 518 is illustrated as a frame at a moment in time, it is understood that the frame 518 may represent more than one frame over a period of time. In some embodiments, content of the frame 518 may be viewed on a client device 514 in response to a request for the captured frames, as described with respect to FIG. 4.
  • aquatic alert system 500 is described with respect to a person 520, it is understood that the person and the exemplary actions of the person are not limiting.
  • features of the aquatic alert system may be used to detect undesired objects (e.g., animals, someone who accidentally fell into the swimming pool, waste) or an intruder in the swimming pool.
  • FIG. 5A illustrates a person 520 away from the swimming pool 522, in accordance with an embodiment.
  • the camera 502 or the processor associated with the camera determines that the person 520 is not in the swimming pool 522, transmission of an instruction to receive captured frames (and to transmit the captured frames to the computing system 504) is forgone, as illustrated by a lack of a connection between the camera 502 and the computing system 504.
  • FIG. 5B illustrates a person 520 in the swimming pool 522, in accordance with an embodiment.
  • the person 520 from FIG. 5A decided to jump into the swimming pool 522 and started swimming.
  • the camera 502 or the processor associated with the camera determines that the person 520 (e.g., a swimmer) is in the swimming pool 522, an instruction to receive captured frames (and to transmit the captured frames to the computing system 504) is transmitted, as illustrated by a connection between the camera 502 and the computing system 504.
  • the camera 502 or the processor associated with the camera 502 receives the frame 518, identifies foreground pixels in the frame 518, and determines whether the identified foreground pixels correspond to the swimmer in the swimming pool (e.g., person 520 in the swimming pool 522).
  • the identified foreground pixels correspond to the swimmer in the swimming pool (e.g., person 520 in the swimming pool 522).
  • Exemplary elements and/or methods for identifying foreground pixels are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
  • connection between the camera 502 and the computing system 504 includes transmission of the captured frames (e.g., from frame 518) using a protocol for streaming in real-time.
  • the computing system includes an ONVIF/ RTSP bridge and is configured to receive the captured frames, as illustrated.
  • FIG. 5C illustrates a person 520 involved in an event (e.g., drowning, injury) in the swimming pool 522, in accordance with an embodiment.
  • an event e.g., drowning, injury
  • the person 520 from FIG. 5B began to struggle in the swimming pool.
  • the processor 508 e.g., processor 204, processor 408 of the computing system 504 receives the captured frames (e.g., frame 518 from camera 502 over the bridge) and determines occurrence of an event (e.g., prolonged submergence, struggling to stay afloat, drowning, etc.) associated with the swimmer based on the received captured frames.
  • an event detection signal is transmitted to the alarm 516, and in response to receiving an event detection signal, the alarm 516 generates an alert (e.g., to seek assistance for the drowning person 520).
  • the alert includes an alert on a client device (e.g., client 514) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). Exemplary elements and/or methods for event detection are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
  • FIG. 6 illustrates a method 600 of operating an aquatic alert system, in accordance with an embodiment.
  • the method 600 is illustrated as including the described steps, it is understood that different order of step, additional step (e.g., combination with other methods disclosed herein), or less step may be included without departing from the scope of the disclosure.
  • the method 600 is performed with at least one of aquatic alert system in Fig. 1, aquatic alert system 200, aquatic alert system 400, and aquatic alert system 500. For the sake of brevity, some elements and advantages associated with these aquatic alert systems are not repeated here.
  • the method 600 includes determining whether a swimmer is in the swimming pool (step 602). For example, as described with respect to FIGS. 5 A and 5B, the aquatic alert system 500 determines whether the person 520 is in the swimming pool.
  • determining whether a swimmer is in the swimming pool includes receiving frames from the video camera, identifying foreground pixels in the frames, and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool. For example, as described with respect to FIGS. 5 A and 5B, to determine whether that the person 520 is in the swimming pool 522, the camera 502 or the processor associated with the camera 502 receives the frame 518, identifies foreground pixels in the frame 518, and determines whether the identified foreground pixels correspond to the swimmer in the swimming pool (e.g., person 520 in the swimming pool 522).
  • the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system (step 604).
  • the aquatic alert system 500 determines that the person 520 is in the swimming pool, and an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system is transmitted.
  • the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a first rate.
  • an instruction e.g., to a different processor, to itself
  • transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time.
  • a protocol for streaming for example, as described with respect to FIG. 5B, the frames 518 are transmitted to the computing system 504 using a protocol for streaming in real-time.
  • the method 600 includes in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction (step 606).
  • the aquatic alert system 500 determines that the person 520 is not in the swimming pool, and an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system is not transmitted
  • the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a second rate, lower than the first rate.
  • the method 600 includes generating an alert associated with an event associated with the swimmer and wirelessly communicating, with a router, with the computing system and the alarm over a first network connection.
  • the router wirelessly communicates with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
  • the first router 410 is a fallback router that is configured for wireless connection over a first network (e.g., an internal network, a network different than a second network).
  • the camera e.g., camera 402A, 402B, 402C
  • the computing system 404 and/or the alarm (e.g., alarm 416A, 416B, 416C) are in wireless communication initially over a second network (e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network).
  • a second network e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network).
  • the second network becomes unavailable (e.g., unstable network connection, power outage), and in accordance with a determination that the camera, the computing system 404, and/or the alarm is not connected to the second network (e.g., due to the unavailability), the camera, the computing system 404, and/or the alarm wirelessly communicate over the first network using the first router 410.
  • unavailable e.g., unstable network connection, power outage
  • the camera, the computing system 404, and/or the alarm wirelessly communicate over the first network using the first router 410.
  • the method 600 includes receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device.
  • a client device e.g., client 414A, client 414B, client 414C, client 514. requests for a stream of the swimming pool, and in response to the request, a stream is provided to the client device.
  • the method 600 includes receiving frames from the video camera, identifying an area of one of the frames comprising a threshold amount of pixels associated with the swimming pool, identifying a contour bordering the area in the one of the frames, the contour corresponding to a perimeter of the swimming pool, and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames.
  • the method 600 includes in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera. For example, as described with respect to FIG.
  • the camera e.g., camera 402A, 402B, 402C
  • the camera is used to determine whether a swimming pool is within a frame of the camera (e.g., during installation), and a warning to reposition the camera is generated when the swimming pool is not entirely within the frame of the camera.
  • the method 600 includes in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination. For example, an alert notification is generated for a user indicating a view of the swimming pool is obstructed or reduced).
  • the method 600 includes in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
  • the swimming pool spans an angle range and a distance range relative to a sensor configured to detect an angle and a distance of an object relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range.
  • a PIR sensor is used to determine whether a swimmer is in the swimming pool.
  • the swimming pool’s angle range and distance range relative to the sensor is determine as described with respect to FIG. 4.
  • the method 600 includes receiving the captured frames and determining, based on the received captured frames, occurrence of an event associated with the swimmer.
  • the processor 508 e.g., processor 204, processor 408 of the computing system 504 receives the captured frames (e.g., frame 518 from camera 502 over the bridge) and determines occurrence of an event (e.g., drowning) associated with the swimmer based on the received captured frames.
  • the method 600 includes in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm, and in response to receiving an event detection signal, the alarm 516 generates an alert (e.g., to seek assistance for the drowning person 520).
  • the method 600 includes in accordance with a determination of the event is not occurring, forgoing transmitting the event detection signal to the alarm.
  • the alert includes an alert on a client device (e.g., client 514) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). Exemplary elements and/or methods for event detection are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
  • FIG. 7 illustrates an example of a computing device 700, in accordance with an embodiment.
  • the device 700 is configured to be coupled to the disclosed systems and is configured to perform the operational methods associated with the systems disclosed herein.
  • Device 700 can be a host computer connected to a network.
  • Device 700 can be a client computer (e.g., a disclosed computing system), a server (e.g., a disclosed computing system), a portable device (e.g., alarm device 214), or a camera system (e.g., camera 102, camera 202, camera 402A, camera 402B, camera 402C, camera 502).
  • device 700 can be any suitable type of microprocessor-based device, such as a dedicated computing device, a personal computer, work station, server, handheld computing device (portable electronic device) such as a smartwatch, phone, or tablet.
  • the device can include, for example, one or more of processors 702, communication device 704, input device 706, output device 708, and storage 710.
  • Input device 706 and output device 708 can generally correspond to those described above and can either be connectable or integrated with the computer.
  • Input device 706 can be any suitable device that provides input, such as a camera sensor, touchscreen, keyboard or keypad, mouse, voice-recognition device, or a user interface (e.g., user interface 210).
  • Output device 708 can be any suitable device that provides output, such as an illuminator, a touchscreen (e.g., display 216), haptics device, or speaker.
  • Storage 710 can be any suitable device that provides storage, such as an electrical, magnetic, or optical memory including a RAM, cache, hard drive, or removable storage disk.
  • the storage 710 includes memory 206.
  • Communication device 704 can include any suitable device capable of transmitting and receiving signals (e.g., streaming data) over a network, such as a network interface chip or device.
  • the components of the computer can be connected in any suitable manner, such as via a physical bus, or wirelessly.
  • Software 712 which can be stored in storage 710 and executed by processor 702, can include, for example, the programming that embodies the functionality of the present disclosure (e.g., as embodied in the devices described above, a drowning detection program).
  • Software 712 can also be stored and/or transported within any non-transitory, computer-readable storage medium for use by or in connection with an instruction execution system, apparatus, or device, such as those described above, that can fetch instructions associated with the software from the instruction execution system, apparatus, or device and execute the instructions.
  • a computer-readable storage medium can be any medium, such as storage 710, that can contain or store programming for use by or in connection with an instruction-execution system, apparatus, or device.
  • Software 712 can also be propagated within any transport medium for use by or in connection with an instruction-execution system, apparatus, or device, such as those described above, that can fetch instructions associated with the software from the instruction- execution system, apparatus, or device and execute the instructions.
  • a transport medium can be any medium that can communicate, propagate, or transport programming for use by or in connection with an instruction-execution system, apparatus, or device.
  • the transport readable medium can include, but is not limited to, an electronic, magnetic, optical, electromagnetic, or infrared wired or wireless propagation medium.
  • Device 700 may be connected to a network (e.g., an internal network, an external network), which can be any suitable type of interconnected communication system.
  • the network can implement any suitable communications protocol and can be secured by any suitable security protocol.
  • the network can comprise network links of any suitable arrangement that can implement the transmission and reception of network signals, such as wireless network connections, mobile internet connections, Bluetooth connections, NFC connections, T1 or T3 lines, cable networks, DSL, or telephone lines.
  • Device 700 can implement any operating system suitable for operating on the network.
  • Software 712 can be written in any suitable programming language, such as C, C++, Java, or Python.
  • application software embodying the functionality of the present disclosure can be deployed in different configurations, such as in a client/server arrangement or through a Web browser as a Web-based application or Web service, for example.
  • a system comprises: a video camera configured to capture frames of a swimming pool; a computing system configured to communicate with the camera and including a processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked
  • the instructions further comprise: determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
  • the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers.
  • the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects.
  • the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement. [0229] In some aspects of the above systems, the criterion dynamically updates based on a depth corresponding to the swimmer’s position in the swimming pool.
  • the criterion dynamically updates based a distance of the swimmer from the camera.
  • the criterion dynamically updates based on a surrounding brightness of a camera view.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
  • the instructions further comprise generating an alert associated with the event in response to the generated detection signal.
  • system further comprises a wearable device, wherein the instructions further comprise transmitting the generated alert to the wearable device.
  • the computing system comprises a user interface
  • the instructions further comprise: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
  • the computing system comprises a user interface
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer
  • the instructions further comprise: selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
  • the instructions further comprise: tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
  • the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
  • identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
  • the system further comprises solar panels configured to charge the camera.
  • the instructions further comprise storing the captured frames in the computing system.
  • the computing system and the camera are configured to communicate wirelessly.
  • the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP.
  • the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
  • the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
  • the instructions further comprises: identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time, and dynamically updating the criterion based on the difference.
  • the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
  • a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block
  • the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
  • MRF Markov Random Field
  • the instructions further comprise updating the criterion based on a user input.
  • the instructions further comprise updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forests.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
  • the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
  • the instructions further comprise determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
  • a method comprises: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer
  • the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
  • the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the criterion is met when a number of detected foreground objects is less than the number of swimmers.
  • the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the number of swimmers is a number of detected foreground objects.
  • the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
  • the method further comprises dynamically updating the criterion based on a depth corresponding to the swimmer’s position in the swimming pool.
  • the method further comprises dynamically updating the criterion based a distance of the swimmer from the camera.
  • the method further comprises dynamically updating the criterion based on a surrounding brightness of a camera view.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
  • the method further comprises generating an alert associated with the event in response to the generated detection signal.
  • the method further comprises transmitting the generated alert to a wearable device.
  • the computing system comprises a user interface
  • the method further comprises: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
  • the method further comprises determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer; selecting, on a user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
  • the method further comprises tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
  • the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
  • identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
  • the method further comprises using solar panels to charge the camera.
  • the method further comprises storing the captured frames in a computing system.
  • the computing system and the camera are configured to communicate wirelessly.
  • the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
  • the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP.
  • the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
  • the method further comprises identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time, and dynamically updating the criterion based on the difference.
  • the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
  • a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block
  • the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
  • MRF Markov Random Field
  • the method further comprises updating the criterion based on a user input.
  • the method further comprises updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
  • determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
  • the method further comprises determining the tracked swimmer is an animal based on at least a size, geometry, and of the animal, and wherein in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
  • a non-transitory computer readable storage medium stores one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform any of the above methods.
  • a system includes: a video camera configured to capture frames of a swimming pool; a processor and a memory collocated with the video camera; a computing system configured to remotely communicate with the processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: determining whether a swimmer is in the swimming pool; in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system; and in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction.
  • transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time.
  • determining whether a swimmer is in the swimming pool includes: receiving frames from the video camera; identifying foreground pixels in the frames; and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool.
  • the computing system includes an ONVIF/ RTSP bridge configured to receive the captured frames.
  • the computing system is configured to wirelessly communicate with the video camera.
  • system further includes: an alarm configured to generate an alert associated with an event associated with the swimmer; and a router configured to wirelessly communicate with the computing system and the alarm over a first network connection.
  • the router is configured to wirelessly communicate with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
  • the program further includes instructions for: receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device.
  • the program further includes instructions for: receiving frames from the video camera; identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool; identifying a contour bordering the area in the one of the frames; and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames.
  • the pixels associated with the swimming pool are at least one of blue pixels and light green pixels.
  • the program further includes instructions for in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera.
  • the program further includes instructions for: in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination; and in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
  • the system further includes a sensor configured to detect an angle and a distance of an object relative to the sensor.
  • the swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range.
  • the senor is a passive infrared sensor (PIR) sensor includes a Fresnel lens.
  • PIR passive infrared sensor
  • the program further includes instructions for: capturing the frames with the video camera; and identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool, wherein the angle range and the distance range correspond to the identified area.
  • the area including the threshold amount of pixels are inside a contour of the swimming pool.
  • the computing system includes a second processor and a second memory, and a second program is stored in the second memory, configured to be executed by the second processor, and including instructions for: receiving the captured frames; and determining, based on the received captured frames, occurrence of an event associated with the swimmer.
  • system further includes an alarm configured to generate an alert in response to receiving an event detection signal
  • second program includes instructions further for in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm.
  • the video camera includes the processor and the memory.
  • a method includes steps the above systems are configured to perform.
  • a non-transitory computer readable storage medium storing one or more programs, the one or more programs including instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform the above method.
  • the term “substantially” is used to describe element(s) or quantit(ies) ideally having an exact quality (e.g., fixed, the same, uniformed, equal, similar, proportional), but practically having qualities functionally equivalent to the exact quality.
  • an element or quantity is described as being substantially fixed or uniformed can deviate from the fixed or uniformed value, as long as the deviation is within a tolerance of the system (e.g., accuracy requirements, etc.).
  • two elements or quantities described as being substantially equal can be approximately equal, as long as the difference is within a tolerance that does not functionally affect a system’s operation.
  • a ratio is described as being one. However, it is understood that the ratio can be greater or less than one, as long as the ratio is within a tolerance of the system (e.g., accuracy requirements, etc.).

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Emergency Management (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Human Computer Interaction (AREA)
  • Image Analysis (AREA)
  • Alarm Systems (AREA)

Abstract

Disclosed herein are systems and methods for detecting an event associated with a swimmer and generating a detection signal associated with the event.

Description

IMAGE BASED AQUATIC ALERT SYSTEM
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 62/962,123, filed on January 16, 2020, and U.S. Provisional Application No. 63/082,375, filed on September 23, 2020, the contents of which are incorporated herein by reference in its entirety for all purposes.
FIELD
[0002] This disclosure generally relates to an aquatic alert system. More specifically, this disclosure relates to image based systems and methods for event detection in an aquatic setting.
BACKGROUND
[0003] Reducing, avoiding, or preventing death and/or serious injury from drowning in a swimming pool may be difficult by manually monitoring a swimming pool (e.g., with a lifeguard, with a safety personnel, with a guardian). For example, it may be difficult and/or costly for lifeguards to continuously and accurately monitor a swimming pool to reduce the risk of drowning or identify risky behavioral swimming (e.g., doggy paddling, underwater swimming). Solutions exist that may help reduce this risk by assisting the human lifeguard, but they are costly (e.g., high hardware cost, high cost of installation, long installation time), not sufficiently accurate (e.g., high false alarm rates), or both. To reduce hardware cost and increase installation flexibility, a wireless camera may be used for monitoring a swimming pool. However, the camera’s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited and power consumption can be high; a limited power source while monitoring may cause interrupted service.
BRIEF SUMMARY
[0004] Disclosed herein are systems and methods for detecting an event associated with a swimmer and generating a detection signal associated with the event. [0005] In some embodiments, a system, comprises: a video camera configured to capture frames of a swimming pool; a computing system configured to communicate with the camera and including a processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
[0006] In some embodiments, the instructions further comprise: determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
[0007] In some embodiments, the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers.
[0008] In some embodiments, the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects. [0009] In some embodiments, the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
[0010] In some embodiments, the criterion dynamically updates based on a depth corresponding to the swimmer’s position in the swimming pool.
[0011] In some embodiments, the criterion dynamically updates based a distance of the swimmer from the camera.
[0012] In some embodiments, the criterion dynamically updates based on a surrounding brightness of a camera view.
[0013] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
[0014] In some embodiments, the instructions further comprise generating an alert associated with the event in response to the generated detection signal.
[0015] In some embodiments, the system further comprises a wearable device, wherein the instructions further comprise transmitting the generated alert to the wearable device.
[0016] In some embodiments, the computing system comprises a user interface, and the instructions further comprise: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
[0017] In some embodiments, the computing system comprises a user interface, and determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
[0018] In some embodiments, the instructions further comprise: tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes. [0019] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
[0020] In some embodiments, the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
[0021] In some embodiments, identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
[0022] In some embodiments, the system further comprises solar panels configured to charge the camera.
[0023] In some embodiments, the instructions further comprise storing the captured frames in the computing system.
[0024] In some embodiments, the computing system and the camera are configured to communicate wirelessly.
[0025] In some embodiments, the receiving of the frames with the video camera includes using one of real time streaming protocol (RTSP), HTTP, HTTPS, and SDP.
[0026] In some embodiments, the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
[0027] In some embodiments, the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels. [0028] In some embodiments, the instructions further comprises: identifying a difference between the background pixels at a first time and the background pixels at a second time, and dynamically updating the criterion based on the difference.
[0029] In some embodiments, the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
[0030] In some embodiments, a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block, and the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
[0031] In some embodiments, the instructions further comprise updating the criterion based on a user input.
[0032] In some embodiments, the instructions further comprise updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
[0033] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
[0034] In some embodiments, the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
[0035] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
[0036] In some embodiments, the instructions further comprise determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
[0037] In some embodiments, a method comprises: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels corresponds to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
[0038] In some embodiments, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
[0039] In some embodiments, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the criterion is met when a number of detected foreground objects is less than the number of swimmers. [0040] In some embodiments, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the number of swimmers is a number of detected foreground objects.
[0041] In some embodiments, the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
[0042] In some embodiments, the method further comprises dynamically updating the criterion based on a depth corresponding to the swimmer’s position in the swimming pool.
[0043] In some embodiments, the method further comprises dynamically updating the criterion based a distance of the swimmer from the camera.
[0044] In some embodiments, the method further comprises dynamically updating the criterion based on a surrounding brightness of a camera view.
[0045] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
[0046] In some embodiments, the method further comprises generating an alert associated with the event in response to the generated detection signal.
[0047] In some embodiments, the method further comprises transmitting the generated alert to a wearable device.
[0048] In some embodiments, the computing system comprises a user interface, and the method further comprises: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
[0049] In some embodiments, the method further comprises determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer; selecting, on a user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior. [0050] In some embodiments, the method further comprises tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
[0051] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
[0052] In some embodiments, the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
[0053] In some embodiments, identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
[0054] In some embodiments, the method further comprises using solar panels to charge the camera.
[0055] In some embodiments, the method further comprises storing the captured frames in a computing system.
[0056] In some embodiments, the computing system and the camera are configured to communicate wirelessly.
[0057] In some embodiments, wherein the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
[0058] In some embodiments, the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP. [0059] In some embodiments, the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
[0060] In some embodiments, the method further comprises identifying a difference between the background pixels at a first time and the background pixels at a second time, and dynamically updating the criterion based on the difference.
[0061] In some embodiments, the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
[0062] In some embodiments, a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block, and the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
[0063] In some embodiments, the method further comprises updating the criterion based on a user input.
[0064] In some embodiments, the method further comprises updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
[0065] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
[0066] In some embodiments, wherein the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
[0067] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers .
[0068] In some embodiments, the method further comprises determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and wherein in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
[0069] In some embodiments, a non-transitory computer readable storage medium stores one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform any of the above methods.
[0070] In some embodiments, a system includes: a video camera configured to capture frames of a swimming pool; a processor and a memory collocated with the video camera; a computing system configured to remotely communicate with the processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: determining whether a swimmer is in the swimming pool; in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system; and in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction.
[0071] In some embodiments, transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time.
[0072] In some embodiments, determining whether a swimmer is in the swimming pool includes: receiving frames from the video camera; identifying foreground pixels in the frames; and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool.
[0073] In some embodiments, the computing system includes an Open Network Video Interface Forum (ONVIF)/ RTSP bridge configured to receive the captured frames.
[0074] In some embodiments, the computing system is configured to wirelessly communicate with the video camera. [0075] In some embodiments, the system further includes: an alarm configured to generate an alert associated with an event associated with the swimmer; and a router configured to wirelessly communicate with the computing system and the alarm over a first network connection.
[0076] In some embodiments, the router is configured to wirelessly communicate with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
[0077] In some embodiments, the program further includes instructions for: receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device.
[0078] In some embodiments, the program further includes instructions for: receiving frames from the video camera; identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool; identifying a contour bordering the area in the one of the frames; and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames.
[0079] In some embodiments, the pixels associated with the swimming pool are at least one of blue pixels and light green pixels.
[0080] In some embodiments, the program further includes instructions for in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera.
[0081] In some embodiments, the program further includes instructions for: in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination; and in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
[0082] In some embodiments, the system further includes a sensor configured to detect an angle and a distance of an object relative to the sensor. The swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range.
[0083] In some embodiments, the sensor is a passive infrared sensor (PIR) sensor includes a Fresnel lens.
[0084] In some embodiments, the program further includes instructions for: capturing the frames with the video camera; and identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool, wherein the angle range and the distance range correspond to the identified area.
[0085] In some embodiments, the area including the threshold amount of pixels are inside a contour of the swimming pool.
[0086] In some embodiments, the computing system includes a second processor and a second memory, and a second program is stored in the second memory, configured to be executed by the second processor, and including instructions for: receiving the captured frames; and determining, based on the received captured frames, occurrence of an event associated with the swimmer.
[0087] In some embodiments, the system further includes an alarm configured to generate an alert in response to receiving an event detection signal, wherein the second program includes instructions further for in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm.
[0088] In some embodiments of the above systems, the video camera includes the processor and the memory.
[0089] In some embodiments, a method includes steps the above systems are configured to perform.
[0090] In some embodiments, a non-transitory computer readable storage medium storing one or more programs, the one or more programs including instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform the above method.
BRIEF DESCRIPTION OF THE DRAWINGS [0091] FIG. 1 illustrates an aquatic alert system, in accordance with an embodiment.
[0092] FIG. 2 illustrates an aquatic alert system, in accordance with an embodiment.
[0093] FIG. 3 illustrates a method of operating an aquatic alert system, in accordance with an embodiment.
[0094] FIG. 4 illustrates an aquatic alert system, in accordance with an embodiment.
[0095] FIGS. 5A-5C illustrate an aquatic alert system, in accordance with an embodiment.
[0096] FIG. 6 illustrates a method of operating an aquatic alert system, in accordance with an embodiment.
[0097] FIG. 7 illustrates a computing device, in accordance with an embodiment.
DETAILED DESCRIPTION
[0098] In the following description of embodiments, reference is made to the accompanying drawings which form a part hereof, and in which it is shown by way of illustration specific embodiments which can be practiced. It is to be understood that other embodiments can be used and structural changes can be made without departing from the scope of the disclosed embodiments.
[0099] FIG. 1 illustrates an aquatic alert system, in accordance with an embodiment. In an example, the aquatic alert system may include camera 102 and alarm devices 104 A, 104B, and 104C and may be installed in a facility that includes swimming pool 100. Although the aquatic alert system is illustrated to include one camera, it is understood that the aquatic alert system may include more than one camera without departing from the scope of the disclosure. The aquatic alert system may be used to help a safety personnel or a lifeguard better or more quickly determine whether someone is risk swimming, distress swimming, or drowning.
[0100] In some embodiments, the alarm device may be a display configured to visually alert occupants of the facility (e.g., lifeguard 110, swimmers 112, other occupants 114) that an event has been detected, in response to a generated detection signal. In some embodiments, the alarm device may be a speaker system configured to audibly alert occupants of the facility that an event has been detected, in response to a generated detection signal. In some embodiments, the alarm device may be a portable device (e.g., a smartwatch, a phone, a tablet) configured to alert (e.g., visual alert, audio alert, haptic alert) a user (e.g., lifeguard 110, a facility safety personnel, a facilities manager, a homeowner, a guardian of the swimmer involved in the event), in response to a generated detection signal. As used herein, a swimmer may be a body (e.g., a person, an animal) in the swimming pool.
[0101] In some embodiments, the camera 102 and the alarm devices 104A, 104B, and 104C may be connected over a wireless network (e.g., WiFi, a mobile network, an intranet) to communicate with a computing device (not shown) for processing data (e.g., video captured from the camera) and transmitting a detection signal to the alarm devices. In some embodiments, the camera 102 includes a processor and memory storing a program including instructions for the processor to process the data, analyze the data, and transmit the detection signal to the alarm devices. In some embodiments, the camera 102 includes a solar panel configured to charge a battery in the camera. In some embodiments, the camera 102 may be configured to be installed on a wall or a mount. In some instances, a lifeguard may not be able to monitor each swimmer in the swimming pool at all times (e.g., when the swimming pool is crowded, when staffing is low). The camera may advantageously assist the lifeguard by continuously monitoring the entire swimming pool. The aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) equal or quicker than the lifeguard’s determination. For example, the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time. In some embodiments, the camera is separate from a computing system configured to process images captured by the camera (e.g., the cameras are provided by the pool facilities, a separate off-the-shelf camera is used).
[0102] The facility may be indoor or outdoor. For example, the facility may be an indoor swimming pool, an outdoor swimming pool, a swimming pool in a private home, a spa, or an open body of water (e.g., a beach, ocean, lake, river). The event detection algorithm may vary depending on the facility (e.g., lighting conditions).
[0103] As an exemplary advantage, the disclosed aquatic alert system and methods of operating the aquatic alert system allow the system to monitor the swimming pool continuously in real-time (e.g., 24x7 monitoring), to be trained without supervision, to accurately recognize all swimmers, to accurately track all swimmers, and to detect an event (e.g., a drowning event, risk swimming, distress event) and provide an alarm accurately (e.g., low false alarm rates) and quickly (e.g., faster than a scenario with lifeguards and without this system).
[0104] For example, the disclosed aquatic alert system may detect a drowning event in less than 10 seconds, increasing the chance that the drowning swimmer can be rescued without harm. As yet another exemplary advantage, when used in conjunction with lifeguards, the system may increase a percentage of successful rescue from 16% to above 80%.
[0105] FIG. 2 illustrates an aquatic alert system 200, in accordance with an embodiment. The aquatic alert system 200 may be used in the facilities disclosed herein.
[0106] In some embodiments, the aquatic alert system 200 includes camera 202, processor 204, memory 206, user interface 210, assistance device 212, alarm device 214, and display 216. Elements of the aquatic alert system 200 may be connected with communication link 218. In some embodiments, the communication link 218 is wireless. For example, the communication link 218 represents a wireless network, and the wireless network includes a wireless router. As another example, the communication link 218 may be a WiFi, Bluetooth, or mobile network (e.g., 4G, LTE, 5G). As yet another example, the communication link 218 may be a wired link.
[0107] Elements of the aquatic alert system 200 may be included in subsystems. For example, the processor 204 and memory 206 may be included in a computing device (e.g., a computer, a server, a cloud computing device), separate from the other elements, where data (e.g., video frames) from the camera 202 is processed and analyzed and a detection signal to activate the alarm device may be transmitted, depending on the analysis. In some embodiments, the computing device transmits a video stream in response to receiving a query from an application of another device. In some embodiments, the computing system and the camera are configured to communicate wirelessly. In some embodiments, the computing device is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform. In some embodiments, the aquatic alert system 200 includes a first computing device (e.g., a base station, a computer) in a same local network as the camera 202 for initially processing video frames from the camera and a second computing device not in the local network (e.g., a server, a cloud computing device) for subsequently processing the video frames and transmitting a video stream in response to receiving a query from an application of a third device. By performing the processing and analysis in a computing device instead of the camera, the complexity and cost of the camera (and hence the cost of the system) may be advantageously reduced.
[0108] As another example, the processor 204 and memory 206 may be included in the camera 202. That is, the processing and analysis of data (e.g., video frames) received from the camera 202 may be performed by the camera itself without a separate computing device. Depending on the analysis, the camera 202 may transmit a detection signal to the assistance device 212 and/or alarm device 214 (e.g., a swimmer is determined to be drowning, and the camera transmits the signal to activate the assistance device 212 and/or alarm device 214).
As yet another example, the aquatic alert system 200 may not include a camera, and the camera is separate from elements (e.g., elements of a computing system) configured to process images captured by the camera (e.g., the cameras are provided by the pool facilities, a separate off-the-shelf camera is used).
[0109] The aquatic alert system 200 may be used as illustrated in FIG. 1. For example, camera 202 may be camera 102 and alarm device 214 may be at least one of alarm devices 104. The alarm device 214 may provide a visual, audio, or haptic alert indicating that a swimmer is drowning. For example, as described herein, based on whether a criterion is met (described in more detail below), the system generates a detection signal that causes an alarm device 214 to present an alarm (e.g., to a lifeguard, to a safety personnel, to a guardian of the drowning swimmer, to a facilities manager, to a homeowner). The aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) and generate an alert equal or quicker than the lifeguard’s determination. For example, the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time. As a result, the lifeguard may be able to act accordingly (e.g., help the drowning swimmer) quickly.
[0110] In some examples, the assistance device 212 may be a life saving device (e.g., a rescue robot, the EMILY Hydronalix Rescue Robot) or a buoyancy device (e.g., a device that can lift a person experiencing a drowning event above the water). In some embodiments, the assistance device 212 is activated or made available to a user of the system (e.g., a lifeguard, a safety personnel, a facilities manager, a homeowner, a guardian of the drowning swimmer) in response to generation of a detection signal (e.g., the system determines that someone is drowning, and the system activates or makes the assistance device available to rescue the actively drowning swimmer).
[0111] In some embodiments, the display 216 may be a touch screen and configured to display the user interface 210. In some embodiments, the user interface 210 is separately presented from the display 216. The user interface 210 may be configured to receive an input from a user (e.g., a touch input, a button input, a voice input), and a setting of the system may be updated in response to receiving the input from the user. Methods of operating the user interface 210 is described in more detail with respect to FIG. 3. As an exemplary advantage, the user interface allows a user to efficiently configure the system and customize a likelihood of event detection based on the user’s requirements.
[0112] In some examples, the display 216 may be integrated with the camera 202. In some examples, the display 216 may be included with a computer system that includes processor 204 and memory 206. In some examples, the display 216 may be a device separate from the camera 202, processor 204, and memory 206.
[0113] In some embodiments, the memory 206 includes data 208A and program 208B. The data 208A and/or program 208B may store instructions to cause the processor 204 to perform the methods disclosed herein (e.g., methods of operating the aquatic alert system 200, method 300). In some examples, the data 208A is part of a storage system of a computer system or an online storage system, and the captured frames are stored in a storage system of the computer system or an online storage system.
[0114] FIG. 3 illustrates a method 300 of operating an aquatic alert system, in accordance with an embodiment. In some embodiments, the method 300 is performed with a system comprising a video camera configured to capture frames of a swimming pool (e.g., camera 102, camera 202), a computing system configured to communicate with the camera and including a processor and memory (e.g., as described with respect to FIGS. 1, 2, and 4); and a program stored in the memory, configured to be executed by the processor and including instructions to perform the method.
[0115] In some embodiments, the method 300 includes step 302, receiving the frames captured with the video camera. For example, the camera 102 or camera 202 receives frames of a video feed of the swimming pool.
[0116] In some embodiments, the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently (e.g., sliding window method to process video). For example, the background pixels, foreground pixels, and the swimming pool information may be identified using a real-time streaming video of swimming pool. For example, the receiving of the frames with the video camera may include using one of RTSP, HTTP, HTTPS, and SDP with secure data transmission using encryption and authentication methods such as WPA, WPA2, TKIP, or AES. In some embodiments, the interior pool pixels are associated with an interior pool region in the frame. In some embodiments, the background pixels are associated with a background region (e.g., a portion of the frame associated with background objects of the pool) in the frame. In some embodiments, the foreground pixels are associated with a foreground region (e.g., swimmers) in the frame.
[0117] By processing the video in real-time, the system may advantageously assist the lifeguard by continuously and instantaneously monitoring the entire swimming pool. The aquatic alert system may advantageously determine an occurrence of an event (e.g., drowning) equal or quicker than the lifeguard’s determination. For example, the system may detect a drowning swimmer quicker than the lifeguard because the lifeguard may be surveying portions of the pool at each time.
[0118] In some embodiments, the method 300 includes storing the captured frames in the computing system. For example, the captured frames are stored in a storage system of the computer system or an online storage system.
[0119] In some embodiments, the method 300 includes step 304, for each frame captured with the video camera, identifying interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels (e.g., associated with the swimming pool) in the frame, foreground pixels (e.g., associated with the swimming pool) in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame. In some examples, the interior pool region may be defined by a perimeter (e.g., the pool's perimeter) surrounding the foreground objects (e.g., swimmers, people, animals, birds, objects active in a frame) and the background objects (e.g., water, static objects). For example, for each of the received frames from the camera, background pixels or region (associated with e.g., facility objects such as ladder 104, lane dividers, equipment, other occupants 114), foreground pixels or region (associated with e.g., swimmers 112), and swimming pool information (e.g., number of swimmers, facilities attributes) are identified. As another example, lane dividers may be removed based on their color and orientation with respect to the swimming pool (e.g., horizontal/vertical) and by applying a high pass filter across this orientation. Other static objects may be removed based on stationary (e.g., substantially zero speed) movement of objects (e.g., tubes, buoyant objects, metal objects). In some embodiments, although the other occupants 114 may not be in the foreground pixels, they may be tracked by the system; an alert may be generated if the other occupant 114 falls into the swimming pool, based on this tracking. In some embodiments, the background pixels may be a mean of background pixels accumulated over a number of samples (e.g., 10 consecutive samples) to account for dynamic background changes (e.g., a diving board is part of the background, but may be moving in some frames, but not others).
[0120] As yet another example, a skin complexion model may first be applied to isolate swimmer pixels (e.g., foreground pixels, pixels in foreground region) from the background pixels. Residue swimmer pixels may be removed using a temporal vector median filter. In contrast with modeling each pixel independently, the background pixels may be formed by block (e.g., cluster) centroids of homogeneous color regions within blocks of the background pixels. For example, a hierarchical k-means within each block is used.
[0121] In some embodiments, identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels. For example, background objects such as lane divider, ladder, and diving board may be identified based on successive frames and motion tracking of objects in the pool and/or size determination of objects in case of larger/taller objects. This step may advantageously allow the system to correctly identify swimmers and background objects, reducing the likelihood of a false alarm (e.g., mistaking a background object as a drowning swimmer) or a missed event (e.g., not tracking a drowning swimmer).
[0122] In some embodiments, the method 300 includes step 306, based on the identified background pixels, foreground pixels, and swimming pool information, forming a block (e.g., cluster) for each swimmer in the foreground pixels.
[0123] For example, background pixels may be divided into blocks. In each block, a k- means clustering algorithm may be applied to get a number of block (e.g., cluster) centroids. In every arriving frame, for every pixel, distance from a pixel to block (e.g., cluster) centroids in the block the pixel belongs to, and surrounding blocks (e.g., eight blocks) is calculated. If eight blocks are calculated, a minimum of nine distances is chosen as color discrepancy of a pixel.
[0124] In the resulting discrepancy image, hysteresis thresholding may he applied to segment the foreground from the background. That is, a pixel may belong to foreground if it is of greater discrepancy than a value Ti, and if it is a part of a region of other such pixels (e.g., a part of other background pixels, the region including at least one pixel of discrepancy greater than the value Ti).
[0125] Then, the foreground may be separated, and he divided into blocks. K-means algorithm may be used to find block (e.g., cluster) centroids in each block. This may be performed for every arriving frame.
[0126] Similar to thresholding for identifying background pixels, color discrepancy may be measured for every pixel and its surrounding foreground blocks. Pixels with high discrepancy may be labeled as highest confidence swimmer pixels (e.g., foreground pixels).
[0127] In some embodiments, the forming of the block (e.g., cluster) for each swimmer comprises determining whether the block (e.g., cluster) includes at least a threshold amount of foreground pixels. For example, a block (e.g., cluster) would be formed if a portion of the block includes a threshold percentage of foreground pixels (e.g., skin color pixels, pixels identified as potentially being a swimmer pixel), and a block (e.g., cluster) would not be formed if the portion does not include the threshold percentage of foreground pixels. This step may advantageously allow the system to correctly identify and track swimmers, reducing the likelihood of a false alarm (e.g., mistaking that a non-drowning swimmer is drowning) or a missed event (e.g., not tracking a drowning swimmer).
[0128] In some embodiments, the method 300 includes step 308, based on the identified background pixels, foreground pixels, and swimming pool information, tagging each swimmer in the frame with a respective identifier. For example, each swimmer (e.g., each of swimmers 112) is assigned a unique identifier such as a tag or a number.
[0129] In some embodiments, the method 300 includes step 310, tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks (e.g., clusters). For example, the image tracking and motion prediction algorithms may include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black- Jepson method. The swimmer’s movement may be tracked or predicted using an initial speed and direction of the swimmer. A system performing these steps may advantageously quickly track swimmers and reduce a lifeguard’s reaction to an event.
[0130] In some embodiments, the method 300 includes step 312, determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer. For example, the criterion may include at least one of swimmer speed, swimmer posture, (e.g., based on the angle of the principle axis of a best fit ellipse enclosing a swimmer), a splash threshold (e.g., a threshold number of splash pixels inside a bounding box associated with the swimmer), an activity threshold (e.g., a threshold cumulative area of pixels covered by a swimmer over a defined period of time), a submergence threshold (e.g., a threshold percentage of a swimmer’s body inside the water), a submergence variance, and swimmer vertical movement, as calculated from the camera frame. The criterion may also include at least one of swimmer speed (e.g., based on difference in centroid positions computed over a small period, using image tracking motion prediction algorithms), submersion variance (e.g., variance of submersion indicating the submersion behavior of the swimmer), and swimmer vertical movement. The criterion may be user defined (e.g., the system is trained offline) or learned by the system over time (e.g., real-time event inference).
[0131] For example, the criterion may be met when a splash threshold is exceeded by a swimmer splashing beyond a threshold amount while drowning and the criterion is met. As another example, the criterion may be met when an angle of a best fit ellipse enclosing a swimmer indicates that the body of the swimmer is in a non-swimming posture (e.g., drowning). As yet another example, the criterion may be met when an activity of a swimmer suddenly changes (e.g., a swimmer’s movement suddenly stops or a swimmer’s movement suddenly become swift, indicating that the swimmer may be drowning, a swimmer’s hair is over his or her eyes, a swimmer is not using his or her legs, a swimmer is trying to swim in a direction but not moving in the direction, a swimmer is trying to roll over onto his or her back, the swimmer appears to be climbing an invisible ladder). As yet another example, the criterion may be met when greater than a threshold percentage of the swimmer’s body is submerged underwater over a defined period of time (e.g., a swimmer is under the water for too long, a swimmer’s head is low in the water). By using a criterion to determine an occurrence of an event, the event may be accurately and consistently detected (e.g., different lifeguards may have a different determination of whether a swimmer requires assistance at different time; a lifeguard may misjudge a drowning event, diverting his or her attention away from other swimmers).
[0132] In some embodiments, the method 300 includes step 314, in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer. For example, the detection signal indicates that a swimmer is drowning or an animal has fallen into the swimming pool. In some embodiments, more than one criterion or a combination of criterion may need to be met to generate the detection signal. For example, a generalized reduced multivariable polynomial (GRM) network may be used to combine the criterion to determine whether a detection signal should be generated.
[0133] In some embodiments, the method 300 includes generating an alert associated with the event in response to the generated detection signal. For example, the detection signal causes an alarm or an alert (e.g., lifeguard 110, a guardian, a safety personnel) that expresses someone may be drowning. For example, the alert may be generated on a wearable device, a portable device, or a system user interface. In some examples, multiple alerts may be generated on multiple devices. In some embodiments, the system comprises a wearable device (e.g., alarm device 104C, a smart watch wore by lifeguard 110, a wearable device worn by an external supervisor), and the method 300 includes transmitting the generated alert to the wearable device.
[0134] As an exemplary advantage, the method 300 may allow detection of a drowning event in less than 10 seconds, increasing the chance that the drowning swimmer maybe rescued without harm. As another exemplary advantage, when used in conjunction with lifeguards, the system 200 and the method 300 may increase a percentage of successful rescue from 16% to above 80%.
[0135] In some embodiments, the method 300 includes determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, detecting a swimmer leaving or entering the interior pool region, updating the number of swimmers based on the detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer. For example, a number of the swimmer at a given time is determined based on the foreground pixels (e.g., number of blocks or clusters, number of tagged swimmers) or the swimming pool information (e.g., number of tagged swimmer at a time prior to the given time). At a subsequent time, a new swimmer entering the swimming pool may be detected (e.g., based on the identification step) and tagged in response to the detection. At a subsequent time, a swimmer leaving the swimming pool may be detected (e.g., based on the identification step) and untagged in response to the detection.
[0136] As an exemplary advantage, by keeping track of the number of swimmer in the swimming pool, false negatives may be eliminated under low visibility conditions (e.g., no clear water, nighttime). If a current swimmer count is lower than a previous swimmer count and the system determines that no swimmer has left the swimming pool (indicating that, e.g., a swimmer may be submerged underwater, drowning, and not visible to the camera), then a criterion is met and a detection signal is generated.
[0137] In some embodiments, the method 300 includes determining a number of swimmers based on the foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers. For example, a total number of swimmers at given time may be based on the number of detected foreground objects (e.g., identified blocks, clusters, active objects) and swimming pool information such as total number swimmers at a time prior to the given time. If partial occlusion or occlusion is determined between at least two blocks (e.g., clusters), then the number of swimmers is determined to less be the number of identified blocks (e.g., clusters) (e.g., due to partial occlusion or occlusion, one cluster may include more than one swimmer). The system may advantageously determine more accurately the number of swimmer even with partial occlusion or occlusion in the frame.
[0138] In some embodiments, the method 300 includes determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects (e.g., detected blocks, clusters, active objects). For example, a total number of swimmers at a given time may be determined by the number of identified blocks (e.g., clusters) and swimming pool information such as total number of swimmers at a time prior to the given time. If there is no partial occlusion or occlusion between the blocks (e.g., clusters), then the number of swimmers is determined to be the number of identified blocks (e.g., clusters). [0139] In some embodiments, the criterion dynamically updates based on a depth (e.g., of the swimming pool) corresponding to the swimmer’s position in the swimming pool. For example, if the swimmer is at a shallower or deeper portion of the swimming pool, then the submergence threshold may be dynamically updated accordingly. For example, a percentage threshold may be higher for a swimmer at a shallower portion of the swimming pool.
[0140] In some embodiments, the criterion dynamically updates based on a distance of the swimmer from the camera. For example, if a swimmer is at a further distance from the camera, resolution of the swimmer may be reduced, and the criterion may be updated to be more conservative (e.g., the threshold meeting the criterion may be lower). In some embodiments, the criterion dynamically updates based on a surrounding brightness of a camera view.
[0141] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors (e.g., swimmer skill, risk level of swimming). For example, the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met. As one example, over time (e.g., after 15 minutes), the system may learn that the tracked swimmer is a strong swimmer, and the criterion emphasis factor may deemphasize the criterion (e.g., setting higher thresholds determining whether the swimmer is drowning). As another example, over time, the system may learn that the tracked swimmer is a weak swimmer (e.g., a beginner), and the criterion emphasis factor may emphasize the criterion (e.g., setting lower thresholds for determining whether the swimmer needs assistance). A system that determines an event occurrence using a criterion emphasis factor may be more robust by allowing configuration of a corresponding criterion based on learned behaviors or user inputs (e.g., compare to a system that does not allow variability of event detection parameters).
[0142] In some embodiments, the height of a swimmer may be determined, and the criterion emphasis factor may be updated based on the height of the swimmer. For example, the height of the swimmer indicates that the swimmer may be a child; the criterion emphasis factor may be emphasized for higher sensitivity (e.g., the child may be more likely to drown). In some embodiments, the criterion may be deemphasized when a relatively tall swimmer passes over a relatively shallow part of the pool. [0143] In some embodiments, the computing system comprises a user interface, and the method 300 includes selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity. For example, the user interface may be presented on a display (e.g., display 216) of the system, and a user (e.g., a lifeguard, a home owner, an administrator) may select a current activity associated with the swimming pool (e.g., free swim, a supervised swimming class, swim meet, kids swimming lesson, scuba lessons, day, night) on the user interface. Based on the selected activity and a risk of drowning associated with the activity, the criterion may be updated. For example, the risk of drowning during a free swim may be higher than the risk of drowning for a swim meet; the criterion associated with the free swim may be more conservative (e.g., drowning detection may be more sensitive) than the criterion associated with the swim meet. As yet another example, a user may not want anyone in the swimming pool at night or may have reduced supervision at night; therefore, the criterion associated with night-time may be more conservative or sensitive than the criterion associated with day-time.
[0144] In some embodiments, the computing system comprises a user interface, and determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior. For example, the user interface may be presented on a display (e.g., display 216) of the system, and a user (e.g., a lifeguard, a home owner, an administrator) may select a behavior of a tracked swimmer (e.g., the tracked swimmer is an advanced swimmer, the tracked swimmer is a beginner). Based on the selected behavior, the emphasis factor may be updated. For example, the risk of drowning for a beginner may be higher than the risk of drowning for a more advanced swimmer; the criterion associated with the beginner may be more conservative (e.g., drowning detection may be more sensitive) than the criterion associated with the advanced swimmer.
[0145] In some embodiments, the method 300 includes tracking a history of the swimming pool, learning site attributes of the swimming pool based on the history, and updating the criterion based on the learned site attributes. For example, events and conditions of the swimming pool may be tracked over time, and the site attributes may be parameters associated with the swimming pool (e.g., indoor pool parameters, outdoor pool parameters, brightness, air quality, glare, water color, lanes or other static objects, paint color on pool floor). Based on the tracked history and the learned site attributes, the criterion is updated accordingly to more accurately reflect a risk of drowning associated with the particular swimming pool. As an exemplary advantage, by updating the criterion based on the learned site attributes, the system may better adapt to changing pool conditions without manual updates or calibrations.
[0146] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool, in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset, and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset. For example, the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met. The system may include presets of predetermined criterion and criterion emphasis factors associated with different types of swimming pool (e.g., indoor pool, outdoor pool, large swimming pool, small swimming pool, swimming pool including a diving board). A preset of these predetermined criterion and criterion emphasis factors may be selected (e.g., by the user, by the system based on image analysis of the pool) based on the type of swimming pool. As an exemplary advantage, by having these presets, the initial tuning process of the system may be reduced (e.g., short installation time).
[0147] In some embodiments, identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time, and the method 300 includes dynamically updating the criterion based on the difference. For example, the system determines that background pixels are different between a first time and a second time because swimming pool set up may be different. As an example, the setup at the first time may be a swim meet, and the second up at the second time may be a free swim. As another example, the setup of the swimming pool may have been renovated over time. In response to identifying the difference, the system dynamically updates a criterion associated with the first setup (e.g., the swim meet, setup before pool renovation) to a criterion associated with the second setup (e.g., the free swim, setup after pool renovation). As an exemplary advantage, less manual tuning and more accuracy may be achieved by using the system to automatically identify these background differences. [0148] In some embodiments, a first block (e.g., cluster) associated with a first swimmer and a second block (e.g., cluster) associated with a second swimmer at least partially overlap and form a third block (e.g., cluster), and the forming of the block (e.g., cluster) of each swimmer further comprises using a hierarchical k-means clustering algorithm to separate the first and second blocks (e.g., clusters), a Markov Random Field (MRF) to form the first and second blocks (e.g., clusters) based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
[0149] For example, two swimmers (e.g., two swimmers with unique identifiers or tags) merge as one identified foreground object (e.g., one combined third block or cluster). The newly formed block or cluster (e.g., the third block or cluster) is now searched for k-means with two sub-blocks or sub-clusters (e.g., searching for the first and second blocks or clusters based on history, swimming pool information, tracking knowledge) and the clustering algorithm may give the two independent swimmers as an output, even if the third block (e.g., cluster) appears to be one block (e.g., cluster). MRF may break that one block or cluster (e.g., the third block or cluster) into two swimmer based on body shape and background water separation. Linear prediction scheme may predicts where (e.g., direction, location) the swimmer may be swimming to identify swimmer’ s centroids and to potentially better track the centroids. Each swimmer may be more accurately identified by forming the sub-blocks or sub-clusters.
[0150] In some embodiments, the method 300 includes updating the criterion based on a user input. For example, the system may include a user interface, and using the user interface, the user may be able to manually adjust a criterion (e.g., manually adjusting threshold levels associated with meeting the criterion to generate the detection signal and an alert).
[0151] In some embodiments, the method 300 includes updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data. For example, the system may be trained unsupervised using Monte-Carlo simulation training videos or graphics of normal swimming and drowning behaviors, and criterion may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection. As another example, the system may be trained unsupervised using data (e.g., usage data, event occurrence data) from users (e.g., a same user, other users) of the aquatic alert system. As yet another example, the system may be trained unsupervised using data-based methods such as neural networks or random forests.
[0152] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method 300 includes updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data. For example, the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met. The system may be trained unsupervised using Monte-Carlo simulation training videos or graphics of normal swimming and drowning behaviors, and criterion emphasis factor may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection. As another example, the system may be trained unsupervised using data (e.g., usage data, event occurrence data) from users (e.g., a same user, other users) of the aquatic alert system, and criterion emphasis factor may be updated based on the unsupervised training, potentially reducing manual tuning of the system and increasing accuracy of detection.
[0153] In some embodiments, the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model. For example, training using an artificial neural network (ANN) based on a Gaussian or Bayesian probabilistic models to evaluate drowning confidence level associated with a probability of drowning may be used to determine whether the criterion is met. As another example, the probabilistic model is built based on ground truth. The model may allow the system to more accurately determine an occurrence of an event.
[0154] In some embodiments, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method includes determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers. For example, the criterion emphasis factor may be an adjustment factor (e.g., a numerical weight) associated with a criterion that affects how likely the criterion is met. A movement of a tracked swimmer is identified. For example, the movement of the tracked swimmer includes movement relative to the center of the tracked swimmer (e.g., the limbs of the swimmer are moving relative to the center of the swimmer, the swimmer is moving in a bounded box). In accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, the criterion emphasis factors of the tracked swimmers are updated because the associated foreground object is more likely to be a swimmer (e.g., an inanimate object is less likely to be moving relative to its center). As an exemplary advantage, if other features are insufficient (e.g., confidence is low) to determine other foreground objects from active objects (e.g., people, animals, etc.), determining whether a swimmer is moving relative to a center or whether a swimmer is moving in a bounded box and updating a criterion emphasis factor in accordance with the determination increase swimmer or active object identification confidence.
[0155] In some examples, a person determined to be not wearing swimwear (e.g., other occupant 114A) falling into the swimming pool may be associated with a more emphasized criterion emphasis factor because it is more likely that this person is drowning. If the outfit is in a non-human skin color, it may be identified using RGB color thresholding. For example, outfits such as wet- suits and swimsuits may be identified due to their stark contrast such as black, blue, and red. As another example, a person wearing or not wearing a swim cap may be identified by the person’s head geometry and color (e.g., head shape, color of the top of the swimmer’s head). As an exemplary advantage, a swimmer may be more accurately determined, and misidentification of swimmers may be reduced.
[0156] In some embodiments, the method 300 includes determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met. For example, the system may be trained to identify animals based on differentiating features such as size, shape, structure (e.g., tail, legs), and complexity. As another example, an animal is determined based on the movement of a foreground object relative to a center of the foreground object (e.g., the limbs of the animal are moving relative to the center of the animal, the limbs of the animal are moving within a bounded box). If an animal is determined to fall into water, an alarm (as disclosed herein) may be generated in response. In some embodiments, in response to a selection on a user interface, the system may forgo generating an alarm when an animal is determined to be in the swimming pool (e.g., a dog may be able to swim in the swimming pool). As an exemplary advantage, if other features are insufficient (e.g., confidence is low) to determine other foreground objects from an animal, determining whether the animal is moving relative to a center or whether the animal is moving in a bounded box increases animal identification confidence.
[0157] FIG. 4 illustrates an aquatic alert system 400, in accordance with an embodiment. In some embodiments, the aquatic alert system 400 includes a camera (e.g., camera 402A, 402B, 402C) and a computing system 404. In some embodiments, the aquatic alert system 400 includes an alarm (e.g., alarm 416A, 416B, 416C). Although the aquatic alert system 400 is described with the illustrated elements, it is understood that the aquatic alert system 400 may include more or less elements or may be combined with elements of other embodiments described in the disclosure. For example, the aquatic alert system 400 may include any number of cameras, computing systems, and alarms, and may be configured to communicate with any number of clients and/or routers. Although the aquatic alert system 400 is described with respect to a swimmer, it is understood that “swimmer” is not limiting. For example, features of the aquatic alert system may be used to detect undesired objects (e.g., animals, someone who accidentally fell into the swimming pool, waste) or an intruder in the swimming pool.
[0158] In some embodiments, the camera is camera 102 or camera 202. In some embodiments, the aquatic alert system 400 includes at least one camera (e.g., camera 402A, camera 402B, camera 402C). For example, each camera covers a different area of a swimming pool or covers the swimming pool at different angles.
[0159] In some embodiments, the camera is configured to capture frames of a swimming pool (e.g., swimming pool 100). In some embodiments, the aquatic alert system 400 includes more than one camera, and each camera covers a swimming pool from a different angle; each camera is configured to capture frames of the swimming pool from a different angle. In some embodiments, the aquatic alert system 400 includes more than one camera, and each camera covers a different area of a swimming pool; each camera is configured to capture frames of a corresponding portion of the swimming pool.
[0160] In some embodiments, the camera includes elements of the aquatic alert system 200 (e.g., processor 204, memory 206, data 208A, program 208B). In some embodiments, the aquatic alert system 400 includes a processor and memory separate from the camera (e.g., the processor is separate from the sensor of the camera; the processor is in a different housing than the camera; the processor and/or the memory are collocated with the camera (e.g., the processor and/or the memory and the camera are both proximate to the swimming pool)). In some embodiments, the processor and memory are in a same housing as the camera. In some embodiments, the computing system 404 is configured to communicate with the processor and the camera. In some embodiments, the processor associated with the camera is located within a range of the swimming pool (e.g., the camera is in visual range (e.g., a visual range of camera provides an image of sufficient detail/clarity that allows associated software to identify an object/swimmer in a pool) of the swimming pool, and the processor is within a communication range of the camera).
[0161] In some embodiments, the processor associated with the camera is configured to determine a swimmer is in the swimming pool. In some embodiments, determining whether a swimmer is in the swimming pool includes receiving frames from the video camera, identifying foreground pixels in the frames, and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool. In some embodiments, determining whether a swimmer is in the swimming pool includes detecting, with a sensor, that an object is within the angle range and the distance range, as described in more detail herein.
[0162] For example, the camera captures frames of the swimming pool, or the processor associated with the camera receives frames of the swimming pool from the camera. From these frames, the camera or the processor associated with the camera identifies foreground pixels in the frame, and determines whether the foreground pixels correspond to a swimmer in the swimming pool. Examples of foreground pixel and swimmer detection are described with respect to the system in Fig. 1, system 200, and method 300. For the sake of brevity, those examples are not described again here.
[0163] In some embodiments, the processor associated with the camera is configured to transmit an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system in accordance with a determination that the swimmer is in the swimming pool. For example, the processor associated with the camera (e.g., a processor in a housing of the camera, a processor in communication with the camera) determines (e.g., using the methods described herein) that a swimmer is in the swimming pool. In accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection). [0164] In some embodiments, transmitting the captured frames to the computing system comprises transmitting the captured frames using a protocol for streaming in real-time. For example, the protocol is at least one of RTSP, HTTP, HTTPS, and SDP.
[0165] In some embodiments, in accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a first rate. In such embodiments, in accordance with a determination that no swimmer is in the swimming pool, the process forgoes transmit the instruction (causing, e.g., the processor to transmit the frames at a second rate lower than the first, transmit no frames).
[0166] In some embodiments, the camera is in wireless communication with other elements of the aquatic alert system 400, and the camera’s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited. By transmitting the captured frames (or transmitting the captured frames at a higher rate) to the computing system in accordance with a determination that a swimmer is in the swimming pool (e.g., streaming when someone is in the swimming pool, not streaming when no one is in the swimming pool), camera power consumption (e.g., transmission power) may be advantageously reduced because less power may be consumed in scenarios when an object in the swimming pool is less likely, allowing the source of power to be a feasible primary source of power. For example, using the methods and system described herein, the battery may power the camera for up to days to weeks a single charge, compared to hours to days for a camera that transmits the captured frames whether a swimmer is in the pool or not or a camera that performs on-board drowning detection (which may be more compute-intensive and power consuming). Furthermore, having a more compact power source allows the camera to be installed without connecting to an alternative source of power, simplifying camera installation (e.g., less components (e.g., wires) are needed to install the camera), allowing more camera installation location options, reducing cost, and reducing maintenance. In some embodiments, a charge on a battery of the camera is low (e.g., less than a threshold charge (e.g., 10%, 20%)), an alert is generated (e.g., by the camera, by the processor associated with the camera, by the computing system) to notify a user about the low battery charge.
[0167] In some embodiments, the processor associated with the camera is configured to forgo transmitting the instruction in accordance with a determination that the swimmer is not in the swimming pool. For example, in accordance with a determination that no swimmer is in the swimmer pool, the camera does not transmit captured frames to the computing system 404.
[0168] In some embodiments, the processor associated with the camera receives frames from the camera. The camera or the processor identifies an area of one of the frames that includes a threshold amount of pixels associated with the swimming pool and identifies a contour bordering the area in the one of the frames. For example, the contour corresponds to a perimeter of the swimming pool. In accordance with a determination that the entire contour is within the frames, the aquatic alert system 400 identifies the swimming pool from the frames. In some embodiments, the pixels associated with the swimming pool are at least one of blue pixels and light green pixels (e.g., colors associated with water).
[0169] For example, during installation of the aquatic alert system 400, the camera is configured to automatically identify a swimming pool. The camera captures frames in its view and identifies an area that includes more than a threshold of swimming pool pixels and identifies a contour bordering the area including more than a threshold amount of swimming pool pixels (e.g., image processing determines the area of the frame includes water pixels, the swimming pool is sufficiently in view). If the entire contour is within the field of view of the camera (e.g., entire contour of the swimming pool is within a frame), then the swimming pool is automatically identified and the camera has been properly installed.
[0170] In some instances, the camera may not be properly installed. In accordance with a determination that the entire contour is not within the frames or no area includes more than a threshold of swimming pool pixels, a request to reposition the video camera is generated (e.g., to a client device, a warning on the camera, a warning on a GUI of the computing system 404). For example, the field of view of the camera does not align with the swimming pool, and the camera is not properly installed. As another example, the camera may be too far from the swimming pool, and the camera is not properly installed. When the camera is not determined to be properly installed, a request to reposition the camera (e.g., to properly install the camera) is generated. By using the camera to determine whether the swimming pool is within a frame, the camera may be advantageously used to assist installation of the aquatic alert system, and the positioning of the camera may be more suitable for event detection. For example, compared to installation without camera assistance, the lighting and/or resolution of the captured frames may improve. Such improvements can be applied to other embodiments, with or without the system of FIG. 4. For example, identification of a swimming pool (e.g., for camera installation) by the camera may be applied to the embodiments of aquatic alert system in Fig. 1, aquatic alert system 200, and aquatic alert system 500.
[0171] In some examples, more than one camera (e.g., camera 402A, 402B, 402C) is included in the aquatic alert system 400, and each camera is configured to capture frames from a portion of the swimming pool. In these examples, the entire contour of the swimming pool may not need to be in the frame of the cameras; the camera is properly installed when it is determined that the entirety of the swimming pool has been covered by the cameras.
[0172] In some instances, some conditions may cause the accuracy of swimmer and/or event detection to reduce. For example, a view of the swimming pool is obstructed. As another example, bad weather condition causes the swimming pool and/or swimmer pixels to be less identifiable. In some embodiment, the camera or the processor determines that a swimming pool area of a frame includes less than a threshold amount of pixels associated with the swimming pool. In accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, the aquatic alert system (e.g., the camera, the processor associated with the camera, the computing system 404) generates a notification corresponding to the determination (e.g., an alert notification to a user indicating a view of the swimming pool is obstructed or reduced).
[0173] In some embodiments, the camera or the processor associated with the camera is configured to perform aspects of the disclosed aquatic alert system associated with system in Fig. 1, system 200, and method 300. For the sake of brevity, these aspects are not described again.
[0174] In some embodiments, the computing system 404 includes elements of the aquatic alert system 200 (e.g., processor 204, memory 206, data 208A, program 208B, user interface 210). In some embodiments, as illustrated, the computing system 404 includes a bridge 406. For example, the bridge 406 is an ONVIF/RTSP bridge configured to receive frames captured from the camera (e.g., after a swimmer is determined to be in the swimming pool).
[0175] In some embodiments, the computing system 404 wirelessly communicates with the camera. As an exemplary advantage, the elements and/or methods described herein allows the camera to be installed wirelessly and communicate wirelessly. By allowing the camera to be installed wirelessly and communicating wirelessly, camera installation is simplified, and more camera installation location options are possible. Additionally, with a more simplified system, cost and maintenance are reduced. [0176] In some embodiments, the alarm is alarm device 104A, 104B, 104C, or 216. In some embodiments, the alarm is configured to generate an alert associated with an event associated with the swimmer. In some embodiments, the alarm generates an alert in response to receiving an event detection signal. In accordance with a determination of the occurrence of the event (e.g., by the computing system 404, by the processor 408), the computing system 404 or the processor 408 transmits the event detection signal to the alarm (e.g., to generate the alert). In some embodiments, the alert includes an alert on a client device (e.g., client 414A, 414B, 414C) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). For example, an alert is broadcasted using a smart speaker.
[0177] In some embodiments, the aquatic alert system 400 includes a processor 408. In some embodiments, the processor 408 is an AI processor. In some embodiments, the processor 408 is included in the computing system 404. In some embodiments, the processor 408 receives the captured frames (e.g., from the camera, in accordance to a determination that a swimmer is in the swimming pool, etc.). The processor 408 determines, based on the received captured frames, occurrence of an event associated with the swimmer. In some embodiments, the processor 408 is configured to perform aspects of the disclosed aquatic alert system associated with system in Fig. 1, system 200, and method 300. For the sake of brevity, these aspects are not described again.
[0178] In some embodiments, the processor 408 performs more computation intensive and power-consuming processes such as analysis of the frames captured by the camera and determination of an occurrence of an event (e.g., associated with system in Fig. 1, system 200, and method 300). In some embodiments, the processor associated with the camera does not perform these more computation intensive and power-consuming processes. By performing more computation intensive and power-consuming processes at a different processor and not at the processor associated with the camera, the processor associated with the camera may advantageously be more power efficient.
[0179] In some embodiments, the aquatic alert system 400 includes a first router 410 configured to wirelessly communicate with the computing system and the alarm over a first network connection. In some embodiments, the first router 410 is a part of the computing system 404. In some embodiments, the first router 410 wirelessly communicates with the camera and/or computing system 404 and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network. [0180] For example, the first router 410 is a fallback router that is configured for wireless connection over a first network (e.g., an internal network, a network different than a second network). The camera, the computing system 404, and/or the alarm are in wireless communication initially over a second network (e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network). In some instances, the second network becomes unavailable (e.g., unstable network connection, power outage), and in accordance with a determination that the camera, the computing system 404, and/or the alarm is not connected to the second network (e.g., due to the unavailability), the camera, the computing system 404, and/or the alarm wirelessly communicate over the first network using the first router 410. In some embodiments, an alert is generated to notify a user that the first router is active and/or the second network is not available.
[0181] As an exemplary advantage, when a default communication connection (e.g., WiFi, internet) is unavailable, the first router allows the aquatic alert system to continue to detect for an event in the swimming pool. Allowing the aquatic alert system to continue to detect for an event during an unavailability may improve safety for a swimmer or a user of the aquatic alert system. For example, without the first router, if a swimmer is experiencing difficulty (e.g., drowning, injured) during connection unavailability, no alert may be generated to indicate that the swimmer requires assistance. As another example, without the first router, if an intruder enters the swimming pool during connection unavailability, no alert may be generated to warn a user about the intruder.
[0182] In some embodiments, the aquatic alert system 400 includes a second router 412 configured to wirelessly communicate with the computing system 404 and the alarm over a second network connection. For example, the second router 412 is a WiFi router, and the WiFi router is connected to the alarm over a WiFi or an internet connection.
[0183] In some embodiments, the aquatic alert system 400 is connected to a client (e.g., client 414A, 414B, 414C). In some embodiments, the client is a client device. For example, the client is at least one of a user of the aquatic alert system, a lifeguard, a safety personnel, a guardian of a swimmer, a facilities manager, and a homeowner, and the client device is at least one of a phone, a tablet, a laptop, an IoT device (e.g., a smart speaker), a smart home terminal, a security monitor, and a display. [0184] In some embodiments, the client transmits a request for frames from the camera. In some embodiments, the camera, the processor associated with the camera, or the computing system 404 receives the request for frames from the video camera from the client device, and in response to receiving the request for the frames, the camera, the processor associated with the camera, or the computing system 404 transmits the frames to the device.
[0185] For example, a user of the aquatic alert system requests a live stream of the swimming pool. Using the user’s device, a request for the live stream is transmitted. The camera, the processor associated with the camera, or the computing system 404 receives the request for the live stream, and in response to receiving the request, the camera, the processor associated with the camera, or the computing system 404 transmits the requested live stream to the user’s device (e.g., for display).
[0186] In some embodiments, the aquatic alert system 400 includes a sensor (not shown) configured to detect an angle and a distance of an object relative to the sensor. The swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting that the object (e.g., a swimmer) is within the angle range and the distance range with the sensor. In some embodiments, the sensor is a passive infrared sensor (PIR) sensor comprising a Fresnel lens.
[0187] For example, the swimming pool is located between -30 degrees and 30 degrees and between 5 m to 7.2 m relative to the sensor. It is understood that these values are exemplary. If the sensor detects an object within the angle range and the distance range relative to the sensor, then a swimmer is determined to be in the swimming pool (e.g., then frames from the camera is transmitted to the computing system for further processing).
[0188] In some embodiments, the camera is in wireless communication with other elements of the aquatic alert system 400, and the camera’s source of power (e.g., a battery, a rechargeable battery, solar power) may be limited. By using the sensor and transmitting the captured frames to the computing system in accordance with a determination that a swimmer is in the swimming pool (e.g., streaming when someone is in the swimming pool, not streaming when no one is in the swimming pool), camera power consumption (e.g., transmission power, power used to capture/analyze frames for swimmer detection) may be advantageously reduced because less power may be consumed in scenarios when an object in the swimming pool is less likely, allowing the source of power to be a feasible primary source of power. For example, using the methods and system described herein, the battery may power the camera for up to days to weeks on a single charge, compared to hours to days for a camera that transmits the captured frames whether a swimmer is in the pool or not. Furthermore, having a more compact power source allows the camera to be installed without connecting to an alternative source of power, simplifying camera installation (e.g., less components (e.g., wires) are needed to install the camera), allowing more camera installation location options, reducing cost, and reducing maintenance.
[0189] In some embodiments, the angle range and distance range relative to the sensor is determined using the camera to identify the swimming pool. The camera captures frames, and the camera or the processor associated with the camera identifies an area of one of the frames as including a threshold amount of pixels associated with the swimming pool (e.g., using the methods described herein). The angle range and the distance range (e.g., used to detect an object using the sensor) correspond to the identified area, and the area includes the threshold amount of pixels are inside a contour of the swimming pool (e.g., as described herein).
[0190] FIGS. 5A-5C illustrate an aquatic alert system 500, in accordance with an embodiment. In some embodiments, the aquatic alert system 500 includes a camera 502, a computing system 504 including a bridge and a processor 508, and an alarm 514. In some embodiments, a processor associated with the camera 502 is located within a housing of the camera. In some embodiments, a processor associated with the camera 502 is located outside a housing of the camera (not shown).
[0191] In some embodiments, the aquatic alert system 500 includes elements of at least one of aquatic alert system in Fig. 1, aquatic alert system 200, and aquatic alert system 400. For example, camera 502 is at least one of camera 102, camera 202, 402A, 402B, and 402C, computing system 504 is computing system 404 or includes elements of aquatic system 200, and alarm 514 is at least one of alarm device 104, alarm device 212, alarm 416A, alarm 416B, and alarm 416C. In some embodiments, exemplary advantages of the aquatic alert system 500 are described with respect to FIGS. 1-4. For the sake of brevity, those advantages are not described here.
[0192] In some embodiments, the frame 518 illustrates a frame captured by the camera 502. In some embodiments, the frame 518 illustrates a portion of a frame captured by the camera 502. In some embodiments, the frame 518 illustrates a view of the swimming pool from a third person’s view (e.g., not the camera view). Although the frame 518 is illustrated as a frame at a moment in time, it is understood that the frame 518 may represent more than one frame over a period of time. In some embodiments, content of the frame 518 may be viewed on a client device 514 in response to a request for the captured frames, as described with respect to FIG. 4.
[0193] Although the aquatic alert system 500 is described with respect to a person 520, it is understood that the person and the exemplary actions of the person are not limiting. For example, features of the aquatic alert system may be used to detect undesired objects (e.g., animals, someone who accidentally fell into the swimming pool, waste) or an intruder in the swimming pool.
[0194] FIG. 5A illustrates a person 520 away from the swimming pool 522, in accordance with an embodiment. In some embodiments, at this time, the camera 502 or the processor associated with the camera determines that the person 520 is not in the swimming pool 522, transmission of an instruction to receive captured frames (and to transmit the captured frames to the computing system 504) is forgone, as illustrated by a lack of a connection between the camera 502 and the computing system 504.
[0195] FIG. 5B illustrates a person 520 in the swimming pool 522, in accordance with an embodiment. For example, the person 520 from FIG. 5A decided to jump into the swimming pool 522 and started swimming. In some embodiments, at this time, the camera 502 or the processor associated with the camera determines that the person 520 (e.g., a swimmer) is in the swimming pool 522, an instruction to receive captured frames (and to transmit the captured frames to the computing system 504) is transmitted, as illustrated by a connection between the camera 502 and the computing system 504.
[0196] In some embodiments, to determine that the person 520 is in the swimming pool 522, the camera 502 or the processor associated with the camera 502 receives the frame 518, identifies foreground pixels in the frame 518, and determines whether the identified foreground pixels correspond to the swimmer in the swimming pool (e.g., person 520 in the swimming pool 522). Exemplary elements and/or methods for identifying foreground pixels are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
[0197] In some embodiments, the connection between the camera 502 and the computing system 504 includes transmission of the captured frames (e.g., from frame 518) using a protocol for streaming in real-time. In some embodiments, the computing system includes an ONVIF/ RTSP bridge and is configured to receive the captured frames, as illustrated.
[0198] FIG. 5C illustrates a person 520 involved in an event (e.g., drowning, injury) in the swimming pool 522, in accordance with an embodiment. For example, the person 520 from FIG. 5B began to struggle in the swimming pool. In some embodiments, at this time, the processor 508 (e.g., processor 204, processor 408) of the computing system 504 receives the captured frames (e.g., frame 518 from camera 502 over the bridge) and determines occurrence of an event (e.g., prolonged submergence, struggling to stay afloat, drowning, etc.) associated with the swimmer based on the received captured frames.
[0199] In some embodiments, in accordance with a determination of the occurrence of the event, an event detection signal is transmitted to the alarm 516, and in response to receiving an event detection signal, the alarm 516 generates an alert (e.g., to seek assistance for the drowning person 520). In some embodiments, the alert includes an alert on a client device (e.g., client 514) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). Exemplary elements and/or methods for event detection are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
[0200] FIG. 6 illustrates a method 600 of operating an aquatic alert system, in accordance with an embodiment. Although the method 600 is illustrated as including the described steps, it is understood that different order of step, additional step (e.g., combination with other methods disclosed herein), or less step may be included without departing from the scope of the disclosure. In some embodiments, the method 600 is performed with at least one of aquatic alert system in Fig. 1, aquatic alert system 200, aquatic alert system 400, and aquatic alert system 500. For the sake of brevity, some elements and advantages associated with these aquatic alert systems are not repeated here.
[0201] In some embodiments, the method 600 includes determining whether a swimmer is in the swimming pool (step 602). For example, as described with respect to FIGS. 5 A and 5B, the aquatic alert system 500 determines whether the person 520 is in the swimming pool.
[0202] In some embodiments, determining whether a swimmer is in the swimming pool includes receiving frames from the video camera, identifying foreground pixels in the frames, and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool. For example, as described with respect to FIGS. 5 A and 5B, to determine whether that the person 520 is in the swimming pool 522, the camera 502 or the processor associated with the camera 502 receives the frame 518, identifies foreground pixels in the frame 518, and determines whether the identified foreground pixels correspond to the swimmer in the swimming pool (e.g., person 520 in the swimming pool 522).
[0203] In some embodiments, the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system (step 604). For example, as described with respect to FIG. 5B, the aquatic alert system 500 determines that the person 520 is in the swimming pool, and an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system is transmitted.
[0204] In some embodiments, the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a first rate.
[0205] In some embodiments, transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time. For example, as described with respect to FIG. 5B, the frames 518 are transmitted to the computing system 504 using a protocol for streaming in real-time.
[0206] In some embodiments, the method 600 includes in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction (step 606). For example, as described with respect to FIG. 5A, the aquatic alert system 500 determines that the person 520 is not in the swimming pool, and an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system is not transmitted
[0207] In some embodiments, the method 600 includes in accordance with a determination that the swimmer is in the swimming pool, the processor transmits an instruction (e.g., to a different processor, to itself) to receive the frames from the camera to the processor and to transmit the frames from the processor to the computing system 404 (e.g., for further processing, for event detection) at a second rate, lower than the first rate. [0208] In some embodiments, the method 600 includes generating an alert associated with an event associated with the swimmer and wirelessly communicating, with a router, with the computing system and the alarm over a first network connection. In some embodiments, the router wirelessly communicates with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network. For example, as described with respect to FIG. 4, the first router 410 is a fallback router that is configured for wireless connection over a first network (e.g., an internal network, a network different than a second network). The camera (e.g., camera 402A, 402B, 402C), the computing system 404, and/or the alarm (e.g., alarm 416A, 416B, 416C) are in wireless communication initially over a second network (e.g., a default network, a WiFi network (e.g., using second router 412), an internet connection (e.g., using second router 412), an external network, a network different than the first network). In some instances, the second network becomes unavailable (e.g., unstable network connection, power outage), and in accordance with a determination that the camera, the computing system 404, and/or the alarm is not connected to the second network (e.g., due to the unavailability), the camera, the computing system 404, and/or the alarm wirelessly communicate over the first network using the first router 410.
[0209] In some embodiments, the method 600 includes receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device. For example, a client device (e.g., client 414A, client 414B, client 414C, client 514) requests for a stream of the swimming pool, and in response to the request, a stream is provided to the client device.
[0210] In some embodiments, the method 600 includes receiving frames from the video camera, identifying an area of one of the frames comprising a threshold amount of pixels associated with the swimming pool, identifying a contour bordering the area in the one of the frames, the contour corresponding to a perimeter of the swimming pool, and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames. In some embodiments, the method 600 includes in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera. For example, as described with respect to FIG. 4, the camera (e.g., camera 402A, 402B, 402C) is used to determine whether a swimming pool is within a frame of the camera (e.g., during installation), and a warning to reposition the camera is generated when the swimming pool is not entirely within the frame of the camera.
[0211] In some embodiments, the method 600 includes in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination. For example, an alert notification is generated for a user indicating a view of the swimming pool is obstructed or reduced). In some embodiments, the method 600 includes in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
[0212] In some embodiments, the swimming pool spans an angle range and a distance range relative to a sensor configured to detect an angle and a distance of an object relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range. For example, as described with respect to FIG. 4, a PIR sensor is used to determine whether a swimmer is in the swimming pool. In some embodiments, the swimming pool’s angle range and distance range relative to the sensor is determine as described with respect to FIG. 4.
[0213] In some embodiments, the method 600 includes receiving the captured frames and determining, based on the received captured frames, occurrence of an event associated with the swimmer. For example, as described with respect to FIG. 5C, the processor 508 (e.g., processor 204, processor 408) of the computing system 504 receives the captured frames (e.g., frame 518 from camera 502 over the bridge) and determines occurrence of an event (e.g., drowning) associated with the swimmer based on the received captured frames.
[0214] In some embodiments, the method 600 includes in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm, and in response to receiving an event detection signal, the alarm 516 generates an alert (e.g., to seek assistance for the drowning person 520). In some embodiments, the method 600 includes in accordance with a determination of the event is not occurring, forgoing transmitting the event detection signal to the alarm. In some embodiments, the alert includes an alert on a client device (e.g., client 514) indicating the event detection (e.g., an alert that someone is drowning, an intruder alert, an undesired object alert). Exemplary elements and/or methods for event detection are described with respect to FIGS. 1-4. For the sake of brevity, these elements and/or methods are not described here.
[0215] FIG. 7 illustrates an example of a computing device 700, in accordance with an embodiment. In some embodiments, the device 700 is configured to be coupled to the disclosed systems and is configured to perform the operational methods associated with the systems disclosed herein.
[0216] Device 700 can be a host computer connected to a network. Device 700 can be a client computer (e.g., a disclosed computing system), a server (e.g., a disclosed computing system), a portable device (e.g., alarm device 214), or a camera system (e.g., camera 102, camera 202, camera 402A, camera 402B, camera 402C, camera 502). As shown in FIG. 7, device 700 can be any suitable type of microprocessor-based device, such as a dedicated computing device, a personal computer, work station, server, handheld computing device (portable electronic device) such as a smartwatch, phone, or tablet. The device can include, for example, one or more of processors 702, communication device 704, input device 706, output device 708, and storage 710. Input device 706 and output device 708 can generally correspond to those described above and can either be connectable or integrated with the computer.
[0217] Input device 706 can be any suitable device that provides input, such as a camera sensor, touchscreen, keyboard or keypad, mouse, voice-recognition device, or a user interface (e.g., user interface 210). Output device 708 can be any suitable device that provides output, such as an illuminator, a touchscreen (e.g., display 216), haptics device, or speaker.
[0218] Storage 710 can be any suitable device that provides storage, such as an electrical, magnetic, or optical memory including a RAM, cache, hard drive, or removable storage disk. In some examples, the storage 710 includes memory 206. Communication device 704 can include any suitable device capable of transmitting and receiving signals (e.g., streaming data) over a network, such as a network interface chip or device. The components of the computer can be connected in any suitable manner, such as via a physical bus, or wirelessly.
[0219] Software 712, which can be stored in storage 710 and executed by processor 702, can include, for example, the programming that embodies the functionality of the present disclosure (e.g., as embodied in the devices described above, a drowning detection program).
[0220] Software 712 can also be stored and/or transported within any non-transitory, computer-readable storage medium for use by or in connection with an instruction execution system, apparatus, or device, such as those described above, that can fetch instructions associated with the software from the instruction execution system, apparatus, or device and execute the instructions. In the context of this disclosure, a computer-readable storage medium can be any medium, such as storage 710, that can contain or store programming for use by or in connection with an instruction-execution system, apparatus, or device.
[0221] Software 712 can also be propagated within any transport medium for use by or in connection with an instruction-execution system, apparatus, or device, such as those described above, that can fetch instructions associated with the software from the instruction- execution system, apparatus, or device and execute the instructions. In the context of this disclosure, a transport medium can be any medium that can communicate, propagate, or transport programming for use by or in connection with an instruction-execution system, apparatus, or device. The transport readable medium can include, but is not limited to, an electronic, magnetic, optical, electromagnetic, or infrared wired or wireless propagation medium.
[0222] Device 700 may be connected to a network (e.g., an internal network, an external network), which can be any suitable type of interconnected communication system. The network can implement any suitable communications protocol and can be secured by any suitable security protocol. The network can comprise network links of any suitable arrangement that can implement the transmission and reception of network signals, such as wireless network connections, mobile internet connections, Bluetooth connections, NFC connections, T1 or T3 lines, cable networks, DSL, or telephone lines.
[0223] Device 700 can implement any operating system suitable for operating on the network. Software 712 can be written in any suitable programming language, such as C, C++, Java, or Python. In various embodiments, application software embodying the functionality of the present disclosure can be deployed in different configurations, such as in a client/server arrangement or through a Web browser as a Web-based application or Web service, for example.
[0224] In one aspect, a system, comprises: a video camera configured to capture frames of a swimming pool; a computing system configured to communicate with the camera and including a processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
[0225] In some aspects of the above system, the instructions further comprise: determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
[0226] In some aspects of the above systems, the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers.
[0227] In some aspects of the above systems, the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects.
[0228] In some aspects of the above systems, the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement. [0229] In some aspects of the above systems, the criterion dynamically updates based on a depth corresponding to the swimmer’s position in the swimming pool.
[0230] In some aspects of the above systems, the criterion dynamically updates based a distance of the swimmer from the camera.
[0231] In some aspects of the above systems, the criterion dynamically updates based on a surrounding brightness of a camera view.
[0232] In some aspects of the above systems, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
[0233] In some aspects of the above systems, the instructions further comprise generating an alert associated with the event in response to the generated detection signal.
[0234] In some aspects of the above systems, the system further comprises a wearable device, wherein the instructions further comprise transmitting the generated alert to the wearable device.
[0235] In some aspects of the above systems, the computing system comprises a user interface, and the instructions further comprise: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
[0236] In some aspects of the above systems, the computing system comprises a user interface, and determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: selecting, on the user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior.
[0237] In some aspects of the above systems, the instructions further comprise: tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
[0238] In some aspects of the above systems, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
[0239] In some aspects of the above systems, the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
[0240] In some aspects of the above systems, identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
[0241] In some aspects of the above systems, the system further comprises solar panels configured to charge the camera.
[0242] In some aspects of the above systems, the instructions further comprise storing the captured frames in the computing system.
[0243] In some aspects of the above systems, the computing system and the camera are configured to communicate wirelessly.
[0244] In some aspects of the above systems, the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP.
[0245] In some aspects of the above systems, the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
[0246] In some aspects of the above systems, the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
[0247] In some aspects of the above systems, the instructions further comprises: identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time, and dynamically updating the criterion based on the difference. [0248] In some aspects of the above systems, the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
[0249] In some aspects of the above systems, a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block, and the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
[0250] In some aspects of the above systems, the instructions further comprise updating the criterion based on a user input.
[0251] In some aspects of the above systems, the instructions further comprise updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forests.
[0252] In some aspects of the above systems, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
[0253] In some aspects of the above systems, the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
[0254] In some aspects of the above systems, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers. [0255] In some aspects of the above systems, the instructions further comprise determining the tracked swimmer is an animal based on at least a size, geometry, and movement of the animal, and in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
[0256] In one aspect, a method comprises: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
[0257] In some aspects of the above method, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; and in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
[0258] In some aspects of the above methods, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the criterion is met when a number of detected foreground objects is less than the number of swimmers.
[0259] In some aspects of the above methods, the method further comprises determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, wherein the number of swimmers is a number of detected foreground objects.
[0260] In some aspects of the above methods, the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
[0261] In some aspects of the above methods, the method further comprises dynamically updating the criterion based on a depth corresponding to the swimmer’s position in the swimming pool.
[0262] In some aspects of the above methods, the method further comprises dynamically updating the criterion based a distance of the swimmer from the camera.
[0263] In some aspects of the above methods, the method further comprises dynamically updating the criterion based on a surrounding brightness of a camera view.
[0264] In some aspects of the above methods, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
[0265] In some aspects of the above methods, the method further comprises generating an alert associated with the event in response to the generated detection signal.
[0266] In some aspects of the above methods, the method further comprises transmitting the generated alert to a wearable device.
[0267] In some aspects of the above methods, the computing system comprises a user interface, and the method further comprises: selecting, on the user interface, an activity in the swimming pool; and updating the criterion based on the selected activity.
[0268] In some aspects of the above methods, the method further comprises determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer; selecting, on a user interface, a behavior of a tracked swimmer; and adjusting the criterion emphasis factors of the tracked swimmer based on the selected behavior. [0269] In some aspects of the above methods, the method further comprises tracking a history of the swimming pool; learning site attributes of the swimming pool based on the history; and updating the criterion based on the learned site attributes.
[0270] In some aspects of the above methods, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the swimming pool is a first type of swimming pool or a second type of swimming pool; in accordance with a determination that the swimming pool is the first type, setting the criterion emphasis factors of the tracked swimmers based on a first preset; and in accordance with a determination the swimming pool is the second type, setting the criterion emphasis factors of the tracked swimmers based on a second preset.
[0271] In some aspects of the above methods, the receiving of the frames with the video camera and the identifying of the interior pool pixels, the background pixels, the foreground pixels, and the swimming pool information are performed concurrently.
[0272] In some aspects of the above methods, identifying the interior pool pixels, the background pixels and the foreground pixels further comprises identifying at least one of shape, size, color, and geometry of objects in the interior pool pixels, the background pixels and the foreground pixels.
[0273] In some aspects of the above methods, the method further comprises using solar panels to charge the camera.
[0274] In some aspects of the above methods, the method further comprises storing the captured frames in a computing system.
[0275] In some aspects of the above methods, the computing system and the camera are configured to communicate wirelessly.
[0276] In some aspects of the above methods, wherein the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
[0277] In some aspects of the above methods, the receiving of the frames with the video camera includes using one of RTSP, HTTP, HTTPS, and SDP. [0278] In some aspects of the above methods, the forming of the block for each swimmer comprises determining whether the block includes at least a threshold amount of foreground pixels.
[0279] In some aspects of the above methods, the method further comprises identifying a difference between the identified background pixels at a first time and the identified background pixels at a second time, and dynamically updating the criterion based on the difference.
[0280] In some aspects of the above methods, the image tracking and motion prediction algorithms include at least one of Lucas-Kanade algorithm, Optical Flow Method, particle tracking, and Black-Jepson method.
[0281] In some aspects of the above methods, a first block associated with a first swimmer and a second block associated with a second swimmer at least partially overlap and form a third block, and the forming of the cluster of each swimmer further comprises using: a hierarchical k-means clustering algorithm to separate the first and second clusters, a Markov Random Field (MRF) to form the first and second clusters based on the identified background pixels, foreground pixels, and swimming pool information, and a linear prediction scheme to determine centroids of each swimmer by predicting direction and location of the swimmer.
[0282] In some aspects of the above methods, the method further comprises updating the criterion based on a user input.
[0283] In some aspects of the above methods, the method further comprises updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
[0284] In some aspects of the above methods, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises updating the criterion emphasis factors of the tracked swimmer based on at least one of a Monte-Carlo simulation and user data.
[0285] In some aspects of the above methods, wherein the determination of whether a criterion is met for the tracked swimmer is further based on a probabilistic model.
[0286] In some aspects of the above methods, determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the method further comprises: determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
[0287] In some aspects of the above methods, the method further comprises determining the tracked swimmer is an animal based on at least a size, geometry, and of the animal, and wherein in accordance with a determination that the tracked swimmer is the animal, the criterion is met.
[0288] In one aspect, a non-transitory computer readable storage medium stores one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform any of the above methods.
[0289] In one aspect, a system includes: a video camera configured to capture frames of a swimming pool; a processor and a memory collocated with the video camera; a computing system configured to remotely communicate with the processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: determining whether a swimmer is in the swimming pool; in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system; and in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction.
[0290] In some aspects of the above system, transmitting the captured frames to the computing system includes transmitting the captured frames using a protocol for streaming in real-time.
[0291] In some aspects of the above systems, determining whether a swimmer is in the swimming pool includes: receiving frames from the video camera; identifying foreground pixels in the frames; and determining whether the identified foreground pixels correspond to the swimmer in the swimming pool. [0292] In some aspects of the above systems, the computing system includes an ONVIF/ RTSP bridge configured to receive the captured frames.
[0293] In some aspects of the above systems, the computing system is configured to wirelessly communicate with the video camera.
[0294] In some aspects of the above systems, the system further includes: an alarm configured to generate an alert associated with an event associated with the swimmer; and a router configured to wirelessly communicate with the computing system and the alarm over a first network connection.
[0295] In some aspects of the above systems, the router is configured to wirelessly communicate with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
[0296] In some aspects of the above systems, the program further includes instructions for: receiving, from a device, a request for frames from the video camera; and in response to receiving the request for the frames, transmitting a second instruction to receive the frames from the video camera and to transmit the frames to the device.
[0297] In some aspects of the above systems, the program further includes instructions for: receiving frames from the video camera; identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool; identifying a contour bordering the area in the one of the frames; and in accordance with a determination that the entire contour is within the frames, identifying the swimming pool from the frames.
[0298] In some aspects of the above systems, the pixels associated with the swimming pool are at least one of blue pixels and light green pixels.
[0299] In some aspects of the above systems, the program further includes instructions for in accordance with a determination that the entire contour is not within the frames, generating a request to reposition the video camera.
[0300] In some aspects of the above systems, the program further includes instructions for: in accordance with a determination that the swimming pool area of the frame includes less than the threshold mount of pixels associated with the swimming pool, generating a notification corresponding to the determination; and in accordance with a determination that the swimming pool area of the frame includes at least the threshold mount of pixels associated with the swimming pool, forgoing generating the notification corresponding to the determination.
[0301] In some aspects of the above systems, the system further includes a sensor configured to detect an angle and a distance of an object relative to the sensor. The swimming pool spans an angle range and a distance range relative to the sensor, and determining whether the swimmer in the swimming pool includes detecting, with the sensor, that the object is within the angle range and the distance range.
[0302] In some aspects of the above systems, the sensor is a passive infrared sensor (PIR) sensor includes a Fresnel lens.
[0303] In some aspects of the above systems, the program further includes instructions for: capturing the frames with the video camera; and identifying an area of one of the frames including a threshold amount of pixels associated with the swimming pool, wherein the angle range and the distance range correspond to the identified area.
[0304] In some aspects of the above systems, the area including the threshold amount of pixels are inside a contour of the swimming pool.
[0305] In some aspects of the above systems, the computing system includes a second processor and a second memory, and a second program is stored in the second memory, configured to be executed by the second processor, and including instructions for: receiving the captured frames; and determining, based on the received captured frames, occurrence of an event associated with the swimmer.
[0306] In some aspects of the above systems, the system further includes an alarm configured to generate an alert in response to receiving an event detection signal, wherein the second program includes instructions further for in accordance with a determination of the occurrence of the event, transmitting the event detection signal to the alarm.
[0307] In some aspects of the above systems, the video camera includes the processor and the memory.
[0308] In one aspect, a method includes steps the above systems are configured to perform.
[0309] In one aspect, a non-transitory computer readable storage medium storing one or more programs, the one or more programs including instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform the above method.
[0310] Generally, as used herein, the term “substantially” is used to describe element(s) or quantit(ies) ideally having an exact quality (e.g., fixed, the same, uniformed, equal, similar, proportional), but practically having qualities functionally equivalent to the exact quality. For example, an element or quantity is described as being substantially fixed or uniformed can deviate from the fixed or uniformed value, as long as the deviation is within a tolerance of the system (e.g., accuracy requirements, etc.). As another example, two elements or quantities described as being substantially equal can be approximately equal, as long as the difference is within a tolerance that does not functionally affect a system’s operation.
[0311] Likewise, although some elements or quantities are described in an absolute sense without the term “substantially”, it is understood that these elements and quantities can have qualities that are functionally equivalent to the absolute descriptions. For example, in some embodiments, a ratio is described as being one. However, it is understood that the ratio can be greater or less than one, as long as the ratio is within a tolerance of the system (e.g., accuracy requirements, etc.).
[0312] Although the disclosed embodiments have been fully described with reference to the accompanying drawings, it is to be noted that various changes and modifications will become apparent to those skilled in the art. Such changes and modifications are to be understood as being included within the scope of the disclosed embodiments as defined by the appended claims.
[0313] The terminology used in the description of the various described embodiments herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the description of the various described embodiments and the appended claims, the singular forms “a”, “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.

Claims

1. A system, comprising: a video camera configured to capture frames of a swimming pool; a computing system configured to communicate with the camera and including a processor and memory; and a program stored in the memory, configured to be executed by the processor, and including instructions for: receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms, whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
2. The system of claim 1, wherein the instructions further comprise: determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information; detecting a swimmer leaving or entering the interior pool region; updating the number of swimmers based on the swimmer detection; determining that the swimmer entered the interior pool region after a predetermined amount of time; in accordance with the determination that the swimmer entered the interior pool region after the predetermined amount of time, tagging the swimmer with an identifier; and in response to detecting the swimmer leaving the interior pool region, untagging the swimmer.
3. The system of claim 1, wherein: the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the criterion is met when a number of detected foreground objects is less than the number of swimmers.
4. The system of claim 1, wherein: the instructions further comprise determining a number of swimmers based on the interior pool and foreground pixels and the swimming pool information, and the number of swimmers is a number of detected foreground objects.
5. The system of claim 1, wherein the criterion includes at least one of swimmer speed, swimmer posture, a splash threshold, an activity threshold, a submergence threshold, a submergence variance, and swimmer vertical movement.
6. The system of claim 1, wherein: determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: learning behaviors of the tracked swimmers; and updating the criterion emphasis factors of the tracked swimmers based on the learned behaviors.
7. The system of claim 1, wherein the instructions further comprise generating an alert associated with the event in response to the generated detection signal.
8. The system of claim 1, wherein the computing system and the camera are configured to communicate wirelessly.
9. The system of claim 1, wherein the computing system is one of AI processor, cloud computing platform, a processor with AI and video/graphics booster technology having sufficient computation power and processing speed, a fast computing platform, and a parallel computing platform.
10. The system of claim 1, wherein the instructions further comprise updating the criterion based on at least one of a Monte-Carlo simulation, user data, neural network data, and random forest data.
11. The system of claim 1, wherein: determining whether the criterion is met further comprises determining a probability of the event based on a criterion emphasis factor associated with the tracked swimmer, and the instructions further comprise: determining whether the tracked swimmer is moving relative to a center of the tracked swimmer; in accordance with a determination that the tracked swimmer is moving relative to the center of the tracked swimmer, updating the criterion emphasis factors of the tracked swimmers; and in accordance with a determination that the tracked swimmer is not moving relative to the center of the tracked swimmer, forgoing updating the criterion emphasis factors of the tracked swimmers.
12. The system of claim 1, wherein the instructions further comprise: determining whether a swimmer is in the swimming pool; in accordance with a determination that the swimmer is in the swimming pool, transmitting an instruction to receive captured frames from the video camera and to transmit the captured frames to the computing system; and in accordance with a determination that the swimmer is not in the swimming pool, forgoing transmitting the instruction.
13. The system of claim 11, further comprising: an alarm configured to generate an alert associated with the event associated with the tracked swimmer; and a router configured to wirelessly communicate with the computing system and the alarm over a first network connection, wherein the router is configured to wirelessly communicate with the computing system and the alarm over the first network connection in accordance with a determination that the system is not connected to a second network.
14. A method, comprising: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms, whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
15. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with one or more processors and memory, cause the device to perform a method comprising: capturing, with a video camera, frames of a swimming pool; receiving the frames captured with the video camera; for each frame captured with the video camera, identifying: interior pool pixels associated with an interior region of the swimming pool in the frame, the interior pool region including a water area of the swimming pool, background pixels in the frame, foreground pixels in the frame, wherein the foreground pixels correspond to detected foreground objects, and swimming pool information associated with objects in the frame; based on the identified background pixels, foreground pixels, and swimming pool information: forming a block for each swimmer in the foreground pixels, and tagging each swimmer in the frame with a respective identifier; tracking each swimmer by using image tracking and motion prediction algorithms on the formed blocks; determining, based on the swimming pool information and the image tracking and motion prediction algorithms, whether a criterion is met for a tracked swimmer; and in accordance with a determination that the criterion is met for the tracked swimmer, generating a detection signal indicating an event associated with the tracked swimmer.
PCT/US2021/013724 2020-01-16 2021-01-15 Image based aquatic alert system WO2021146617A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP21741395.4A EP4091146A4 (en) 2020-01-16 2021-01-15 Image based aquatic alert system
US17/427,043 US12073703B2 (en) 2020-01-16 2021-01-15 Image based aquatic alert system

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062962123P 2020-01-16 2020-01-16
US62/962,123 2020-01-16
US202063082375P 2020-09-23 2020-09-23
US63/082,375 2020-09-23

Publications (1)

Publication Number Publication Date
WO2021146617A1 true WO2021146617A1 (en) 2021-07-22

Family

ID=76864481

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2021/013724 WO2021146617A1 (en) 2020-01-16 2021-01-15 Image based aquatic alert system

Country Status (3)

Country Link
US (1) US12073703B2 (en)
EP (1) EP4091146A4 (en)
WO (1) WO2021146617A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022204153A1 (en) * 2021-03-22 2022-09-29 Angarak, Inc. Image based tracking system

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4374354A1 (en) 2021-07-19 2024-05-29 Maiguard AI Detection Systems Ltd System and method for pre-drowning and drowning detection
WO2024102664A1 (en) * 2022-11-11 2024-05-16 Angarak, Inc. Smart outdoor system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130106610A1 (en) * 2011-11-01 2013-05-02 Norman Frederick Pratt Sentnel Surveillance System With Pre-Alarms To Avert Drowning
US20190019008A1 (en) * 2015-09-21 2019-01-17 The Climate Corporation Ponding water detection on satellite imagery
US20190034712A1 (en) * 2016-01-26 2019-01-31 Coral Detection Systems Ltd. Methods and systems for drowning detection
WO2019202587A1 (en) * 2018-04-16 2019-10-24 Lynxight Ltd. A method and apparatus for swimmer tracking

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195060A (en) 1991-12-10 1993-03-16 Marcorp Inc. Security system for swimming pools and like bodies of water
FR2741370B1 (en) 1995-11-16 1998-05-29 Poseidon SWIMMING POOL MONITORING SYSTEM FOR DROWNING PREVENTION
ATE366422T1 (en) 2000-12-06 2007-07-15 Poseidon METHOD FOR DISCOVERING NEW BODY IN A LIGHTED ENVIRONMENT
SG95652A1 (en) 2001-05-25 2003-04-23 Univ Nanyang Drowning early warning system
US7482940B2 (en) 2002-06-24 2009-01-27 Angeleye Inc. Alarm for detecting radiation and pollutants
EP1766581A4 (en) * 2004-06-14 2010-11-03 Agency Science Tech & Res Method for detecting desired objects in a highly dynamic environment by a monitoring system
GB2428850B (en) 2005-08-03 2008-02-27 Swim Tag Ltd A portable bather monitoring device and a waterside monitoring system
US7724133B2 (en) 2006-07-27 2010-05-25 S. R. Smith Llc Pool video safety, security and intrusion surveillance and monitoring system
US20080156989A1 (en) 2006-12-28 2008-07-03 O2Micro Inc. Motion sensing/recognition by camera applications
US10839665B2 (en) * 2013-03-15 2020-11-17 Hayward Industries, Inc. Underwater lighting system with bather detection circuitry
US20160037138A1 (en) 2014-08-04 2016-02-04 Danny UDLER Dynamic System and Method for Detecting Drowning
US9972188B2 (en) * 2014-10-09 2018-05-15 Khalifa University of Science and Technology Sonar based drowning detection system, method and kit
US10181249B2 (en) * 2016-09-07 2019-01-15 Seal Innovation, Inc. Systems, methods and computer program products for detecting a presence of an object in a body of water
US10176695B2 (en) * 2016-10-03 2019-01-08 International Business Machines Corporation Real-time water safety analysis based on color-movement tracking
US10163323B1 (en) 2018-02-14 2018-12-25 National Chin-Yi University Of Technology Swimming pool safety surveillance system
US11164437B2 (en) 2018-03-19 2021-11-02 Alarm.Com Incorporated Swimming pool monitoring
EP3776505A4 (en) * 2018-04-16 2022-01-05 Lynxight Ltd. A method and apparatus for detecting drowning
US20180342139A1 (en) 2018-05-11 2018-11-29 Louis Ukuni Otavio Lifesaverhd: a computer hardware and software program for safety, detection, alert system and asset tracking
US11159769B2 (en) * 2018-08-07 2021-10-26 Lynxight Ltd Drowning detection enhanced by swimmer analytics
US10789826B2 (en) * 2018-10-12 2020-09-29 International Business Machines Corporation Real-time safety detection and alerting
EP3797512A1 (en) * 2018-12-18 2021-03-31 Rovi Guides, Inc. Systems and methods for automated tracking using a client device
US11322010B1 (en) * 2019-01-17 2022-05-03 Alarm.Com Incorporated Swimming pool monitoring
US20200394804A1 (en) * 2019-06-17 2020-12-17 Guard, Inc. Analysis and deep learning modeling of sensor-based object detection data in bounded aquatic environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130106610A1 (en) * 2011-11-01 2013-05-02 Norman Frederick Pratt Sentnel Surveillance System With Pre-Alarms To Avert Drowning
US20190019008A1 (en) * 2015-09-21 2019-01-17 The Climate Corporation Ponding water detection on satellite imagery
US20190034712A1 (en) * 2016-01-26 2019-01-31 Coral Detection Systems Ltd. Methods and systems for drowning detection
WO2019202587A1 (en) * 2018-04-16 2019-10-24 Lynxight Ltd. A method and apparatus for swimmer tracking

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4091146A4 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022204153A1 (en) * 2021-03-22 2022-09-29 Angarak, Inc. Image based tracking system

Also Published As

Publication number Publication date
EP4091146A1 (en) 2022-11-23
US20220343650A1 (en) 2022-10-27
EP4091146A4 (en) 2024-02-21
US12073703B2 (en) 2024-08-27

Similar Documents

Publication Publication Date Title
US12073703B2 (en) Image based aquatic alert system
US20200388135A1 (en) Automated water body area monitoring
AU2017211712B2 (en) Methods and systems for drowning detection
KR102095555B1 (en) Analysis of illegal activities and monitoring based on recognition using unmanned aerial vehicle and artificial intelligence deep running that can monitor illegal activities in the field farm
CN102693606A (en) Shooting network-based method and system for warning of drowning prevention in swimming pool
CN104635598A (en) Intelligent swimming wearing equipment and swimming monitoring system
Lu et al. A vision-based approach to early detection of drowning incidents in swimming pools
CN112489371A (en) Swimming pool drowning prevention early warning system based on computer vision
EP3776345B1 (en) A method and apparatus for swimmer tracking
CN118097923B (en) Intelligent park intelligent monitoring method and system based on artificial intelligence
CN111260885B (en) Method, device, storage medium and terminal equipment for tracking swimming
US20240153109A1 (en) Image based tracking system
CN118397794A (en) Intelligent sensing and early warning method and system for man falling into water
CN110852362B (en) Drowning event detection method and device and computer readable storage medium
CN114359373B (en) Swimming pool drowning prevention target behavior identification method and device, computer equipment and storage medium
CN111428696A (en) Intelligent abnormity detection emergency rescue method, device and system
CN202033875U (en) Swimming pool anti-drowning early warning system based on shooting network
US20200293020A1 (en) Surveillance system with intelligent robotic surveillance device
KR20220037166A (en) Appratus, method and system for managing of intelligent beach disaster alert
CN115158606A (en) Water surface lifesaving method, system and medium
KR20230087008A (en) Processing apparatus for dangerous situation information using smart pole
KR20220162902A (en) Marine searching system using drone and the method thereof
Sakthivel et al. AI‐Based Smart Surveillance for Drowning and Theft Detection on Beaches Using Drones
CN117746218B (en) Security management method and device for smart campus
JA et al. To Detect Active Drowning Using Deep Learning Algorithms

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21741395

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021741395

Country of ref document: EP

Effective date: 20220816