Imagenet和wordnet的联系

Imagenet数据集

是由根据WordNet层次结构(目前只有名词)组织的图像数据库,其中层次结构的每个节点都有成百上千的图像。其总共有大约21K类,每一类节点对应一个wnid(WordNet ID of class),1500多万张图片,如下图展示了32326类的Imagetnet数据集组织形式。
在这里插入图片描述
常用的为ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)比赛用的子数据集,其中:

  • 训练集:1,281,167张图片+标签
  • 验证集:50,000张图片+标签
  • 测试集:100,000张图片,属于1000个不同的类别。

wordnet简介

传统词典一般都是按字母顺序组织词条信息的,这样的词典在解决用词和选义问题上是有价值的。然而,它们有一个共同的缺陷,就是忽略了词典中同义信息的组织问题。WordNet是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典。而每个不同的语义(sense)又可能对应多个词,如topic和subject在某些情况下是同义的,

WordNet与其他标准词典最显著的不同在于:它将词汇分成五个大类:名词、动词、形容词、副词和虚词。实际上,WordNet仅包含名词、动词、形容词和副词。虚词通常是作为语言句法成分的一部分,WordNet忽略了英语中较小的虚词集。

WordNet的语料库,在nltk_data文件夹下的corpora文件夹中,corprora文件夹是下载的,下载方式是使用两行代码。

pip install nltk
python -m nltk.downloader # 选择安装wordnet

WordNet与一般字典的不同在于组织结构的不同,它是以同义词集合(Synset)作为基本的构建单位来组织的,用户可以在同义词集合中找到一个合适的词去表达一个已知的概念。而与传统词典类似的是它也给出了定义和例句。

如果说WordNet是一个数据库,那么Synset就是一条数据的主键,而每一条数据,代表的是一个词义。

from nltk.corpus import wordnet as wn
wn.synsets('dog') # 得到'dog'的所有词义

Out[1]: 
[Synset('dog.n.01'),
 Synset('frump.n.01'),
 Synset('dog.n.03'),
 Synset('cad.n.01'),
 Synset('frank.n.02'),
 Synset('pawl.n.01'),
 Synset('andiron.n.01'),
 Synset('chase.v.01')]

由上图可见,Synset由三部分组成,第一部分是词义,第二部分是词性,第三部分是编号。’dog’所有词义中词性为名词(n)的词性有7个,词性为动词(v)的有1个。这个排列顺序是根据该词义出现的次数排列的。

# 查看不同词义的定义
wn.synset('dog.n.01').definition() 
Out[3]: 'a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds'

wn.synset('dog.n.03').definition()
Out[4]: 'informal term for a man'

可以看到,同样的都是名词’dog’有着不同的定义。

# 查看例句(可能有多句,放在同一个列表中)
wn.synset('dog.n.01').examples()
Out[5]: ['the dog barked all night']

wn.synset('dog.n.03').examples()
Out[6]: ['you lucky dog']

# 查询同义词
wn.synset('dog.n.01').lemmas()
Out[7]: 
[Lemma('dog.n.01.dog'),
 Lemma('dog.n.01.domestic_dog'),
 Lemma('dog.n.01.Canis_familiaris')]

# 查询每个同义词的写法
wn.synset('dog.n.01').lemma_names()
Out[8]: ['dog', 'domestic_dog', 'Canis_familiaris']

上面说过,wordnet中,Synset是一条数据的主键。这个主键和词性+8位offset对应。如下所示

# 查询词性
wn.synset('dog.n.01').pos()
Out[11]: 'n'

# 查询8位offset
wn.synset('dog.n.01').offset()
Out[9]: 2084071

# 由词性和8位offset得到synset
wn.synset_from_pos_and_offset('n',2084071)
Out[12]: Synset('dog.n.01')

在imagenet中,类别是词性+8位offset命名的,这被称为wnid,因此每一个类别均对应着一条Synset主键。所以知道了Synset主键之后,我们也可以得到其wnid(词性+8位offset):

def getwnid(u):
    s = str(u.offset())
    return 'n' + (8 - len(s)) * '0' + s # offset不显示前面的0,所以需要补0到8位。

所谓hypernym,表示某一个概念的上位词,假如A的上位词是B,简单的理解即是B是一个大的概念,A是B概念的一种情况,A更加具体。

# 例如,A概念表示狗,B概念表示家养动物,我们知道狗是家养动物的一种,则可以称家养动物是狗的一个上位词。
 wn.synset('dog.n.01').hypernyms() 
Out[13]: [Synset('canine.n.02'), Synset('domestic_animal.n.01')]

跟上位词对应,也有下位词概念,英文单词为hyponym,在下面的例子中,basenji、corgi等都是狗的不同品种,都是狗这个具体概念下的更加具体的概念。

