Image Recognition and Orientation Detection

Hypothetically, the symbol (Triangle) is sticked to an item and i need to find and recognize that symbol and try to calculate the orientation of the item it is sticked into. In degrees. How would you guys suggest i approach this problem? Do i still need NN for this? Thank you :) I just need to hear other people's thoughts. • In other words, you're interested conceptually in how NN or other forms of machine learning may be applied to this problem? PS Welcome to AI!
– DukeZhou
Aug 27 '17 at 20:27
• @DukeZhou yes :) Aug 28 '17 at 17:24

This is a quite trivial problem and using a NN would be overkill for this. The symbol you used (triangle) is problematic, because it looks exactly the same in 3 different positions (rotated 0°, 120° and 240°).

The easiest implementation would be using 2 distinguishable points with a fixed distance. To distinguish them you could color code them or give them different sizes. Those 2 points should be easy to identify in your picture using a pattern matching algorithm. Once you have the 2 points you calculate the vector between them and can then calculate the orientation of the vector, which basically tells you the orientation of the whole object your symbol is put on.

Edit - Answering the first comment:

The basic idea is the same, no matter what symbol you use. In case of the "L", your 2 points would be the end of both lines. You can easily find the symbol, calculate the vector between both points and use it to calculate the orientation using this vector. This approach can be used for every symbol that doesn't have radial symmetry. You can always define 2 points in this symbol and apply the method described.

The reason why a NN is overkill is the simplicity of the problem. NNs are mostly used for problems that are easy to solve for humans but very hard to implement with a simple algorithm. Tasks like classifying images, identifying hand written or distorted letters and so on. But your problem is easily solvable with simple algorithms, therefore the complexity of a NN is not necessary.

This doesn't mean that your task cannot be implemented with an NN. Actually it might be quite an interesting project to learn more about NNs. I would say your best bet is implementing it as a CNN, since this type of NN is good at detecting features in images like the direction of your symbol. I can recommend this course from Stanford University, if you want to learn more about CNNs.

For a real world application, there is no need to take the complex route using NNs. My suggested algorithm can be implemented with a few dozen lines of code and should be very robust.

• Hi. Thank you so much for your input. The symbol is yet really final. I just painted it triangle because its the first thing that popped to my head when i was drawing it haha. Anyways, your suggestion is really nice and not that hard to implement. But let's assume the symbol is a shape of (L) or any shape that does not have the same problem as the triangle, how would you approach it? Thank you so much haha P.S. why do you think NN is overkill? Aug 28 '17 at 17:23
• @JhonChristianAmbrad My answer to your question takes way more space than is available in the comment section, therefore I edited it in my original answer. Let me know if this clarifies my original approach concerning your remarks. I also added a recommendation for CNNs, which would be the way to go, if you want to stick with the neural net as your target architecture. Aug 28 '17 at 21:33
• Great perspective! I really appreciate how, while you point out the problem is trivial enough not to require NN, nonetheless it could be useful application to analyze an NN.
– DukeZhou
Aug 29 '17 at 0:31
• @Demento I see. Thank you so much for helping out and giving some insight to my problem. I would try to implement both approach (pattern matching and NN) and see which is which. Though, i don't really aim it to be as effecient as possible in real world application. I just want to explore different approaches. Thank you so much :) Aug 29 '17 at 7:43