Woah! What an effort. If you've made it this far, you've just gone end-to-end on a multi-class image classification problem. This is the same style of problem self-driving cars have, except with different data.
You should be proud of yourself. Consider finishing this project a momentum builder for getting started with your next deep learning projects.
If you're looking for some ideas, you've got plenty of options.
You could try to improve the full model we trained in this notebook in a few ways (there are a fair few options). Since our early experiment (using only 1000 images) hinted at our model overfitting (the results on the training set far outperformed the results on the validation set), one goal going forward would be to try and prevent it.
Trying another model from TensorFlow Hub - Perhaps a different model would perform better on our dataset. One option would be to experiment with a different pre-trained model from TensorFlow Hub or look into the tf.keras.applications module.
Data augmentation - Take the training images and manipulate (crop, resize) or distort them (flip, rotate) to create even more training data for the model to learn from. Check out the TensorFlow images documentation for a whole bunch of functions you can use on images. A great idea would be to try and replicate the techniques in this example cat vs. dog image classification notebook for our dog breeds problem.
Fine-tuning - The model we used in this notebook was directly from TensorFlow Hub, we took what it had already learned from another dataset (ImageNet) and applied it to our own. Another option is to use what the model already knows and fine-tune this knowledge to our own dataset (pictures of dogs). This would mean all of the patterns within the model would be updated to be more specific to pictures of dogs rather than general images.
If you're after more, one of the best ways to find out something is to search for something like:
"How to improve a TensorFlow 2.x image classification model?"
"TensorFlow 2.x image classification best practices"
"Transfer learning for image classification with TensorFlow 2.x"
"Deep learning project examples with TensorFlow 2.x"
The TensorFlow developers have even put together a massive compilation of all of their favourite TensorFlow and machine learning resources.
When you see an example you think might be beyond your reach (because it looks too complicated), remember if in doubt, run the code. Try and reproduce what you see. This is the best way to get hands-on and build your own knowledge.
No one starts out knowing how to do everything single thing. They just get better are knowing what to look for.
And remember, if you have any questions, don't forget to send @mrdbourke or @AndreiNeagoie a message on Twitter or in the Discord chat!