Part 2: Detecting Truck Parking Lots on Satellite Images

This post describes a student group project developed within the Data Science Lab undergraduate course of the Vienna University of Economics and Business, co-supervised by TIMETOACT GROUP Austria.

Student project team: Michael Fixl, Josef Hinterleitner, Felix Krause and Adrian Seiß

Supervisors:  Prof. Dr. Axel Polleres (WU Vienna), Dr. Vadim Savenkov (Trustbit)

Introduction

In the previous blog post (which you can find here), we created an already pretty powerful image segmentation model in order to detect the shape of truck parking lots on satellite images. However, we will now try to run the code on new hardware and get even better as well as more robust results.

New hardware and out-of-sample data

Up to now we trained all semantic segmentation models on Google Colab, which is advantageous as this assures everyone can reproduce the project easily but unfortunately the platform partly uses old package versions. In order to check out if the model training can simply be repeated on different hardware, we train the promising semantic segmentation models once again but with the newest package versions and on a high-end computer with an RTX 3090 graphics card. Hereby we can see that there can in fact be some randomness in the results depending on the hardware and packages used.

Let’s also check how robust our model is against more varied data, e.g. coming in different scales or from sources other than OpenStreetMap. Therefore, we made some experiments with unseen truck parking lots from Google Earth with various parking lot positions and sizes. Checking those images with the optimized PSPNet model from the last blog post shows that generalizability is not yet convincing, as you can see below.

Further testing and optimization

To counter the above mentioned issues, we should implement some fixes to reduce the risk of overfitting and check generalizability of the other models. Interestingly, further testing and optimization now shows that the LinkNet architecture turns out to be very precise and much more generalizable than PSPNet. It reaches a mIoU of up to 75% in the test set while also achieving high precision on completely new data with different structure than the train data.

You can find some predictions of this model on unseen parking lots from Google Earth below. Also this model of course fails under certain conditions and does not predict anything or predicts falsely as you can see in the right sample image. If you are interested in more detailed results, you might check out the comparison of the model performance before and after the previously mentioned changes in the table at the end of the blog post. There you can also find the training process of the final LinkNet model.

Conclusion

Overall, in this narrowly defined task the optimized LinkNet model shows decent accuracy and generalizability. Instead of sending expensive workers on site to measure coordinates of unrecorded truck parking lots, this model could be used to get a sometimes rough but at the same time very cheap estimation of the shapes of parking areas. Knowing these, the current activity of a truck can be derived based on GPS signals. This information could then be used to optimize transport operations.

 

Finally, a small app concludes the project, which is visible in the screenshot above. It simply takes coordinates as input and outputs a prediction mask using the optimized LinkNet model from before.

Additional material

Testing results

 

*new hardware, code optimization and changes (overfitting fix, newest package versions, etc.)

Training process of final LinkNet model

 

Blog 11/22/22

Part 1: Detecting Truck Parking Lots on Satellite Images

Real-time truck tracking is crucial in logistics: to enable accurate planning and provide reliable estimation of delivery times.

Blog 12/19/22

Creating a Cross-Domain Capable ML Pipeline

As classifying images into categories is a ubiquitous task occurring in various domains, a need for a machine learning pipeline which can accommodate for new categories is easy to justify. In particular, common general requirements are to filter out low-quality (blurred, low contrast etc.) images, and to speed up the learning of new categories if image quality is sufficient. In this blog post we compare several image classification models from the transfer learning perspective.

Blog 8/11/22

Part 1: TIMETOACT Logistics Hackathon - Behind the Scenes

A look behind the scenes of our Hackathon on Sustainable Logistic Simulation in May 2022. This was a hybrid event, running on-site in Vienna and remotely.

Blog

Part 2: TIMETOACT Logistics Hackathon

Learn how TIMETOACT’s hackathon team built a Python logistics simulator, modeling maps, truck speeds, and fastest-route algorithms to optimize transport planning.

Blog 7/14/21

Building and Publishing Design Systems | Part 2

Learn how to build and publish design systems effectively. Discover best practices for creating reusable components and enhancing UI consistency.

Blog 9/13/22

Introduction to Functional Programming in F# – Part 2

Explore functions, types, and modules in F#. Enhance your skills with practical examples and insights in this detailed guide.

Blog 11/14/23

Part 2: Data Analysis with powerful Python

Analyzing and visualizing data from a SQLite database in Python can be a powerful way to gain insights and present your findings. In Part 2 of this blog series, we will walk you through the steps to retrieve data from a SQLite database file named gold.db and display it in the form of a chart using Python. We'll use some essential tools and libraries for this task.

Blog 3/11/21

Introduction to Web Programming in F# with Giraffe – Part 2

In this series we are investigating web programming with Giraffe and the Giraffe View Engine plus a few other useful F# libraries.

Headerbild für lokale Entwicklerressourcen in Deutschland
Branche

On-site digitization partner for insurance companies

We find the optimal IT solution for insurance companies! ► Everything from a single source ✓ Personally on site ✓ Arrange a personal exchange now.

Blog

Using Historical Data to Simulate Truck Journey

Discover how historical truck data and Python simulations can predict journey times and CO₂ emissions, helping logistics become smarter and greener.

Blog 6/26/23

Trustbit LLM Leaderboard

To address common questions concerning the integration of Large Language Models, we have created an LLM Product Leaderboard that focuses on building and shipping products.

Blog 6/27/23

Boosting speed of scikit-learn regression algorithms

The purpose of this blog post is to investigate the performance and prediction speed behavior of popular regression algorithms, i.e. models that predict numerical values based on a set of input variables.

Blog 12/7/22

State of Fast Feedback in Data Science Projects

DSML projects can be quite different from the software projects: a lot of R&D in a rapidly evolving landscape, working with data, distributions and probabilities instead of code. However, there is one thing in common: iterative development process matters a lot.

Blog

Part 3: TIMETOACT Logistics Hackathon

Extend logistics simulations with a speed model: predict travel times using historical data, Python, and polynomial regression for realistic traffic insights.

Blog 11/10/23

Part 1: Data Analysis with ChatGPT

In this new blog series we will give you an overview of how to analyze and visualize data, create code manually and how to make ChatGPT work effectively. Part 1 deals with the following: In the data-driven era, businesses and organizations are constantly seeking ways to extract meaningful insights from their data. One powerful tool that can facilitate this process is ChatGPT, a state-of-the-art natural language processing model developed by OpenAI. In Part 1 pf this blog, we'll explore the proper usage of data analysis with ChatGPT and how it can help you make the most of your data.

Blog 11/30/22

Introduction to Partial Function Application in F#

Partial Function Application is one of the core functional programming concepts that everyone should understand as it is widely used in most F# codebases.In this post I will introduce you to the grace and power of partial application. We will start with tupled arguments that most devs will recognise and then move onto curried arguments that allow us to use partial application.

Referenz

Automated Planning of Transport Routes

Efficient transport route planning through automation and seamless integration.

Blog 12/22/22

Introduction to Functional Programming in F# – Part 6

Learn error handling in F# with option types. Improve code reliability using F#'s powerful error-handling techniques.

Blog 12/22/22

Introduction to Functional Programming in F# – Part 7

Explore LINQ and query expressions in F#. Simplify data manipulation and enhance your functional programming skills with this guide.

Blog 5/17/23

Introduction to Functional Programming in F# – Part 10

Discover Agents and Mailboxes in F#. Build responsive applications using these powerful concurrency tools in functional programming.