Inspiration
My cat is getting older and so she doesn't get to appreciate the things in her life as much as she used to be able to. One way that I have found I can deeply connect with her and her interests is by "watering" her. I tell this to my parents frequently as it describes myself pouring water from a watering can into my cats mouth. She loves it so much. So much so that she will lick the side of the bird bath in our backyard for some water (I promise she is not that dehydrated, she has plenty of access to water). I'm not able to always be there to water her, so naturally, I wanted to leverage my interest in learning about computer vision to create a water fountain that turns on just for her. The importance of the CV is so that the fountain turns off when my cat is not there to preserve the quality of the water (otherwise other animals that I would like to stay away from this particular fountain may ruin the idea altogether)
What it does
At the moment, not much. I spent the last few days trying to piece my project together, but instead I have a mess of a repo with a bunch of test files and functions representing my efforts to get everything going. What I was able to accomplish was using the OpenCV library to detect motion in a video, which, at the moment, is what this project does.
How we built it
I built this project entirely in Python since I wanted to learn more about how to use python as well. In a more complete sense, this project would be built using Python as the main language since I was planning on uploading the code onto a Raspberry Pi and operating everything from there. In terms of the nitty gritty, I was planning on using the OpenCV library as well as either Tensorflow or Pytorch to run the YOLOv8 nano/small CV model from Ultralytics to detect motion and classify objects in the frame, more specifically, animals. The program would then send a trigger to a water fountain turning it on only when the detected object was my cat, Sheba.
Challenges we ran into
The learning curve and the resulting procrastination. Learning how to utilize OpenCV, Tensorflow, learning Python for the first time, Ultralytics and interactions between data, learning about training neural networks, what that means on a lower level...I was not prepared for this level of information. Sadly, this shows in the incompleteness of the project, and unfortunately I became quite distracted from the time I set aside for the project due to my fear that I would not be able to get it done.
Accomplishments that we're proud of
I am proud that I took on this project full-force. I tried, and I put in a lot of effort. I have not slept in over 40 hours now since I was working all night on the project. I love this idea, and although I was not able to achieve a desirable outcome, I am very proud of the fact that I dedicated my time in the way that I did and stuck through with the idea, even when I knew I wouldn't be able to finish things exactly as I'd hoped.
What we learned
I learned that there is a correct way to use AI!! I attempted to use Claude to help me understand more about the different areas of this project, and unfortunately I stunted a lot of the learning opportunities I had because of that because I asked the LLM to do more for me than I should have. I also learned that although I was not able to achieve the goals I had in mind, I was able to have fun, and that is something I have lost sight of when it comes to these projects. I have spent so much time stressing over working on projects, so much so that I have forgotten to just have fun. I got a hint of that passion I have for technology again with this project, and I learned that I am more capable than I think I am.
What's next for Outdoor Water Fountain
A lot!!! I plan to finish this project in its entirety very soon, ideally before mid-September!! My next goals are to use the OpenCV library and the YOLOv8 model from Ultralytics on the Raspberry Pi to train a CV model to detect other common backyard animals, as well as my cat in particular. I then plan on connecting this to a water fountain that I will choose, and finally expect myself to put it all together: CV model running on Raspberry Pi looking through the Pi Camera Module to detect my cat, turning on the fountain for her when she is nearby.