Goosemon Go 📱✨

What It Does

Goosemon Go is a fun and easy-to-use app where you:

  • Own and care for a virtual robot goose.
  • Snap pictures of geese in your local neighborhood to progress and unlock cosmetic upgrades for your robot goose.
  • Collect and mark geese locations to help track population and migration patterns for potential research purposes.

How We Built It 🛠️

Frontend

  • Designed prototypes using Figma and hand-drew Goosemon Go assets (e.g., robot goose sprites) with Procreate.
  • Built using React and Vite with TypeScript for seamless UI interactions.
  • Styled with TailwindCSS and custom CSS animations for a modern, responsive design.
  • Enabled real-time communication with WebSockets (Socket.io).

Backend

  • Developed using Python and Flask, hosted on an AWS EC2 instance.
  • Flask backend integrated PyTorch to preprocess and classify images of geese.
  • Combined the Roboflow API for pretrained geese classification with a custom Convolutional Neural Network (CNN) for improved accuracy.
  • Implemented game logic for leveling up, earning experience points, and unlocking rewards.

AI/ML Model

  • Used a pretrained Roboflow model API to classify images of Canadian geese and baby geese.
  • Built a custom CNN trained on:
    • ~1.4k 128x128 geese images as positive examples.
    • ~1.1k 128x128 images of desks as negative examples.
  • Used OpenCV to dynamically capture and save negative examples to train a diverse dataset.
  • Preprocessed data with PyTorch by resizing, grayscaling, and normalizing images.
  • Achieved ~93% accuracy with the CNN, trained on 2,000+ labeled images and tested on ~800 labeled images.
  • Combined the custom CNN and Roboflow model to reduce false positives and false negatives.

Challenges We Ran Into

  • False Classifications: Roboflow’s model struggled with false positives due to a lack of negative examples. We trained a custom CNN and used OpenCV to gather more negative examples to address this.
  • Network Restrictions: Devices couldn’t communicate due to campus network restrictions (Eduroam), requiring alternative solutions.
  • AWS Storage Issues: The AWS EC2 instance ran out of space due to a small /tmp buffer. We resolved this by redirecting temporary files to the user directory.
  • Data Quality: Online images were often blurry or too small, requiring significant curation for training datasets.
  • Flask Errors: Flask’s development server encountered terminal attribute handling issues, causing runtime errors.

Accomplishments We’re Proud Of 🏆

  • Successfully built and trained a custom CNN with ~93% accuracy.
  • Learned and implemented Flask for the first time.
  • Integrated WebSocket communication into a Flask API.
  • Designed and deployed a polished React Native web app with a visually appealing UI.

What We Learned 📚

  • How to preprocess large image datasets using PyTorch.
  • Building efficient and robust apps with React Native.
  • The challenges and nuances of deploying apps, especially React Native on AWS.
  • Designing and implementing Flask APIs.
  • Training binary image classification models with PyTorch and optimizing data preprocessing for better accuracy and faster training.

What’s Next for Goosemon Go 🚀

Gamification

  • Earn coins for each goose photo to buy custom themes and outfits for your robot goose.

Database Integration

  • Store user data to save progress and game state.
  • Collect and track geese sighting data for population and migration research.

AI Interaction

  • Enable an AI chat feature where users can talk to their robot goose (honks translated to English).

Improved Data

  • Collect cleaner and more diverse negative examples for CNN training.
  • Refine and expand positive examples for better classification.

More Progression Stages

  • Add more stages for the robot goose to enhance engagement and keep users interested longer.
Share this project:

Updates