Performing deep learning land cover classification using R?

The use of tensors in the evolution of deep learning methods has notably pushed the field of machine learning forward. This is why there is such buzz over Googles Tensorflow approach. It also provides a flexible framework in deploying a large variety of models.

As mentioned, Convolutional Neural Networks (CNN) for Semantic Segmentation is the current "go to" approach in image analysis using deep learning. Due to RStudio's efforts, in building a comprehensive package interface to Googles Tensorflow libraries, R is a reasonable platform to conduct this type of analysis. Between R and Python, it really is just preference.

I should point out that, whereas this is a powerful approach, CNN is intended for supervised classification problems and not just returning unsupervised image objects. The method also generally assumes, due to dialiation functions, a dense-pixel image. Is is also common practice to apply a Conditional Random Field (CRF) model as a secondary model to improve results of the segmentation produced by CNN's.

Honestly, if you want to perform an image segmentation with the intent of producing image "polygons" a better choice would be the Orfeo toolbox. It is fairly complex to build a deep learning models and results are quite sensitive to how the model is structured and specified. It seems like quite a bit of unnecessary work to build a deep learning model just for an unlabeled image segmentation. If you are going to go down this road, why not just leverage the model and build a supervised classification? Here is a tutorial in specifying a CNN model in R. This will give you some idea in what is involved, it is not just a few lines of code. You have to give considerable though into the structure of your data, characteristics of the training data and sensitivity of the model parameters.


How to implement Deep Learning in R using Keras and Tensorflow is a link where they use R for deep learning. In this tutorial they classify images to a certain class, I think you are interested in Semantic segmentation. Some terms you might be looking for:

  • Semantic Segmentation

  • Convolutional neural networks such as 'Unet' and 'Segnet' but there are more

  • Tensorflow is the way to go, I think and use Keras to make it simpeler

Lots of semantic segmentation and deep learning in general is done in Python so I would consider switching to python. It will be easier to find documentation and tutorials.