Being new to deep learning I am somewhat struggling to grasp the idea of one shot learning.

Let us say I have a class to detect which didn't exist in training dataset such as COCO or Image NET. Can I train model for that class using only image or the training set must be large as for YOLO or RCNNs?


One-Shot Learning refers to the problem when you only have very few or a single sample for some classes in your training dataset. A common application is, for example, face recognition. Here you may have only a single image per person in your dataset. Nevertheless, you'd like your neural net to be able to recognize that person from new images. A good intro is provided by Andrew Ng here.

A popular example are Siamese Nets introduced by Koch et al. The basic idea is to learn a latent representation of the images in your training set. When a new image is presented during inference the net calculates the latent representation of that new image and searches for the image in your training set whose latent representation is most similar to the one of the new image and predicts the corresponding class.

When you do not have any sample of a specific class available this is considered Zero-Shot Learning. However, in this case the neural net requires the dataset to include some auxiliary information for all images. The most popular being the Animals with Attributes (AWA) dataset:

Animals with Attributes

Initial approaches to solve the Zero-Shot Learning problem did so in two steps:

  1. For a given image learn to predict the attributes
  2. Learn to predict the class based on the attributes

For details you may refer to the paper Attribute-Based Classification for Zero-Shot Visual Object Categorization. More recent approaches take another route though.

However, both approaches require, as always in Deep Learning, large datasets to learn.

  • $\begingroup$ "The basic idea is to learn a latent representation of the images in your training set." does that mean i still need some dataset similar to my test image to make model learn those latent representations and then use one annotated image from my dataset for one shot learning? $\endgroup$ May 4 '21 at 12:55
  • $\begingroup$ thanks i got it from Andrew NG. any good git repo you know in order to do practice my concepts ? $\endgroup$ May 4 '21 at 13:05
  • $\begingroup$ @AtlasBravoos unfortunately, I am not aware of any good repos. $\endgroup$
    – Sammy
    May 4 '21 at 13:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.