LandCoverNet是一个全球年度土地覆被分类训练数据集

举报
此星光明 发表于 2023/03/11 20:10:39 2023/03/11
【摘要】 LandCoverNet训练标签 v1.0LandCoverNet是一个全球年度土地覆被分类训练数据集,带有2018年Sentinel-1、Sentinel-2和Landsat-8任务的多光谱卫星图像的标签。LandCoverNet中的图像芯片为256 x 256像素,横跨多个瓦片。每个图像芯片包含来自以下卫星产品的时间观测数据,并带有年度等级标签,全部以栅格格式(GeoTIFF文件)存储。...

LandCoverNet训练标签 v1.0
LandCoverNet是一个全球年度土地覆被分类训练数据集,带有2018年Sentinel-1、Sentinel-2和Landsat-8任务的多光谱卫星图像的标签。LandCoverNet中的图像芯片为256 x 256像素,横跨多个瓦片。每个图像芯片包含来自以下卫星产品的时间观测数据,并带有年度等级标签,全部以栅格格式(GeoTIFF文件)存储。

哨兵-1号地面测距产品(GRD),具有10米空间分辨率的辐射校准和正演功能
哨兵2号表面反射率产品(L2A),10米空间分辨率
Landsat-8的表面反射率产品,来自Collection 2 Level-2
辐射地球基金会在Schmidt Futures的资助下设计并生成了这个数据集,NASA ACCESS、微软AI for Earth提供了额外支持,Sinergise提供了实物技术支持。

这个数据集最强大的特点之一是共识标签,每个图像芯片都由三个独立的用户进行验证。每个用户的准确性是通过使用由辐射地球团队的专家单独标记的芯片来评估的。为了生成每个像素的共识标签,考虑到每个用户的准确性,采用了贝叶斯模型平均法。产生的标签伴随着0到100之间的 "共识分数",表示三个用户之间的一致程度。这就形成了数据集的b2,而b1是等级值。

你可以在这里阅读详细的方法样本,

https://radiantearth.blob.core.windows.net/mlhub/landcovernet_af/Documentation.pdf

你可以到这里的样本数据集页面。

LandCoverNet Africa

你可以在这里阅读论文中的方法

https://arxiv.org/abs/2012.03111

关于这个的教程可以在这里进一步访问

https://nbviewer.org/github/radiantearth/mlhub-tutorials/blob/main/notebooks/radiant-mlhub-landcovernet.ipynb

免责声明:数据集的全部或部分描述是由作者或其作品提供的。

参考文献

Alemohammad, Hamed, and Kevin Booth. "LandCoverNet: A global benchmark land cover classification training dataset."arXiv preprint arXiv:2012.03111 (2020).
数据引用:

Alemohammad S.H., Ballantyne A., Bromberg Gaber Y., Booth K., Nakanuku-Diggs L., & Miglarese A.H. (2020) "LandCoverNet Africa: A Geographically Diverse Land Cover Classification Training Dataset", Version 1.0, Radiant MLHub. [Date Accessed] https://doi.org/10.34911/rdnt.d2ce8i
 

数据结构和预处理
数据集以光栅芯片的形式提供,分辨率为256 x 256像素,意味着总共有65,536个像素。每个地区的总体数据集分布情况总结如下

Abbreviation Image Chip Count Ref ID Region Proportion Global
AU 600 ref_landcovernet_au_v1_labels Australia 6.72
AS 2753 ref_landcovernet_as_v1_labels Asia 30.81
AF 1980 ref_landcovernet_af_v1_labels Africa 22.16
EU 840 ref_landcovernet_eu_v1_labels Europe 9.4
NA 1561 ref_landcovernet_na_v1_labels North America 17.47
SA 1200 ref_landcovernet_sa_v1_labels South America 13.43

这些数据集确实由STAC表示,虽然命令行工具是访问这些数据的方式,但我写了一些自定义脚本,用于解析STAC元数据中的属性,以及下载光栅对象和源图像CSVs,作为谷歌地球引擎的assset级属性使用。

保留的元数据包括日期,用于开始和结束日期。

额外的元数据字段a
区别类。每个瓦片的STAC元数据中都有一个类别计数,在这种情况下,我们用一个简单的计数来估计有多少不同的类别可用于芯片,以及这可能对你的整体训练有什么影响。
system:index/id_no是图像中保留的瓦片的名称,没有经过修改。
source_imagery_start/end。使用源图像CSV文件选择源图像的开始和结束日期,对每个芯片的日期进行排序,并添加到允许创建一个时间过滤器。
source_imagery_datelist:这是完整的源图像日期列表,你可以使用该列表来识别和选择S2图像的特定日期,从那些日子里进行分析或比较。

