
Explore how an image search model converts images into feature vectors with a CNN classifier, stores vector pairs in a database, and compares uploaded images using cosine or Hamming distance.
Compare Google image search with Styria.AI's image search, analyze how uploading an image returns similar results, and explore end-to-end image search pipelines in practice.
Explore the super 10 dataset, its balanced 10 classes, and how to download and organize training and test images for an image search pipeline; prepare for preprocessing.
Import essential libraries for the image search project, including numpy, os, OpenCV, pandas, and pickle, and set up TensorFlow for modeling. Visualize training progress and compare vectors with distance metrics in notebook visuals.
Create an image loader function that reads an image from a disk path, converts BGR to RGB, resizes to the given size with cubic interpolation, and returns the image.
Implement a dataset preprocessing function with four arguments: dataset path, labels file path, image size, and pickle name to load all images and their labels and save to pickle.
Explore how to use cosine distance to compare a query image against a training set to find the most similar images in a reverse image search pipeline.
Explains Hamming distance for binary vectors, a key information-theory metric that counts errors to detect changes in signals, with an implementation similar to cosine distance for neural network outputs.
Define a sparse accuracy function that compares the index of the highest probability to the true label, asserts equal lengths, and returns the accuracy between 0 and 1.
Create model inputs with placeholders for images and targets, defining a batch dimension, image height and width, and 3 channels. Implement dropout placeholders to regularize training.
Define the convolutional block with a convolution layer using inputs, filters, kernel size, stride, and activation, then apply max pooling and batch normalization via tens flow layers.
Implement a dense block function by defining a fully connected layer with inputs, units, and a chosen activation function, then optionally apply dropout and layer normalization.
Define the loss function using sparse softmax cross-entropy on logits and targets, then configure an Adam optimizer with a learning rate to minimize the loss and build the model.
Build the image search model architecture using vector features and a distance function for image similarity. Implement normalization, convolution blocks, dropout, and a loss-optimized training setup.
Build the training function for a reverse image search model, focusing on training data, batching, and logging training accuracy and loss for part 1.
Continue training the function by adding the saver delta parameter to prevent overfitting and save the model only when test accuracy meets or exceeds the best test accuracy so far.
Train the image search model by tuning epochs, batch size, learning rate, and dropout, prepare train and test data, and save checkpoints with labels and pickle files.
Learn to create training set vectors for an image search model by extracting features from pre-trained dance layers, generating hamming and cosine distance vectors, and saving with pickle.
Implement an inference function that uploads an image, computes feature vectors with a pre trained model, and returns indices of the closest training set vectors using Hamming or cosine distance.
Test the image to image search pipeline by loading the model, session, training set and vectors, then run inference on a test image to retrieve similar images.
Organize codebase for a flask-based image search app by moving code into modules for dataset and model helpers, adding static and templates folders, and centralizing hyperparameters for training and inference.
Build the Flask backend for amazing ai: reverse image search, part 1, by creating app.py, importing dependencies, initializing the image search model and session, and loading pretrained weights and data.
Build a Flask app that uploads images, saves them securely, runs an inference to find the most similar results, and renders them via templates.
Explore finalizing a flask app with HDL pages and ginger templating, enabling image uploads via a post form and displaying results from a static image path.
Test the whole image search pipeline in a Flask application by uploading images from a test dataset and validating results for frog, truck, and ship images.
Artificial intelligence is one of the fastest growing fields of computer science today and the demand for excellent AI Engineers is increasing day in and day out. This course will help you stay competitive in the AI job market by teaching you how to create a Deep Learning End-to-End product on your own.
Most courses focus on the basics of Deep Learning and teach you about the very basics of different models. In this course, however, you will learn how to write a whole End-to-End pipeline, from data preprocessing across choosing the right hyper-parameters, to showing your users results in a browser.
The case that we will tackle in this course is an engine for Image to Image Search.
Why should you take this course?
This course is not focused on teaching you Neural Networks (ANNs, CNNs, RNNs…), but teaching you how to apply them in real world cases.
If you haven’t worked on a product that uses Deep Learning before, this is the perfect course for you! Throughout the course we will work together on the Image to Image Search engine, starting from ground zero - image preprocessing, creating a model, training it, then testing. After that we will create a simple web application and use it to serve our model in production.
Another cool thing about this course is that we will use multiple programming languages to create the whole application around the model itself. This will make you not only a better AI Engineer but also get you on the path towards becoming a Full stack AI Engineer.
After taking this course you will guarantee yourself to be one step closer to landing your dream job as an AI/ML Engineer by having your own AI product/project in your portfolio.
Libraries/Tools used in the course:
The whole Deep learning back-end of our pipeline will be built using Tensorflow 1.10.0. For some image preprocessing task we will use some basic functionality from OpenCV, the most important Python library for image processing tasks!
For the app's back-end (model handling, image uploading, page navigation, etc.) we will use the Flask python framework.
And for our interactive, front-end we are going to use HTML, CSS, JavaScript and Jinja templating language. So at the end of the course you will have full stack working application.
Who is this course for?
As you can see the course is meant to teach you how to create your own Deep Learning product from scratch.
If you are just starting out with Deep Learning, this course might be too hard for you. But if you like challenges, I do recommend following it. Although I will not be explaining the meat of Neural Networks (ANNs, CNNs), I will explain most concepts in great detail, so even if you are a total beginner you should be able to follow with the help of your peers or my help through the comments section.
If you have Deep Learning experience and want to move it to the next level you will find this course very useful! You can consider it as a level up for your skills by putting your already great skills to new use. At the end of the course you will not only have learned how to create a working End-to-End pipeline, but also hold proof of your skills for potential employers!
Summary
The conclusion is this - this is very rare opportunity, not only to learn Deep Learning concepts, but also how to apply that knowledge and create your own web application (as a complete product) from scratch.
I hope to see you in class!
Luka