An inside look into how Pix4D’s brand new Python-based SDK is built

Pix4D
Pix4D Ingenuity
Published in
6 min readDec 3, 2018

--

How was the new Python-based Pix4Dengine SDK built and what are its key benefits? We asked the team who built it.

Niels Van Eldik, product manager of Pix4Dengine shared some insights on the new Pix4Dengine.

Can you tell us a bit about how you ended up being the product manager of Pix4Dengine? What was your personal journey?

Niels: I started my career in academia working as a research physicist.

Together with a team of ten people, we developed a set of algorithms to identify muons — which are particles similar to electrons — created during proton-proton collisions with the ATLAS experiment at CERN here in Switzerland. The work ultimately resulted in the discovery of the Higgs boson — the so-called ‘god particle’ — decaying to four muons.

The Large Hadron Collider/ATLAS at CERN. Photo courtesy of CERN.

Although muon identification is a rather exotic topic, it turned out to be quite closely related to 3D computer vision. This made the switch to Pix4D very natural. Within Pix4D I started working on our algorithms to create 3D point clouds from images, improving their quality as well as reducing the processing time.

Apart from a brief time in our DevOps team, which was a fascinating technical challenge although ultimately not for me, I have continued driving the development of a product as I had been doing at CERN.

After some discussion with our CEO, Christoph Strecha, it became clear that there was an urgent need to further strengthen our enterprise offering by taking our engine server product to the next level. A challenge I happily accepted.

Since I started the team at the beginning of this year, the team has grown to seven people which allowed us to complete the first release of the SDK in a very short period of time. Our future plans include further improving Pix4Dengine based on the feedback from customers and completing some of the new features that we have in the pipeline.

What is Pix4Dengine?

Pix4Dengine is a set of programming modules running on your infrastructure or on our cloud, and are fully compatible with other Pix4D solutions.

The interfaces are built to empower customization, automation, and integration into any enterprise system and reality-capture workflows. Learn more.

What are the biggest changes in the new Pix4Dengine release?

The engine server product we have been shipping up to now offered a lighter version of Pix4Dmapper. While it obviously offered a lot of benefit to our customers, it did require a very good knowledge of Pix4Dmapper for developers to integrate. As a result, several clients had issues during the installation phase which had to be resolved by our support team. With the new Python-based engine we are addressing many of the pain points reported by our users by making it very easy to build complex processing pipelines.

On top of that, our users will have a much more fine-grained control over the processing allowing them to, for example, automatically validate the quality of the calibration before starting the densification. This not only saves computing resources, it also makes it possible for users to address the issue with the calibration more quickly and restart the processing. Ultimately this results in faster processing turnaround times.

Why did you decide to build a Python-based SDK?

Python is one of the most used and flexible high-level programming languages on the market at the moment. This made it a natural choice for the Pix4Dengine SDK. We validated this assumption by discussing the different options with some of our main clients — they were all very excited by the prospect of having a Python SDK to work within the future.

What are the main benefits of the python based API?

The biggest leap forward is the new task-based processing pipeline that we are introducing. By allowing customers to write their own tasks we enable them to easily build complex custom workflows.

An example would be a pipeline running: machine learning based pre-processing of the images to mask out certain types of objects in the scene; calibration of the images; point cloud reconstruction using the masks; generation of the orthomosaic; analysis of the orthomosaic using machine learning; custom report and so on.

In parallel, my team will be developing new algorithms and making them available as tasks. By also using the SDK inside our cloud API of Pix4Dengine, our cloud users will also be able to benefit from new features quickly.

Why are you starting with a beta version of the SDK before the final one?

We are planning to use strict semantic versioning for the SDK to make sure our users can easily integrate minor updates and patches. The team spent a significant amount of time designing a concise and simple high-level programming interface for our SDK. The resulted programming interface was validated with several of our major clients. We are very happy with the result and do not expect major changes.

However as we only contacted a limited number of customers, we want to keep the door open for small non-backward compatible changes to the SDK based on additional customer feedback. We are planning the first stable release at the beginning of 2019 which will also include several interesting new developments.

The entire Pix4D team will be ready to help customers migrate from the beta to the stable version.

Last but not least, the Pix4Dengine SDK is a huge leap forward compared to the existing command line interface that current clients use. We wanted to be able to offer it to new clients as quickly as possible as it will not only make their lives a lot easier, it will also make upgrading to the stable version seamless.

What are the principles that guide your team to prioritize and build new features and products?

The main focus of the team has been ease of use and stability of the programming interface. We spent a significant amount of time writing very detailed developer documentation and user guide. Using those, a new customer will be able to install Pix4Dengine SDK on a computer and process a small project within a few hours. More complex workflows can also be easily implemented by using the new task-based processing pipeline we are introducing.

Understanding customer needs is crucial to building a successful product. How did you understand customer needs and what’s your team’s role in it?

Users have been central in the development of the new Pix4Dengine SDK. The starting point of the team has been the vast amount of user feedback we got from existing customers via our support channels. This information allowed us to get clear insights into the main pain points of the existing command line application. In parallel, we have been in direct contact with several of our main users to discuss and showcase the design decisions we made along the way. We are very grateful for all the feedback we got, it really helped us in building a better product.

With the launch of the beta version, we are starting the next development phase in which we want to consolidate the design based on feedback from a wider range of users.

This project has been really exciting for the team, but it’s only just beginning. We’re excited to see the software released, and can’t wait to see what our users build with Pix4Dengine SDK.

--

--