代码: 

var au = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_au_v1_labels");
var af = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_af_v1_labels");
var as = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_as_v1_labels");
var eu = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_eu_v1_labels");
var na = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_na_v1_labels");
var sa = ee.ImageCollection("projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_sa_v1_labels");


print(af.aggregate_histogram('source_imagery_start'))

//Add a multiclass chip
var image = na.filter(ee.Filter.gte('distinct_classes',7)).first()
image = image.updateMask(image.gt(0)).select('b1')
Map.centerObject(image)

// var img = ee.Image('projects/earthengine-legacy/assets/projects/sat-io/open-datasets/LandCoverNet/LABELS/au/51JXH_01_2018_LC_10m')
// print(img)
// var image = au.first()
// print(au)

print(image)
print(ee.Date.parse("YYYYMMDD",ee.String(ee.List(ee.String(image.get('source_imagery_datelist')).split(',')).sort().get(0)).trim()))
//print(ee.List(ee.String(image.get('datelist')).split(',')).get(20))
// print(ee.Date.parse("YYYYMMDD",ee.String(ee.List(ee.String(image.get('datelist')).split(',')).get(20))))
// print(ee.Date.parse(ee.List(ee.String(image.get('datelist')).split(',')).sort().get(20)))
// var img =ee.Image('projects/sat-io/open-datasets/LandCoverNet/LABELS/ref_landcovernet_au_v1_labels/59GLL_12_2018_LC_10m')
// print(img)

// Define a dictionary which will be used to make legend and visualize image on map
var dict = {
  "names": [
    "Water (Permanent)",//1
    "Artificial",//2
    "Natural",//3
    "Snow/Ice (Permanent)",//4
    "Woody",//5
    "Cultivated",//6
    "(Semi) Natural",//7
  ],
  "colors": [
    "#0000ff",
    "#888888",
    "#d1a46d",
    "#f5f5ff",
    "#d64c2b",
    "#186818",
    "#00ff00"
  ]};

// Create a panel to hold the legend widget
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});

// Function to generate the legend
function addCategoricalLegend(panel, dict, title) {
  
  // Create and add the legend title.
  var legendTitle = ui.Label({
    value: title,
    style: {
      fontWeight: 'bold',
      fontSize: '18px',
      margin: '0 0 4px 0',
      padding: '0'
    }
  });
  panel.add(legendTitle);
  
  var loading = ui.Label('Loading legend...', {margin: '2px 0 4px 0'});
  panel.add(loading);
  
  // Creates and styles 1 row of the legend.
  var makeRow = function(color, name) {
    // Create the label that is actually the colored box.
    var colorBox = ui.Label({
      style: {
        backgroundColor: color,
        // Use padding to give the box height and width.
        padding: '8px',
        margin: '0 0 4px 0'
      }
    });
  
    // Create the label filled with the description text.
    var description = ui.Label({
      value: name,
      style: {margin: '0 0 4px 6px'}
    });
  
    return ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    });
  };
  
  // Get the list of palette colors and class names from the image.
  var palette = dict['colors'];
  var names = dict['names'];
  loading.style().set('shown', false);
  
  for (var i = 1; i < names.length; i++) {
    panel.add(makeRow(palette[i], names[i]));
  }
  
  Map.add(panel);
  
}


/*
  // Display map and legend ///////////////////////////////////////////////////////////////////////////////
*/

// Add the legend to the map
addCategoricalLegend(legend, dict, 'Land cover');

// Add LC image to the map
Map.addLayer(image, {min:1, max:7, palette:dict['colors']}, 'LandCoverNet v1.0 NA')

//Map.centerObject(collection.first(),8)

代码链接:

https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-landuse-landcover/LANDCOVERNET_V1

License

The dataset is released under (CC BY 4.0) license. You can find license summary here

Produced by: Radiant Earth Foundation

Curated in GEE by: Samapriya Roy

Keywords: Land Use, Land Cover, Remote Sensing, landsat-8, sentinel-1, sentinel-2, segmentation

Last updated on GEE: 2022-07-17

(1868条消息) 此星光明的博客_CSDN博客-GEE数据集专栏,GEE教程训练,Google Earth Engine领域博主

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。