Requirements:
- Python 3
- Tensorflow
- Numpy
- Tqdm
This is an approach to distinguish between cats and dogs described here.
To run this code, first download the train
and test
dataset from this link.
You need have an account in Kaggle. Then run train.py
.I used 24000 images for training and 1000 images for testing.
Final accuracy on test set was 0.7857
. You can improve it by adding more layers, using dropout and varying number of neurons at each layer.
I have provided my models files in the model_file
folder. I had to split the file DogvsCat_model.ckpt.data-00000-of-00001
into two parts because github doesn't allow files larger than 25 mb. You can join them by runningcat DogvsCat_model.ckpt.data-00000-of-00001.part* > DogvsCat_model.ckpt.data-00000-of-00001
on terminal. These model files can be used for predicting over an image.
I wrote the script predict.py
to predict over test images using my model and save the results in Submission.csv
file. It gave me a logloss score of 10.69341
.
I wrote another script predict_inception.py
to predict images using Inception v3 model file. But it couldn't find any dog or cat in over 4000 images. I used my former model to predict on those images and finally merged these predictions. That gave me a logloss score of 1.79879