System and method for validating crowdsourced flood images using machine learning and real-time weather data

WO2025015233A3PCT designated stage expired Publication Date: 2025-04-03UNIV OF VIRGINIA PATENT FOUND
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
PCT/US2024/037704
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-07-13
Filing Date
2024-07-12
Publication Date
2025-04-03

AI Technical Summary

Technical Problem

Current methods lack an automated, scalable solution for validating crowdsourced flood images, which are crucial for predicting floods but are often inaccurate due to the difficulty in verifying the authenticity and relevance of user-submitted data, especially in real-time scenarios.

Method used

A system utilizing a Convolutional Neural Network (CNN) combined with real-time weather data from a weather API to validate the accuracy of crowdsourced flood images by predicting flood attributes and correlating them with precipitation data, ensuring that only images meeting predefined thresholds are considered valid.

Benefits of technology

The system achieves high accuracy in validating flood images, with a 94.79% accuracy rate, enabling effective identification and prediction of flooding events, thus aiding in disaster preparedness and awareness.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024037704_03042025_PF_FP_ABST
    Figure US2024037704_03042025_PF_FP_ABST
Patent Text Reader

Abstract

Disclosed are various embodiments for validating crowdsourced flood images using machine learning and real-time weather data. Various embodiments can obtain a weather event upload request from a client device that includes an upload geolocation and an image. Various embodiments can direct a convolutional neural network (CNN) model to predict flood activity within the image. Next, various embodiments can obtain weather data corresponding the upload geolocation from a weather application programming interface (weather API). When various embodiments determine that the weather data indicates flood conditions for the upload geolocation, various embodiments can publish the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.
Need to check novelty before this filing date? Find Prior Art

Description

TITLE: SYSTEM AND METHOD FOR VALIDATING CROWDSOURCED FLOOD IMAGES USING MACHINE LEARNING AND REAL-TIME WEATHER DATAInventors: Nhat Huynh Khanh NguyenCROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims the benefit of and priority to U.S. Provisional Patent Application No. 63 / 513,384 filed on July 13, 2023, entitled “System and Method for Validating Crowdsourced Flood Images using Machine Learning and Real-time Weather Data,” the contents of which are incorporated by reference in their entirety herein.STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

[0002] This invention was made with government support under Grant No. 2026050, awarded by the National Science Foundation. The government has certain rights in the invention.BACKGROUND

[0003] Flooding is a natural disaster that occurs when water inundates land that is normally dry. Each year, flooding affects millions of people worldwide, causing displacement, property damage, and loss of life, among various other concerns. Flooding does not affect each country equally due to geography, climate, and other environmental factors. At least one problem with flooding that separates it from other natural disasters is that identifying when floods will occur is especially difficult topredict and / or detect. Because flooding can be so difficult to predict, people living in flood prone areas often are not able to prepare for the oncoming floods. Further, once the flooding begins, people may not know to avoid the flooded area.

[0004] Also, crowdsourced big data is the concept of dealing with crowdsourced datasets that are so large that many basic software tools cannot be used to further analyze them well-enough. As a result of not being able to further analyze datasets well-enough, one of the main problems with collecting data is validating that the right data is being collected.BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, with emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.

[0006] FIG. 1 is a flowchart illustrating one example of a brief overview of the functionality executed in a computing environment in a network environment according to various embodiments of the present disclosure.

[0007] FIGS. 2A-2E are drawings that visually represent various steps of the brief overview flowchart of FIG. 1 .

[0008] FIGS. 3A-3C are drawings depicting one of several user interfaces used to implement various embodiments of the present disclosure.

[0009] FIG. 4 is a graph illustration depicting confusion matrix from 5-fold cross validation.

[0010] FIG. 5 is a table illustrating the accuracy, precision and recall values of cross-validation runs.

[0011] FIG. 6 is a table illustrating the time taken to process based on the number of worker threads within a pool of worker threads.

[0012] FIG. 7 A represents an example of a false negative image processed through various embodiments of the present disclosure.

[0013] FIG. 7B represents an example false positive image processed through various embodiments of the present disclosure.

[0014] FIG. 8 is a block diagram illustrating an example of a machine upon which one or more aspects of embodiments of the present invention can be implemented.

[0015] FIG. 9 is a drawing of a network environment according to various embodiments of the present disclosure.

[0016] FIGS. 10A and 10B are flowcharts illustrating examples of functionality implemented as portions of an application executed in a computing environment in the network environment of FIG. 9 according to various embodiments of the present disclosure.DETAILED DESCRIPTION

[0017] Flooding is a natural disaster that occurs when water inundates land that is normally dry. Each year, flooding affects millions of people worldwide, causing displacement, property damage, and loss of life, among various other concerns.Flooding does not affect each country equally due to geography, climate, and other environmental factors. For example, flooding is one of the common natural disasters in Vietnam. Due to Vietnam's geography and the fact that certain regions often get lots of rain, it is often easy for several cities along the coast to get floods, especially during the Spring season. At least one problem with flooding that separates it from other natural disasters is that identifying when floods will occur is especially difficult to predict and / or detect. Because flooding can be so difficult to predict, people living in flood prone areas often are not able to prepare for the oncoming floods. Further, once the flooding begins, people may not know to avoid the flooded area. For example, GPS navigation systems often prepare a route on the fastest and / or shortest distance between two points along accessible roads. However, GPS navigations systems often fail to recognize when flooding is occurring, and GPS navigation systems can lead people into a dangerous flooding situation.

[0018] When developing system for flood prediction, one of the key elements is data collection. Images can be vital in determining whether a specified area is flooding. However, the infrastructure required to capture images from every location around the world would be incredibly costly to install and inefficient to consistently run. Instead, to obtain these needed images from every part of the world, the images can be crowdsourced from users across the world from their mobile devices. Crowdsourced big data is the concept of dealing with crowdsourced datasets that are so large that many basic software tools cannot be used to further analyze them wellenough. As a result of not being able to further analyze datasets well-enough, one of the main problems with collecting data is validating that the right data is beingcollected. Further, bad actors (e.g., hackers, malicious users, etc.) often attempt to abuse crowdsourced systems by submitting incorrect or misleading information. Accordingly, any collected images from crowdsourced users across the world need to be validated for their accuracy.

[0019] Currently, there are no automated, widely-scalable, methods for validating crowdsourced images, especially in identifying flooding around the world. Often, when users upload images, other users are required to manually verify that the image is realistic and representative of the current state of the location. Alternatively, systems can forego verification altogether and every image can be presented on the system without any verification at all. In other words, there is no end-to-end pipeline for validating crowdsourced images, especially one that takes into account more than just the image uploaded.

[0020] Various embodiments of the present disclosure solve this big data validation problem by creating a crowdsourcing platform and validation pipeline that uses a Convolutional Neural Network (CNN), combined with real-time weather precipitation data from a weather application programming interface (weather API), to provide double-validation as to whether an image that was taken at a certain location is accurate. Various embodiments of the present disclosure provide a scalable, end-to-end pipeline for validating crowdsourced images. As far as image detection goes, various embodiments of the algorithm achieved a "94.79" percent accuracy, demonstrating that it is just as effective as similar high results in the related work. In terms of crowdsourced data, rather than just collecting data, an application for a computing device (including mobile devices) can be built that allows users toupload images, then sends those images to AWS, where the images are consistently stored. In terms of multithreaded data, multi-threading was used to retrieve precipitation information, then that information was used to validate the images and provide double validation. Various embodiments of the present disclosure can store the uploaded images to a datastore such as Amazon Web Services (AWS). In various embodiments, the images can be retrieved from the data store (e.g., AWS) and sent to a pre-trained CNN model that, when executed, make predictions on those images (e.g., predict whether flood attributes are present within the image, etc.). Once the predictions have been made, various embodiments can combine the predictions with the precipitation data collected in real-time through an application programming interface (API) call to a weather service. If the CNN model predicts that there is flooding and the precipitation data for the day that the image was collected exceeds a predefined threshold (e.g., exceeds ten centimeters, etc.), then the image is validated as being a flood image.

[0021] To make this validation method scalable and effective for all users that supply crowdsourced data, various embodiments can be processed in using a multithreading approach to increase the efficiency of making API calls from the Weather API. Additionally, responses from the API calls for specific locations can be used to represent a region. For responses that represent a region, the response from the API can be cached or otherwise stored in a data store and further referenced when other users are seeking to validate a second image from a nearby location. Thus, even if the crowdsourced method is extended to thousands of users, each of whom submit a request for validating their images at the same time, the Weather API would not beoverwhelmed, and it would be able to retrieve the necessary precipitation information that could be passed into the validation algorithm.

