ADE20K数据集

ADE20K是MIT于2016年发布的大型场景理解数据集,包含超过3000个类别,支持语义分割、实例分割和零部件分割任务。它弥补了现有数据集类别有限、场景单一的问题,适用于训练和验证深度学习模型,如swintransformer和segformer。数据集提供了详细的图像标注信息,可用于复杂的场景解析和机器人交互研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景简介

ADE20K数据集是2016年MIT开放的场景理解的数据集,可用于实例分割,语义分割和零部件分割。利用图像信息进行场景理解 scene understanding和 scene parsing。

语义分割 Semantic Segmentation即最常见的任务,将图像的不同像素按对象类别 object category进行分类,实例分割Instance Segmentation不仅要识别不同物体所属的类别,还需识别出同类的不同物体。零部件分割 Part Segmentation是在识别出的物体上分割出不同部分所属的零部件类别,这对于理解场景帮助机器人与环境交互十分重要,如在某个 scene中分割出来 chair或者 cup,为了坐下或者拿起杯⼦需要找到 objects中对应的 parts,如 chair可以坐的部分, cup的杯柄, 以实现机器⼈与知行特定的任务。

已有分割公开数据集的现状:

类别有限, 且有些数据类别在实际⽣活中并不常⻅如 COCO和 PASCAL数据集;
包含的场景过少,如 Cityscapes仅包含城市街区的场景数据;
Pascal-Context和 SUN还不错, 但 Pascal-Context主要包含其20个对象类的场景, ⽽SUN在对象级别的标注是不准确的。

2.ADE20K

1>ADE20K的官网:https://groups.csail.mit.edu/vision/datasets/ADE20K/index.html

2>ECCV 2016举办的Scene Parsing Challenge
2016http://sceneparsing.csail.mit.edu/index_challenge.html

3>tool kit github repositoryhttps://github.com/CSAILVision/ADE20K

ADE20K由 27000张图像组成,这些图像来自于SUN(2010年普林斯顿大学公开的数据集)和Places(2014年MIT公开的数据集)数据集,ADE20K中由超过3000个物体类别 category,其中很多图像组成物体的零部件的类别,以及组成零部件的零部件的类别,如 汽车的零部件 门,门上面的零部件 窗户。ADE20K中还标注了实例的 id,可用于实例分割。数据中的图像都进行了匿名化处理,做了人脸和车牌号的模糊,去除了隐私信息。

ADE20K的数据分布

训练集 Training set包含 25574张完整标注图像
验证集 Validation set包含 2000张完整标注图像
测试集 Test set还没有发布
ADE20K的数据组成

共包含 27574张图像
3688个类,类名取自WordNet(WordNet是由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护一个词与词之间存在各种关系的英语字典)
707868个对象
193238个零部件
数据文件目录结构

.
└── ADE20K_2021_17_01
    └── images
        └── ADE
            └── training
                └── urban
                    └── street
                        ├── ADE_train_00016869
                        │   ├── instance_000_ADE_train_00016869.png
                        │   ├── instance_001_ADE_train_00016869.png
                        │   ├── instance_..._ADE_train_00016869.png
                        ├── ADE_train_00016869.jpg
                        ├── ADE_train_00016869.json
                        ├── ADE_train_00016869_parts_1.png
                        ├── ADE_train_00016869_parts_2.png
                        ├── ADE_train_00016869_seg.png
                        ├── ADE_train_00016964
                        │   ├── instance_000_ADE_train_00016964.png
                        │   ├── instance_001_ADE_train_00016964.png
                        │   ├── instance_..._ADE_train_00016964.png
                        ├── ADE_train_00016964.jpg
                        ├── ADE_train_00016964.json
                        ├── ADE_train_00016964_parts_1.png
                        └── ADE_train_00016964_seg.png


