Machine Learning Services
Machine learning models are tackling a variety of challenges facing society today, from diagnosing medical conditions to automating industrial processes. A quality computer vision model can achieve amazing results, but developing, deploying, and maintaining a model takes significant effort and experience. Utilize our guidance and expertise to avoid pitfalls and accelerate your model development process.
Contact us to schedule a call and start developing your model.
Model Development
Developing a deep learning model for a computer vision application is a multi-step process, where each step requires a careful and methodical approach. First, create a clear problem definition and select an appropriate model. Then, continuously iterate on data collection, training, deployment, and evaluation until the model achieves the desired performance.
EJ Technology Consultants has worked through this process many times to successfully deploy deep learning models to production. Enlist us to develop your computer vision model, or let us guide your team through each step and provide input along the way.
Problem Definition
A crucial first step of creating ML models is to clearly define the problem and specify key performance metrics for the solution. What visual data do you want to detect, and how do should the application act upon it? Will the model be deployed in indoor and/or outdoor environments? Clear definitions and specifications will significantly reduce the effort needed to select a model, collect data, and evaluate its performance. You can always go back and refine specifications for future iterations of the model.
EJTC can help you understand which features are important to specify, how realistic they are, and the relative level of effort it will take to develop a model capable of achieving them.
Model Selection
There are a wide range of deep learning model architectures to choose from in the domain of computer vision. Generally, there is a tradeoff between model size and accuracy: larger models are more accurate but require more compute power, and vice versa.
Our experience working with computer vision gives us an intuition on which model or models would be best to use for your application. We’ll accelerate your development schedule by focusing only on models that are most relevant and most likely to make your application a success.
Data Collection
Before training a model, you need to gather and label images that provide examples of the class, object, or visual pattern your application is trying to detect. Curating a strong image dataset is the most important part of the model development process. The quality of your dataset dictates how well your model will perform.
The dataset needs to have a wide variety of images with different visual conditions. It should show objects of interest at different angles and viewpoints, in different lighting conditions, and various levels of focus or blur so the model can learn to generalize the features from any image. EJTC will provide you with techniques for increasing the size and quality of your dataset, thereby improving your model’s overall accuracy, while minimizing time invested.
Training
There are several steps to training a model: preparing training data, setting up a training environment, configuring hyperparameters, running training, and evaluating the model on test data. While training tools and frameworks have become simpler over the years, the process can still be daunting and complicated.
EJTC has strong experience with training frameworks such as PyTorch and TensorFlow. We’ll train a model for you, or we can provide your team with a training environment and instructions to do it themselves. We can also set up training on cloud services such as Azure Machine Learning or on dedicated servers such as AWS EC2 instances.
Deployment
Models can be deployed on a wide range of devices, including microprocessors, embedded computers like the Raspberry Pi, cell phones, desktop PCs, and cloud servers. Each deployment target has its own requirements, constraints, and setup procedures. Also, the model by itself isn’t useful - you’ll need to write a program around it that prepares incoming data and acts on model outputs. Visit our Computer Vision Services page to see how we deploy deep learning models and develop vision applications around them.
Evaluation
Now that the model is trained and deployed, how well does it actually perform in the field? Are there certain classes or visual conditions where it struggles? Is it accurate enough to meet application requirements? The specifications from problem definition phase are essential here, because they are used to decide if the model’s performance is satisfactory.
In computer vision, there are key metrics for measuring and evaluating performance, such as confusion matrices, true/false positive rates, F1 score, mean average precision, and more. EJTC uses powerful tools and scripts that will calculate these metrics and help you compare performance against the specifications or other models.
Iteration and Improvement
One round of data collection and training often isn’t enough to bring a model to the desired level of performance. After evaluation, you’ll likely need to add more images to the dataset and re-train to improve the model in areas where accuracy is lacking. You can perform experiments with modified datasets and see how it changes model performance. You may also go back to the problem definition step and change specifications as you discover which features work well or are too difficult to implement, or you can select a different model to train for your application.
Iteration and improvement is a continuous process that occurs even after a model is deployed to production. Models should be monitored and re-trained over time to ensure accuracy remains high under shifting conditions in the field. Building a strong data engine for collecting field data, integrating it into the dataset, and periodically re-training and re-deploying the model is a fundamental strategy for ensuring model success.
Time-Saving Tools
As the popularity of machine learning increases, so does the availability of tools that make models easier to develop. Across every industry, engineers are working on powerful software tools that simplify and accelerate the ML development process. These are some of our favorite tools for model development:
- Roboflow provides a sleek browser-based image annotation tool, as well as data hosting, cloud training, and model deployment services.
- FiftyOne makes it simple to grab images from large datasets like Common Objects in Context or Google Open Images. Use Voxel51 to parse through millions of labeled images, select the ones with your objects of interest, and download them to your PC.
- ClearML provides version management for models and datasets. When iteratively improving models, it’s easy to lose track of which model was trained with which dataset. ClearML allows you to easily track and reproduce experiments as you develop your model.
- V7 Labs automates the data labeling process, making it much quicker to label images and build large datasets.
At EJTC, we utilize these tools to reduce the overall effort and cost of developing a model for your solution. We can also connect your team with the appropriate tools and empower them to develop ML models more efficiently and with a higher rate of success.
Build Your Model
Contact us to schedule a call and learn more about our model development services.