[0022] As a result of this crowdsourced image validation pipeline, various embodiments can create an end-to-end automated process for identifying accurate flooding images in Vietnam, or other areas heavily affected by flooding. Since flooding images are a critical indicator of floods, especially in real time, when collected by users across the country, validated images can be useful to spread awareness of active floods. Additionally, once areas have been identified as experiencing flooding with specified rainfalls over a certain period of time, various embodiments can be used to predict when future flooding will occur.

[0023] Beyond the applications to flood prediction in Vietnam, this concept of crowdsourced image validation can be extended to other applications in the future, across multiple industries that would benefit from big data validation, ranging from healthcare to economics. For example, crowdsourced image validation could be used to prevent deepfakes or artificial intelligence images of celebrities or historical events from being shared online. For example, crowdsourced images of athletes at the Olympics® can be verified based on when the image was taken, any geolocation of the image, the CNN model identifying athletes competing, and news articles from a news API corroborating that the athlete competed at that day and time.

[0024] In the following discussion, a general description of the system and its components is provided, followed by a discussion of the operation of the same. Although the following discussion provides illustrative examples of the operation of various components of the present disclosure, the use of the following illustrativeexamples does not exclude other implementations that are consistent with the principals disclosed by the following illustrative examples.

[0025] FIG. 1 is a flowchart that represents a general overview of the functionality of various embodiments of the present disclosure. The flowchart of FIG. 1 depicts a series of steps involved in the pipeline for users to get the flood image data that they upload validated. Starting at block 103, the user needs to upload a flood image for a landscape at some time with some location, which a computing environment 100 can receive. Continuing to block 106, the image can be stored in a data store (e.g., a file system, AWS, etc.). Continuing to block 109, the computing environment 100 can direct the CNN to analyze the image stored in the data store. As a result of directing the CNN to analyze the image, the CNN can provide a prediction regarding whether the image receive represents a flood. Continuing to block 112, the computing environment 100 can obtain weather data from a weather API. The weather data can include humidity, precipitation data, and various other weather metrics. The weather data can be retrieved from the API in real time. At block 115, the computing environment 100 can the image analysis prediction to the weather data to check whether the data that has been uploaded accurately represents flooding. At block 118, if the image passes both of these checks, then image is fully validated.

[0026] Continuing to FIGS. 2A-E, shown are exemplary visual representations of the end-to-end pipeline. In FIG. 2A, depicts an example image taken by a user. The image shown in FIG. 2A depicts a landscape having a portion flooded. FIG. 2B depicts a user interface where the user uploads the image. The user interface can include a city identifier, a flood severity indicator, a description of the flood input, andaffordances to upload the image. When submitted, the user interface can direct the client device to transmit the information collected by the user interface to the computing environment 100 of FIG. 1 to begin block 103 (as previously described).

[0027] FIG. 2C depicts a prediction of the CNN as to whether the image represents a flood (corresponding to block 109 of FIG. 1 ). FIG. 2D depicts an example of weather data for a location obtained from a weather API (corresponding to block 112 of FIG. 1 ). In the example, the weather API data is formatted a JavaScript Object Notation (JSON) object containing the weather information and the corresponding location information for the weather. FIG. 2E depicts the checklist to determine whether the image represents a flood image (corresponding to block 115 and block 118 of FIG. 1 ). Specifically, FIG. 2E depicts a series of boxes. A first box in the series of boxes states “user uploaded flood image.” A second box in the series of boxes states “CNN validates as a flood image.” A third box in the series of boxes states “Weather API validates as Flood Image.” A fourth box in the series of boxes states “Flood image is fully validated.” If the image is fully validated, it can be added to the corpus of flood images. If the image is not fully validated, it can be removed from the data store.

[0028] FIGS. 3A-3C are exemplary user interfaces to facilitate the functionality described by FIGS. 1 and 2A-E. The user interface of FIG. 3A permits users to upload an image or take a photo with their camera, then select a severity for the flooding image that they have taken and provide a description. FIG. 3A includes various affordances, such as a city identifier, a flood severity indicator, a description of the flood input, and various affordances to upload / take the image. When submitted, theuser interface can direct the client device to transmit the information collected by the user interface to the computing environment 100 of FIG. 1 to begin block 103 (as previously described).

[0029] The user interface of FIG. 3B permits users to identify a location on a map. The map also depicts locations where floods are currently occurring, based on user image uploads. For each uploaded image, the point where the image is uploaded corresponds to that uploading user's location at the time the image was uploaded. The color of the point representing them is based off of the severity at that location, which is retrieved based on the severity that the user from that location indicated. FIG. 3B also displays the current weather conditions in the specified location. Additionally, FIG. 3B permits users to move through a time slider and look at different crowdsourced images from past dates. FIG. 3C permits users to see an image of a specified location, along with the seventy and the description provided by the uploading user.Training the CNN Model

[0030] To classify whether a given image depicts a flood or not, a dataset of images can be accumulated having a substantial number of examples. In the example, seven-hundred and fifty images with flooding and seven-hundred and fifty regular images. These two groups were referred to as "Flood" images and "No Flood" images. Various methods of obtaining images can be used. In some embodiments, web scraping tools, such as Kaggle and Web Scraping, to get a series of hundreds of images. The images can manually be sorted into their respective groups sure that the images of flooding represented floods, and those that were not floods, did notrepresent floods. The specific Kaggle dataset used to get some of the flooding images was titled "Flood Image Database System."

[0031] After retrieving the substantial number of images (in this example, the seven-hundred and fifty images) for flooding and no flooding, the images can be split into two different folders, where one was titled "Flood", and the other was titled "No Flood". Next, the labels for each of the images can be gathered along with the prediction for each and stored this information in a data store. Lastly, the images can be combined together to form one folder of all of the images (for this example, fifteenhundred images), each of which had a label that includes the file name and an output representing whether the image was for flooding or not for flooding.

[0032] To preprocess the input, the ImageDataGenerator can be used with the preprocessing function being set to preprocess the input. Once the data is collected, the flow from data store function can be used to convert each of the images into two- hundred-and-twenty-four-pixels by two-hundred-and twenty-four-pixels images, with a batch size of 1 , in the categorical data class.

[0033] Various models for the CNN model can be used. For example, a ResNet50 CNN model can be used. The ResNet50 model is one of the most popular architectural models for CNNs. In at least one example using the ResNet50 base model, a GlobalAveragePooling2D() layer can be added, followed by a Dense layer with one-thousand and twenty-four units and a ReLU Activation function. A Dense layer with 2 units and a Softmax Activation function can be used to get the final prediction.

[0034] The model was trained using 5-fold cross validation with an eighty / twenty train / test split. This means that the model was trained on eighty percent of the images, then tested on twenty percent of the images to determine its testing accuracy. In addition, this process was repeated five times, where each iteration happened with different images being tested. This way, a testing prediction can be obtained for each of the fifteen-hundred images, since each iteration predicted three-hundred images, and it the process can be repeated five times.

[0035] During each training and testing iteration, the model can be trained using the adam optimizer, using categorical cross entropy for the loss function, and using the accuracy metric. Each iteration had 5 epochs, where the batch size was set to three-hundred images for training. To identify the predictions, the model. predict() function can be used with each input from the test set, then compared the actual and predicted values to identify the true positive, true negative, false positive, and false negative values.Multithreaded Data

[0036] As various embodiments of the present disclosure scale for big data, it becomes more and more important to make sure that the data that can be retrieved by the Weather API can be retrieved in a way that is efficient for all users, and thus validates the method as fast and efficiently as possible. In various embodiments, a multi-threading approach can be utilized. Through multi-threading API Calls, the performance of retrieving Weather Data can be significantly boosted, meaning that if this Crowdsourcing method scales, more people could use the app in different locations without overburdening the system.

[0037] To prove the scalability of this crowdsourced validation method, an effective approach for multithreading is introduced as follows. To begins, a substantial number (in this example, two-hundred-thousand) evenly spaced latitude / longitude points (coordinates) across Vietnam can be iterated through. For each coordinate, a city can be received using a reverse geocoding process. Next, various embodiments can make a call to the Weather API using the same city to get the precipitation data for that latitude / longitude. In this case, with the WeatherAPI, there is a median latency of two seconds. Thus, it would be much more effective if there were concurrent API calls instead.

[0038] For a multi-threading approach, pools of worker threads can be created that are used to perform the given tasks in clusters. To illustrate this concept, two- hundred-thousand coordinates comprised of one-hundred longitude points and two- hundred latitude points were used, with the tasks being taking a given latitude / longitude coordinate, using Reverse Geocoding, then getting the precipitation data from the Weather API. Each of the tasks can be split up into separate functions and ThreadPoolExecutors. Since the ThreadPoolExecutor extends the Executor class, which is a subclass of concurrent.futures, calling a predefined method called 'submit()' dispatched the respective function to be run and then returned a future object. The future object was returned when the submit() function was called on a thread pool and wasn't necessarily completed. As future objects are completed, they can be iterated through, and stored or returned. For each ThreadPoolExecutor, the number of worker threads per pool could be specified, for example twenty-five, which represents twenty-five threads per pool.