image_name.jpg原始图像,如ADE_train_00016869.jpg
{image_name}_seg.png图像 image_name.jpg对应的类别和实例的标注信息,存储在其每个像素的 RGB通道中,借助 toolkit中的代码utils_ade20k.py可以实现标注信息的解析
{image_name}parts{i}.png图层 i中包含的零部件,如ADE_train_00016869_parts_1.png
{image_name},以文件名命名的文件夹,其中的每个图像分别是一个实例标注信息对应原图的掩码,由 0,1组成。如ADE_train_00016869
{image_name}.json包含了图像对应的标注信息,如实例和类别标注信息的多边形,标注的时间,标注实例或对象的属性,如ADE_train_00016869.json
数据集相关的统计信息,譬如包括多少个类别,有多少个对象等,保存在一个序列化文件index_ade20k.pkl中,可以参考ade20k_starter.ipynb读取其中的信息。


print("File loaded, description of the attributes:")
print('--------------------------------------------')
for attribute_name, desc in index_ade20k['description'].items():
    print('* {}: {}'.format(attribute_name, desc))
print('--------------------------------------------\n')

i = 16868 # 16899, 16964
nfiles = len(index_ade20k['filename'])
file_name = index_ade20k['filename'][i]
num_obj = index_ade20k['objectPresence'][:, i].sum()
num_parts = index_ade20k['objectIsPart'][:, i].sum()
count_obj = index_ade20k['objectPresence'][:, i].max()
obj_id = np.where(index_ade20k['objectPresence'][:, i] == count_obj)[0][0]
obj_name = index_ade20k['objectnames'][obj_id]
full_file_name = '{}/{}'.format(index_ade20k['folder'][i], index_ade20k['filename'][i])
print("The dataset has {} images".format(nfiles))
print("The image at index {} is {}".format(i, file_name))
print("It is located at {}".format(full_file_name))
print("It happens in a {}".format(index_ade20k['scene'][i]))
print("It has {} objects, of which {} are parts".format(num_obj, num_parts))
print("The most common object is object {} ({}), which appears {} times".format(obj_name, obj_id, count_obj))


3.使用ADE20K

  • 语义分割

语义分割中使用的训练和验证数据集多是ADEchallenge 2016提供的处理好的数据集,包括150个类,不含背景0,在训练时需将background 0 设置成ignore_index。ADEChallengeData2016.zip的下载地址为

http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip

最近的一些工作,如swin transformer和segfomer都在ADEChallengeData2016.zip数据集上进行了验证,这两个算法在商汤的框架mmsegmentation中都有实现,感兴趣的同学可以动手验证一下,需要注意的是使用ade20k数据集时,train_pipeline中的参数需要设置,如下

train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations', reduce_zero_label=True)]

源码学习欢迎访问个人博客https://studentp.cloud/p/search.html~见专栏置顶

### 关于ADE20K数据集的最新机器学习模型和资源 针对ADE20K数据集,最新的研究进展主要集中在语义分割领域。该数据集因其丰富的类别标签而成为评估视觉理解算法性能的重要基准之一。 #### 1. SegFormer模型的应用 SegFormer作为一种高效的Transformer架构,在处理大规模图像分类任务上表现出色。对于像ADE20K这样复杂的数据集而言,SegFormer能够有效捕捉不同尺度下的特征信息,从而实现更精准的目标识别与区域划分[^1]。 ```python from transformers import SegformerForSemanticSegmentation, SegformerFeatureExtractor import torch from PIL import Image import requests url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) feature_extractor = SegformerFeatureExtractor.from_pretrained("nvidia/mit-b0") model = SegformerForSemanticSegmentation.from_pretrained("nvidia/deeplabv3-mit-b0") inputs = feature_extractor(images=image, return_tensors="pt") outputs = model(**inputs) logits = outputs.logits.cpu().detach().numpy() ``` 此代码片段展示了如何利用Hugging Face库加载预训练好的SegFormer模型并应用于自定义图片上的实例操作过程。 #### 2. Mask Transformer (Mask2Former) 的改进方案 为了进一步提升在长尾分布情况下的表现力,有学者提出了基于掩码预测机制的新框架——Mask2Former。它不仅继承了原有方法的优点,还特别加强了对罕见类别的检测能力,使得整体效果更加均衡稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小P学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值