πΈοΈCommon Applications
Application
Description
π§π§ Face Verification
Recognizing if that the given image and ID are belonging to the same person
πΈ Face Recognition
Assigning ID to the input face image
π Neural Style Transfer
Converting an image to another by learning the style from a specific image
π§π§ Face Verification
π Comparison
Term
Question
Input
Output
Problem Class
π§π§ Face Verification
Is this the claimed person? π΅οΈββοΈ
Face image / ID
True / False
1:1
πΈ Face Recognition
Who is this person? π§
Face image
ID of K
faces in DB
1:K
π€ΈββοΈ Solving Approach
π€³ One Shot Learning
Learning from one example (that we have in the database) to recognize the person again
π The Process
Get input image
Check if it belongs to the faces you have in the DB
π How to Check?
We have to calculate the similarity between the input image and the image in the database, so:
β Use some function that
similarity(img_in, img_db) = some_val
π·ββοΈ Specifiy a threshold value
π΅οΈββοΈ Check the threshold and specify the output
π€ What can the similarity function be?
π· Siamese Network
A CNN which is used in face verification context, it recievs two images as input, after applying convolutions it calculates a feature vector from each image and, calculates the difference between them and then gives outputs decision.
In other words: it encodes the given images
π Visualization
Architecture:
π©βπ« How to Train?
We can train the network by taking an anchor (basic) image A and comparing it with both a positive sample P and a negative sample N. So that:
π§ The dissimilarity between the anchor image and positive image must low
π§ The dissimilarity between the anchor image and the negative image must be high
So:
Another variable called margin, which is a hyperparameter is added to the loss equation. Margin defines how far away the dissimilarities should be, i.e if margin = 0.2 and d(a,p) = 0.5 then d(a,n) should at least be equal to 0.7. Margin helps us distinguish the two images better π€ΈββοΈ
Therefore, by using this loss function we:
π©βπ« Calculate the gradients and with the help of the gradients
π©βπ§ We update the weights and biases of the Siamese network.
For training the network, we:
π©βπ« Take an anchor image and randomly sample positive and negative images and compute its loss function
π€ΉββοΈ Update its gradients
π Neural Style Transfer
Generating an image G by giving a content image C and a style image S
π Visualization
So to generate G, our NN has to learn features from S and apply suitable filters on C
π©βπ Methodology
Usually we optimize the parameters -weights and biases- of the NN to get the wanted performance, here in Neural Style Transfer we start from a blank image composed of random pixel values, and we optimize a cost function by changing the pixel values of the image π§
In other words, we:
β Start with a blank image consists of random pixels
π©βπ« Define some cost function J
π©βπ§ Iteratively modify each pixel so as to minimize our cost function
Long story short: While training NNs we update our weights and biases, but in style transfer, we keep the weights and biases constant, and instead update our image itself π
β Cost Function
We can define J as
Which:
denotes the similarity between G and C
denotes the similarity between G and S
Ξ± and Ξ² hyperparameters
Last updated