Answers.Body: <p>I would like to highlight an import step for face recognition which is features extraction. Based on my experience, you can evaluated robust feature extraction methods like, Scale-Invariant Feature Transform (SIFT) and Speeded Up Robust Features (SURF) using several matching approaches such as Brute Force Matcher, K-Nearest Neighbor (KNN), Best-Bin-First (BBF) and RANdom SAmple Consensus (RANSAC). The purpose is to identify the method(s) that is/are most appropriate to be used in your application. Then comes your machine learning model, which you need to test several model options like mentioned in the previous message.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-04-24T00:01:29.607Z
Answers.LastActivityDate: 2021-04-24T00:01:29.607Z
Answers.UserDisplayName: M.Eshra
Answers.Body: <h3>Summary</h3>
  
  <p>It is true that neural networks are inherently not good at classifying 'unknowns' because they tend to <strong><em>overfit</em></strong> to the data that they have been trained on, if the underlying structure of the neural network is complex enough. However, there are multiple ways to go about reducing the affects of <strong><em>overfitting</em></strong>. For example, one technique that is used for this is called <strong><em>dropout</em></strong>. Another example can be <strong><em>batch normalization</em></strong>. Despite these techniques, the best way to reduce the affects of <strong><em>overfitting</em></strong> is to use <em>more data</em>.</p>
  
  <p>For the facial recognition example that you have given above, it is common that the models that have been trained have 'seen' a huge amount of data. This means that there are very few 'unknowns' and even if there are, the neural network has learned how to tell if there are facial features present or not. This is because certain structures of neural networks are really good at telling if there is a pattern of features present in the input data. This helps the neural networks to learn if the image that is being input has certain features/patterns in it or not. If the these features are found then the input data is classified as face otherwise it is not.</p>
  
  <h3>What can you do in your case?</h3>
  
  <p>Let us assume that you are going to train your neural network to recognize if an input image is a cat or not. You will use a <strong><em>Convolutional Neural Network (CNN)</em></strong> and train it to recognize if the input is cat or <strong><em>not</em></strong>. The <strong><em>not</em></strong> part means that you have to include a lot of examples in your training data that are <strong><em>not</em></strong> cat. In the perfect case you will be able to show it everything that is <strong><em>not</em></strong> a cat and classify it as such. Also you show it multiple images of what a cat is. <strong><em>CNNs</em></strong> are really great for this application. You might want to research regarding this and see what kind of <strong><em>CNN</em></strong> best suits your application. If you don't have gazillion samples of what a cat is <strong><em>not</em></strong> then you can use regularization techniques like <strong><em>dropout</em></strong> and <strong><em>batch normalization</em></strong>.</p>
  
  <p><em>PS: For more details please mention what strategies you have used up till now. Also it would be better if you can share what your desired task is.</em></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-03-01T18:34:42.377Z
Answers.LastActivityDate: 2018-03-01T18:34:42.377Z
Answers.UserDisplayName: Mohsin
Body: <p>As far as I understand, neural networks aren't good at classifying 'unknowns', i.e. objects that do not belong to a learned class. But how do face detection/recognition approaches usually determine that no face is detected/recognised in a region? Is the predicted probability somehow thresholded?</p>
  
  <p>I'm asking because my application will involve identifying unknown objects. In fact, most of the input objects are unknown and only a fraction is known.</p>
  
Tags: <neural-networks><machine-learning><deep-learning><classification><facial-recognition>
Title: Facial recognition and classifying unknowns with neural networks
UserDisplayName: John M.
ThreadText: # Facial recognition and classifying unknowns with neural networks
  
  (Asked by: username_0 on 2018-03-01)
  
  As far as I understand, neural networks aren't good at classifying 'unknowns', i.e. objects that do not belong to a learned class. But how do face detection/recognition approaches usually determine that no face is detected/recognised in a region? Is the predicted probability somehow thresholded?
  
  I'm asking because my application will involve identifying unknown objects. In fact, most of the input objects are unknown and only a fraction is known.
  
  **Tags:** neural-networks, machine-learning, deep-learning, classification, facial-recognition
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2018-03-01. Score: 3 | Accepted answer
  
  ### Summary
  
  It is true that neural networks are inherently not good at classifying 'unknowns' because they tend to ***overfit*** to the data that they have been trained on, if the underlying structure of the neural network is complex enough. However, there are multiple ways to go about reducing the affects of ***overfitting***. For example, one technique that is used for this is called ***dropout***. Another example can be ***batch normalization***. Despite these techniques, the best way to reduce the affects of ***overfitting*** is to use *more data*.
  
  For the facial recognition example that you have given above, it is common that the models that have been trained have 'seen' a huge amount of data. This means that there are very few 'unknowns' and even if there are, the neural network has learned how to tell if there are facial features present or not. This is because certain structures of neural networks are really good at telling if there is a pattern of features present in the input data. This helps the neural networks to learn if the image that is being input has certain features/patterns in it or not. If the these features are found then the input data is classified as face otherwise it is not.
  
  ### What can you do in your case?
  
  Let us assume that you are going to train your neural network to recognize if an input image is a cat or not. You will use a ***Convolutional Neural Network (CNN)*** and train it to recognize if the input is cat or ***not***. The ***not*** part means that you have to include a lot of examples in your training data that are ***not*** cat. In the perfect case you will be able to show it everything that is ***not*** a cat and classify it as such. Also you show it multiple images of what a cat is. ***CNNs*** are really great for this application. You might want to research regarding this and see what kind of ***CNN*** best suits your application. If you don't have gazillion samples of what a cat is ***not*** then you can use regularization techniques like ***dropout*** and ***batch normalization***.
  
  *PS: For more details please mention what strategies you have used up till now. Also it would be better if you can share what your desired task is.*
  
  
  ---
  
  ### Answer by username_1 on 2021-04-24. Score: 0
  
  I would like to highlight an import step for face recognition which is features extraction. Based on my experience, you can evaluated robust feature extraction methods like, Scale-Invariant Feature Transform (SIFT) and Speeded Up Robust Features (SURF) using several matching approaches such as Brute Force Matcher, K-Nearest Neighbor (KNN), Best-Bin-First (BBF) and RANdom SAmple Consensus (RANSAC). The purpose is to identify the method(s) that is/are most appropriate to be used in your application. Then comes your machine learning model, which you need to test several model options like mentioned in the previous message.
  
  
  ---
  
  