Fresh drinking water. The Earth's ecosystem. The very life on Earth depends on the delicate balance of its intricate processes.
Due to the rising sea levels, it is quite common that saltwater moves into freshwater aquifers, which ultimately lead to groundwater quality degradation. This can affect drinking water sources, and ecosystems. To solve the former problem, our project classifies whether rivers are saltwater intruded, so we can utilize methods of desalination to restore freshwater.
What it does
We request the user for a seismic video of the body of water, which shows the boundaries of different rock types. We consider each frame in the image, and assign a score using the ML model between [0-9] on the amount of salinity (learn more about this score in "How we built it" . You can see a video at (https://youtu.be/8vPWhWSMnG8) of this process, and the code to generate this video can be found in the Google Colab linked below.
How we built it
We built our entire web application on React. Our frontend was built using Tailwind CSS and our backend was based on Node.js, Express.js, Python, and Tensorflow(for the machine learning model). I used a max pooling technique to account for pixel like errors in the salt intensity mask by considering the max of 3 x 3 matrixes, and I created a score between [0-9] with the sum of the salt intensity. We used the SqueezeNet architecture outlined in Berkeley Research Paper (https://arxiv.org/pdf/1602.07360.pdf)), allowing us to compute predictions for many images per second. These videos will be consisted of thousands of seismic images, like the one in the Youtube example, and the conservation of computation is essential. We used the Adam optimizer to reach the saddle point of your gradient descent function.
Challenges we ran into
I created an NN with over 3 million parameters, causing the video demonstration to take over 30 minutes to create, which is not practical. I employed the Fire Module to help Squeeze and Expand the representation of this seismic image. I also had trouble converting the salt intensity mask to an scalar number between [0-9] as I previously employed an method which takes the sum and divides by the amount of pixels (110^2)
Accomplishments that we're proud of
We are really proud of what we were able to accomplish in only 24 hours. We are also really proud of being able to apply concepts that we learned from our AP Chemistry class and apply them to solving real-world problems in a hackathon.
What we learned
We learned many topics of Chemistry, and learned about the ability of seismic images to extract hidden features in water. I also learned the appropriate model architecture to leverage the fire module, while also minimizing parameters.
What's next for Saltwater Intrusion
Our next steps include building a more robust web application, with a sign-up page and login page, and having the user enter their location to collect more information on how they can help cultivate freshwater from their saltwater intruded lake or river.