[0039] After validating the CNN with five-fold cross validation, the model achieved an accuracy of "0.9347", Precision of "0.9697", and Recall of "0.8973". As shown in FIG. 4, the great majority of classifications from the fifteen-hundred images were correctly classified. Out of the images that were not correctly classified, the great majority belonged to the class where the prediction was of no flooding, but the actual value did have flooding. The accuracy, precision, and recall for each test run during five-fold cross validation is shown in FIG. 5.

[0040] To further analyze the efficiency of different multithreading approaches, different numbers of threads were compared. The iterative approach where API calls were all made consecutively finished in a time of two-thousand three-hundred and sixteen seconds as compared to a concurrent approach with twenty-five worker threads per pool, which finished in two-hundred and fifty-four seconds. As the number of threads increased over twenty-five, the time required did not decrease, since usage does not go much further than twenty-five threads, meaning any additional threads are just blocked threads and performing tasks on those threads will result in an increased overhead. In this case of the two-hundred-thousand data points being used, the concurrent approach with twenty-five worker threads per pool yields resulted in a speed increase nine times quicker than the consecutive approach. The table with these results is shown in FIG. 6.False Negatives and False Positives

[0041] A limitation is the possibility of the CNN model makes incorrect predictions. As explained previously, the five-fold CV accuracy was "93.47" percent, but there were also seventy-seven False Negatives and twenty-one False Positives. Thismeans that there is a chance that some image that is predicted to not be a flood, is actually a flood, in which case the validation algorithm would not have been correct.

[0042] To further look into this, FIG. 7 shows two images, one of which was a False Negative, and the other that was a False Positive. The False Negative image was predicted to not be a flood but is actually a flood. This is most likely because the house is still above the surface level of water, which makes the flood look like an ocean when the image is represented most simply. The False Positive image was predicted to be a flood, which is most likely due to the shadows, which are darker, and thus could have been interpreted as dark water, which would be representative of a flood.Additional Improvements

[0043] One key approach to improve the CNN would be to further increase the diversity of data to cover more cities in Vietnam. One way to do this would be to get more people in Vietnam to use the app, which would make it easier for them to upload more apps. Another approach to increase the speed of improving multithreading requests would be to further improve accuracy would be to store data using asynchronous requests every hour, to make it so that data could automatically be retrieved, rather than having to be queried as the user wants to make a query.

[0044] To further improve the machine learning model, the CNN can be trained and tested with more data. In addition, to improve the quality of data, the locations of new images can be verified to be taken from Vietnam, as well. In addition, the accuracy of the CNN model could be further improved by trying different types of models aside from ResNet.Technical Descriptions

[0045] Referring to FIG. 8, an aspect of an embodiment of the present invention includes, but not limited thereto, a system, method, and computer readable medium that provides: validating crowdsourced flood images (or other data type) using machine learning and real-time weather data (or other type of parameters), which illustrates a block diagram of an example machine 800 upon which one or more embodiments (e.g., discussed methodologies) can be implemented (e.g., run).

[0046] Examples of machine 800 can include logic, one or more components, circuits (e.g., modules), or mechanisms. Circuits are tangible entities configured to perform certain operations. In an example, circuits can be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner. In an example, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors (processors) can be configured by software (e.g., instructions, an application portion, or an application) as a circuit that operates to perform certain operations as described herein. In an example, the software can reside (1 ) on a non-transitory machine readable medium or (2) in a transmission signal. In an example, the software, when executed by the underlying hardware of the circuit, causes the circuit to perform the certain operations.

[0047] In an example, a circuit can be implemented mechanically or electronically. For example, a circuit can comprise dedicated circuitry or logic that is specifically configured to perform one or more techniques such as discussed above, such as including a special-purpose processor, a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In an example, a circuitcan comprise programmable logic (e.g., circuitry, as encompassed within a general- purpose processor or other programmable processor) that can be temporarily configured (e.g., by software) to perform the certain operations. It will be appreciated that the decision to implement a circuit mechanically (e.g., in dedicated and permanently configured circuitry), or in temporarily configured circuitry (e.g., configured by software) can be driven by cost and time considerations.

[0048] Accordingly, the term “circuit” is understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform specified operations. In an example, given a plurality of temporarily configured circuits, each of the circuits need not be configured or instantiated at any one instance in time. For example, where the circuits comprise a general-purpose processor configured via software, the general-purpose processor can be configured as respective different circuits at different times. Software can accordingly configure a processor, for example, to constitute a particular circuit at one instance of time and to constitute a different circuit at a different instance of time.

[0049] In an example, circuits can provide information to, and receive information from, other circuits. In this example, the circuits can be regarded as being communicatively coupled to one or more other circuits. Where multiple of such circuits exist contemporaneously, communications can be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the circuits. In embodiments in which multiple circuits are configured or instantiated at different times, communications between such circuits can be achieved, for example, throughthe storage and retrieval of information in memory structures to which the multiple circuits have access. For example, one circuit can perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further circuit can then, at a later time, access the memory device to retrieve and process the stored output. In an example, circuits can be configured to initiate or receive communications with input or output devices and can operate on a resource (e.g., a collection of information).

[0050] The various operations of method examples described herein can be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented circuits that operate to perform one or more operations or functions. In an example, the circuits referred to herein can comprise processor-implemented circuits.

[0051] Similarly, the methods described herein can be at least partially processor- implemented. For example, at least some of the operations of a method can be performed by one or processors or processor-implemented circuits. The performance of certain of the operations can be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In an example, the processor or processors can be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other examples the processors can be distributed across a number of locations.

[0052] The one or more processors can also operate to support performance of the relevant operations in a "cloud computing" environment or as a "software as a service” (SaaS). For example, at least some of the operations can be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., Application Program Interfaces (APIs).)

[0053] Example embodiments (e.g., apparatus, systems, or methods) can be implemented in digital electronic circuitry, in computer hardware, in firmware, in software, or in any combination thereof. Example embodiments can be implemented using a computer program product (e.g., a computer program, tangibly embodied in an information carrier or in a machine readable medium, for execution by, or to control the operation of, data processing apparatus such as a programmable processor, a computer, or multiple computers).

[0054] A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a software module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.

[0055] In an example, operations can be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Examples of method operations can also be performed by, and example apparatus can be implemented as, specialpurpose logic circuitry (e.g., a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)).

[0056] The computing system can include clients and servers. A client and server are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that both hardware and software architectures require consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware can be a design choice. Below are set out hardware (e.g., machine 800) and software architectures that can be deployed in example embodiments.

[0057] In an example, the machine 800 can operate as a standalone device or the machine 800 can be connected (e.g., networked) to other machines. In a networked deployment, the machine 800 can operate in the capacity of either a server or a client machine in server-client network environments. In an example, machine 800 can act as a peer machine in peer-to-peer (or other distributed) network environments. The machine 800 can be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a mobile telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) specifying actions to be taken (e.g., performed)by the machine 800. Further, while only a single machine 800 is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

[0058] Example machine 800 (e.g., computer system) can include a processor 802 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 804 and a static memory 806, some or all of which can communicate with each other via a bus 808. The machine 800 can further include a display unit 810, an alphanumeric input device 812 (e.g., a keyboard), and a user interface (Ul) navigation device 814 (e.g., a mouse). In an example, the display unit 810, input device 812 and Ul navigation device 814 can be a touch screen display. The machine 800 can additionally include a storage device 816 (e.g. , drive unit), a signal generation device 818 (e.g., a speaker), a network interface device 820, and one or more sensors 821 , such as a global positioning system (GPS) sensor, compass, accelerometer, or another sensor.

[0059] The storage device 816 can include a machine readable medium 822 on which is stored one or more sets of data structures or instructions 824 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 824 can also reside, completely or at least partially, within the main memory 804, within static memory 806, or within the processor 802 during execution thereof by the machine 800. In an example, one or any combination of the processor 802, the main memory 804, the static memory 806, or the storage device816 can constitute machine readable media.

[0060] While the machine readable medium 822 is illustrated as a single medium, the term "machine readable medium" can include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) that configured to store the one or more instructions 824. The term “machine readable medium” can also be taken to include any tangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine readable medium” can accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media can include non-volatile memory, including, by way of example, semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

[0061] The instructions 824 can further be transmitted or received over a communications network 826 using a transmission medium via the network interface device 820 utilizing any one of a number of transfer protocols (e.g., frame relay, IP, TCP, UDP, HTTP, etc.). Example communication networks can include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., IEEE 802.11 standards family known asWi-Fi®, IEEE 802.16 standards family known as WiMax®), peer-to-peer (P2P) networks, among others. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

