From b84f6b5536c008c8a3c9615d7d52d935921fe43c Mon Sep 17 00:00:00 2001 From: Daniel Wiesmann <daniel@tesselo.com> Date: Tue, 28 Feb 2023 15:57:05 +0000 Subject: [PATCH 1/4] feat(post): add alquimodelia post --- _config.yml | 8 ++++++ _posts/2023-02-28-our-models.md | 49 ++++++++++++++++++++++++++++++++ assets/images/joao.jpeg | Bin 0 -> 24338 bytes assets/images/our-models.png | Bin 0 -> 21756 bytes 4 files changed, 57 insertions(+) create mode 100644 _posts/2023-02-28-our-models.md create mode 100644 assets/images/joao.jpeg create mode 100644 assets/images/our-models.png diff --git a/_config.yml b/_config.yml index a226c26..b3a4300 100644 --- a/_config.yml +++ b/_config.yml @@ -36,6 +36,14 @@ authors: web: https://github.com/vitornvpaixao twitter: https://github.com/vitornvpaixao description: "Frontend programmer and forever learner. Has been in charge of maintaining and extending our Vue.Js app." + joao: + name: João Santos + display_name: João + avatar: 'assets/images/joao.jpeg' + web: https://github.com/JotaFan + twitter: https://github.com/JotaFan + description: "Versatile programmer, deep learning modeling wizzard, and geospatial analyist. Has contributed to the pixels platform and executed many projects for Tesselo." + # Plugins plugins: diff --git a/_posts/2023-02-28-our-models.md b/_posts/2023-02-28-our-models.md new file mode 100644 index 0000000..7dcf438 --- /dev/null +++ b/_posts/2023-02-28-our-models.md @@ -0,0 +1,49 @@ +--- +layout: post +title: "Model Alquemy" +author: joao +categories: [ AI, code ] +image: assets/images/our-models.png +description: "An introduction to Tesselo's AI modeling, explaining the model types we used for our mapping with EO data." +featured: false +hidden: false +--- +Tesselo's deep learning models are presented in this post. We have used them to +do large scale land cover modeling across the world. + +We have packaged our models into a repository that makes it easy +to use Tesselo's most common models. You can find the model references +in our [Alquimodelia](https://github.com/tesselo/alquimodelia) repository. + +Depending on the context and the goal of the modeling, we have used a series of +different models. They range from pixel based classifiers to time-series based +U-Net type architectures. + +## Use all bands + +For our modeling, we moslty used all available bands of the multispectral satellite +images. For Sentinel-2 we used the 10 bands that have 10m or 20m resolution. Similarly, +for Landsat we used the available bands. + +In our pre-processing pipeline we simply resampled all bands into the target resolution. +Usually this meant to upsample the lower resolution bands to the resolution of the +band with the highest resolution. That is 10m for Sentinel-2 images for instance. + +## Classifiers + +Here we are giving a quick overview of the different model types and their use cases. +Detailed posts about some of the models will follow separately as well. + +### Pixel based time series classifier + +This classifier is quite small but very powerful for small training datasets. It is +non-sequential and based on one-dimensional convolution. It has two branches that +are detecting patterns in time series at different levels. + +### Single scene image segmentation + +2D U-Net or ResNet based. + +### Time series of images + +3D U-Net based. diff --git a/assets/images/joao.jpeg b/assets/images/joao.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..35b1b243db1908226bc5708bc529c1eb2bba393b GIT binary patch literal 24338 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 YL(&lzSO5SZZ&jG)&9w0-I$#g~*~Fxq`2YX_ literal 0 HcmV?d00001 diff --git a/assets/images/our-models.png b/assets/images/our-models.png new file mode 100644 index 0000000000000000000000000000000000000000..c3845121acdc035d938dbebaa39b6e11343e748e GIT binary patch literal 21756 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 WCvQMa$+neTT2lPfvB)DAZ~ZUEuBnLt literal 0 HcmV?d00001 From bbab3b01e78c0cbc7431007e118c9fa8032bb9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Santos?= <jotaflame@gmail.com> Date: Tue, 28 Feb 2023 19:28:34 +0000 Subject: [PATCH 2/4] feat(post): complement model descriptions --- _posts/2023-02-28-our-models.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/_posts/2023-02-28-our-models.md b/_posts/2023-02-28-our-models.md index 7dcf438..1dc23c9 100644 --- a/_posts/2023-02-28-our-models.md +++ b/_posts/2023-02-28-our-models.md @@ -15,6 +15,10 @@ We have packaged our models into a repository that makes it easy to use Tesselo's most common models. You can find the model references in our [Alquimodelia](https://github.com/tesselo/alquimodelia) repository. +The aim of Alquimodelia was to create an user friendly and easy way to use and +change parameters on the common model architectures used in Tesselo. No need of any +knowledge in keras or tensorflow, just some parameters and you had your model ready to use. + Depending on the context and the goal of the modeling, we have used a series of different models. They range from pixel based classifiers to time-series based U-Net type architectures. @@ -29,6 +33,10 @@ In our pre-processing pipeline we simply resampled all bands into the target res Usually this meant to upsample the lower resolution bands to the resolution of the band with the highest resolution. That is 10m for Sentinel-2 images for instance. +Or using the same approuch we would create super-resolution, by upsampling our imagery data +to the resolution of the target data. We had successful models that would build 1m resolution +images out of 10m resolution data. + ## Classifiers Here we are giving a quick overview of the different model types and their use cases. @@ -44,6 +52,22 @@ are detecting patterns in time series at different levels. 2D U-Net or ResNet based. +#### ResNet + +The ResNet architecture uses two-dimensional convolutions to provide a classification to +a given image. This has been used as a way to classify images with a single class. Or it +could be used to classify a single pixel, but with the context of the surroundings. + +#### 2D U-Net + +The 2D U-Net is similiar to ResNet in terms of the usage of two-dimensional convolutions, but +instead of giving one answer for each image, it responds with also an image. +Used in image classification and segmentation. + ### Time series of images -3D U-Net based. +#### 3D U-Net + +The 3D U-Net architeture follows the same patterns and the 2D, but instead of two-dimensional convolutions it uses three-dimensional convolutions, multiple images across time. +The answer would still be a single image, but produced with time context. +Great to surpass problems like clouds and other imagery artifacts. From 43b64ad5f46aca3fc0b473c16cb531fe5a397a4c Mon Sep 17 00:00:00 2001 From: Daniel Wiesmann <daniel@tesselo.com> Date: Wed, 1 Mar 2023 10:26:42 +0000 Subject: [PATCH 3/4] intermediate --- _posts/2023-02-28-our-models.md | 36 ++++++++++++++------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/_posts/2023-02-28-our-models.md b/_posts/2023-02-28-our-models.md index 1dc23c9..471cff5 100644 --- a/_posts/2023-02-28-our-models.md +++ b/_posts/2023-02-28-our-models.md @@ -8,16 +8,21 @@ description: "An introduction to Tesselo's AI modeling, explaining the model typ featured: false hidden: false --- -Tesselo's deep learning models are presented in this post. We have used them to -do large scale land cover modeling across the world. +Tesselo's most successful deep learning models are presented in this post. We have +used them to do large scale land cover modeling across the world. -We have packaged our models into a repository that makes it easy -to use Tesselo's most common models. You can find the model references -in our [Alquimodelia](https://github.com/tesselo/alquimodelia) repository. +We have packaged our most common models into a repository that makes it easy +to use them. You can find the model references in our +[Alquimodelia](https://github.com/tesselo/alquimodelia) repository. It contains +the detailed model definitions for our most successful models. We used Keras with a +Tensorflow backend for our modeling, so the definitions are written in that famework. -The aim of Alquimodelia was to create an user friendly and easy way to use and -change parameters on the common model architectures used in Tesselo. No need of any -knowledge in keras or tensorflow, just some parameters and you had your model ready to use. +The aim of Alquimodelia is to provide a user friendly way to use and change parameters +on the common model architectures used in Tesselo. The model classes can be created without +deep knowledge of keras or tensorflow. The main required parameters are the input and ouput +shape that the models will work with. Then, Arquimodelia will construct the models accordingly. + +## Model types Depending on the context and the goal of the modeling, we have used a series of different models. They range from pixel based classifiers to time-series based @@ -25,18 +30,6 @@ U-Net type architectures. ## Use all bands -For our modeling, we moslty used all available bands of the multispectral satellite -images. For Sentinel-2 we used the 10 bands that have 10m or 20m resolution. Similarly, -for Landsat we used the available bands. - -In our pre-processing pipeline we simply resampled all bands into the target resolution. -Usually this meant to upsample the lower resolution bands to the resolution of the -band with the highest resolution. That is 10m for Sentinel-2 images for instance. - -Or using the same approuch we would create super-resolution, by upsampling our imagery data -to the resolution of the target data. We had successful models that would build 1m resolution -images out of 10m resolution data. - ## Classifiers Here we are giving a quick overview of the different model types and their use cases. @@ -68,6 +61,7 @@ Used in image classification and segmentation. #### 3D U-Net -The 3D U-Net architeture follows the same patterns and the 2D, but instead of two-dimensional convolutions it uses three-dimensional convolutions, multiple images across time. +The 3D U-Net architeture follows the same patterns and the 2D, but instead of two-dimensional +convolutions it uses three-dimensional convolutions, multiple images across time. The answer would still be a single image, but produced with time context. Great to surpass problems like clouds and other imagery artifacts. From 480e76a7ac2aac259f9e7b208e79d71a9651363d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Santos?= <jotaflame@gmail.com> Date: Mon, 3 Apr 2023 14:12:15 +0100 Subject: [PATCH 4/4] feat(post): multispectral image --- _posts/2023-02-28-our-models.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_posts/2023-02-28-our-models.md b/_posts/2023-02-28-our-models.md index 471cff5..b442a72 100644 --- a/_posts/2023-02-28-our-models.md +++ b/_posts/2023-02-28-our-models.md @@ -30,6 +30,9 @@ U-Net type architectures. ## Use all bands +The multispectral imagery allows us to get context from the various ranges of light available. This could help overcome coud coverage over a site, or could easily identify Land Uses. +The usage of multiple bands allowed our models to freely aquire the best out of Open Data targeting the goal at hands. + ## Classifiers Here we are giving a quick overview of the different model types and their use cases.