如何找到 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)
我正在使用基于 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)