-
To get a basic understanding what a Neural Network is, watch this excellent playlist by 3Blue1Brown - Neural Networks.
-
Now, to build your own Neural Network, try completing this short course by Andrew NG - Neural Networks and Deep Learning. You can opt for Financial aid, if you need to.
-
It is sometimes overwhelming to visualise how a neural network improves its performance over time. This website will allow you to do just the same - Neural Network Playground.
P.S. - You might come across new terms here. Instead of just overlooking them, try finding out what they mean. You could google them or just visit our Wiki page on Deep Learning. -
Exhausted by all the math? Here's an article to get you motivativated - Applications of CNNs.
-
Libraries like PyTorch and Tensorflow make implementing neural nets a bliss. PyTorch's 60 Minute Blitz will help you get started. It's recommended that you type your own code as well.
-
Hopefully you would have got a clear understanding of what a neural network is. It is now time to tinker around with them to decrease training time, and improve accuracy. Do this course on Hyperparameter Tuning to know more. You can skip the TensorFlow part if you wish to, since you already got an idea of PyTorch.
-
You can now do further PyTorch tutorials. The above course would help you understand these examples better. Make your own Google Colab notebooks and tinker around. It's important to try out various values of hyperparameters for better practical learning.
-
MNIST dataset is a large database of handwritten digits. Pytorch has a tutorial to train your NN on the MNIST dataset. You can leave the CNN part for now.
-
Kaggle is a community of data scientists where you can find a vast variety of datasets and competitions to hone your skills. Try attempting this Kaggle Challenge to get started - Digit Recognizer.
-
Convolutional Neural Networks have been considered revolutionary in processing images. Read either of these articles to get an understanding of how they work -
-
CIFAR-10 is an established computer-vision dataset. Attempt a related challenge on Kaggle - Object Recognition.
-
Try implementing CNN models for classification problems on your own. This article will guide you as to how you can Create your own dataset.
-
We will now start with understanding the significance of CNN architecture. In case you have never read a research paper before, here is a guide to get you started - How to Read a Research Paper.
-
It might be overwhelming to read a paper but it is strongly recommended that you do read at least one of them -
-
It is okay even if you do not understand all of it. These articles might come handy -
-
Read about comparison between these architectures to understand how their development happened and why they are considered as milestones in image processing -
-
Now that you are done with the reading part, lets get our hands hands dirty! For the purpose of getting familiar with coding CNNs, implement AlexNet and VGGNet from scratch. These references might come in handy -
- Scratch to SOTA: Build Famous Classification Nets 2 (AlexNet/VGG)
- An awesome repository for tutorial and reference (If you are feeling adventurous try implementing ResNet too!)
-
Use an external dataset instead of the built-in ones in pytorch to understand more about dataset reading and data loader creation. Some reasonable size datasets for image classification are - Caltech 101, Caltech 256, Fashion MNIST, Food-101, Oxford-102-Flowers, Oxford-IIIT-Pets, Stanford-Cars, Stanford-Dogs, Intel Scene etc.
- Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem. Here is a brief introduction to get you familiar with the concept.
- It is time to use off the shelf models from torchvision, this guide on using transfer learning for computer vision will help you get started with it.
- Try experimenting aroung the different pretrained models, an article on using pretained CNNs in pytorch gives good insights.
- Since this a broad topic to explore and helps you utilize the framework's power, try using more complex datasets and experiment with the new layers you add at the end of pre-trained layers. Here are some more references to help with transfer learning in PyTorch -
Some applications worth exploring are as follows -
- Image Classification With Localization
- Object Detection
- Object Segmentation
- Image Style Transfer
- Image Colorization
- Image Reconstruction
- Image Super-Resolution
- Image Synthesis
We hope this plan helps you in getting a better understanding Convolutional neural networks which functioned as backbones for many computer vision tasks. If on your learning path you discover some more efficient resources, we would be more than happy to incorporate them here. Just create a pull request on this repository.
Created with ❤️ by WnCC