[0062] With reference to FIG. 9, shown is a network environment 900 according to various embodiments. The network environment 900 can include a computing environment 903, a client device 906, weather environment 909, weather sensors 912, which can be in data communication with each other via a network 915.

[0063] The network 915 can include wide area networks (WANs), local area networks (LANs), personal area networks (PANs), or a combination thereof. These networks can include wired or wireless components or a combination thereof. Wired networks can include Ethernet networks, cable networks, fiber optic networks, and telephone networks such as dial-up, digital subscriber line (DSL), and integrated services digital network (ISDN) networks. Wireless networks can include cellular networks, satellite networks, Institute of Electrical and Electronic Engineers (IEEE) 802.11 wireless networks ( / .e., WI-FI®), BLUETOOTH® networks, microwave transmission networks, as well as other networks relying on radio broadcasts. The network 915 can also include a combination of two or more networks 915. Examples of networks 915 can include the Internet, intranets, extranets, virtual private networks (VPNs), and similar networks.

[0064] The computing environment 903 can include one or more computing devices that include a processor, a memory, and / or a network interface. For example,the computing devices can be configured to perform computations on behalf of other computing devices or applications. As another example, such computing devices can host and / or provide content to other computing devices in response to requests for content.

[0065] Moreover, the computing environment 903 can employ a plurality of computing devices that can be arranged in one or more server banks or computer banks or other arrangements. Such computing devices can be located in a single installation or can be distributed among many different geographical locations. For example, the computing environment 903 can include a plurality of computing devices that together can include a hosted computing resource, a grid computing resource or any other distributed computing arrangement. In some cases, the computing environment 903 can correspond to an elastic computing resource where the allotted capacity of processing, network, storage, or other computing-related resources can vary over time.

[0066] Various data is stored in a data store 918 that is accessible to the computing environment 903. The data store 918 can be representative of a plurality of data stores 918, which can include relational databases or non-relational databases such as object-oriented databases, hierarchical databases, hash tables or similar key-value data stores, as well as other data storage applications or data structures. Moreover, combinations of these databases, data storage applications, and / or data structures may be used together to provide a single, logical, data store. In various embodiments, the data store 918 can be a hosted data store, such as Amazon® Web Services (AWS®) Rational Database Service (RDS), AWS® SimpleStorage Service (S3), and / or other hosted data stores. The data stored in the data store 918 is associated with the operation of the various applications or functional entities described below. This data can include convolutional neural network training data 921 (“CNN training data 921”), weather event upload requests 924, geolocations 927A (generically as “geolocations 927”), flood activity images 930, and potentially other data.

[0067] The CNN training data 921 can represent a collection of images and corresponding labels designed to train the convolutional neural network 957 (“CNN 957”) model for image recognition tasks. The CNN training data 921 can include a large number of images (e.g., flood images 933 and non-flood images 936, various other images, etc.) with significant variety, ensuring diversity and comprehensiveness to improve the CNN 957 model’s accuracy and generalization. The labels can correspond to each image or to a dataset and can be used to describe the contents shown. In at least some embodiments, the CNN training data 921 can include annotated images, which include bounding boxes for object detection tasks. The CNN training data 921 can include flood images 933 and non-flood images 936.

[0068] The flood images 933 (or singularly as “flood image 933”) can represent pictures of real-world locations that, at the time the picture was taken, was experiencing flood conditions. An example of a flood image 933 is shown in FIG. 7A. In various embodiments, flood images 933 can include annotations, which include bounding boxes for object detection tasks. The flood images 933 can be formatted as a Joint Photographic Experts Group (JPEG or JPG) file, a Portable Network Graphics (PNG) file, a Graphics Interchange Format (GIF) file, a bitmap (BMP), aTagged Image File Format (TIFF) file, a Scalable Vector Graphics (SVG) file, a WebP file, a High Efficiency Image Format (HEIF, HEIC) file, a RAW file, and various other image formats.

[0069] The non-flood images 936 (or singularly as “non-flood image 936”) can represent pictures of real-world locations that, at the time the picture was taken, was not experiencing flood conditions. An example of a non-flood image 936 is shown in FIG. 7B. In various embodiments, non-flood images 936 can include annotations, which can include bounding boxes for object detection tasks. The non-flood images 936 can be formatted as a Joint Photographic Experts Group (JPEG or JPG) file, a Portable Network Graphics (PNG) file, a Graphics Interchange Format (GIF) file, a bitmap (BMP), a Tagged Image File Format (TIFF) file, a Scalable Vector Graphics (SVG) file, a WebP file, a High Efficiency Image Format (HEIF, HEIC) file, a RAWfile, and various other image formats.

[0070] The weather event upload requests 924 can represent requests sent from client devices 906 to report that a flood is occurring at a specified geolocation. The weather event upload requests 924 can include a client geolocation 939A and an image 942A, among various other information. For example, the weather event upload requests 924 can include a flood severity indication and / or a description of the flood, as previously discussed in the discussion of FIG. 3A.

