Klepsydra AI – Cloud detection onboard from space with a custom Linux distribution built by the Yocto Project
What is Cloud detection?
Cloud detection is a crucial process in Earth Observation used to identify and mask clouds in satellite imagery. This is necessary because clouds can obstruct the view of the Earth’s surface, making it difficult to accurately interpret and analyse the data.
Cloud detection algorithms typically use a combination of spectral and spatial information to differentiate between clouds and other features in the imagery. For instance, they may utilize information from various wavelengths of light to distinguish between clouds and land or water surfaces. They may also use contextual information, such as the size and shape of features in the image, to aid in cloud identification.
Once clouds are detected, they can be masked or removed from the image so that the underlying land or water surface can be analysed. This is important for a wide range of applications, including land use and land cover mapping, crop monitoring, and climate studies.
Cloud detection is also utilised in real-time applications such as weather forecasting and disaster management, where monitoring cloud cover and its changes over time is crucial. In these applications, cloud detection algorithms can track the movement and formation of clouds, providing valuable information for predicting weather patterns and identifying areas that may be impacted by natural disasters.
Cloud detection onboard
Performing cloud detection onboard Earth Observation satellite offers several benefits over performing cloud detection on the ground:
- Faster response time: Cloud detection onboard the satellite enables near real-time detection and removal of clouds, which is particularly useful for time-critical applications such as weather forecasting and disaster response.
- Reduced data transmission: Transmitting large amounts of satellite imagery data to the ground can be expensive and time-consuming. By performing cloud detection onboard, only the useful data (i.e. data without clouds) needs to be transmitted to the ground, reducing data transmission costs.
- Improved data quality: Cloud detection onboard the satellite can result in improved data quality because the detection algorithms can take into account the unique characteristics of the satellite’s sensors and the viewing geometry. This can result in more accurate and reliable cloud detection.
- Increased availability of cloud-free data: By performing cloud detection onboard, the satellite can provide a higher percentage of cloud-free data, which is particularly important for applications such as land use and land cover mapping, crop monitoring, and climate studies.
- Improved efficiency of downstream processing: Cloud detection onboard the satellite can improve the efficiency of downstream processing by reducing the amount of data that needs to be processed on the ground. This can lead to faster and more accurate analysis of the data.
The current commercial version of Klepsydra AI has successfully passed validation in an ESA activity called KATESU for Teledyne e2v’s LS1046 and Xilinx ZedBoard onboard computers, achieving outstanding performance results. During this activity, two DNN algorithms provided by ESA, CME and OBPMark-ML, were tested.
Klepsydra on a custom Linux distribution built by the Yocto Project
The Yocto Project is an umbrella organization for a number of open-source technologies which simplify the process of building and customizing Linux-based operating systems for embedded devices. It provides a flexible and scalable infrastructure, enabling developers to create highly optimized and tailored Linux distributions for their specific embedded systems.
In Klepsydra, the Yocto Project plays a crucial role in our workflow, particularly when it comes to generating Linux images for our LS1046 based computer. To begin, we set the necessary Yocto Project build tools up and configure the build system to specifically target our desired hardware platform. This ensures that the resulting Linux image is optimized and compatible with our LS1046 device.
To tailor the Linux kernel and other system components to our specific requirements, we create custom Yocto Project recipes. These recipes allow us to incorporate the necessary changes and optimizations, ensuring that the resulting Linux image is finely tuned to meet our needs. Additionally, we introduce the meta-virtualization layer to our Yocto Project setup, which enables us to include Docker in the final root filesystem of the generated image.
Once the build has been configured and our customizations have been applied, the next step is to generate the Linux image for our target platform. This involves compiling and packaging all the requiredcomponents, including the kernel, device drivers, libraries, and applications, into a deployable image file. This image file can then be flashed onto an SD card, effectively preparing it for booting Linux on our LS1046 device.
With the Linux image successfully booted on the target platform, we proceed to create the necessary Docker image directly on the LS1046 device. Leveraging the Docker capabilities provided by the meta-virtualization layer, we prepare a Docker image that encapsulates the specific software, dependencies, and configurations required for our testing purposes.
Once the Docker image is prepared, we launch a container from it on the target device. This container serves as a controlled environment where we can perform various tests and evaluations on the LS1046 device. By executing tests within the container, we can isolate and evaluate specific functionalities or scenarios, ensuring the reliability and performance of our software on the target platform.
The demo showcases the Cloud Detection DNN model executed on three identical computers, each with a different optimisation. The first computer runs Klepsydra optimised for latency (kpsr.lat), the second uses TensorFlow Lite, and the third uses Klepsydra optimised for CPU (kpsr.cpu).
Klepsydra AI demonstrates remarkable elasticity and high-performance capabilities. The kpsr.lat configuration can process up to two times more images per second than TensorFlow Lite, while kpsr.cpu processes the same number of images as TensorFlow Lite but with fewer CPU resources. These improvements are evident in both the Intel and ARM versions of the demo.
In summary, Klepsydra AI provides customers with a unique capability to adapt to their specific needs, whether it be latency, CPU, RAM, or throughput. This feature makes Klepsydra AI highly suitable for onboard AI applications such as Earth Observation onboard data processing and compression, vision-based navigation for in-orbit servicing, and lunar landing.
This demo was prepared as part of ESA’s KATESU project to evaluate Klepsydra AI for Space use. For further information on this project, please refer to https://klepsydra.com/klepsydra-ai-technology-evaluation-space-use/.
The OBPMark-ML DNN was provided to Klepsydra by courtesy of ESA. This algorithm is part of ESA’s OBPMark framework (https://obpmark.github.io/). For further information on this framework, please contact OBPMark@esa.int.