Ben's Ecology Blog

Mapping kelp on a sub-antarctic island using Tessera

Sub-antarctic islands are cool. Both climatically and figuratively speaking. I imagine these islands as lively outposts in the midst of vast stretches of ocean. If you are a seabird, seal, penguin or fish, these islands provide important habitat, a refuge, a place to shelter and feed. For humans, these are very harsh, challenging environments to live in. This is why almost all are uninhabited. Visiting such places is reserved for researchers conducting fieldwork. Even still, fieldwork can occur infrequently and sporadically. Indeed, these islands may be as close to our very own definition of 'wilderness' as they come.

I have often wanted to visit these far remote places. Unfortunately in reality, this is very difficult to do. I imagine I have to be in the right place at the right time. The good news is however, with satellite imagery, I can view these islands in more detail than ever before.

As I will be starting a new job soon (likely involving a fair amount of GIS and mapping). I thought it would be wise to mess around with one of these new fancy softwares that are freely available; Tessera.

Tessera

So I am by no means an expert, but here is my two cents as to what Tessera is. Tessera is named after the individual tiles of a mosaic. Similar to a mosaic, Tessera divides the world into tiles. You are then able to download high-resolution satellite imagery (down to 10m resolution) from tiles in your area of interest. So you might be like, 'ugh whats the big deal? google earth gives me satellite imagery' - but the big deal is that these tiles come pre-loaded with a heap of other stuff, not just the imagery. The tiles are technically called 'embeddings' but I am just going to call them 'tiles' from hereon.

Every tile on Tessera has undergone supervised pre-training on large labelled datasets. This labelling is powerful and means that it can undertake a diverse range of tasks. If you want it to estimate the tree canopy height in Borneo Rainforests it can do that. Or if you want it to detect different crop types in Denmark it could do that. Map all burnt areas following a bushfire in Australia, it can do that. Tessera is a pixel-based foundational model. The other really cool feature is that you can also provide it with self-supervised learning. So you (the user) label the map and train the model. This gives it even more fine-tuning for specific downstream tasks. The team behind Tessera are still processing and adding tiles to globe. They plan to eventually have global map coverage from 2017-2024, but for now are working on 2024 global coverage.

Refer to installation instructions here. Big shoutout to my brother who made me aware of Tessera.

The idea

I was thinking of all the ways we use GIS currently. Satellite imagery can be great at mapping things like glacier extent, deforestation, urbanisation, basically any change in the extent, or cover over time, particularly where the presence or absence of something is involved. It isn't quite as good, but still okay at mapping vegetation, as often species are hard to delineate based on aerial alone (but as an aside, even this is getting better with Lidar technology).

So what in this world hasn't been mapped already? On any given place you can usually find maps of landmarks (roads, streets, public transport maps etc). Maps of the terrain/topographic maps are relatively easy to find. Then hardest to find are maps of geology and vegetation. What do all these maps have in common? They are all land based. And this makes sense as humans are also very much land based, and in general love mapping land, but dare I say, what about the non-land? The ocean??

I wanted to challenge this software, and test the capabilities of Tessera for myself. After zooming around various sub-antarctic islands, I came across Marion Island. It was on the west coast of this island where I noticed a weird-looking thing out to sea. Looking almost like a rock, but the waves are not there? Then you realise its kelp. Its a perfect subject for mapping. Kelp on Marion zoomed So I thought I would focus on mapping the kelp surrounding Marion Island.

But how do I know this is kelp?

Multiple papers have described the littoral ecology surrounding Marion Island:

"Along most of the east coast extensive beds of Macrocystis occur some 100m offshore. On the exposed south and west coasts Macrocystis is far less common and occurs further offshore and in patches"

and...

"Near the shore in the intertidal zone with its gigantic brown algae, filamentous green and foliose red algae full of epiphytes, krill, phytoplankton, amphipods, polychaete, limpets, fish and a host of other animals"

From this paper and this paper.

The only ground-truthing evidence I have is from a user called 'CridF', who went to the island in 2007, and uploaded an image in 2016 on the main wikipedia page for Marion Island: bull kelp The kelp above appears to be Bull Kelp (Durvillaea antarctica). They were likely taking a picture of the emperor penguin (and not the kelp), but still... kelp! Thank you CridF. Really I should be thanking the commons and that we live in a world where uploads to wikipedia can benefit a random person in unexpected ways years later.

From my understanding Bull Kelp dominates near the coast, and intertidal zone, and Giant Kelp (Macrocystis) fronds and patches exist further out at deeper depths. However there may be overlap, and a mixture of different kelp species.

All in all, I am fairly confident what I think is kelp, is in fact kelp.

Brief intro to Marion Island

Marion island is the largest of the Prince Edward Islands in the Southern Indian Ocean. It was previously a british overseas territory, until 1948 when South Africa annexed the islands.