wn.synset('dog.n.01').hyponyms()
Out[15]: 
[Synset('basenji.n.01'),
 Synset('corgi.n.01'),
 Synset('cur.n.01'),
 Synset('dalmatian.n.02'),
 Synset('great_pyrenees.n.01'),
 Synset('griffon.n.02'),
 Synset('hunting_dog.n.01'),
 Synset('lapdog.n.01'),
 Synset('leonberg.n.01'),
 Synset('mexican_hairless.n.01'),
 Synset('newfoundland.n.01'),
 Synset('pooch.n.01'),
 Synset('poodle.n.01'),
 Synset('pug.n.01'),
 Synset('puppy.n.01'),
 Synset('spitz.n.01'),
 Synset('toy_dog.n.01'),
 Synset('working_dog.n.01')]
<think>好的,我现在需要帮用户了解ImageNet数据集,包括下载使用说明。首先,我应该先明确用户的需求,他们可能想了解ImageNet的基本信息,如何下载,以及如何使用。接下来,我需要整理手头有的引用资料,确保信息准确。 首先,根据引用[1],ImageNet是一个大规模的图像数据库,常用于计算机视觉任务。ILSVRC2012是其中的一个子集,包含1000个类别。这里需要说明ImageNet的结构用途,让用户有个基本认识。 然后,下载方式方面,引用[1]、[2]、[3]都提到了不同的方法。官方下载需要注册同意条款,但用户可能觉得麻烦。这时候,引用[2][3]提供的项目地址可能是更简便的途径,特别是gitcode上的资源,应该详细说明步骤,比如通过wget或git下载。 数据预处理部分,引用[4]提到了一些步骤,比如调整大小、归一化等,这部分需要简要说明,帮助用户了解使用数据集前的准备工作。同时,还要提到数据组织目录结构,引用[1]里提到的按类别存放的目录结构,这对用户实际应用很重要。 使用场景方面,用户可能关心ImageNet的应用,比如图像分类、迁移学习等,需要结合引用[4]中的信息,说明其在研究中的用途,特别是非商业用途的限制。 注意事项部分,引用[4]提到非商业使用授权问题,必须提醒用户遵守,避免法律问题。此外,数据量大,需要足够的存储空间计算资源,这也是用户需要注意的。 最后,生成相关问题时要覆盖用户可能进一步想知道的内容,比如数据集的组成、预处理方法、应用场景、挑战以及替代方案。这些能帮助用户更全面地了解ImageNet。 需要检查是否符合之前的系统级指令,比如数学公式的格式是否正确,不过在这个问题中可能涉及较少。回答结构是否清晰,分点说明,引用标识是否正确添加在每个引用的末尾。同时,确保语言简洁,用中文表达,不使用Markdown格式,段落间用空行分隔。 确认所有引用都已正确标注,比如[^1]到[^4],没有遗漏。最后,检查相关问题的生成是否合理,是否覆盖了用户可能感兴趣的方面。例如,下载方式的不同途径,预处理步骤,应用场景等,都是用户可能会进一步提问的点。</think>ImageNet数据集使用指南 ### 1. 数据集说明 ImageNet是包含超过1400万张标注图像的超大规模数据库,涵盖2万多个语义类别,其中ILSVRC2012子集(1000类/120万图像)是深度学习领域最常用的基准数据集。该数据集采用WordNet层次结构组织图像,每个节点对应一个图像集合。 ### 2. 下载方式 ■ **官方渠道** - 访问官网注册账号并申请下载权限(需签署使用协议) - ILSVRC2012包含以下核心文件: ``` train/*.tar # 训练集 val/*.tar # 验证集 test/*.tar # 测试集 ``` ■ **镜像下载** 推荐使用国内镜像资源: ```bash # 通过gitcode下载(引用[2][3]) wget https://gitcode.com/Resource-Bundle-Collection/5376b/-/raw/main/ILSVRC2012_devkit_t12.tar.gz wget https://gitcode.com/Resource-Bundle-Collection/471d4/-/raw/main/ILSVRC2012_img_train.tar ``` ### 3. 数据处理 ■ **目录结构示例** ``` ILSVRC2012/ ├── train/ │ ├── n01440764/ │ ├── n01443537/ │ └── ... ├── val/ └── test/ ``` 每个类别对应一个独立目录,目录名称为WordNet ID ■ **预处理流程 1. 解压原始文件:`tar -xvf ILSVRC2012_img_train.tar -C train/` 2. 生成标注文件:使用官方开发工具包解析XML注释 3. 图像标准化: ```python transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) ``` ### 4. 应用场景 - 图像分类模型训练(ResNet, VGG等) - 迁移学习的预训练数据源 - 计算机视觉算法基准测试 - 特征提取研究 ### 5. 注意事项 ① 仅限非商业研究用途,商业使用需额外授权 ② 完整数据集需要>150GB存储空间 ③ 推荐使用GPU加速处理
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值