Sep 21, 2020
Can you imagine navigating through an unknown city without Google Maps?It is usually a tough and tiring ordeal, all paths seems to lead to nothing and at the end you even ask yourself why you took that path in the first place.
That’s often what the first Computer Vision project feels like. I can personally attest to this because I have been through it and now I know some real facts of what should and not be done.
Learning the basics of CV and building a Computer Vision Model in tensorflow is great - but if you think that alone would land you a great job and carry you on to success, you’ll be in for a big shock. In reality, it just isn’t. For me, this reality hit home when I began building models on after the other, on colab solving projects on Kaggle, blog tutorials and official tensorflow website. There were other tons of things which were just as important, such as data collection, cleaning, exploration etc.
A few things I realized - problem solving skills, definite purpose, imagination, creativity are more helpful than mastering model building algorithms and tools. Trust me, this is way important than you might think.
In this article, I will be sharing 10 key points that I wish I knew when I started my Computer Vision journey, I hope this will help you out in your own CV journey too.
As riduculous as it sounds, the firld of Computer Vision has niches. How can something so broad not have a niche?. If you wanna see for yourself just how, go to google.com and serach for the term “computer vision”, there are almost 2 billion results for it.
I can’t stress this enough, probably why it is placed as the first key point. When learning any new skill, one thing that you absolutely must try to avoid - Indecision. As a beginner, you are excited about this skill and want to try your hand in different paths thereby inviting time wasting which comes from Indecision. Trust me, I was once preparing for my First CV project so I know how it can be. What you want to do is stream line your thoughts to specific things only because your mind would be divided among different things to try. A simple question you can ask yourself: What should you start with, and my answer to that is “start from the basics”. It significantly helps you on the long run. Almost every accomplished CV expert will give you the same advice even those that took a different path but later realized “basics are the roots and are very essential”. When you start from the basics you gather the basic steps,libraries,algorithm(which might take time), but afterwards you gain a momentum that’s double those that began straightaway pulling projects from github. A very good place to start that spells “basic” is Image Classification in Computer Vision. This article would get you started Building an Image Classification Model with Keras.
I mentioned niches in Computer Vision, you might be wondering what they are. Here I would give some examples on how Computer Vision is segmented today. Note: Listed here are just a few from my knowledge that is, more experienced practitionerws would be able provide detailed examples and instances. Some CV Niches are:
Computer vision tools will come and go but the basics will stick forever
Here is a very crucial step that beginners ignore without even knowing it. I have seen so many folks new to CV rush off to master specific tools and softwares with the hope that it would make them more effective and work smarter. That, is never the case. What is Effectiveness to begin?. Effectiveness is doing more in lesser time. Tools like Open CV, Matlab, CUDA, Simple CV etc are designed to make you work faster. How do you put them to good use if you don’t even know how to break a problem into actinable steps. Using this tools is great, but NOT at the expense of you learning problem solving skills and business intelligence. You can spend 2 whole months getting familair with an advanced CV tool. In reality, you don’t even need it. Certainly not at beginner stage. As an aspiring Computer Vision Enginner you have to create solutions by solving real-world problems.
I will show you how you can go about developing the ability to break down data problems: You would need a lot of confidence at first, with time - you thrive in it. The best way to build these skills is by solving real world problems from communities like kaggle, zindi and other deep learning hackathons you can find online.
Here I will give you a working cheatsheet you can use to learn, build and master problem-solving skills in Computer Vision (just follow the steps below):
# upload your kaggle.json file you downloaded
from google.colab import files
files.upload()
# this code will move it to a new directory
! mkdir ~/.kaggle
! cp kaggle.json ~/.kaggle/
! chmod 600 ~/.kaggle/kaggle.json
# download ur dataset with this code( replace with the command you copied)
!kaggle competitions download -c titanic
By following these guidelines, you would no doubt develop problem-solving skills which is much needed to secure any CV job or becoming great at Computer Vision.
One thing i see a lot of beginners do is avoid deployments of models with the excuse that it isn’t important for them. What is Computer Vision without models we can put to use, honestly very irrelevant. What is the need of bothering about CV at all if you decide to not focus on the product - Deployment and Predictions. You build a working model on a jupyter notebook or colab, but it remains there waiting to be “read” and maybe referred to later when you need some code resources in it. That is not all the use case of a model. Models are meant to solve problems. Now though, let me tell you something else I have observed - Some folks choose to ignore deployment process because they are scared of the task “thinking” it just way too much work and also for more professional individuals.
I would assure you now that - it really is not hard to deploy a CV model and make predictions with it, how do i know?, because I deployed a model on Image classification using tensorflow serving. So starting your first project in computer vision, keep model deployment in mind as an important step for success in CV. It is helpfulm to start it now, learn the ropes, so it won’t be a total new experience when you need it most. This article will teach you everything you need to know about model deployment How to make Scalale Predictions with a Deep Learning Model Built with Keras
In any field of study two different softwares performing closely related tasks for users are usually cause for lots of argument comparation and reviews. In a good way, this is helpful to newcomers as it helps them make a choice of software that suits their needs closest and on ther other side of the coin, this brings about confusion and indecision. When I first statrted learning about CV, I was contemplating the ML framework to use for building models. I checked reviews, and honestly why it is always hard to make a singular choice and stand by it is because, Softwares have features they beat their competitor at and those they are lacking at. We want all the acctractive features to be present in one tools or software and usually this is never the case. As a beginner, a key guide to choosing the software you would employ in development process is to find the one with the easiet learning curve, not that with the best features - at first of course. You need a tool that you can assimilate in the shortest time possible, atool that doesn’t take days to set up, in short a simple tool providing it allows for the basics of what you are searching for.
In Computer Vision and Deep Learning in general, we have a bunch of softwares. Concerning DL frameworks, people would argue for and against Tensorflow having the easiest interface and learning curve when compared to other frameworks like pytorch, scikit-learn, Theano, Apache Spark etc. But if I’m being absolutely earnest, Tensorflow is the framework every beginner should start with for these reasons:
Consistency creates habit. Once something has become an habit, you do it naturally and it rarely every leaves.
First and fore most, you should love to work in Computer Vision field. Without this love, we can’t even start talking consistency. If this is the case, then I cannot stress this enough. I you want to take just ONE guideline from all the key points, let it be this one. This just tells you how important it is. You can’t trade consistency for anything - even money. You want to know why I picked this? Because by applying consistency to your work in CV, you would sooner or later figure out the other helpful tips I have given you. All these tips are written to make you reading it right now understand them “early on” not that you can’t figure them out for yourself. In other words, I’m trying to save you all the time you will spend by choosing the wrong paths which is a common thing for beginners. Back to consistency, what I mean is this: If you work and practice Computer Vision tutorials and projects every other day, you can achieve in months what others strived years to achieve because of their lack of consistency. I can’t really do much to help you get to that level of consistency that is desirable, it’s more of a personal endeavor. What I can make you undertsand is this: If you make becoming an expert in Computer Vision you Definite Chief Aim(what you want to achieve everyday more than anything), you would attain the greatest heights possible no matter how low you might start. Understand that statement, believe in it, and that’s the best assistance I can render in this case.
That brings us to the end of this article on guidelines to help you take a start in the field of CV, I hope most that you find this helpful on the long run. Naturally questions would popped in your mind as you have read this comprehensive guidelines, know that your comments are very welcomed and if you please let me know if you found this helpful and what your next step would be in your quest to master Computer Vision. Thanks, Chel_