如何找到 VGG16 预测的父 class?

How to find the parent class of VGG16 prediction?

我正在使用基于 keras 的 vgg 模型作为图像分类器。从这个网页:

https://machinelearningmastery.com/use-pre-trained-vgg-model-classify-objects-photographs/

但我有兴趣找出预测的父类别。例如,如果模型预测一只狗,我想知道它的父类别是动物。 不知道有没有办法用Imagenet树解决这个问题?

ImageNet 使用 WordNet 创建 classes 的层次结构。您可以通过以下方式访问 object 同义词集:

import nltk
from nltk.corpus import wordnet

nltk.download('wordnet')
dog = wordnet.synsets('dog')[0]

要访问 dog 的 parents,请调用:

dog.hypernyms()

它可能 return 超过 1 个有问题的结果。

您现在可以做的是检查 parents 中的任何一个是否是实际的 ImageNet class。要获得symset的wnid,只需调用dog.offset().

要反转该过程:

from nltk.corpus import wordnet as wn
wn.synset_from_pos_and_offset('n',2084071)