[0071] The client geolocation 939A (generically as “client geolocations 939”) can represent the location within three-dimensional space that the client alleges the image 942A (or generically as “image 942”) was taken. In various embodiments, the client geolocation 939 can be map coordinates (e.g., distance from a non-standardorigin, etc.), GPS coordinates (e.g., longitude, latitude, altitude, etc. , or other means for identifying a location. In some embodiments, the client geolocation 939A can represent the location of the client device 906 as detected by the geolocation detection device 972 at the time the weather event upload request 924 is sent to the flood detection service 954 on the computing environment 903.

[0072] The image 942A (generically as “image 942”) can represent a picture (taken by a client at the client device 906 with the image capture device 969). The image 942A can represent an unverified picture, meaning that the picture can represent something other than a location experiencing flood conditions. By contrast, the image 942B (as later described in the discussion of FIG. 10A) represents a verified or published image 942 that represents a location experiencing flood conditions. The image 942 can be formatted as a Joint Photographic Experts Group (JPEG or JPG) file, a Portable Network Graphics (PNG) file, a Graphics Interchange Format (GIF) file, a bitmap (BMP), a Tagged Image File Format (TIFF) file, a Scalable Vector Graphics (SVG) file, a WebP file, a High Efficiency Image Format (HEIF, HEIC) file, a RAW file, and various other image formats.

[0073] The geolocations 927A (generically as “geolocations 927”) can represent a location or region within three-dimensional space that experiences similar (nearly identical) weather conditions. For example, a geolocation 927 can represent a small city, a suburb, a range of GPS coordinates (e.g., longitude, latitude, altitude, etc.), or other ways to depict a region within space. Because the geolocations 927 represent a region in space that share weather conditions, the geolocations 927 can includeweather data 945. A single geolocation 927 can include a plurality of weather data 945 representing the weather over a period of time.

[0074] The weather data 945A (generically as “weather data 945”) can represent the weather conditions at a specified point in time. In various embodiments, the weather data 945 can include temperature information, “feels like” temperature information, weather descriptions (e.g., clear sky, scattered clouds, etc.), pressure information, wind information (e.g., speed, direction, etc.), visibility, cloud cover, forecast information (e.g., predicted weather data 945), severe weather alerts and advisories, precipitation information 948A (generically as “precipitation information 948”), and / or humidity information 951 A (generically as “humidity information 951”), among various other information. The weather data 945 can be formatted as extensible markup language (XML), JavaScript Object Notation (JSON), Simple Object Access Protocol (SOAP), or various other data formats.

[0075] The precipitation information 948A (generically as “precipitation information 948”) provides detailed insights into the precipitation for a specific location at a specified point in time. In various embodiments, the precipitation information 948 can include information like the type of precipitation (e.g., rain, snow, sleet, hail, etc.), the amount (e.g., six inches, three centimeters, four gallons per square foot per hour, etc.), and likelihood / confidence of precipitation (e.g., ninety percent chance of shower, etc.), and / or intensity (e.g., light rain, moderate snow, heavy hail, etc.), among various other data.

[0076] The humidity information 951 A (generically as “humidity information 951”) provides detailed insights into the humidity for a specific location at a specific point intime. In various embodiments, the humidity data 951 can include information like an absolute humidity (the total amount of water vapor in a given volume of air), a relative humidity (an amount of moisture in the air compared to the maximum moisture the air can hold at a temperature), a dew point, and / or a humidity index (“feels like” humidity), among various other data.

[0077] The flood activity images 930 can represent weather event upload requests 924 that have been validated / published, meaning that the image 924B is determined to represent a verified or published image 942 that represents a location experiencing flood conditions. The flood activity images 930 can include client geolocation 939B and image 942B. The client geolocation 939B is previously described as client geolocation 939A. The image 942B is previously described as image 942A.

[0078] Also, various applications or other functionality can be executed in the computing environment 903. The components executed on the computing environment 903 include a flood detection service 954, a convolutional neural network 957 (“CNN 957”), and other applications, services, processes, systems, engines, or functionality not discussed in detail herein.

[0079] The flood detection service 954 can be executed to perform various functionality. For instance, the flood detection service 954 can obtain CNN training data 921 to train a CNN 957. The flood detection service 954 can train the CNN 957 using the CNN training data 921. The flood detection service 954 can obtain a weather event upload request 924 from a client application 966 at a client device 906. The flood detection service 954 can store the weather event upload request 924 inthe data store 918. The flood detection service 954 can determine that the metadata of the image 942 corresponds to an acceptable the client geolocation 939 and / or upload time. The flood detection service 954 can direct the CNN 957 to predict whether flood activity is present within the image 942. The flood detection service 954 can obtain weather data 945 for a specific geolocation 927 from a weather API 978. The flood detection service 954 can determine whether the weather data 945 indicates flood conditions. The flood detection service 954 can publish the image 942 and client geolocation 939 into a plurality of flood activity images 930. The flood detection service 954 can send a plurality of flood activity images 930 to the client application 966 at the client device 906. Additional information about the aforementioned functionality of the flood detection service 954 is further described by FIG. 10A and FIG. 10B. The flood detection service 954 can also perform various other functionality not previously described.

[0080] The convolutional neural network 957 (or CNN 957) is a specialized type of deep learning model designed for processing and analyzing visual data. A CNN 957 can be used in image recognition, object detection, and various other uses. A CNN 957 can be trained to recognize whether a newly uploaded image 942 presents flood conditions based on CNN training data 921 that includes a corpus of flood images 933 and non-flood images 936. The CNN 957 can further be trained using various other techniques, such as forward propagation and / or backpropagation.

[0081] Various models for the CNN 957 can be used. For example, a ResNet50 model for the CNN 957 can be used. In at least one example using the ResNet50 base model, a GlobalAveragePooling2D() layer can be added, followed by a Denselayer with one-thousand and twenty-four units and a ReLU Activation function. A Dense layer with 2 units and a Softmax Activation function can be used to get the final prediction. The CNN 957 can be trained using five-fold cross validation with an eighty / twenty train / test split. This means that the model was trained on eighty percent of the images (e.g., flood images 933 and non-flood images 936, etc.), then tested on twenty percent of the images (e.g., flood images 933 and non-flood images 936, etc.) to determine its testing accuracy. In addition, this process can be repeated a number of times, where each iteration happened with different images (e.g., flood images 933 and non-flood images 936, etc.) being tested. This way, a testing prediction can be obtained for each of the CNN training data 921 images (e.g., flood images 933 and non-flood images 936, etc.). During each training and testing iteration, the CNN 957 can be trained using an adam optimizer, using categorical cross entropy for the loss function, and using the accuracy metric. Each iteration can include five epochs, where the batch size is set to three-hundred images (e.g., flood images 933 and non-flood images 936, etc.) for training. To identify the predictions, the model. predict() function can be used with each input from the test set, then compared the actual and predicted values to identify the true positive, true negative, false positive, and false negative values.

[0082] The client device 906 is representative of a plurality of client devices that can be coupled to the network 915. The client device 906 can include a processorbased system such as a computer system. Such a computer system can be embodied in the form of a personal computer (e.g., a desktop computer, a laptop computer, or similar device), a mobile computing device (e.g., personal digitalassistants, cellular telephones, smartphones, web pads, tablet computer systems, music players, portable game consoles, electronic book readers, and similar devices), media playback devices (e.g., media streaming devices, BluRay® players, digital video disc (DVD) players, set-top boxes, and similar devices), a videogame console, or other devices with like capability. The client device 906 can include one or more displays 960, such as liquid crystal displays (LCDs), gas plasma-based flat panel displays, organic light emitting diode (OLED) displays, electrophoretic ink (“E- ink”) displays, projectors, or other types of display devices. In some instances, the display 960 can be a component of the client device 906 or can be connected to the client device 906 through a wired or wireless connection.

[0083] The client device 906 can be configured to execute various applications such as a client application 966 or other applications. The client application 966 can be executed in a client device 906 to access network content served up by the computing environment 903 or other servers, thereby rendering a user interface 963 on the display 960. To this end, the client application 966 can include a browser, a dedicated application, or other executable, and the user interface 963 can include a network page, an application screen, or other user mechanism for obtaining user input. The client device 906 can be configured to execute applications beyond the client application 966 such as email applications, social networking applications, word processors, spreadsheets, or other applications.

[0084] The client application 966 can also obtain an image 942 from an image capture device 969 and a client geolocation 939 from a geolocation detection device 972 (among various other data) to generate a weather event upload request 924.The client application 966 present a series of user interfaces 963 to obtain the image 942 and the client geolocation 939, such as user interface shown in FIG. 3A. The client application 966 can send the weather event upload request 924 to the flood detection service 954 of the computing environment 903. The client application 966 can also receive a plurality of flood activity images 930 that include verified images 942 and client geolocations 939. The client application 966 can display the flood activity images 930, such as shown in FIG. 3B. An image 942 can include metadata. The metadata of the image 942 can include the time which the image was captured, an image geolocation, along with various other information.

[0085] The client device 906 can include an image capture device 969. An image capture device 969 can include any device capable of recording visual information, such as a standalone camera, a cell phone camera, or other imaging equipment. Image capture devices 969 can convert light into electronic signals to produce digital images or videos. In various embodiments, an image capture device 969 can include a lens to focus light onto an image sensor. The image sensor can convert the light into electronic signals. Some embodiments of the image capture device 969 can include a shutter that controls the duration of light exposure to the sensor. The image capture device 969 can be used by a client of the client device 906 to capture an image 942 of a subject (in some cases, a location experiencing flood conditions). The resulting image 942 can be sent by the client application 966 to the flood detection service 954 of the computing environment 903.

[0086] The client device 906 can include a geolocation detection device 972. The geolocation detection device 972 can include any device capable of determining itsgeographic location using various technologies, such as GPS, cell tower triangulation, or Wi-Fi® positioning. At least some embodiments of the geolocation detection device 972 can include a GPS receiver that is capable of receiving signals from Global Positioning System satellites to determine a device’s location. In at least some embodiments, the geolocation detection device 972 can include a cellphone signal receiver, which can determine a location by measuring the signal strength and timing from multiple cell phone towers. In at least some embodiments, the geolocation detection device 972 can include a Wi-Fi® network receiver that can utilize the known locations of Wi-Fi® access points to estimate the position of the client device 906. The geolocation detection device 972 can be used by a client of the client device 906 to detect a current client geolocation 939. The resulting client geolocation 939 can be sent by the client application 966 to the flood detection service 954 of the computing environment 903.

[0087] The weather environment 909 can include one or more computing devices that include a processor, a memory, and / or a network interface. For example, the computing devices can be configured to perform computations on behalf of other computing devices or applications. As another example, such computing devices can host and / or provide content to other computing devices in response to requests for content.

[0088] Moreover, the weather environment 909 can employ a plurality of computing devices that can be arranged in one or more server banks or computer banks or other arrangements. Such computing devices can be located in a single installation or can be distributed among many different geographical locations. Forexample, the weather environment 909 can include a plurality of computing devices that together can include a hosted computing resource, a grid computing resource or any other distributed computing arrangement. In some cases, the weather environment 909 can correspond to an elastic computing resource where the allotted capacity of processing, network, storage, or other computing-related resources can vary over time.

[0089] Various data is stored in a weather data store 975 that is accessible to the weather environment 909. The weather data store 975 can be representative of a plurality of weather data store 975, which can include relational databases or nonrelational databases such as object-oriented databases, hierarchical databases, hash tables or similar key-value data stores, as well as other data storage applications or data structures. Moreover, combinations of these databases, data storage applications, and / or data structures may be used together to provide a single, logical, data store. The data stored in the weather data store 975 is associated with the operation of the various applications or functional entities described below. This data can include geolocations 927B (generically as “geolocations 927”), and potentially other data.

[0090] The geolocations 927B (generically as “geolocations 927”) can represent a location or region within three-dimensional space that experiences similar (nearly identical) weather conditions. For example, a geolocation 927 can represent a small city, a suburb, a range of GPS coordinates (e.g., longitude, latitude, altitude, etc.), or other ways to depict a region within space. Because the geolocations 927 represent a region in space that share weather conditions, the geolocations 927 can includeweather data 945. A single geolocation 927 can include a plurality of weather data 945 representing the weather over a period of time. The geolocations 927B can include weather data 945B, which can include precipitation information 948B and humidity information 951 B. The geolocations 927, weather data 945, precipitation information 948, and humidity information 951 are previously described in the section of the data store 918 on the computing environment 903.

[0091] Also, various applications or other functionality can be executed in the weather environment 909. The components executed on the weather environment 909 include a weather API 978, a convolutional neural network 957 (“CNN 957”), and other applications, services, processes, systems, engines, or functionality not discussed in detail herein.

[0092] The weather API 978 can be executed to perform various functionality. For example, the weather API 978 can be executed to obtain weather information from weather sensors 912. The weather API 978 can synthesize the large amount of information received from the weather sensors 912 to determine weather data 945B for specific geolocations 927B. The weather API 978 can store the weather data 945B for specific geolocations 927B in the weather data store 975. The weather API 978 can also receive a request for weather data 945 for a specified geolocation (e.g., the client geolocation 939) and can subsequently send the weather data 945B for a specific geolocation 927B to the flood detection service 954 of the computing environment 903. The weather API 978 can also perform various other functionality not previously discussed.

[0093] Weather sensors 912 are devices designed to detect and measure various atmospheric conditions, such as rain, humidity temperature, wind speed, and other weather-related parameters. Weather sensors 912 can include thermocouples, thermistors, resistance temperature detectors, hygrometers, rain gauges, anemometers, barometers, pyranometers, pyrheliometers, capacitance sensors, forward scatter sensors, photodiodes, ultraviolet spectroradiometers, and various other sensors to collect weather data 945. Weather sensors 912 can be placed throughout the world in various locations. Additionally, weather sensors 912 can include one or more computing devices that include a processor, a memory, and / or a network interface. The weather sensors 912 can be programmed to send or publish weather data 945, such as precipitation information 948 and / or humidity information 951 B, which the weather API 978 can obtain.

[0094] Referring next to FIG. 10A, shown is a flowchart that provides one example of the operation of a portion of the flood detection service 954. The flowchart of FIG. 10A provides merely an example of the many different types of functional arrangements that can be employed to implement the operation of the depicted portion of the flood detection service 954. As an alternative, the flowchart of FIG. 10A can be viewed as depicting an example of elements of a method implemented within the network environment 900.

[0095] Beginning with block 1003, the flood detection service 954 can obtain CNN training data 921 to train a CNN 957. To train a CNN 957 to predict whether an image 942 depicts flood conditions or not, a dataset of images (CNN training data 921 ) can be accumulated to include a substantial number of examples. Various methods ofobtaining images can be performed. In some embodiments, web scraping tools, such as Kaggle and Web Scraping, can be used to obtain a series of images. In some embodiments, the images can be manually sorted into their respective groups to ensure that the images depicting flood conditions are included into flood images 933 and images not depicting flood conditions are included in non-flood images 936. In various embodiments, both the flood images 933 and non-flood images 936 can be pre-processed to ensure the images are prepared for training the CNN 957.

[0096] Next, at block 1006, the flood detection service 954 can train the CNN 957 using the CNN training data 921 . In various embodiments, the flood detection service 954 can train the CNN 957 using the flood images 933 and non-flood images 936. The CNN 957 can be trained using five-fold cross validation with an eighty / twenty train / test split. This means that the model was trained on eighty percent of the images (e.g., flood images 933 and non-flood images 936, etc.), then tested on twenty percent of the images (e.g., flood images 933 and non-flood images 936, etc.) to determine its testing accuracy. In addition, this process can be repeated a number of times, where each iteration happened with different images (e.g., flood images 933 and non-flood images 936, etc.) being tested. This way, a testing prediction can be obtained for each of the CNN training data 921 images (e.g., flood images 933 and non-flood images 936, etc.). During each training and testing iteration, the CNN 957 can be trained using an adam optimizer, using categorical cross entropy for the loss function, and using the accuracy metric. Each iteration can include five epochs, where the batch size is set to three-hundred images (e.g., flood images 933 and non-flood images 936, etc.) for training. Accordingly, the CNN 957 can be considered a pre-trained or trained CNN 957.

[0097] Continuing to block 1009, the flood detection service 954 can obtain a weather event upload request 924 from a client application 966 at a client device 906. In various embodiments, the client application 966 can prepare a weather event upload request 924 that includes a client geolocation 939 and an image 942. The image 942 can be captured from the image capture device 969. An image 942 can include metadata. The metadata of the image 942 can include the time which the image was captured, an image geolocation, along with various other information. The client geolocation 939 can be captured by the geolocation detection device 972 or it can be manually input into the user interface 963 of the client application 966. The weather event upload request 924 can be sent by the client application 966 to the flood detection service 954, which the flood detection service 954 can obtain. Further, at block 1012, the flood detection service 954 can store the weather event upload request 924 in the data store 918.

[0098] Continuing to block 1015, the flood detection service 954 can determine that the metadata of the image 942 corresponds to an acceptable the client geolocation 939 and / or upload time. In at least some embodiments, the flood detection service 954 can make the determination in response to obtaining the weather event upload request 924. In at least some embodiments, the metadata of the image 942 from the weather event upload request 924 can indicate that that the image 942 was captured within a predetermined time frame from when the weather event upload request 924 was received. In doing so, the flood detection service 954can ensure that the image 942 is temporally relevant. Additionally, if a person uploads an image 942 that is not temporally relevant, then the client could mislead other clients to believe a flood is occurring at a location when a flood is not currently occurring at that geolocation. In at least some embodiments, the metadata of the image 942 from the weather event upload request 924 can indicate that that the image 942 was captured within a predetermined distance from the uploaded client geolocation 939. In doing so, the flood detection service 954 can ensure that the image 942 comes from a location that the client alleges. In at least some embodiments, if the metadata of the image 942 was not timely uploaded or if the image 942 was captured in a different area than what the client alleges, then the process of FIG. 10A can come to an end.

[0099] Next, at block 1018, the flood detection service 954 can direct the CNN 957 to predict whether flood activity is present within the image 942. In various embodiments, the flood detection service 954 can direct the CNN 957 to execute a model. predict() function. The CNN 957, being trained to recognize flood conditions in images, can predict whether the image 942 presents flood conditions.

[0100] Continuing to block 1021 , the flood detection service 954 can obtain weather data 945 for a specific geolocation 927 from a weather API 978. the weather API 978 can be executed to obtain weather information from weather sensors 912. The weather API 978 can synthesize the large amount of information received from the weather sensors 912 to determine weather data 945B for specific geolocations 927B. The weather API 978 can store the weather data 945B for specific geolocations 927B in the weather data store 975. The weather API 978 can alsoreceive a request for weather data 945 for a specified geolocation (e.g., the client geolocation 939) and can subsequently send the weather data 945B for a specific geolocation 927B to the flood detection service 954 of the computing environment 903. In various embodiments, the weather data 945 can include precipitation information 948 and / or humidity information 951.

[0101] Next, at block 1024, the flood detection service 954 can determine whether the weather data 945 indicates flood conditions. In various embodiments, the flood detection service 954 can determine that the weather data 945 indicates flood conditions for the client geolocation 939. At least some embodiments, the flood detection service 954 can determine that the weather data 945 indicates flood conditions for the client geolocation 939 in response to the CNN 957 predicting that flood activity is present within the image 942 at block 1018 and in response to obtaining the weather data 945 at block 1021. In at least some embodiments, determining that the weather data 945 indicates flood conditions for the client geolocation 939 can further include determining that a predefined precipitation threshold based at least on the client geolocation 939 and then determining that the precipitation information 948 exceeds the predefined precipitation threshold. In at least some embodiments, determining that the weather data 945 indicates flood conditions for the client geolocation 939 can further include determining that the precipitation information 948 exceeds a predefined precipitation threshold and that the humidity information 951 exceeds a predefined humidity threshold. In various embodiments, flood conditions can be defined based on objective criteria, such as amount of rain fallen and the amount of humidity.

[0102] Continuing to block 1027, the flood detection service 954 can publish the image 942 and client geolocation 939 into a plurality of flood activity images 930. If the flood detection service 954 determines that the weather data 945 indicates flood conditions are present (as described at block 1024) and the CNN 957 predicts that the image 942 contains flood activity, then the flood detection service 954 can store the client geolocation 939 and image 942 into the flood activity images 930. Continuing to block 1030, the flood detection service 954 can send a plurality of flood activity images 930 to the client application 966 at the client device 906. The plurality of flood activity images 930 can then be used to populate a user interface (such as the user interface depicted in FIG. 3B) of the client application 966 on the client device 906. Once block 1030 has completed, the flowchart of FIG. 10A can come to an end.

[0103] Referring next to FIG. 10B, shown is a flowchart that provides one example of the operation of a portion of the flood detection service 954. The flowchart of FIG. 10B provides merely an example of the many different types of functional arrangements that can be employed to implement the operation of the depicted portion of the flood detection service 954. As an alternative, the flowchart of FIG. 10B can be viewed as depicting an example of elements of a method implemented within the network environment 900. For FIG. 10B, block 1003, block 1006, block 1009, block 1012, and block 1015 can be performed as previously described in FIG. 10A. Each of block 1018 and block 1021 are also performed as previously described in FIG. 10A but block 1018 and block 1021 are performed in parallel as multi-threaded processes on a computing environment 903. Once both block 1018 and block 1021 are completed, the process of FIG. 10B can continue to block 1024, which can beperformed as previously described in FIG. 10A. Additionally, block 1027 and block 1030 can be performed as previously described in FIG. 10A.

[0104] A number of software components previously discussed are stored in the memory of the respective computing devices and are executable by the processor of the respective computing devices. In this respect, the term "executable" means a program file that is in a form that can ultimately be run by the processor. Examples of executable programs can be a compiled program that can be translated into machine code in a format that can be loaded into a random-access portion of the memory and run by the processor, source code that can be expressed in proper format such as object code that is capable of being loaded into a random-access portion of the memory and executed by the processor, or source code that can be interpreted by another executable program to generate instructions in a random-access portion of the memory to be executed by the processor. An executable program can be stored in any portion or component of the memory, including random-access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, Universal Serial Bus (USB) flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.

[0105] The memory includes both volatile and nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. Thus, the memory can include random-access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppydisk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, or other memory components, or a combination of any two or more of these memory components. In addition, the RAM can include static random-access memory (SRAM), dynamic random-access memory (DRAM), or magnetic random-access memory (MRAM) and other such devices. The ROM can include a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other like memory device.

[0106] Although the applications and systems described herein can be embodied in software or code executed by general purpose hardware as discussed above, as an alternative the same can also be embodied in dedicated hardware or a combination of software / general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies can include, but are not limited to, discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field-programmable gate arrays (FPGAs), or other components, etc. Such technologies are generally well known by those skilled in the art and, consequently, are not described in detail herein.

[0107] The flowcharts show the functionality and operation of an implementation of portions of the various embodiments of the present disclosure. If embodied in software, each block can represent a module, segment, or portion of code thatincludes program instructions to implement the specified logical function(s). The program instructions can be embodied in the form of source code that includes human-readable statements written in a programming language or machine code that includes numerical instructions recognizable by a suitable execution system such as a processor in a computer system. The machine code can be converted from the source code through various processes. For example, the machine code can be generated from the source code with a compiler prior to execution of the corresponding application. As another example, the machine code can be generated from the source code concurrently with execution with an interpreter. Other approaches can also be used. If embodied in hardware, each block can represent a circuit or a number of interconnected circuits to implement the specified logical function or functions.

[0108] Although the flowcharts show a specific order of execution, it is understood that the order of execution can differ from that which is depicted. For example, the order of execution of two or more blocks can be scrambled relative to the order shown. Also, two or more blocks shown in succession can be executed concurrently or with partial concurrence. Further, in some embodiments, one or more of the blocks shown in the flowcharts can be skipped or omitted. In addition, any number of counters, state variables, warning semaphores, or messages might be added to the logical flow described herein, for purposes of enhanced utility, accounting, performance measurement, or providing troubleshooting aids, etc. It is understood that all such variations are within the scope of the present disclosure.

[0109] Also, any logic or application described herein that includes software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as a processor in a computer system or other system. In this sense, the logic can include statements including instructions and declarations that can be fetched from the computer- readable medium and executed by the instruction execution system. In the context of the present disclosure, a "computer-readable medium" can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system. Moreover, a collection of distributed computer-readable media located across a plurality of computing devices (e.g., storage area networks or distributed or clustered filesystems or databases) may also be collectively considered as a single non-transitory computer-readable medium.

[0110] The computer-readable medium can include any one of many physical media such as magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical discs. Also, the computer-readable medium can be a random-access memory (RAM) including static random-access memory (SRAM) and dynamic random-access memory (DRAM), or magnetic random-access memory (MRAM). In addition, the computer-readable medium can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.

[0111] Further, any logic or application described herein can be implemented and structured in a variety of ways. For example, one or more applications described can be implemented as modules or components of a single application. Further, one or more applications described herein can be executed in shared or separate computing devices or a combination thereof. For example, a plurality of the applications described herein can execute in the same computing device, or in multiple computing devices in the same computing environment 903.

[0112] Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., can be either X, Y, orZ, or any combination thereof (e.g., X; Y; Z; X or Y; X or Z; Y or Z; X, Y, or Z; etc.). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.

[0113] It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications can be made to the above-described embodiments without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

[0114] While the present invention has been described with respect to specific embodiments, many modifications, variations, alterations, substitutions, and equivalents will be apparent to those skilled in the art. The present invention is notto be limited in scope by the specific embodiment described herein. Indeed, various modifications of the present invention, in addition to those described herein, will be apparent to those of skill in the art from the foregoing description and accompanying drawings. Accordingly, the invention is to be considered as limited only by the spirit and scope of the disclosure (and claims) including all modifications and equivalents.

[0115] Still other embodiments will become readily apparent to those skilled in this art from reading the above-recited detailed description and drawings of certain exemplary embodiments. It should be understood that numerous variations, modifications, and additional embodiments are possible, and accordingly, all such variations, modifications, and embodiments are to be regarded as being within the spirit and scope of this application. For example, regardless of the content of any portion (e.g., title, field, background, summary, abstract, drawing figure, etc.) of this application, unless clearly specified to the contrary, there is no requirement for the inclusion in any claim herein or of any application claiming priority hereto of any particular described or illustrated activity or element, any particular sequence of such activities, or any particular interrelationship of such elements. Moreover, any activity can be repeated, any activity can be performed by multiple entities, and / or any element can be duplicated. Further, any activity or element can be excluded, the sequence of activities can vary, and / or the interrelationship of elements can vary. Unless clearly specified to the contrary, there is no requirement for any particular described or illustrated activity or element, any particular sequence or such activities, any particular size, speed, material, dimension or frequency, or any particular interrelationship of such elements. Accordingly, the descriptions and drawings are tobe regarded as illustrative in nature, and not as restrictive. Moreover, when any number or range is described herein, unless clearly stated otherwise, that number or range is approximate. When any range is described herein, unless clearly stated otherwise, that range includes all values therein and all sub ranges therein. Any information in any material (e.g., a United States / foreign patent, United States / foreign patent application, book, article, etc.) that has been incorporated by reference herein, is only incorporated by reference to the extent that no conflict exists between such information and the other statements and drawings set forth herein. In the event of such conflict, including a conflict that would render invalid any claim herein or seeking priority hereto, then any such conflicting information in such incorporated by reference material is specifically not incorporated by reference herein.

[0116] Illustrative examples of various embodiments of the present disclosure are set forth below. Additional embodiments of the present disclosure are discussed in the preceding paragraphs. Accordingly, the scope of the present disclosure should not be construed as being limited to the following clauses:

[0117] Clause 1 - A system, comprising a computing device comprising a processor and a memory; and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to at least obtain, from a client device, a weather event upload request comprising an upload geolocation and an image; direct a convolutional neural network (CNN) model to predict flood activity within the image; obtain, from a weather application programming interface (weather API), weather data corresponding the upload geolocation; determine, in response to the CNN model predicting that flood activity ispresent within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publish the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

[0118] Clause 2 - The system of clause 1 , wherein the machine-readable instructions further cause the computing device to at least store, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

[0119] Clause 3 - The system of clause 1 or clause 2, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

[0120] Clause 4 - The system of any of clauses 1-3, wherein the weather data comprises precipitation information and humidity information.

[0121] Clause 5 - The system of clause 4, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least determine a predefined precipitation threshold based at least on the upload geolocation; and determine that the precipitation information exceeds the predefined precipitation threshold.

[0122] Clause 6 - The system of clause 4, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least determine that theprecipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

[0123] Clause 7 - The system of any of clauses 1-6, wherein the machine- readable instructions that direct the CNN model to predict flood activity within the image and the machine-readable instructions that obtain the weather data corresponding the upload geolocation are performed in parallel, multi-threaded processes.

[0124] Clause 8 - The system of any of clauses 1-7, wherein the machine- readable instructions further cause the computing device to at least send, to the client device, the plurality of flood activity images for the upload geolocation.

[0125] Clause 9 - The system of any of clauses 1-8, wherein the machine- readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

[0126] Clause 10 - The system of any of clauses 1 -9, wherein the machine- readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

[0127] Clause 11 - A method, comprising obtaining, by a computing device and from a client device, a weather event upload request comprising an upload geolocation and an image; directing, by the computing device, a convolutional neuralnetwork (CNN) model to predict flood activity within the image; obtaining, by the computing device and from a weather application programming interface (weather API), weather data corresponding the upload geolocation; determining, by the computing device and in response to the CNN model predicting that flood activity is present within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publishing, by the computing device, the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

[0128] Clause 12 - The method of clause 11 , further comprising storing, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

[0129] Clause 13 - The method of clause 11 or clause 12, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

[0130] Clause 14 - The method of any of clauses 11 -13, wherein the weather data comprises precipitation information and humidity information.

[0131] Clause 15 - The method of clause 14, wherein determining that the weather data indicates flood conditions for the upload geolocation further comprises determining a predefined precipitation threshold based at least on the upload geolocation; and determining that the precipitation information exceeds the predefined precipitation threshold.

[0132] Clause 16 - The method of clause 14, wherein determining that the weather data indicates flood conditions for the upload geolocation further comprisesdetermining that the precipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

[0133] Clause 17 - The method of any of clauses 11 -16, wherein directing the CNN model to predict flood activity within the image and obtaining the weather data corresponding the upload geolocation are performed in parallel, multi-threaded processes by the computing device.

[0134] Clause 18 - The method of any of clauses 11 -17, further comprising sending, by the computing device and to the client device, the plurality of flood activity images for the upload geolocation.

[0135] Clause 19 - The method of any of clauses 11-18, wherein determining, by the computing device and in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

[0136] Clause 20 - The method of any of clauses 11-19, wherein determining, by the computing device and in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

[0137] Clause 21 - A non-transitory, computer-readable medium, comprising machine-readable instructions that, when executed by a processor of a computing device, cause the computing device to at least obtain, from a client device, a weather event upload request comprising an upload geolocation and an image; direct a convolutional neural network (CNN) model to predict flood activity within the image; obtain, from a weather application programming interface (weather API), weatherdata corresponding the upload geolocation; determine, in response to the CNN model predicting that flood activity is present within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publish the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

[0138] Clause 22 - The non-transitory, computer-readable medium of clause 21 , wherein the machine-readable instructions further cause the computing device to at least store, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

[0139] Clause 23 - The non-transitory, computer-readable medium of clause 21 or clause 22, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

[0140] Clause 24 - The non-transitory, computer-readable medium of any of clauses 21-23, wherein the weather data comprises precipitation information and humidity information.

[0141] Clause 25 - The non-transitory, computer-readable medium of clause 24, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least determine a predefined precipitation threshold based at least on the upload geolocation; and determine that the precipitation information exceeds the predefined precipitation threshold.

[0142] Clause 26 - The non-transitory, computer-readable medium of clause 24, wherein the machine-readable instructions that determine that the weather dataindicates flood conditions for the upload geolocation further cause the computing device to at least determine that the precipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

[0143] Clause 27 - The non-transitory, computer-readable medium of any of clauses 21 -26, wherein the machine-readable instructions that direct the CNN model to predict flood activity within the image and the machine-readable instructions that obtain the weather data corresponding the upload geolocation are performed in parallel, multi-threaded processes.

[0144] Clause 28 - The non-transitory, computer-readable medium of any of clauses 21 -27, wherein the machine-readable instructions further cause the computing device to at least send, to the client device, the plurality of flood activity images for the upload geolocation.

[0145] Clause 29 - The non-transitory, computer-readable medium of any of clauses 21 -28, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

[0146] Clause 30 - The non-transitory, computer-readable medium of any of clauses 21 -29, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

Claims

CLAIMSTherefore, the following is claimed:

1. A system, comprising: a computing device comprising a processor and a memory; and machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to at least: obtain, from a client device, a weather event upload request comprising an upload geolocation and an image; direct a convolutional neural network (CNN) model to predict flood activity within the image; obtain, from a weather application programming interface (weather API), weather data corresponding the upload geolocation; determine, in response to the CNN model predicting that flood activity is present within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publish the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

2. The system of claim 1 , wherein the machine-readable instructions further cause the computing device to at least store, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

3. The system of claim 1 or claim 2, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

4. The system of any of claims 1-3, wherein the weather data comprises precipitation information and humidity information.

5. The system of claim 4, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least: determine a predefined precipitation threshold based at least on the upload geolocation; and determine that the precipitation information exceeds the predefined precipitation threshold.

6. The system of claim 4, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least determine that the precipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

7. The system of any of claims 1-6, wherein the machine-readable instructions that direct the CNN model to predict flood activity within the image and the machine- readable instructions that obtain the weather data corresponding the upload geolocation are performed in parallel, multi-threaded processes.

8. The system of any of claims 1-7, wherein the machine-readable instructions further cause the computing device to at least send, to the client device, the plurality of flood activity images for the upload geolocation.

9. The system of any of claims 1-8, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

10. The system of any of claims 1-9, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

11. A method, comprising: obtaining, by a computing device and from a client device, a weather event upload request comprising an upload geolocation and an image; directing, by the computing device, a convolutional neural network (CNN) model to predict flood activity within the image; obtaining, by the computing device and from a weather application programming interface (weather API), weather data corresponding the upload geolocation; determining, by the computing device and in response to the CNN model predicting that flood activity is present within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publishing, by the computing device, the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

12. The method of claim 11 , further comprising storing, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

13. The method of claim 11 or claim 12, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

14. The method of any of claims 11-13, wherein the weather data comprises precipitation information and humidity information.

15. The method of claim 14, wherein determining that the weather data indicates flood conditions for the upload geolocation further comprises: determining a predefined precipitation threshold based at least on the upload geolocation; and determining that the precipitation information exceeds the predefined precipitation threshold.

16. The method of claim 14, wherein determining that the weather data indicates flood conditions for the upload geolocation further comprises determining that the precipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

17. The method of any of claims 11 -16, wherein directing the CNN model to predict flood activity within the image and obtaining the weather data corresponding the upload geolocation are performed in parallel, multi-threaded processes by the computing device.

18. The method of any of claims 11-17, further comprising sending, by the computing device and to the client device, the plurality of flood activity images for the upload geolocation.

19. The method of any of claims 11-18, wherein determining, by the computing device and in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

20. The method of any of claims 11-19, wherein determining, by the computing device and in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

21. A non-transitory, computer-readable medium, comprising machine-readable instructions that, when executed by a processor of a computing device, cause the computing device to at least: obtain, from a client device, a weather event upload request comprising an upload geolocation and an image; direct a convolutional neural network (CNN) model to predict flood activity within the image; obtain, from a weather application programming interface (weather API), weather data corresponding the upload geolocation; determine, in response to the CNN model predicting that flood activity is present within the image and in response to obtaining the weather data, that the weather data indicates flood conditions for the upload geolocation; and publish the image and the upload geolocation into a plurality of flood activity images for the upload geolocation.

22. The non-transitory, computer-readable medium of claim 21 , wherein the machine-readable instructions further cause the computing device to at least store, in response to obtaining the weather event upload request, the weather event upload request into a datastore.

23. The non-transitory, computer-readable medium of claim 21 or claim 22, wherein the CNN model is pre-trained using a first corpus of flood images and a second corpus of non-flood images.

24. The non-transitory, computer-readable medium of any of claims 21 -23, wherein the weather data comprises precipitation information and humidity information.

25. The non-transitory, computer-readable medium of claim 24, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least: determine a predefined precipitation threshold based at least on the upload geolocation; and determine that the precipitation information exceeds the predefined precipitation threshold.

26. The non-transitory, computer-readable medium of claim 24, wherein the machine-readable instructions that determine that the weather data indicates flood conditions for the upload geolocation further cause the computing device to at least determine that the precipitation information exceeds a predefined precipitation threshold, and that the humidity information exceeds a predefined humidity threshold.

27. The non-transitory, computer-readable medium of any of claims 21 -26, wherein the machine-readable instructions that direct the CNN model to predict flood activity within the image and the machine-readable instructions that obtain the weather data corresponding the upload geolocation are performed in parallel, multithreaded processes.

28. The non-transitory, computer-readable medium of any of claims 21 -27, wherein the machine-readable instructions further cause the computing device to at least send, to the client device, the plurality of flood activity images for the upload geolocation.

29. The non-transitory, computer-readable medium of any of claims 21 -28, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined time frame from an upload time.

30. The non-transitory, computer-readable medium of any of claims 21 -29, wherein the machine-readable instructions further cause the computing device to at least determine, in response to obtaining the weather event upload request, that metadata of the image indicates that that the image was captured within a predetermined distance from the upload geolocation.

Citation Information

Patent Citations

  • Method and apparatus for generating a flood event warning for a flood prone location

    US20210261165A1