When you look around, there are more things looking back at you today than ever before – most of them non-living. Before this intro creeps you out, let us explain that this is about computer vision. Or more specifically, how to build a career in this area. Creepy intro apart, it is indeed true that thanks to fields like autonomous driving, augmented reality, demand for specialised computer vision skills in the industry is growing at an unprecedented rate. So, if you ever fancied giving computers and gadgets their own pairs of eyes, now is the right time to dive deep into the field of computer vision.
What is it?
The term ‘computer vision’ is broad, encompassing a number of technology areas that work together to make the idea of a computer having eyes feasible. With the objective to allow artificial systems to dynamically gather data from their surroundings, the area can be broadly divided into a number of basic specialisations:
- Fundamentals of image formation
- Camera imaging geometry
- Feature detection and matching
- Stereo, motion estimation and tracking
- Image classification and scene analysis
When it comes to specific applications, skills like image recognition, camera calibration, are also required for areas like surveillance and self-driving cars. While its applications might be relatively new, computer vision itself is evolving in a new direction and is adopting changes in its basic methodologies as well. “In almost all use cases, the deep learning algorithms outperform traditional computer vision algorithms; hence the industry is moving towards deep learning based approaches to computer vision,” says Ankur Pandey, Sr. Data Scientist, HERE Technologies. “On the hardware end, the focus is on on-premise computations – which means creating hardware which can do computer vision on the spot on the embedded machine itself, without using the cloud.”
Just like the applications of computer vision, the skills required to work with them are diverse and range across a few subjects and areas. One of the first things that such jobs entail is a good grasp of mathematics – especially topics like linear algebra and vector calculus. In addition to that, understanding data structures and the representation of images, features and geometric constructions through data is necessary to work with computer vision. When it comes to tools, Python with NumPy is a prerequisite even in the online courses that will teach you about computer vision. Although it is a bit dated now, Matlab is still a very capable and versatile tool when it comes to computer vision and image processing, and a proper know-how of how it works will be beneficial to any computer vision job aspirants. It also depends on which job you want.
“It depends almost entirely on which kind of role one is applying for.” explains Mr. Ishan Gupta, MD India, Udacity, “(for) someone looking to work on a self-driving car, Simultaneous Localization and Mapping, 3D Object Detection and Tracking, any experience with OpenCV, CUDA, OpenCL and OpenGL would also help. Different applications would have different requirements.”
This is where things get a bit tricky. Curriculums in India do not have a singular focus on multiple technology areas, bundling them together into broader, more generic technology courses. Unfortunately, computer vision is one field that is often given this treatment. “There are a very limited number of Indian academic institutions, where a course in Computer Science or Engineering would offer some optional course or elective dealing with Computer Vision.” says Mr Ishan, “they might also help students get familiar with Python, digital image processing, and so forth.” However, even similar optional courses on areas like Machine Learning or Deep Learning algorithms may not be effective if the quality of such courses varies vastly in different institutions – which is the case. As a result, if you’re looking for specialised courses in computer vision, most of the reliable options are online.
A commonly used resource in computer vision is Open Source Computer Vision Library (or OpenCV library). One of the best courses out there to learn more about OpenCV and how it interacts with other computer vision tools is on Udemy. You’ll also find other courses on the platform that vary in the level of difficulty.
A more comprehensive approach towards mastering computer vision is offered by Udacity’s Computer Vision Nanodegree which covers skills like OpenCV, Computer vision pipeline, neural networks, convolutional neural networks and Keras. Some additional tools that you should learn are TensorFlow, PyTorch and Caffe/Caffe2.
Depending on the specific skill set you build and the company you want to work for, the field of computer vision offers quite a few different types of roles. Here’s a quick rundown of some of these roles and their key responsibilities:
- Principal Engineer
- Creating and reviewing high-level architectural changes for deploying algorithms at scale.
- Deep Content Indexing
- Extracting super metadata from content (Multi modalities).
- Computer Scientist
- Lead and conduct advanced research for Computer Vision.
- Algorithm Developer
- Design, develop, implement and optimise algorithms.
- Image Processing
- Develop auto white balance, auto exposure, auto focus, auto flicker detection/correction, auto scene detection algorithms (e.g)
- Computer Vision Engineer
- Integrate imaging simulation controls, image analysis and data visualization.
- Can even involve writing code in Python/C++ to implement the algorithms.
So you could be working on making drones fly, or developing surveillance systems that catch criminals red-handed or even building the first truly autonomous car, but if you’re working with computer vision, the above roles broadly encompass what kind of tasks you’ll be doing on a day to day basis.
Despite all of the advice above, it is true that individuals with hands-on experience are given greater importance for these roles. The approach of hiring generalists and training them on the job doesn’t work anymore. As Mr Ishan puts it, “With the continuous innovations happening in artificial intelligence and a huge demand for skilled workforce in the area; recruiters are looking for engineers who not only come with theoretical knowledge of these specializations but also some hands-on experience.”
OpenCV was first released in 1999. That should give you an idea of how long we’ve been at it when it comes to solving the computer vision problem. But today, the capabilities of technology far exceed what we had at our disposal back then and the field is going to explode like never before – with areas like self-driving technology, augmented reality, smart security, biometric authentications and more gaining popularity every passing day.
In such a time, you need to master tools like Python, OpenCV, Tensorflow and even Matlab while trying out your own projects to get a strong grip on computer vision. Since specialised courses in educational institutions don’t look like a possibility any time soon, online resources are all you’ve got. That and your own determination to give computers the faculty of sight.