Computer vision engineering is where things get interesting in the world of artificial intelligence and computers. It’s all about making computers see and understand what’s happening around them. Imagine teaching a computer to look at things just like we do!
That’s exactly what computer vision software engineers, or CV engineers, do.
The job of a computer vision engineer is to make sure that computers can understand and analyze visuals better than a human could. They use deep/machine learning techniques to develop software to handle huge amounts of data, which train computers to make smart decisions based on what they “see” in pictures and videos.
Let’s meet one of Chooch’s outstanding CV software engineers.
Tell us about yourself.
My name is Shijin Mathiyeri, and I’m a Sr. software engineer at Chooch. I am an electronics and communication engineering graduate. Before joining Chooch, I worked at a few startups as a full-stack developer, primarily focusing on React and Django development.
I live in Kerala, a southern state of India. Kerala is known for its breathtaking backwaters and serene houseboat experiences. It is also renowned for its rich cultural heritage; including vibrant performing art forms and being the birthplace of Ayurveda.
What programming languages and technologies do you specialize in, and why did you choose to focus on those specific areas?
I specialize in full-stack development, encompassing both back-end and front-end technologies. My expertise includes Python, Django, AWS, Node.js, and React.js. When I started in software development, Django was the technology that I focused on. For those who may not be familiar, Django/Python is an easy-to-use framework that enables the rapid development of small applications, covering various aspects of web development such as HTML, CSS, databases, backend logic, and APIs, among others.
How do you stay updated with the latest trends and advancements in computer vision and artificial intelligence?
I like to read the sites below, and I follow companies and profiles on social media related to AI to get the latest news on advancements in the field.
Are there any specific methodologies or frameworks that you use in your work? Why do you find them effective?
Working on a POC (proof of concept) helps us gain a better understanding of what we are building and provides us the flexibility to iterate and continuously improve and add new features as we go along. During the POC phase, we can validate our ideas, gather feedback, and make better informed decisions.
Kanban workflows are really important for keeping track of fast-changing requirements and short delivery times. The Kanban methodology offers excellent flexibility in adapting to changing priorities and is not bound by fixed time frames. As a team, we are able to adjust our workflow based on real-time needs and ensure efficient task management and delivery.
What advice would you give to someone starting their career as a software engineer who wants to focus on working at an AI company right now?
When building any software solution, it is crucial to prioritize accuracy, reliability, and usability for users. Following industry best practices, rigorous testing, and quality assurance processes, you can be confident in the software solution you build.
It’s all about testing. To create an accurate solution, it is essential to leverage reliable data sources, employ robust algorithms, and continuously evaluate and improve the model’s performance. Rigorous testing, including unit testing, integration testing, and end-to-end testing, helps identify and rectify any issues or inconsistencies in the system.
Lastly, I think it is very important to continually check in to make sure the solution you are building puts usability first and meets the needs and expectations of the users. This involves designing intuitive user interfaces, providing clear and understandable output, and offering user-friendly features and functionalities.
By combining these principles with a comprehensive development and deployment process, you can build AI solutions that deliver value to users and meet their expectations. It’s really exciting when this all comes together.
Are there any particular software engineering principles or best practices that you consider essential to your work?
Test-driven development (TDD) is a software development approach where developers write tests before writing the actual code. It follows a cyclical process: write a failing test, write the minimum code to pass the test, and then refactor. TDD promotes code quality, early bug detection, and provides a safety net for future modifications, leading to more robust and maintainable software.
Can you talk about the importance of code quality and testing for a computer vision product?
At Chooch, we strive to build the most powerful, cutting edge computer vision applications to deliver to the market. Code quality and testing play a vital role in helping us do this by:
Reducing testing time: Investing in code quality and comprehensive testing practices can help identify and address issues early in the development cycle. This reduces the overall testing time required and enables us to iterate faster, accelerating our time-to-market.
Reducing after-release bugs: Thorough testing and quality-focused development help minimize the occurrence of bugs and issues after the product is released. This reduces the need for post-release patches and hot fixes, enhancing the product’s reliability and customer satisfaction.
Enabling easy future code changes: Well-structured and well-tested code is easier to understand and modify in the future. This agility allows us to seamlessly incorporate of new features, bug fixes, and improvements, ultimately saving time and effort during future development cycles.
Are there any specific projects or initiatives that you’re particularly proud of as a software engineer? What makes them stand out?
ImageChat is an industry-first feature built by Chooch that allows users to engage in image-based conversations and effortlessly create custom chat models. At its core, it is a generative AI foundational model for image-to-text.
It combines computer vision and LLMs for creating text prompts which allow you to narrow in on exactly what you want to know about the image. By fine-tuning prompts, you can get very specific with your text queries to extract precise information which you may not have been able to see previously.
This groundbreaking functionality can be seamlessly integrated into our production-level application with minimal effort. I encourage you to try ImageChat. It’s free to download on iOS or Android, and you can explore exactly what it is capable of.
Looking ahead, what do you see as the most exciting opportunities or challenges in the field of software engineering within the industry of AI and computer vision platforms?
I believe that advancements in deep learning are going to expand the potential applications of AI and computer vision, especially those that will benefit society. As deep learning evolves, it will only continue to improve the accuracy and efficiency of the models being built, and that expands the endless possibilities for applications.
I think collaboration with fields like robotics and IoT provides interdisciplinary possibilities. Edge computing and AI with IoT devices is really exciting. It provides real-time data processing opportunities. Industries like manufacturing are enabling edge devices with computer vision technology to gain real-time insights from video data to monitor production QA, detect workplace safety hazards, and predict equipment maintenance.
But as more data is gathered, it requires more management, and privacy and compliance with regulations continue to be concerns. However, it is an exciting time to be a software engineer. Technologies are continuing to evolve and with that brings real challenges, but this creates a great opportunity for software engineers to shape the future of AI and computer vision and really bridge the gap between research and practical applications.