Computer Vision Species Identification - Cat/Dog

Purpose:

I have multiple small animals underfoot while I'm coding, cats and dogs. While my dog is canine shaped and behaved, she is a small breed and ruff-ly the same size or smaller than my cat.

Data Source :

This project combines two open source datasets to create a single sample:
1. the Stanford Dogs Dataset which includes a limited number of samples for each category and over 120 separate dog breeds.
2. the Kaggle Cat Breeds Dataset which includes a limited number of samples for 67 different cat breeds

Problem Statement:

While identifying which pet is at my feet is an easy task for me as a human, it becomes a larger challenge for a computer. This project aims to build a binary image classification model to check whether a pet is a cat or a dog from a photo.

Background:

This particular project is the first phase of an image pyramid to identify both species and breed of both cats and dogs. We're starting with an unbalanced dataset that include both cats and dogs, as well as differing image sizes. As we'll be using TensorFlow and Keras, we'll first need to pull in the files from separate sources, resize them, and set them up side by side. The bulk of work will be handled by a convolutional neural network.

Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 158, 158, 128) 3584
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 79, 79, 128) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 77, 77, 64) 73792
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 38, 38, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 36, 36, 128) 73856
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 18, 18, 128) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 16, 16, 32) 36896
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 8, 8, 32) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 6, 6, 32) 9248
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 3, 3, 32) 0
_________________________________________________________________
flatten (Flatten) (None, 288) 0
_________________________________________________________________
dense (Dense) (None, 32) 9248
_________________________________________________________________
dropout (Dropout) (None, 32) 0
_________________________________________________________________
dense_1 (Dense) (None, 256) 8448
_________________________________________________________________
dropout_1 (Dropout) (None, 256) 0
_________________________________________________________________
dense_2 (Dense) (None, 128) 32896
_________________________________________________________________
dropout_2 (Dropout) (None, 128) 0
_________________________________________________________________
dense_3 (Dense) (None, 64) 8256
_________________________________________________________________
dropout_3 (Dropout) (None, 64) 0
_________________________________________________________________
dense_4 (Dense) (None, 32) 2080
_________________________________________________________________
dense_5 (Dense) (None, 2) 66
=================================================================
Total params: 258,370
Trainable params: 258,370
Non-trainable params: 0

Add a Title
Add a Title
Add a Title
Add a Title
Add a Title
Add a Title

Coming soon!

Project Links