It's the first week of the project, and here are our updates from getting started
Goals from This Past Week
Team goals: Get code environment set up so we are ready to begin testing.
Personal goals: Begin writing a classifier that can take an image of a card and identify shapes and patterns
Accomplishments
I examined our training dataset available on GitHub (https://github.com/tomwhite/set-game/tree/master/data/train-v2/labelled) and imported that to a Google Colab notebook.
Then, I set up some basic directory processing and code infrastructure to classify cards. Using the directory naming in the labelled dataset, the notebook can examine the name of the directory and create a "CardType" object that describes
The shape present on the card
The number of times that shape appears
The fill of the shape(s)
The color of the shape(s)
Once that was done, it was very easy to find specific images and run some basic computer vision algorithms on them. I started by running the Canny Edge Detection algorithm which should increase the future CNN's ability to identify the shapes present.
One issue that may affect a CNN's ability to count the number of shapes is that when the shape does not have a solid fill, the outer outline is not as clear. This is especially bad for images that are striped.
I also worked with my partner, Tyler Price, to set our overall timeline and goals. Most relevant are our week 3 goals:
Capture an image from a camera using the H7 chip
Have code that can match a test image of a SET card to the 4 attributes of its design: shape, number of shapes, color, and fill pattern
Goals for Next Week
Team goals: Run a first iteration of our respective code assignments.
Personal goals: Have a CNN on Google Colab that can successfully classify the shape present on a given card. A stretch goal is to also identify the number of shapes on that card.
Awesome post! I wouldn't have thought about the striped shapes giving Canny Edge Detection trouble. One idea is to use the erosion and dilation technique to eliminate all the inner polygons. It's explained pretty well in these slides from IEEE's Pocket Racers project, starting on slide 47.