Индекс ImageNet для синсетов Wordnet 3.0

Работая с ImageNet Resnet-50 в Caffe, прогноз дает 1000-мерный вектор. Есть ли простой способ перевести индексы этого вектора в идентификаторы synset Wordnet 3.0? Например, что 415: «пекарня, пекарня, пекарня» — это «n02776631»?

Я отмечаю, что аналогичный вопрос, in">Получить метку ImageNet для определенного индекса в 1000-мерном выходном тензоре в torch, был задан вопрос о удобочитаемой метке, связанной с индексом, и ответ указал на доступное сопоставление индекса с меткой. в этом URL: https://gist.github.com/maraoz/388eddec39d60c6d52d4

Я полагаю, что из удобочитаемой этикетки можно найти идентификатор синсета Wordnet с помощью сопоставления метки с синсетом на этой странице: http://image-net.org/challenges/LSVRC/2015/browse-synsets, но мне интересно, это уже сделано?


person Finn Årup Nielsen    schedule 22.08.2017    source источник


Ответы (1)


Сопоставление кажется простым с данными из https://gist.github.com/maraoz/388eddec39d60c6d52d4 и http://image-net.org/challenges/LSVRC/2015/browse-synsets:

{0: {'id': '01440764-n',
     'label': 'tench, Tinca tinca',
     'uri': 'http://wordnet-rdf.princeton.edu/wn30/01440764-n'},
 1: {'id': '01443537-n',
     'label': 'goldfish, Carassius auratus',
     'uri': 'http://wordnet-rdf.princeton.edu/wn30/01443537-n'},
 2: {'id': '01484850-n',
     'label': 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',
    'uri': 'http://wordnet-rdf.princeton.edu/wn30/01484850-n'},
 ...

Полный файл см. на странице https://gist.github.com/fnielsen/4a5c94eaa6dcdf29b7a62d886f540372.

Я не проверял тщательно, действительно ли это отображение правильное.

Это отображение было построено с помощью:

import ast
from lxml import html
import requests
from pprint import pprint

url_index = ('https://gist.githubusercontent.com/maraoz/'
             '388eddec39d60c6d52d4/raw/'
             '791d5b370e4e31a4e9058d49005be4888ca98472/gistfile1.txt')
url_synsets = "http://image-net.org/challenges/LSVRC/2014/browse-synsets"

index_to_label = ast.literal_eval(requests.get(url_index).content)
elements = html.fromstring(requests.get(url_synsets).content).xpath('//a')

label_to_synset = {}
for element in elements:
    href = element.attrib['href']
    if href.startswith('http://imagenet.stanford.edu/synset?wnid='):
        label_to_synset[element.text] = href[42:]

index_to_synset = {
    k: {
        'id': label_to_synset[v] + '-n',
        'label': v,
        'uri': "http://wordnet-rdf.princeton.edu/wn30/{}-n".format(
            label_to_synset[v])
    }
    for k, v in index_to_label.items()}


pprint(index_to_synset)
person Finn Årup Nielsen    schedule 23.08.2017