Answers.Body: <p>I would recommend using a convolutional neural network. CNNs are the bleeding edge for image recognition currently. They should be able to solve your problem with a high accuracy, just maybe without the sort of dialogue that you provided in your question. In order to train a convolutional neural network, you would have to use a different computer than your desktop and "deploy" it to your raspberry pi. This means that your desktop computer would find the optimal wight configurations for your neural network and the images you want to detect, and then you would be able to send the neural network to your raspberry pi in order to be used. If you want to, you could train your entire convolutional neural network from scratch, using random weights to begin, or you could use a process known as transfer learning where you take an existing neural network, usually deep, and train it a little bit further according to your existing data set. In order to train your neural network from scratch, you will need a very large volume of sample images to train it. In order to do transfer learning, you will only need about 1000 images for each of your classes in order to achieve very accurate results for your specific task. For specific libraries that you can use, I would recommend using Matlab if you have access to it as it is extremely easy to train and run deep neural networks, and it is easy to deploy the model to your raspberry pi. You can implement transfer learning in Matlab with 10 lines of code. Next, if you do not have access to Matlab, I would recommend if you have some python experience, using tensorflow. Tensorflow supports a lot of deep learning algorithms and should be able to for your problem although it will not be as easy as using MATLAB. Finally, Microsoft has a toolkit called CNTK which is fairly similar to tensorflow, but instead you can use it in C# or other .net languages. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-04-30T15:48:59.757Z
Answers.LastActivityDate: 2017-04-30T15:48:59.757Z
Answers.UserDisplayName: Aiden Grossman
Body: <p>To risk giving away too much info, im building a piece of hardware with the job of  <strong>identifying the object in front of it</strong>. </p>
  
  <p>If it can only be <strong>one of three</strong> different items, how can I <em>tell</em> the computer with simplecv?</p>
  
  <p>Basically, I've found a way to limit the choices down to just a handful of potential objects, which <em>should</em> increase the probability of it recognizing the object correctly. Is there a way to limit the choices for the algorithm?</p>
  
  <p>Me: <em>hey raspberry pi - you see that thing in front of you?</em> </p>
  
  <p>Raspberry Pi: <em>That thing? Ohh you mean that piece of food that might be a ham and cheese sandwich, but also kinda looks like a fish, with a slight twist of pe-</em></p>
  
  <p>Me: <em>- whoa okay, hold on! It's either a grilled cheese sandwich, or an apple</em></p>
  
  <p>RPI: <em>ohhh well that's easy! it's clearly (with 98% confidence) a grilled cheese sandwich</em></p>
  
  <p>Any thought are appreciated!</p>
  
Tags: <deep-learning><image-recognition><computer-vision>
Title: Can I limit the possible choices for a computer vision framework to recognize?
UserDisplayName: mir-aclewhip
ThreadText: # Can I limit the possible choices for a computer vision framework to recognize?
  
  (Asked by: username_0 on 2017-04-30)
  
  To risk giving away too much info, im building a piece of hardware with the job of **identifying the object in front of it**.
  
  If it can only be **one of three** different items, how can I *tell* the computer with simplecv?
  
  Basically, I've found a way to limit the choices down to just a handful of potential objects, which *should* increase the probability of it recognizing the object correctly. Is there a way to limit the choices for the algorithm?
  
  Me: *hey raspberry pi - you see that thing in front of you?*
  
  Raspberry Pi: *That thing? Ohh you mean that piece of food that might be a ham and cheese sandwich, but also kinda looks like a fish, with a slight twist of pe-*
  
  Me: *- whoa okay, hold on! It's either a grilled cheese sandwich, or an apple*
  
  RPI: *ohhh well that's easy! it's clearly (with 98% confidence) a grilled cheese sandwich*
  
  Any thought are appreciated!
  
  **Tags:** deep-learning, image-recognition, computer-vision
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2017-04-30. Score: 1 | Accepted answer
  
  I would recommend using a convolutional neural network. CNNs are the bleeding edge for image recognition currently. They should be able to solve your problem with a high accuracy, just maybe without the sort of dialogue that you provided in your question. In order to train a convolutional neural network, you would have to use a different computer than your desktop and "deploy" it to your raspberry pi. This means that your desktop computer would find the optimal wight configurations for your neural network and the images you want to detect, and then you would be able to send the neural network to your raspberry pi in order to be used. If you want to, you could train your entire convolutional neural network from scratch, using random weights to begin, or you could use a process known as transfer learning where you take an existing neural network, usually deep, and train it a little bit further according to your existing data set. In order to train your neural network from scratch, you will need a very large volume of sample images to train it. In order to do transfer learning, you will only need about 1000 images for each of your classes in order to achieve very accurate results for your specific task. For specific libraries that you can use, I would recommend using Matlab if you have access to it as it is extremely easy to train and run deep neural networks, and it is easy to deploy the model to your raspberry pi. You can implement transfer learning in Matlab with 10 lines of code. Next, if you do not have access to Matlab, I would recommend if you have some python experience, using tensorflow. Tensorflow supports a lot of deep learning algorithms and should be able to for your problem although it will not be as easy as using MATLAB. Finally, Microsoft has a toolkit called CNTK which is fairly similar to tensorflow, but instead you can use it in C# or other .net languages.
  
  
  ---
  
  