The main concern of companies that want to incorporate into their business any feature or product that makes use of machine learning algorithms is the need of big amounts of labelled data to train such algorithms. For this reason, one of the main goals of MoonVision is to achieve high data efficiency by solving the clients’ needs with just a fraction of the data our competitors ask for. For example, in detection problems, we have successfully delivered projects with just 10 images per object category. …

If you have any experience with software development, you must have encountered in your journey the term modular programming. In essence, this involves partitioning a program in multiple modules with simple responsibilities (i.e. see SOLID) that interact with each other and can be interchanged, thus avoiding having a monolithic design. The main benefits of modularity are reusability of modules and easier maintainability.

This time, I will talk about a real project where having a modular system saved substantial time and resources at MoonVision.

New feature? Just add a new component

All of our computer vision pipelines are composed of many simple steps that have to be taken to obtain the final result from the original image. Each one of these steps is a component (a module) in our execution graph, starting with a data provider and ending by storing the results, which can be done in several ways. But we also have different kinds of graphs, depending on whether we want to train a model, perform inference on a dataset or just record a video with the pipeline results, among many others. …

Evaluating statistical models after they have been fitted to some data is crucial to test its generalization capability. A model that generalizes well is able to perform on unseen data as good as it does on the data it was fitted to, thus making its predictions useful in practice.

The usual practice to evaluate a model is to split the available labelled data (pairs of inputs and expected outputs) into three sets, namely train, eval and test. The train set is used to train (create) the model, the eval set is used to evaluate the model during training and the test set serves as the final evaluation once the model has finished training. Though the reason of having eval and test sets is essentially the same, having a test set is useful as a final evaluation when the results on the eval set are used to make changes to the model (in order to improve this results). …


Carlos Uziel Perez Malla

Research Assistant (PhD Student) at Ludwig Boltzmann Applied Diagnostics

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store