Unveiling Earth’s Secrets: A Guide to Deep Learning Applications in Satellite-Based Land Cover Classification (1/4)

Part 1/4: Google Earth Engine to build a dataset with satellite images

This article explains how to get satellite images to build a dataset to train a neural network. It will first explain the MiniFrance land cover dataset, details about satellite data (TIF files, EPSG projections, etc.), and how to visualize data on Google Maps through the QGIS software. Then, a description of the two satellites used Sentinel 1 and Sentinel 2 will be given. Finally, we will go deeper into the code implementation to fetch satellite images using Google Earth Engine.

Continue reading “Unveiling Earth’s Secrets: A Guide to Deep Learning Applications in Satellite-Based Land Cover Classification (1/4)”

Comparison of Deep Learning frameworks

This article shows how to implement a training on CIFAR10 dataset with different frameworks (FastAI, JAX, Keras, MXNet, PaddlePaddle, Pytorch and Pytorch-lightning) to compare them in terms of:

  • ease of implementation (user friendly coding, ease of finding information online, etc.),
  • time per epoch for the same model and the same training parameters,
  • memory and GPU usage (thanks to pytorch-profiler),
  • accuracy obtained after the same training.
Continue reading “Comparison of Deep Learning frameworks”

SwinIR: image super-resolution, denoising and JPEG compression artifact reduction

This article describes SwinIR, a state-of-the-art architecture for super-resolution and image denoising. It follows the articles describing transformers and Swin transformers that can be found here. It also discusses Shallow and Deep feature extraction with Residual Swin Transformer Block, HQ image reconstruction and per-pixel / perceptual / Charbonnier losses.

Continue reading “SwinIR: image super-resolution, denoising and JPEG compression artifact reduction”

SLAM: Simultaneous Localization and Mapping: Theoretical part

This series of articles is an introduction to SLAM algorithm and can be seen as a summary of the SLAM resources given on the following repository. Some good illustrations that help to understand the concepts will be displayed, some are come from their pdf document.

This article will go deeper into the comprehension of concepts such as Lie Group / Lie Algebra, Camera representation and non-linear optimizations.

Continue reading “SLAM: Simultaneous Localization and Mapping: Theoretical part”

SLAM: Simultaneous Localization and Mapping: Mathematical foundations

This series of articles is an introduction to SLAM algorithm and can be seen as a summary of the SLAM resources given on the following repository. Some good illustrations that help to understand the concepts will be displayed, some are come from their pdf document.

This article first briefly introduces SLAM problems and then focuses on the mathematical foundations needed to solve them: coordinate manipulation (vectors, rotation matrix, quaternion, etc.) and transformations (similarity and perspective).

Continue reading “SLAM: Simultaneous Localization and Mapping: Mathematical foundations”

State of the Art: Object detection (1/2)

The aim of this article is to give a state of the art of object detection evaluated on COCO and classified by architecture type. Then, the transformers will be explained starting from the NLP domain to their adaptation to the computer vision domain with the Swin Transformers and the Focal Transformers. The methods presented in the SwinV2-G paper to adapt the Swin Transformer to a 3 billion parameters model will also be explained.

Continue reading “State of the Art: Object detection (1/2)”

Depth Estimation and 3D Mapping on Nvidia Jetson Nano

Python project.

The goal of this project is to build a robot capable of mapping its environment in a 3D simulation view. This article describes how to configure and use a Jetson Nano for a 3D mapping project where a neural network is used for depth estimation. The Jetson will also be connected to an Arduino Nano to get the gyro data from its IMU to project the depth values in a 3D world based on the orientation of the robot.

Continue reading “Depth Estimation and 3D Mapping on Nvidia Jetson Nano”

Style Transfer with VGG-16

Python project, TensorFlow.

This article will show how reuse the feature extractor of a model trained for object detection in a new model designed for style transfer. First, the domain of style transfer will be introduced, then, we will go further in the implementation. Finally, useful tools will be developed to visualize our results.

Continue reading “Style Transfer with VGG-16”

Image Segmentation: FCN-8 module and U-Net

Python project, TensorFlow.

First, this article will show how to reuse the feature extractor of a model trained for object detection for a new model designed for image segmentation. The three architectures FCN-32, FCN-16 and FCN-8 will be explained and the last one will be implemented. The U-Net architecture will also be developed. Finally, we will implement a parser to convert raw data to data used by segmentation models and we will train them on multiple classes.

Continue reading “Image Segmentation: FCN-8 module and U-Net”

MOT, TF model customization and distributed training

Python project, TensorFlow.

First, this article will describe how to convert a simple object detector to Multi-Object Tracking (MOT) capable of keeping identities to follow subjects along a sequence. Second, it will show how to customize and retrain a model from TensorFlow Object Detection API. Contrary to the previous article, we will parse the VOC2012 dataset with modern methods instead of implementing our own parser from scratch. We will also distribute the training on multiple GPUs.

Continue reading “MOT, TF model customization and distributed training”

SSD300 implementation

Python project, TensorFlow.

This article describes how to implement a Deep Learning algorithm for object detection, following the Single Shot Detector architecture. It explains the implementation of the VGG16 backbone network, the SSD cone, the default box principle and the convolutions used to predict the box classes and to regress the offsets for their location. Finally, how to convert the .xml annotations to data used by such a network for training.

Continue reading “SSD300 implementation”