Main Content

AVR IoT Bird Watch

A bird feeder with bird classification machine learning elements for alerting in the event of unique bird visits.

Story
I started this project with an intent to create a machine learning device to alert when dogs entered the dog park such that a community could get an idea of what dogs existed. I was granted a board by AVR for this purpose and tried my best to accomplish it. Unfortunately I ran into several issues during my time trying to build a model for that though as the dataset the primary dataset for dog related classification, the Stanford dogs dataset, has quite a few issues. For example I noticed during testing that the dataset contained random color pop and black and white images: https://github.com/Timo614/machine-learning/blob/main/stanford_dogs_b_and_w.ipynb

Given this I switched gears to classifying birds as I found a dataset that was of high quality making the process easier: https://www.kaggle.com/datasets/gpiosenka/100-bird-species One thing to note: the dataset includes some humans in a folder called “Looney Birds” which should be excluded to avoid any issues there.

Model Compression Experimentation
I knew the birds model would be too large for TinyML if I used a larger base model like EfficientNetB0 but I also wanted to be able to classify a larger number of them. As such I decided I would go forward with the EfficientNetB0 approach and worry about / figure out a way to compress the model after it was done. After several months of work and experimentation I devised a way to compress the model without losing much accuracy.”

Link to article