The more or less oval shaped island reaches an altitude of 1230m, and is 290 square kilometres. The rugged, wind-blown island is described as 'hyper-oceanic', and is sculpted by competing volcanic extrusion and marine erosional processes. Between these volcanic events, there have also been periods of glaciation. View map of Marion Island here. I would embed the HTML, but the free version of bearblog prohibits java script :(

No one lives here, and since 2003 the island has been declared a Special Nature Reserve by the South African Government. The islands and surrounding 180,000km^2 of ocean are protected under RAMSAR status.

Steps to get kelp map

  1. Set the region of interest (in my case Marion Island)
  2. Generate the interactive map
  3. On the map add classes (the various categories you want to classify each pixel into)
  4. Label the map (provide a dataset to train the machine learning on)
  5. Start classification and view the generated map

The map begins

After selecting my area of interest I discovered that not all of Marion Island is covered by tiles. Here is a satellite image of Marion island (with tile opacity set to 0): Map of Marion Now here are the tiles provided.
PCA map of Marion

The western half of the island, and the north east part of the island contains tiles that can be classified and mapped. I have increased the opacity of these tiles. The software delineates these colours further using a PCA analysis. Currently you are viewing PCA-derived false colour map overlaid on an RGB aerial image of Marion Island.

I started placing brown dots on areas where I believe there was kelp (step 4). This was to teach the computer to find similar pixels, and classify them as kelp too.

I did focus my efforts around the coastline, as I wanted the machine learning to have a good dataset to distinguish a) kelp from the water, and b) kelp from the rocks. In total I labelled 300 points, with majority being kelp or water. Class points on Marion

Results - Marion Island Kelp Map

The map of kelp I am happy with. It certainly picks up the main areas where kelp are. Not sure if the accuracy is as good away from these patches. It was reasonably quick and easy to do. Certainly much faster than manual methods.

Interactive map of NW Marion Island with user added labels: NW kelp map - satellite

Now here is the Kelp Map for NW Marion Island: Kelp Map NE Marino Click here for a bigger version. Every brown pixel represents kelp.

For the NE section of Marion Island, I had very few points labelled (in fact none of kelp). This would force Tessera to rely on its training.

Interactive map of NE Marion Island with labels NE kelp map - satellite Kelp Map for NE Marion Island Kelp Map - NE Marion Island Click here for a bigger version.

After the map is generated, you are also able to get a statistical summary giving the percentage cover of each of the classes (no. of pixels in each class/total no. of pixels).

Discussion

Upon reflection I may have overfitted my data? I am unsure. You can see the many points on the NW coastline of Marion island above. I labelled 300 points to train the machine learning model. Providing too much labelling, would cause my model to be hyper-specific, and may not include kelp in all its shapes and forms. Whilst the aerial imagery of the kelp did appear fairly homogeneous, am I excluding potential kelp, or could I be overestimating, and now suddenly if a rock happens to look like kelp, it becomes kelp? Then again, 300 points of data doesn't seem like much when the computer is dealing with millions of pixels, and has to decide what colour to give every individual pixel.

Another error occurs when Tessera has to assign a colour to every pixel in your region of interest, despite (in my case) only having limited coverage of tiles. This leads to some interesting results as follows.

There was difference in the map output dependent on what machine-learning algorithm I used to classify my self-supervised data. Tessera allowed you to select between two algorithms:

Interestingly, when using k-nearest neighbour, Tessera classified all the surrounding water and land beyond the tiles as kelp! Therefore in the absence of a tile, it considered 'kelp' to be the most likely class to occur. See below: wrong kelp classification

I believe this may be due to K-nearest neighbour factoring in how close each point is to one another, the density of points. As I had kelp in patches, this meant all my self-supervised labelling of kelp was clustered together. K-nearest neighbour is also computationally expensive, especially the larger the dataset gets (as it requires calculating distance from all data points). Funnily enough, every time I run the code set to k-nearest neighbour, my computer fan always rouses into action.

Whereas when I set the algorithm to random forest no computer fan starts up. Unlike k-nearest neighbour, in the absence of a tile, it considered 'water' to be the most likely class to occur. Random forest builds multiple decision trees that are each trained on a random subset of the data. To classify each pixel, the final prediction is based of a majority vote from each individual tree.

All this isn't really a criticism of Tessera though. It worked with what it had. What Tessera decides to map outside tiles, and in the unknown, is irrelevant.

Finally, it is worthy of saying, but kelp and kelp forests are really important and we should do more to conserve them. Conservation efforts will rely on accurate mapping. Tessera certainly shows promising results at doing just this.

Down the rabbit hole of sub-antarctic islands

I had a good time researching these sub-antarctic islands. In fact it was difficult to even complete the research as I would inadvertently get sent down an unrelated topic. There are many crazy stories surrounding these islands. Upon reading, you discover many have had shipwrecked sailors, or other dramatic stories. I like that when you search 'ecology' or 'ecological research' after any of these islands, you get sent to websites where researchers used typewriters for their notes/papers. All of which have now been scanned in from a research expedition in the 60s. You get a real sense of history. So cool!