Cat poses Computer Vision Project
Updated 3 years ago
Metrics
We toilet trained our cat, but teaching him to flush the toilet was just too difficult, so we decided to train the toilet instead! This is a collection of images used to train a toilet when to flush after a cat has finished his business.
Our cat is used to us flushing the toilet seconds after he's used the bathroom. He usually lingers a bit longer to scratch around the seat to 'cover it up' while it's flushing, so the goal is to try and maintain this same responsiveness. To do this, it's necessary to detect when he's either pooping or peeing, and then flush after he's confidently left either of these states. There are only 3 states:
- Peeing: He squats low in this state and his back is usually straight with tail raised.
- Pooping: Generally all 4 paws are close together and his back is arched with tail curled
- Other: This is any other state that isn't clearly peeing or pooping.
I've been careful to avoid any transition states in my training images, so only very obvious peeing or pooping images. The other images would not be confused with peeing or pooping.
Interestingly I've noticed that when he starts to pee, he briefly transitions through the pooping state, so it will be necessary to measure either state for several seconds before deciding to flush, and then to wait for a few seconds in the other state before starting the flush.
For the flushing device itself, I've constructed a wooden box on top of my toilet that uses an Adafruit Feather Bluefruit Sense (for Bluetooth connectivity to the host connected to an OAK-1 camera) as well as FeatherWing DC Motor controller that actuates a 12v micro linear actuator to press the button on top of the toilet. Why Bluetooth? Because the host connected to the camera most certainly should not be networked and I don't want to run a wire from one side of the bathroom to the other. All image detection must be done offline (on the OAK-1).
Originally, we just used a timer to control the flush when we weren't home, but after we went on a trip for a few days, he pooped in the kitchen, so we suspect either he lost confidence that it would flush for him, or he had to use it twice between flush intervals and didn't want to use a dirty toilet (he will sometimes 'dig' in the water before he uses it). Our hope is that he will adjust to the toilet flushing when we would normally flush it, which just isn't possible using a timer (the timer also wastes water).
The flush box itself is just a prototype. Eventually I'll rebuild it and probably share some schematics and code, but right now it's still a work in progress.
Use This Trained Model
Try it in your browser, or deploy via our Hosted Inference API and other deployment methods.
Build Computer Vision Applications Faster with Supervision
Visualize and process your model results with our reusable computer vision tools.
Cite This Project
If you use this dataset in a research paper, please cite it using the following BibTeX:
@misc{
cat-poses_dataset,
title = { Cat poses Dataset },
type = { Open Source Dataset },
author = { Flushy },
howpublished = { \url{ https://universe.roboflow.com/flushy/cat-poses } },
url = { https://universe.roboflow.com/flushy/cat-poses },
journal = { Roboflow Universe },
publisher = { Roboflow },
year = { 2022 },
month = { mar },
note = { visited on 2024-11-17 },
}