initial commit
Browse files- SessionState.py +117 -0
- app.py +367 -0
- download_utils.py +55 -0
- gloss.txt +0 -0
- helper.py +23 -0
- image_utils.py +137 -0
- imagenet-labels.json +1002 -0
SessionState.py
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""Hack to add per-session state to Streamlit.
|
2 |
+
|
3 |
+
Usage
|
4 |
+
-----
|
5 |
+
|
6 |
+
>>> import SessionState
|
7 |
+
>>>
|
8 |
+
>>> session_state = SessionState.get(user_name='', favorite_color='black')
|
9 |
+
>>> session_state.user_name
|
10 |
+
''
|
11 |
+
>>> session_state.user_name = 'Mary'
|
12 |
+
>>> session_state.favorite_color
|
13 |
+
'black'
|
14 |
+
|
15 |
+
Since you set user_name above, next time your script runs this will be the
|
16 |
+
result:
|
17 |
+
>>> session_state = get(user_name='', favorite_color='black')
|
18 |
+
>>> session_state.user_name
|
19 |
+
'Mary'
|
20 |
+
|
21 |
+
"""
|
22 |
+
try:
|
23 |
+
import streamlit.ReportThread as ReportThread
|
24 |
+
from streamlit.server.Server import Server
|
25 |
+
except Exception:
|
26 |
+
# Streamlit >= 0.65.0
|
27 |
+
import streamlit.report_thread as ReportThread
|
28 |
+
from streamlit.server.server import Server
|
29 |
+
|
30 |
+
|
31 |
+
class SessionState(object):
|
32 |
+
def __init__(self, **kwargs):
|
33 |
+
"""A new SessionState object.
|
34 |
+
|
35 |
+
Parameters
|
36 |
+
----------
|
37 |
+
**kwargs : any
|
38 |
+
Default values for the session state.
|
39 |
+
|
40 |
+
Example
|
41 |
+
-------
|
42 |
+
>>> session_state = SessionState(user_name='', favorite_color='black')
|
43 |
+
>>> session_state.user_name = 'Mary'
|
44 |
+
''
|
45 |
+
>>> session_state.favorite_color
|
46 |
+
'black'
|
47 |
+
|
48 |
+
"""
|
49 |
+
for key, val in kwargs.items():
|
50 |
+
setattr(self, key, val)
|
51 |
+
|
52 |
+
|
53 |
+
def get(**kwargs):
|
54 |
+
"""Gets a SessionState object for the current session.
|
55 |
+
|
56 |
+
Creates a new object if necessary.
|
57 |
+
|
58 |
+
Parameters
|
59 |
+
----------
|
60 |
+
**kwargs : any
|
61 |
+
Default values you want to add to the session state, if we're creating a
|
62 |
+
new one.
|
63 |
+
|
64 |
+
Example
|
65 |
+
-------
|
66 |
+
>>> session_state = get(user_name='', favorite_color='black')
|
67 |
+
>>> session_state.user_name
|
68 |
+
''
|
69 |
+
>>> session_state.user_name = 'Mary'
|
70 |
+
>>> session_state.favorite_color
|
71 |
+
'black'
|
72 |
+
|
73 |
+
Since you set user_name above, next time your script runs this will be the
|
74 |
+
result:
|
75 |
+
>>> session_state = get(user_name='', favorite_color='black')
|
76 |
+
>>> session_state.user_name
|
77 |
+
'Mary'
|
78 |
+
|
79 |
+
"""
|
80 |
+
# Hack to get the session object from Streamlit.
|
81 |
+
|
82 |
+
ctx = ReportThread.get_report_ctx()
|
83 |
+
|
84 |
+
this_session = None
|
85 |
+
|
86 |
+
current_server = Server.get_current()
|
87 |
+
if hasattr(current_server, '_session_infos'):
|
88 |
+
# Streamlit < 0.56
|
89 |
+
session_infos = Server.get_current()._session_infos.values()
|
90 |
+
else:
|
91 |
+
session_infos = Server.get_current()._session_info_by_id.values()
|
92 |
+
|
93 |
+
for session_info in session_infos:
|
94 |
+
s = session_info.session
|
95 |
+
if (
|
96 |
+
# Streamlit < 0.54.0
|
97 |
+
(hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg)
|
98 |
+
or
|
99 |
+
# Streamlit >= 0.54.0
|
100 |
+
(not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)
|
101 |
+
or
|
102 |
+
# Streamlit >= 0.65.2
|
103 |
+
(not hasattr(s, '_main_dg') and s._uploaded_file_mgr == ctx.uploaded_file_mgr)
|
104 |
+
):
|
105 |
+
this_session = s
|
106 |
+
|
107 |
+
if this_session is None:
|
108 |
+
raise RuntimeError(
|
109 |
+
"Oh noes. Couldn't get your Streamlit Session object. "
|
110 |
+
'Are you doing something fancy with threads?')
|
111 |
+
|
112 |
+
# Got the session object! Now let's attach some state into it.
|
113 |
+
|
114 |
+
if not hasattr(this_session, '_custom_session_state'):
|
115 |
+
this_session._custom_session_state = SessionState(**kwargs)
|
116 |
+
|
117 |
+
return this_session._custom_session_state
|
app.py
ADDED
@@ -0,0 +1,367 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import pickle
|
4 |
+
import random
|
5 |
+
import time
|
6 |
+
from collections import Counter
|
7 |
+
from datetime import datetime
|
8 |
+
from glob import glob
|
9 |
+
|
10 |
+
import gdown
|
11 |
+
import matplotlib.pyplot as plt
|
12 |
+
import numpy as np
|
13 |
+
import pandas as pd
|
14 |
+
import seaborn as sns
|
15 |
+
import streamlit as st
|
16 |
+
from PIL import Image
|
17 |
+
|
18 |
+
import SessionState
|
19 |
+
from download_utils import *
|
20 |
+
from image_utils import *
|
21 |
+
|
22 |
+
random.seed(datetime.now())
|
23 |
+
np.random.seed(int(time.time()))
|
24 |
+
|
25 |
+
NUMBER_OF_TRIALS = 20
|
26 |
+
CLASSIFIER_TAG = "CHM"
|
27 |
+
explaination_functions = [load_chm_nns, load_knn_nns]
|
28 |
+
selected_xai_tool = None
|
29 |
+
|
30 |
+
# Config
|
31 |
+
folder_to_name = {}
|
32 |
+
class_descriptions = {}
|
33 |
+
classifier_predictions = {}
|
34 |
+
selected_dataset = "Final"
|
35 |
+
|
36 |
+
root_visualization_dir = "./visualizations/"
|
37 |
+
viz_url = "https://static.taesiri.com/xai/Final.zip"
|
38 |
+
viz_archivefile = "Final.zip"
|
39 |
+
|
40 |
+
demonstration_url = "https://static.taesiri.com/xai/demonstrations.zip"
|
41 |
+
demonst_zipfile = "demonstrations.zip"
|
42 |
+
|
43 |
+
picklefile_url = "https://static.taesiri.com/xai/Task1_Results_CHM_and_EMD.pickle"
|
44 |
+
prediction_root = "./predictions/"
|
45 |
+
prediction_pickle = f"{prediction_root}predictions.pickle"
|
46 |
+
|
47 |
+
################################################
|
48 |
+
# GLOBAL VARIABLES
|
49 |
+
app_mode = ""
|
50 |
+
|
51 |
+
## Shared/Global Information
|
52 |
+
with open("imagenet-labels.json", "rb") as f:
|
53 |
+
folder_to_name = json.load(f)
|
54 |
+
|
55 |
+
with open("gloss.txt", "r") as f:
|
56 |
+
description_file = f.readlines()
|
57 |
+
|
58 |
+
class_descriptions = {l.split("\t")[0]: l.split("\t")[1] for l in description_file}
|
59 |
+
################################################
|
60 |
+
|
61 |
+
with open(prediction_pickle, "rb") as f:
|
62 |
+
classifier_predictions = pickle.load(f)
|
63 |
+
|
64 |
+
# SESSION STATE
|
65 |
+
session_state = SessionState.get(
|
66 |
+
page=1,
|
67 |
+
first_run=1,
|
68 |
+
user_feedback={},
|
69 |
+
queries=[],
|
70 |
+
is_classifier_correct={},
|
71 |
+
XAI_tool="Unselected",
|
72 |
+
)
|
73 |
+
################################################
|
74 |
+
|
75 |
+
|
76 |
+
def get_data():
|
77 |
+
download_files(
|
78 |
+
root_visualization_dir,
|
79 |
+
viz_url,
|
80 |
+
viz_archivefile,
|
81 |
+
demonstration_url,
|
82 |
+
demonst_zipfile,
|
83 |
+
picklefile_url,
|
84 |
+
prediction_root,
|
85 |
+
prediction_pickle,
|
86 |
+
)
|
87 |
+
|
88 |
+
|
89 |
+
def resmaple_queries():
|
90 |
+
if session_state.first_run == 1:
|
91 |
+
both_correct = glob(
|
92 |
+
root_visualization_dir + selected_dataset + "/Both_correct/*.JPEG"
|
93 |
+
)
|
94 |
+
both_wrong = glob(
|
95 |
+
root_visualization_dir + selected_dataset + "/Both_wrong/*.JPEG"
|
96 |
+
)
|
97 |
+
|
98 |
+
correct_samples = list(
|
99 |
+
np.random.choice(a=both_correct, size=NUMBER_OF_TRIALS // 2, replace=False)
|
100 |
+
)
|
101 |
+
wrong_samples = list(
|
102 |
+
np.random.choice(a=both_wrong, size=NUMBER_OF_TRIALS // 2, replace=False)
|
103 |
+
)
|
104 |
+
|
105 |
+
all_images = correct_samples + wrong_samples
|
106 |
+
random.shuffle(all_images)
|
107 |
+
session_state.queries = all_images
|
108 |
+
session_state.first_run = -1
|
109 |
+
# RESET INTERACTIONS
|
110 |
+
session_state.user_feedback = {}
|
111 |
+
session_state.is_classifier_correct = {}
|
112 |
+
|
113 |
+
|
114 |
+
def render_experiment(query):
|
115 |
+
current_query = session_state.queries[query]
|
116 |
+
query_id = os.path.basename(current_query)
|
117 |
+
|
118 |
+
predicted_wnid = classifier_predictions[query_id][f"{CLASSIFIER_TAG}-predictions"]
|
119 |
+
prediction_confidence = classifier_predictions[query_id][
|
120 |
+
f"{CLASSIFIER_TAG}-confidence"
|
121 |
+
]
|
122 |
+
prediction_label = folder_to_name[predicted_wnid]
|
123 |
+
class_def = class_descriptions[predicted_wnid]
|
124 |
+
|
125 |
+
session_state.is_classifier_correct[query_id] = classifier_predictions[query_id][
|
126 |
+
f"{CLASSIFIER_TAG}-Output"
|
127 |
+
]
|
128 |
+
|
129 |
+
################################### SHOW DESCRIPTION OF CLASS
|
130 |
+
with st.expander("Show Class Description"):
|
131 |
+
st.write(f"**Name**: {prediction_label}")
|
132 |
+
st.write("**Class Definition**:")
|
133 |
+
st.markdown("`" + class_def + "`")
|
134 |
+
st.image(
|
135 |
+
Image.open(f"demonstrations/{predicted_wnid}.jpeg"),
|
136 |
+
caption=f"Class Explanation",
|
137 |
+
use_column_width=True,
|
138 |
+
)
|
139 |
+
|
140 |
+
################################### SHOW QUERY and PREDICTION
|
141 |
+
with st.expander("Show Query"):
|
142 |
+
col1, col2 = st.columns(2)
|
143 |
+
with col1:
|
144 |
+
st.image(load_query(current_query), caption=f"Query ID: {query_id}")
|
145 |
+
with col2:
|
146 |
+
default_value = 0
|
147 |
+
if query_id in session_state.user_feedback.keys():
|
148 |
+
if session_state.user_feedback[query_id] == "Correct":
|
149 |
+
default_value = 1
|
150 |
+
elif session_state.user_feedback[query_id] == "Wrong":
|
151 |
+
default_value = 2
|
152 |
+
|
153 |
+
session_state.user_feedback[query_id] = st.radio(
|
154 |
+
"What do you think about model's prediction?",
|
155 |
+
("-", "Correct", "Wrong"),
|
156 |
+
key=query_id,
|
157 |
+
index=default_value,
|
158 |
+
)
|
159 |
+
st.write(f"**Model Prediction**: {prediction_label}")
|
160 |
+
st.write(f"**Model Confidence**: {prediction_confidence}")
|
161 |
+
|
162 |
+
################################### SHOW Model Explanation
|
163 |
+
if selected_xai_tool is not None:
|
164 |
+
st.image(
|
165 |
+
selected_xai_tool(current_query),
|
166 |
+
caption=f"Explaination",
|
167 |
+
use_column_width=True,
|
168 |
+
)
|
169 |
+
|
170 |
+
################################### SHOW DEBUG INFO
|
171 |
+
|
172 |
+
if st.button("Debug: Show Everything"):
|
173 |
+
st.image(Image.open(current_query))
|
174 |
+
|
175 |
+
|
176 |
+
def render_results():
|
177 |
+
user_correct_guess = 0
|
178 |
+
for q in session_state.user_feedback.keys():
|
179 |
+
if session_state.is_classifier_correct[q] == session_state.user_feedback[q]:
|
180 |
+
user_correct_guess += 1
|
181 |
+
|
182 |
+
st.write(
|
183 |
+
f"User performance on {CLASSIFIER_TAG}: {user_correct_guess} out of {len( session_state.user_feedback)} Correct"
|
184 |
+
)
|
185 |
+
st.markdown("## User Performance Breakdown")
|
186 |
+
|
187 |
+
categories = set(session_state.is_classifier_correct.values())
|
188 |
+
breakdown_stats_correct = {c: 0 for c in categories}
|
189 |
+
breakdown_stats_wrong = {c: 0 for c in categories}
|
190 |
+
|
191 |
+
experiment_summary = []
|
192 |
+
|
193 |
+
for q in session_state.user_feedback.keys():
|
194 |
+
category = session_state.is_classifier_correct[q]
|
195 |
+
user_feedback_boolean = (
|
196 |
+
True if session_state.user_feedback[q] == "Correct" else False
|
197 |
+
)
|
198 |
+
|
199 |
+
is_user_correct = category == user_feedback_boolean
|
200 |
+
|
201 |
+
if is_user_correct:
|
202 |
+
breakdown_stats_correct[category] += 1
|
203 |
+
else:
|
204 |
+
breakdown_stats_wrong[category] += 1
|
205 |
+
|
206 |
+
experiment_summary.append(
|
207 |
+
[
|
208 |
+
q,
|
209 |
+
classifier_predictions[q]["real-gts"],
|
210 |
+
folder_to_name[
|
211 |
+
classifier_predictions[q][f"{CLASSIFIER_TAG}-predictions"]
|
212 |
+
],
|
213 |
+
category,
|
214 |
+
session_state.user_feedback[q],
|
215 |
+
is_user_correct,
|
216 |
+
]
|
217 |
+
)
|
218 |
+
|
219 |
+
experiment_summary_df = pd.DataFrame.from_records(
|
220 |
+
experiment_summary,
|
221 |
+
columns=[
|
222 |
+
"Query",
|
223 |
+
"GT Labels",
|
224 |
+
f"{CLASSIFIER_TAG} Prediction",
|
225 |
+
"Category",
|
226 |
+
"User Prediction",
|
227 |
+
"Is User Prediction Correct",
|
228 |
+
],
|
229 |
+
)
|
230 |
+
st.write("Summary", experiment_summary_df)
|
231 |
+
|
232 |
+
csv = convert_df(experiment_summary_df)
|
233 |
+
st.download_button(
|
234 |
+
"Press to Download", csv, "summary.csv", "text/csv", key="download-records"
|
235 |
+
)
|
236 |
+
|
237 |
+
|
238 |
+
def render_menu():
|
239 |
+
# Render the readme as markdown using st.markdown.
|
240 |
+
readme_text = st.markdown(
|
241 |
+
"""
|
242 |
+
# Instructions
|
243 |
+
```
|
244 |
+
When testing this study, you should first see the class definition, then hide the expander and see the query.
|
245 |
+
```
|
246 |
+
"""
|
247 |
+
)
|
248 |
+
|
249 |
+
app_mode = st.selectbox(
|
250 |
+
"Choose the page to show:",
|
251 |
+
["Experiment Instruction", "Start Experiment", "See the Results"],
|
252 |
+
)
|
253 |
+
|
254 |
+
if app_mode == "Experiment Instruction":
|
255 |
+
st.success("To continue select an option in the dropdown menu.")
|
256 |
+
elif app_mode == "Start Experiment":
|
257 |
+
# Clear Canvas
|
258 |
+
readme_text.empty()
|
259 |
+
|
260 |
+
page_id = session_state.page
|
261 |
+
col1, col4, col2, col3 = st.columns(4)
|
262 |
+
prev_page = col1.button("Previous Image")
|
263 |
+
|
264 |
+
if prev_page:
|
265 |
+
page_id -= 1
|
266 |
+
if page_id < 1:
|
267 |
+
page_id = 1
|
268 |
+
|
269 |
+
next_page = col2.button("Next Image")
|
270 |
+
|
271 |
+
if next_page:
|
272 |
+
page_id += 1
|
273 |
+
if page_id > NUMBER_OF_TRIALS:
|
274 |
+
page_id = NUMBER_OF_TRIALS
|
275 |
+
|
276 |
+
if page_id == NUMBER_OF_TRIALS:
|
277 |
+
st.success(
|
278 |
+
'You have reached the last image. Please go to the "Results" page to see your performance.'
|
279 |
+
)
|
280 |
+
if st.button("View"):
|
281 |
+
app_mode = "See the Results"
|
282 |
+
|
283 |
+
if col3.button("Resample"):
|
284 |
+
st.write("Restarting ...")
|
285 |
+
page_id = 1
|
286 |
+
session_state.first_run = 1
|
287 |
+
resmaple_queries()
|
288 |
+
|
289 |
+
session_state.page = page_id
|
290 |
+
st.write(f"Render Experiment: {session_state.page}")
|
291 |
+
render_experiment(session_state.page - 1)
|
292 |
+
elif app_mode == "See the Results":
|
293 |
+
readme_text.empty()
|
294 |
+
st.write("Results Summary")
|
295 |
+
render_results()
|
296 |
+
|
297 |
+
|
298 |
+
def main():
|
299 |
+
global app_mode
|
300 |
+
global session_state
|
301 |
+
global selected_xai_tool
|
302 |
+
# Get the Data
|
303 |
+
get_data()
|
304 |
+
|
305 |
+
# Set the session state
|
306 |
+
# State Management and General Setup
|
307 |
+
st.set_page_config(layout="wide")
|
308 |
+
st.title("TASK - 1 - ImageNetREAL")
|
309 |
+
|
310 |
+
options = [
|
311 |
+
"Unselected",
|
312 |
+
"NOXAI",
|
313 |
+
"KNN",
|
314 |
+
"EMD Nearest Neighbors",
|
315 |
+
"EMD Correspondence",
|
316 |
+
"CHM Nearest Neighbors",
|
317 |
+
"CHM Correspondence",
|
318 |
+
]
|
319 |
+
|
320 |
+
st.markdown(
|
321 |
+
""" <style>
|
322 |
+
div[role="radiogroup"] > :first-child{
|
323 |
+
display: none !important;
|
324 |
+
}
|
325 |
+
</style>
|
326 |
+
""",
|
327 |
+
unsafe_allow_html=True,
|
328 |
+
)
|
329 |
+
|
330 |
+
if session_state.XAI_tool == "Unselected":
|
331 |
+
default = options.index(session_state.XAI_tool)
|
332 |
+
session_state.XAI_tool = st.radio(
|
333 |
+
"What explaination tool do you want to evaluate?",
|
334 |
+
options,
|
335 |
+
key="which_xai",
|
336 |
+
index=default,
|
337 |
+
)
|
338 |
+
# print(session_state.XAI_tool)
|
339 |
+
|
340 |
+
if session_state.XAI_tool != "Unselected":
|
341 |
+
st.markdown(f"## SELECTED METHOD ``{session_state.XAI_tool}``")
|
342 |
+
|
343 |
+
if session_state.XAI_tool == "NOXAI":
|
344 |
+
selected_xai_tool = None
|
345 |
+
CLASSIFIER_TAG = "KNN"
|
346 |
+
elif session_state.XAI_tool == "KNN":
|
347 |
+
selected_xai_tool = load_knn_nns
|
348 |
+
CLASSIFIER_TAG = "KNN"
|
349 |
+
elif session_state.XAI_tool == "CHM Nearest Neighbors":
|
350 |
+
selected_xai_tool = load_chm_nns
|
351 |
+
CLASSIFIER_TAG = "CHM"
|
352 |
+
elif session_state.XAI_tool == "CHM Correspondence":
|
353 |
+
selected_xai_tool = load_chm_corrs
|
354 |
+
CLASSIFIER_TAG = "CHM"
|
355 |
+
elif session_state.XAI_tool == "EMD Nearest Neighbors":
|
356 |
+
selected_xai_tool = load_emd_nns
|
357 |
+
CLASSIFIER_TAG = "EMD"
|
358 |
+
elif session_state.XAI_tool == "EMD Correspondence":
|
359 |
+
selected_xai_tool = load_emd_corrs
|
360 |
+
CLASSIFIER_TAG = "EMD"
|
361 |
+
|
362 |
+
resmaple_queries()
|
363 |
+
render_menu()
|
364 |
+
|
365 |
+
|
366 |
+
if __name__ == "__main__":
|
367 |
+
main()
|
download_utils.py
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import pickle
|
4 |
+
import random
|
5 |
+
import tarfile
|
6 |
+
import zipfile
|
7 |
+
from collections import Counter
|
8 |
+
from glob import glob
|
9 |
+
|
10 |
+
import gdown
|
11 |
+
import matplotlib.pyplot as plt
|
12 |
+
import numpy as np
|
13 |
+
import pandas as pd
|
14 |
+
import seaborn as sns
|
15 |
+
import streamlit as st
|
16 |
+
from PIL import Image
|
17 |
+
|
18 |
+
import SessionState
|
19 |
+
|
20 |
+
|
21 |
+
def download_files(
|
22 |
+
root_visualization_dir,
|
23 |
+
viz_url,
|
24 |
+
viz_archivefile,
|
25 |
+
demonstration_url,
|
26 |
+
demonst_zipfile,
|
27 |
+
picklefile_url,
|
28 |
+
prediction_root,
|
29 |
+
prediction_pickle,
|
30 |
+
):
|
31 |
+
# Get Visualization
|
32 |
+
if not os.path.exists(root_visualization_dir):
|
33 |
+
gdown.download(viz_url, viz_archivefile, quiet=False)
|
34 |
+
os.makedirs(root_visualization_dir, exist_ok=True)
|
35 |
+
|
36 |
+
if viz_archivefile.endswith("tar.gz"):
|
37 |
+
tar = tarfile.open(viz_archivefile, "r:gz")
|
38 |
+
tar.extractall(path=root_visualization_dir)
|
39 |
+
tar.close()
|
40 |
+
elif viz_archivefile.endswith("zip"):
|
41 |
+
with zipfile.ZipFile(viz_archivefile, "r") as zip_ref:
|
42 |
+
zip_ref.extractall(root_visualization_dir)
|
43 |
+
|
44 |
+
# Get Demonstrations
|
45 |
+
if not os.path.exists(demonst_zipfile):
|
46 |
+
gdown.download(demonstration_url, demonst_zipfile, quiet=False)
|
47 |
+
# os.makedirs(roo_demonstration_dir, exist_ok=True)
|
48 |
+
|
49 |
+
with zipfile.ZipFile(demonst_zipfile, "r") as zip_ref:
|
50 |
+
zip_ref.extractall("./")
|
51 |
+
|
52 |
+
# Get Predictions
|
53 |
+
if not os.path.exists(prediction_pickle):
|
54 |
+
os.makedirs(prediction_root, exist_ok=True)
|
55 |
+
gdown.download(picklefile_url, prediction_pickle, quiet=False)
|
gloss.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
helper.py
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
def get_label_for_query(image_url, model_name):
|
4 |
+
fourway_label = image_url.split('/')[-2]
|
5 |
+
|
6 |
+
if fourway_label=='both_correct':
|
7 |
+
return 'Correct'
|
8 |
+
|
9 |
+
if fourway_label=='both_wrong':
|
10 |
+
return 'Wrong'
|
11 |
+
|
12 |
+
if fourway_label == 'chm_correct_knn_incorrect' and model_name == 'CHM':
|
13 |
+
return 'Correct'
|
14 |
+
elif fourway_label == 'knn_correct_chm_incorrect' and model_name == 'KNN':
|
15 |
+
return 'Correct'
|
16 |
+
|
17 |
+
return 'Wrong'
|
18 |
+
|
19 |
+
def get_category(image_url):
|
20 |
+
return image_url.split('/')[-2]
|
21 |
+
|
22 |
+
def translate_winds_to_names(winds):
|
23 |
+
return [folder_to_name[x] for x in winds]
|
image_utils.py
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import os
|
3 |
+
import pickle
|
4 |
+
import random
|
5 |
+
from glob import glob
|
6 |
+
|
7 |
+
import matplotlib.pyplot as plt
|
8 |
+
import pandas as pd
|
9 |
+
import seaborn as sns
|
10 |
+
import streamlit as st
|
11 |
+
from PIL import Image
|
12 |
+
|
13 |
+
|
14 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
15 |
+
def load_query(image_path):
|
16 |
+
image = Image.open(image_path)
|
17 |
+
width, height = image.size
|
18 |
+
|
19 |
+
new_width = width
|
20 |
+
new_height = height
|
21 |
+
|
22 |
+
left = (width - new_width) / 2
|
23 |
+
top = (height - new_height) / 2
|
24 |
+
right = (width + new_width) / 2
|
25 |
+
bottom = (height + new_height) / 2
|
26 |
+
|
27 |
+
# Crop the center of the image
|
28 |
+
cropped_image = image.crop(
|
29 |
+
(left + 75, top + 145, right - 2025, bottom - 2915)
|
30 |
+
).resize((300, 300))
|
31 |
+
|
32 |
+
return cropped_image
|
33 |
+
|
34 |
+
|
35 |
+
# CHM ############################################################################
|
36 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
37 |
+
def load_chm_nns(image_path):
|
38 |
+
image = Image.open(image_path)
|
39 |
+
width, height = image.size
|
40 |
+
|
41 |
+
new_width = width
|
42 |
+
new_height = height
|
43 |
+
|
44 |
+
left = (width - new_width) / 2
|
45 |
+
top = (height - new_height) / 2
|
46 |
+
right = (width + new_width) / 2
|
47 |
+
bottom = (height + new_height) / 2
|
48 |
+
|
49 |
+
# Crop the center of the image
|
50 |
+
cropped_image = image.crop((left + 475, top + 140, right - 280, bottom - 2920))
|
51 |
+
return cropped_image
|
52 |
+
|
53 |
+
|
54 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
55 |
+
def load_chm_corrs(image_path):
|
56 |
+
image = Image.open(image_path)
|
57 |
+
width, height = image.size
|
58 |
+
|
59 |
+
new_width = width
|
60 |
+
new_height = height
|
61 |
+
|
62 |
+
left = (width - new_width) / 2
|
63 |
+
top = (height - new_height) / 2
|
64 |
+
right = (width + new_width) / 2
|
65 |
+
bottom = (height + new_height) / 2
|
66 |
+
|
67 |
+
# Crop the center of the image
|
68 |
+
cropped_image = image.crop((left + 475, top + 875, right - 280, bottom - 1810))
|
69 |
+
return cropped_image
|
70 |
+
|
71 |
+
|
72 |
+
# CHM ############################################################################
|
73 |
+
|
74 |
+
# KNN ############################################################################
|
75 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
76 |
+
def load_knn_nns(image_path):
|
77 |
+
image = Image.open(image_path)
|
78 |
+
width, height = image.size
|
79 |
+
|
80 |
+
new_width = width
|
81 |
+
new_height = height
|
82 |
+
|
83 |
+
left = (width - new_width) / 2
|
84 |
+
top = (height - new_height) / 2
|
85 |
+
right = (width + new_width) / 2
|
86 |
+
bottom = (height + new_height) / 2
|
87 |
+
|
88 |
+
# Crop the center of the image
|
89 |
+
cropped_image = image.crop((left + 475, top + 510, right - 280, bottom - 2550))
|
90 |
+
return cropped_image
|
91 |
+
|
92 |
+
|
93 |
+
# KNN ############################################################################
|
94 |
+
|
95 |
+
# EMD ############################################################################
|
96 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
97 |
+
def load_emd_nns(image_path):
|
98 |
+
image = Image.open(image_path)
|
99 |
+
width, height = image.size
|
100 |
+
|
101 |
+
new_width = width
|
102 |
+
new_height = height
|
103 |
+
|
104 |
+
left = (width - new_width) / 2
|
105 |
+
top = (height - new_height) / 2
|
106 |
+
right = (width + new_width) / 2
|
107 |
+
bottom = (height + new_height) / 2
|
108 |
+
|
109 |
+
# Crop the center of the image
|
110 |
+
cropped_image = image.crop((left + 10, top + 2075, right - 420, bottom - 925))
|
111 |
+
return cropped_image
|
112 |
+
|
113 |
+
|
114 |
+
@st.cache(allow_output_mutation=True, max_entries=10, ttl=3600)
|
115 |
+
def load_emd_corrs(image_path):
|
116 |
+
image = Image.open(image_path)
|
117 |
+
width, height = image.size
|
118 |
+
|
119 |
+
new_width = width
|
120 |
+
new_height = height
|
121 |
+
|
122 |
+
left = (width - new_width) / 2
|
123 |
+
top = (height - new_height) / 2
|
124 |
+
right = (width + new_width) / 2
|
125 |
+
bottom = (height + new_height) / 2
|
126 |
+
|
127 |
+
# Crop the center of the image
|
128 |
+
cropped_image = image.crop((left + 10, top + 2500, right - 20, bottom))
|
129 |
+
return cropped_image
|
130 |
+
|
131 |
+
|
132 |
+
# EMD ############################################################################
|
133 |
+
|
134 |
+
|
135 |
+
@st.cache()
|
136 |
+
def convert_df(df):
|
137 |
+
return df.to_csv().encode("utf-8")
|
imagenet-labels.json
ADDED
@@ -0,0 +1,1002 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"n01440764" : "tench",
|
3 |
+
"n01443537" : "goldfish",
|
4 |
+
"n01484850" : "great_white_shark",
|
5 |
+
"n01491361" : "tiger_shark",
|
6 |
+
"n01494475" : "hammerhead",
|
7 |
+
"n01496331" : "electric_ray",
|
8 |
+
"n01498041" : "stingray",
|
9 |
+
"n01514668" : "cock",
|
10 |
+
"n01514859" : "hen",
|
11 |
+
"n01518878" : "ostrich",
|
12 |
+
"n01530575" : "brambling",
|
13 |
+
"n01531178" : "goldfinch",
|
14 |
+
"n01532829" : "house_finch",
|
15 |
+
"n01534433" : "junco",
|
16 |
+
"n01537544" : "indigo_bunting",
|
17 |
+
"n01558993" : "robin",
|
18 |
+
"n01560419" : "bulbul",
|
19 |
+
"n01580077" : "jay",
|
20 |
+
"n01582220" : "magpie",
|
21 |
+
"n01592084" : "chickadee",
|
22 |
+
"n01601694" : "water_ouzel",
|
23 |
+
"n01608432" : "kite",
|
24 |
+
"n01614925" : "bald_eagle",
|
25 |
+
"n01616318" : "vulture",
|
26 |
+
"n01622779" : "great_grey_owl",
|
27 |
+
"n01629819" : "European_fire_salamander",
|
28 |
+
"n01630670" : "common_newt",
|
29 |
+
"n01631663" : "eft",
|
30 |
+
"n01632458" : "spotted_salamander",
|
31 |
+
"n01632777" : "axolotl",
|
32 |
+
"n01641577" : "bullfrog",
|
33 |
+
"n01644373" : "tree_frog",
|
34 |
+
"n01644900" : "tailed_frog",
|
35 |
+
"n01664065" : "loggerhead",
|
36 |
+
"n01665541" : "leatherback_turtle",
|
37 |
+
"n01667114" : "mud_turtle",
|
38 |
+
"n01667778" : "terrapin",
|
39 |
+
"n01669191" : "box_turtle",
|
40 |
+
"n01675722" : "banded_gecko",
|
41 |
+
"n01677366" : "common_iguana",
|
42 |
+
"n01682714" : "American_chameleon",
|
43 |
+
"n01685808" : "whiptail",
|
44 |
+
"n01687978" : "agama",
|
45 |
+
"n01688243" : "frilled_lizard",
|
46 |
+
"n01689811" : "alligator_lizard",
|
47 |
+
"n01692333" : "Gila_monster",
|
48 |
+
"n01693334" : "green_lizard",
|
49 |
+
"n01694178" : "African_chameleon",
|
50 |
+
"n01695060" : "Komodo_dragon",
|
51 |
+
"n01697457" : "African_crocodile",
|
52 |
+
"n01698640" : "American_alligator",
|
53 |
+
"n01704323" : "triceratops",
|
54 |
+
"n01728572" : "thunder_snake",
|
55 |
+
"n01728920" : "ringneck_snake",
|
56 |
+
"n01729322" : "hognose_snake",
|
57 |
+
"n01729977" : "green_snake",
|
58 |
+
"n01734418" : "king_snake",
|
59 |
+
"n01735189" : "garter_snake",
|
60 |
+
"n01737021" : "water_snake",
|
61 |
+
"n01739381" : "vine_snake",
|
62 |
+
"n01740131" : "night_snake",
|
63 |
+
"n01742172" : "boa_constrictor",
|
64 |
+
"n01744401" : "rock_python",
|
65 |
+
"n01748264" : "Indian_cobra",
|
66 |
+
"n01749939" : "green_mamba",
|
67 |
+
"n01751748" : "sea_snake",
|
68 |
+
"n01753488" : "horned_viper",
|
69 |
+
"n01755581" : "diamondback",
|
70 |
+
"n01756291" : "sidewinder",
|
71 |
+
"n01768244" : "trilobite",
|
72 |
+
"n01770081" : "harvestman",
|
73 |
+
"n01770393" : "scorpion",
|
74 |
+
"n01773157" : "black_and_gold_garden_spider",
|
75 |
+
"n01773549" : "barn_spider",
|
76 |
+
"n01773797" : "garden_spider",
|
77 |
+
"n01774384" : "black_widow",
|
78 |
+
"n01774750" : "tarantula",
|
79 |
+
"n01775062" : "wolf_spider",
|
80 |
+
"n01776313" : "tick",
|
81 |
+
"n01784675" : "centipede",
|
82 |
+
"n01795545" : "black_grouse",
|
83 |
+
"n01796340" : "ptarmigan",
|
84 |
+
"n01797886" : "ruffed_grouse",
|
85 |
+
"n01798484" : "prairie_chicken",
|
86 |
+
"n01806143" : "peacock",
|
87 |
+
"n01806567" : "quail",
|
88 |
+
"n01807496" : "partridge",
|
89 |
+
"n01817953" : "African_grey",
|
90 |
+
"n01818515" : "macaw",
|
91 |
+
"n01819313" : "sulphur-crested_cockatoo",
|
92 |
+
"n01820546" : "lorikeet",
|
93 |
+
"n01824575" : "coucal",
|
94 |
+
"n01828970" : "bee_eater",
|
95 |
+
"n01829413" : "hornbill",
|
96 |
+
"n01833805" : "hummingbird",
|
97 |
+
"n01843065" : "jacamar",
|
98 |
+
"n01843383" : "toucan",
|
99 |
+
"n01847000" : "drake",
|
100 |
+
"n01855032" : "red-breasted_merganser",
|
101 |
+
"n01855672" : "goose",
|
102 |
+
"n01860187" : "black_swan",
|
103 |
+
"n01871265" : "tusker",
|
104 |
+
"n01872401" : "echidna",
|
105 |
+
"n01873310" : "platypus",
|
106 |
+
"n01877812" : "wallaby",
|
107 |
+
"n01882714" : "koala",
|
108 |
+
"n01883070" : "wombat",
|
109 |
+
"n01910747" : "jellyfish",
|
110 |
+
"n01914609" : "sea_anemone",
|
111 |
+
"n01917289" : "brain_coral",
|
112 |
+
"n01924916" : "flatworm",
|
113 |
+
"n01930112" : "nematode",
|
114 |
+
"n01943899" : "conch",
|
115 |
+
"n01944390" : "snail",
|
116 |
+
"n01945685" : "slug",
|
117 |
+
"n01950731" : "sea_slug",
|
118 |
+
"n01955084" : "chiton",
|
119 |
+
"n01968897" : "chambered_nautilus",
|
120 |
+
"n01978287" : "Dungeness_crab",
|
121 |
+
"n01978455" : "rock_crab",
|
122 |
+
"n01980166" : "fiddler_crab",
|
123 |
+
"n01981276" : "king_crab",
|
124 |
+
"n01983481" : "American_lobster",
|
125 |
+
"n01984695" : "spiny_lobster",
|
126 |
+
"n01985128" : "crayfish",
|
127 |
+
"n01986214" : "hermit_crab",
|
128 |
+
"n01990800" : "isopod",
|
129 |
+
"n02002556" : "white_stork",
|
130 |
+
"n02002724" : "black_stork",
|
131 |
+
"n02006656" : "spoonbill",
|
132 |
+
"n02007558" : "flamingo",
|
133 |
+
"n02009229" : "little_blue_heron",
|
134 |
+
"n02009912" : "American_egret",
|
135 |
+
"n02011460" : "bittern",
|
136 |
+
"n02012849" : "crane",
|
137 |
+
"n02013706" : "limpkin",
|
138 |
+
"n02017213" : "European_gallinule",
|
139 |
+
"n02018207" : "American_coot",
|
140 |
+
"n02018795" : "bustard",
|
141 |
+
"n02025239" : "ruddy_turnstone",
|
142 |
+
"n02027492" : "red-backed_sandpiper",
|
143 |
+
"n02028035" : "redshank",
|
144 |
+
"n02033041" : "dowitcher",
|
145 |
+
"n02037110" : "oystercatcher",
|
146 |
+
"n02051845" : "pelican",
|
147 |
+
"n02056570" : "king_penguin",
|
148 |
+
"n02058221" : "albatross",
|
149 |
+
"n02066245" : "grey_whale",
|
150 |
+
"n02071294" : "killer_whale",
|
151 |
+
"n02074367" : "dugong",
|
152 |
+
"n02077923" : "sea_lion",
|
153 |
+
"n02085620" : "Chihuahua",
|
154 |
+
"n02085782" : "Japanese_spaniel",
|
155 |
+
"n02085936" : "Maltese_dog",
|
156 |
+
"n02086079" : "Pekinese",
|
157 |
+
"n02086240" : "Shih-Tzu",
|
158 |
+
"n02086646" : "Blenheim_spaniel",
|
159 |
+
"n02086910" : "papillon",
|
160 |
+
"n02087046" : "toy_terrier",
|
161 |
+
"n02087394" : "Rhodesian_ridgeback",
|
162 |
+
"n02088094" : "Afghan_hound",
|
163 |
+
"n02088238" : "basset",
|
164 |
+
"n02088364" : "beagle",
|
165 |
+
"n02088466" : "bloodhound",
|
166 |
+
"n02088632" : "bluetick",
|
167 |
+
"n02089078" : "black-and-tan_coonhound",
|
168 |
+
"n02089867" : "Walker_hound",
|
169 |
+
"n02089973" : "English_foxhound",
|
170 |
+
"n02090379" : "redbone",
|
171 |
+
"n02090622" : "borzoi",
|
172 |
+
"n02090721" : "Irish_wolfhound",
|
173 |
+
"n02091032" : "Italian_greyhound",
|
174 |
+
"n02091134" : "whippet",
|
175 |
+
"n02091244" : "Ibizan_hound",
|
176 |
+
"n02091467" : "Norwegian_elkhound",
|
177 |
+
"n02091635" : "otterhound",
|
178 |
+
"n02091831" : "Saluki",
|
179 |
+
"n02092002" : "Scottish_deerhound",
|
180 |
+
"n02092339" : "Weimaraner",
|
181 |
+
"n02093256" : "Staffordshire_bullterrier",
|
182 |
+
"n02093428" : "American_Staffordshire_terrier",
|
183 |
+
"n02093647" : "Bedlington_terrier",
|
184 |
+
"n02093754" : "Border_terrier",
|
185 |
+
"n02093859" : "Kerry_blue_terrier",
|
186 |
+
"n02093991" : "Irish_terrier",
|
187 |
+
"n02094114" : "Norfolk_terrier",
|
188 |
+
"n02094258" : "Norwich_terrier",
|
189 |
+
"n02094433" : "Yorkshire_terrier",
|
190 |
+
"n02095314" : "wire-haired_fox_terrier",
|
191 |
+
"n02095570" : "Lakeland_terrier",
|
192 |
+
"n02095889" : "Sealyham_terrier",
|
193 |
+
"n02096051" : "Airedale",
|
194 |
+
"n02096177" : "cairn",
|
195 |
+
"n02096294" : "Australian_terrier",
|
196 |
+
"n02096437" : "Dandie_Dinmont",
|
197 |
+
"n02096585" : "Boston_bull",
|
198 |
+
"n02097047" : "miniature_schnauzer",
|
199 |
+
"n02097130" : "giant_schnauzer",
|
200 |
+
"n02097209" : "standard_schnauzer",
|
201 |
+
"n02097298" : "Scotch_terrier",
|
202 |
+
"n02097474" : "Tibetan_terrier",
|
203 |
+
"n02097658" : "silky_terrier",
|
204 |
+
"n02098105" : "soft-coated_wheaten_terrier",
|
205 |
+
"n02098286" : "West_Highland_white_terrier",
|
206 |
+
"n02098413" : "Lhasa",
|
207 |
+
"n02099267" : "flat-coated_retriever",
|
208 |
+
"n02099429" : "curly-coated_retriever",
|
209 |
+
"n02099601" : "golden_retriever",
|
210 |
+
"n02099712" : "Labrador_retriever",
|
211 |
+
"n02099849" : "Chesapeake_Bay_retriever",
|
212 |
+
"n02100236" : "German_short-haired_pointer",
|
213 |
+
"n02100583" : "vizsla",
|
214 |
+
"n02100735" : "English_setter",
|
215 |
+
"n02100877" : "Irish_setter",
|
216 |
+
"n02101006" : "Gordon_setter",
|
217 |
+
"n02101388" : "Brittany_spaniel",
|
218 |
+
"n02101556" : "clumber",
|
219 |
+
"n02102040" : "English_springer",
|
220 |
+
"n02102177" : "Welsh_springer_spaniel",
|
221 |
+
"n02102318" : "cocker_spaniel",
|
222 |
+
"n02102480" : "Sussex_spaniel",
|
223 |
+
"n02102973" : "Irish_water_spaniel",
|
224 |
+
"n02104029" : "kuvasz",
|
225 |
+
"n02104365" : "schipperke",
|
226 |
+
"n02105056" : "groenendael",
|
227 |
+
"n02105162" : "malinois",
|
228 |
+
"n02105251" : "briard",
|
229 |
+
"n02105412" : "kelpie",
|
230 |
+
"n02105505" : "komondor",
|
231 |
+
"n02105641" : "Old_English_sheepdog",
|
232 |
+
"n02105855" : "Shetland_sheepdog",
|
233 |
+
"n02106030" : "collie",
|
234 |
+
"n02106166" : "Border_collie",
|
235 |
+
"n02106382" : "Bouvier_des_Flandres",
|
236 |
+
"n02106550" : "Rottweiler",
|
237 |
+
"n02106662" : "German_shepherd",
|
238 |
+
"n02107142" : "Doberman",
|
239 |
+
"n02107312" : "miniature_pinscher",
|
240 |
+
"n02107574" : "Greater_Swiss_Mountain_dog",
|
241 |
+
"n02107683" : "Bernese_mountain_dog",
|
242 |
+
"n02107908" : "Appenzeller",
|
243 |
+
"n02108000" : "EntleBucher",
|
244 |
+
"n02108089" : "boxer",
|
245 |
+
"n02108422" : "bull_mastiff",
|
246 |
+
"n02108551" : "Tibetan_mastiff",
|
247 |
+
"n02108915" : "French_bulldog",
|
248 |
+
"n02109047" : "Great_Dane",
|
249 |
+
"n02109525" : "Saint_Bernard",
|
250 |
+
"n02109961" : "Eskimo_dog",
|
251 |
+
"n02110063" : "malamute",
|
252 |
+
"n02110185" : "Siberian_husky",
|
253 |
+
"n02110341" : "dalmatian",
|
254 |
+
"n02110627" : "affenpinscher",
|
255 |
+
"n02110806" : "basenji",
|
256 |
+
"n02110958" : "pug",
|
257 |
+
"n02111129" : "Leonberg",
|
258 |
+
"n02111277" : "Newfoundland",
|
259 |
+
"n02111500" : "Great_Pyrenees",
|
260 |
+
"n02111889" : "Samoyed",
|
261 |
+
"n02112018" : "Pomeranian",
|
262 |
+
"n02112137" : "chow",
|
263 |
+
"n02112350" : "keeshond",
|
264 |
+
"n02112706" : "Brabancon_griffon",
|
265 |
+
"n02113023" : "Pembroke",
|
266 |
+
"n02113186" : "Cardigan",
|
267 |
+
"n02113624" : "toy_poodle",
|
268 |
+
"n02113712" : "miniature_poodle",
|
269 |
+
"n02113799" : "standard_poodle",
|
270 |
+
"n02113978" : "Mexican_hairless",
|
271 |
+
"n02114367" : "timber_wolf",
|
272 |
+
"n02114548" : "white_wolf",
|
273 |
+
"n02114712" : "red_wolf",
|
274 |
+
"n02114855" : "coyote",
|
275 |
+
"n02115641" : "dingo",
|
276 |
+
"n02115913" : "dhole",
|
277 |
+
"n02116738" : "African_hunting_dog",
|
278 |
+
"n02117135" : "hyena",
|
279 |
+
"n02119022" : "red_fox",
|
280 |
+
"n02119789" : "kit_fox",
|
281 |
+
"n02120079" : "Arctic_fox",
|
282 |
+
"n02120505" : "grey_fox",
|
283 |
+
"n02123045" : "tabby",
|
284 |
+
"n02123159" : "tiger_cat",
|
285 |
+
"n02123394" : "Persian_cat",
|
286 |
+
"n02123597" : "Siamese_cat",
|
287 |
+
"n02124075" : "Egyptian_cat",
|
288 |
+
"n02125311" : "cougar",
|
289 |
+
"n02127052" : "lynx",
|
290 |
+
"n02128385" : "leopard",
|
291 |
+
"n02128757" : "snow_leopard",
|
292 |
+
"n02128925" : "jaguar",
|
293 |
+
"n02129165" : "lion",
|
294 |
+
"n02129604" : "tiger",
|
295 |
+
"n02130308" : "cheetah",
|
296 |
+
"n02132136" : "brown_bear",
|
297 |
+
"n02133161" : "American_black_bear",
|
298 |
+
"n02134084" : "ice_bear",
|
299 |
+
"n02134418" : "sloth_bear",
|
300 |
+
"n02137549" : "mongoose",
|
301 |
+
"n02138441" : "meerkat",
|
302 |
+
"n02165105" : "tiger_beetle",
|
303 |
+
"n02165456" : "ladybug",
|
304 |
+
"n02167151" : "ground_beetle",
|
305 |
+
"n02168699" : "long-horned_beetle",
|
306 |
+
"n02169497" : "leaf_beetle",
|
307 |
+
"n02172182" : "dung_beetle",
|
308 |
+
"n02174001" : "rhinoceros_beetle",
|
309 |
+
"n02177972" : "weevil",
|
310 |
+
"n02190166" : "fly",
|
311 |
+
"n02206856" : "bee",
|
312 |
+
"n02219486" : "ant",
|
313 |
+
"n02226429" : "grasshopper",
|
314 |
+
"n02229544" : "cricket",
|
315 |
+
"n02231487" : "walking_stick",
|
316 |
+
"n02233338" : "cockroach",
|
317 |
+
"n02236044" : "mantis",
|
318 |
+
"n02256656" : "cicada",
|
319 |
+
"n02259212" : "leafhopper",
|
320 |
+
"n02264363" : "lacewing",
|
321 |
+
"n02268443" : "dragonfly",
|
322 |
+
"n02268853" : "damselfly",
|
323 |
+
"n02276258" : "admiral",
|
324 |
+
"n02277742" : "ringlet",
|
325 |
+
"n02279972" : "monarch",
|
326 |
+
"n02280649" : "cabbage_butterfly",
|
327 |
+
"n02281406" : "sulphur_butterfly",
|
328 |
+
"n02281787" : "lycaenid",
|
329 |
+
"n02317335" : "starfish",
|
330 |
+
"n02319095" : "sea_urchin",
|
331 |
+
"n02321529" : "sea_cucumber",
|
332 |
+
"n02325366" : "wood_rabbit",
|
333 |
+
"n02326432" : "hare",
|
334 |
+
"n02328150" : "Angora",
|
335 |
+
"n02342885" : "hamster",
|
336 |
+
"n02346627" : "porcupine",
|
337 |
+
"n02356798" : "fox_squirrel",
|
338 |
+
"n02361337" : "marmot",
|
339 |
+
"n02363005" : "beaver",
|
340 |
+
"n02364673" : "guinea_pig",
|
341 |
+
"n02389026" : "sorrel",
|
342 |
+
"n02391049" : "zebra",
|
343 |
+
"n02395406" : "hog",
|
344 |
+
"n02396427" : "wild_boar",
|
345 |
+
"n02397096" : "warthog",
|
346 |
+
"n02398521" : "hippopotamus",
|
347 |
+
"n02403003" : "ox",
|
348 |
+
"n02408429" : "water_buffalo",
|
349 |
+
"n02410509" : "bison",
|
350 |
+
"n02412080" : "ram",
|
351 |
+
"n02415577" : "bighorn",
|
352 |
+
"n02417914" : "ibex",
|
353 |
+
"n02422106" : "hartebeest",
|
354 |
+
"n02422699" : "impala",
|
355 |
+
"n02423022" : "gazelle",
|
356 |
+
"n02437312" : "Arabian_camel",
|
357 |
+
"n02437616" : "llama",
|
358 |
+
"n02441942" : "weasel",
|
359 |
+
"n02442845" : "mink",
|
360 |
+
"n02443114" : "polecat",
|
361 |
+
"n02443484" : "black-footed_ferret",
|
362 |
+
"n02444819" : "otter",
|
363 |
+
"n02445715" : "skunk",
|
364 |
+
"n02447366" : "badger",
|
365 |
+
"n02454379" : "armadillo",
|
366 |
+
"n02457408" : "three-toed_sloth",
|
367 |
+
"n02480495" : "orangutan",
|
368 |
+
"n02480855" : "gorilla",
|
369 |
+
"n02481823" : "chimpanzee",
|
370 |
+
"n02483362" : "gibbon",
|
371 |
+
"n02483708" : "siamang",
|
372 |
+
"n02484975" : "guenon",
|
373 |
+
"n02486261" : "patas",
|
374 |
+
"n02486410" : "baboon",
|
375 |
+
"n02487347" : "macaque",
|
376 |
+
"n02488291" : "langur",
|
377 |
+
"n02488702" : "colobus",
|
378 |
+
"n02489166" : "proboscis_monkey",
|
379 |
+
"n02490219" : "marmoset",
|
380 |
+
"n02492035" : "capuchin",
|
381 |
+
"n02492660" : "howler_monkey",
|
382 |
+
"n02493509" : "titi",
|
383 |
+
"n02493793" : "spider_monkey",
|
384 |
+
"n02494079" : "squirrel_monkey",
|
385 |
+
"n02497673" : "Madagascar_cat",
|
386 |
+
"n02500267" : "indri",
|
387 |
+
"n02504013" : "Indian_elephant",
|
388 |
+
"n02504458" : "African_elephant",
|
389 |
+
"n02509815" : "lesser_panda",
|
390 |
+
"n02510455" : "giant_panda",
|
391 |
+
"n02514041" : "barracouta",
|
392 |
+
"n02526121" : "eel",
|
393 |
+
"n02536864" : "coho",
|
394 |
+
"n02606052" : "rock_beauty",
|
395 |
+
"n02607072" : "anemone_fish",
|
396 |
+
"n02640242" : "sturgeon",
|
397 |
+
"n02641379" : "gar",
|
398 |
+
"n02643566" : "lionfish",
|
399 |
+
"n02655020" : "puffer",
|
400 |
+
"n02666196" : "abacus",
|
401 |
+
"n02667093" : "abaya",
|
402 |
+
"n02669723" : "academic_gown",
|
403 |
+
"n02672831" : "accordion",
|
404 |
+
"n02676566" : "acoustic_guitar",
|
405 |
+
"n02687172" : "aircraft_carrier",
|
406 |
+
"n02690373" : "airliner",
|
407 |
+
"n02692877" : "airship",
|
408 |
+
"n02699494" : "altar",
|
409 |
+
"n02701002" : "ambulance",
|
410 |
+
"n02704792" : "amphibian",
|
411 |
+
"n02708093" : "analog_clock",
|
412 |
+
"n02727426" : "apiary",
|
413 |
+
"n02730930" : "apron",
|
414 |
+
"n02747177" : "ashcan",
|
415 |
+
"n02749479" : "assault_rifle",
|
416 |
+
"n02769748" : "backpack",
|
417 |
+
"n02776631" : "bakery",
|
418 |
+
"n02777292" : "balance_beam",
|
419 |
+
"n02782093" : "balloon",
|
420 |
+
"n02783161" : "ballpoint",
|
421 |
+
"n02786058" : "Band_Aid",
|
422 |
+
"n02787622" : "banjo",
|
423 |
+
"n02788148" : "bannister",
|
424 |
+
"n02790996" : "barbell",
|
425 |
+
"n02791124" : "barber_chair",
|
426 |
+
"n02791270" : "barbershop",
|
427 |
+
"n02793495" : "barn",
|
428 |
+
"n02794156" : "barometer",
|
429 |
+
"n02795169" : "barrel",
|
430 |
+
"n02797295" : "barrow",
|
431 |
+
"n02799071" : "baseball",
|
432 |
+
"n02802426" : "basketball",
|
433 |
+
"n02804414" : "bassinet",
|
434 |
+
"n02804610" : "bassoon",
|
435 |
+
"n02807133" : "bathing_cap",
|
436 |
+
"n02808304" : "bath_towel",
|
437 |
+
"n02808440" : "bathtub",
|
438 |
+
"n02814533" : "beach_wagon",
|
439 |
+
"n02814860" : "beacon",
|
440 |
+
"n02815834" : "beaker",
|
441 |
+
"n02817516" : "bearskin",
|
442 |
+
"n02823428" : "beer_bottle",
|
443 |
+
"n02823750" : "beer_glass",
|
444 |
+
"n02825657" : "bell_cote",
|
445 |
+
"n02834397" : "bib",
|
446 |
+
"n02835271" : "bicycle-built-for-two",
|
447 |
+
"n02837789" : "bikini",
|
448 |
+
"n02840245" : "binder",
|
449 |
+
"n02841315" : "binoculars",
|
450 |
+
"n02843684" : "birdhouse",
|
451 |
+
"n02859443" : "boathouse",
|
452 |
+
"n02860847" : "bobsled",
|
453 |
+
"n02865351" : "bolo_tie",
|
454 |
+
"n02869837" : "bonnet",
|
455 |
+
"n02870880" : "bookcase",
|
456 |
+
"n02871525" : "bookshop",
|
457 |
+
"n02877765" : "bottlecap",
|
458 |
+
"n02879718" : "bow",
|
459 |
+
"n02883205" : "bow_tie",
|
460 |
+
"n02892201" : "brass",
|
461 |
+
"n02892767" : "brassiere",
|
462 |
+
"n02894605" : "breakwater",
|
463 |
+
"n02895154" : "breastplate",
|
464 |
+
"n02906734" : "broom",
|
465 |
+
"n02909870" : "bucket",
|
466 |
+
"n02910353" : "buckle",
|
467 |
+
"n02916936" : "bulletproof_vest",
|
468 |
+
"n02917067" : "bullet_train",
|
469 |
+
"n02927161" : "butcher_shop",
|
470 |
+
"n02930766" : "cab",
|
471 |
+
"n02939185" : "caldron",
|
472 |
+
"n02948072" : "candle",
|
473 |
+
"n02950826" : "cannon",
|
474 |
+
"n02951358" : "canoe",
|
475 |
+
"n02951585" : "can_opener",
|
476 |
+
"n02963159" : "cardigan",
|
477 |
+
"n02965783" : "car_mirror",
|
478 |
+
"n02966193" : "carousel",
|
479 |
+
"n02966687" : "carpenter's_kit",
|
480 |
+
"n02971356" : "carton",
|
481 |
+
"n02974003" : "car_wheel",
|
482 |
+
"n02977058" : "cash_machine",
|
483 |
+
"n02978881" : "cassette",
|
484 |
+
"n02979186" : "cassette_player",
|
485 |
+
"n02980441" : "castle",
|
486 |
+
"n02981792" : "catamaran",
|
487 |
+
"n02988304" : "CD_player",
|
488 |
+
"n02992211" : "cello",
|
489 |
+
"n02992529" : "cellular_telephone",
|
490 |
+
"n02999410" : "chain",
|
491 |
+
"n03000134" : "chainlink_fence",
|
492 |
+
"n03000247" : "chain_mail",
|
493 |
+
"n03000684" : "chain_saw",
|
494 |
+
"n03014705" : "chest",
|
495 |
+
"n03016953" : "chiffonier",
|
496 |
+
"n03017168" : "chime",
|
497 |
+
"n03018349" : "china_cabinet",
|
498 |
+
"n03026506" : "Christmas_stocking",
|
499 |
+
"n03028079" : "church",
|
500 |
+
"n03032252" : "cinema",
|
501 |
+
"n03041632" : "cleaver",
|
502 |
+
"n03042490" : "cliff_dwelling",
|
503 |
+
"n03045698" : "cloak",
|
504 |
+
"n03047690" : "clog",
|
505 |
+
"n03062245" : "cocktail_shaker",
|
506 |
+
"n03063599" : "coffee_mug",
|
507 |
+
"n03063689" : "coffeepot",
|
508 |
+
"n03065424" : "coil",
|
509 |
+
"n03075370" : "combination_lock",
|
510 |
+
"n03085013" : "computer_keyboard",
|
511 |
+
"n03089624" : "confectionery",
|
512 |
+
"n03095699" : "container_ship",
|
513 |
+
"n03100240" : "convertible",
|
514 |
+
"n03109150" : "corkscrew",
|
515 |
+
"n03110669" : "cornet",
|
516 |
+
"n03124043" : "cowboy_boot",
|
517 |
+
"n03124170" : "cowboy_hat",
|
518 |
+
"n03125729" : "cradle",
|
519 |
+
"n03126707" : "crane",
|
520 |
+
"n03127747" : "crash_helmet",
|
521 |
+
"n03127925" : "crate",
|
522 |
+
"n03131574" : "crib",
|
523 |
+
"n03133878" : "Crock_Pot",
|
524 |
+
"n03134739" : "croquet_ball",
|
525 |
+
"n03141823" : "crutch",
|
526 |
+
"n03146219" : "cuirass",
|
527 |
+
"n03160309" : "dam",
|
528 |
+
"n03179701" : "desk",
|
529 |
+
"n03180011" : "desktop_computer",
|
530 |
+
"n03187595" : "dial_telephone",
|
531 |
+
"n03188531" : "diaper",
|
532 |
+
"n03196217" : "digital_clock",
|
533 |
+
"n03197337" : "digital_watch",
|
534 |
+
"n03201208" : "dining_table",
|
535 |
+
"n03207743" : "dishrag",
|
536 |
+
"n03207941" : "dishwasher",
|
537 |
+
"n03208938" : "disk_brake",
|
538 |
+
"n03216828" : "dock",
|
539 |
+
"n03218198" : "dogsled",
|
540 |
+
"n03220513" : "dome",
|
541 |
+
"n03223299" : "doormat",
|
542 |
+
"n03240683" : "drilling_platform",
|
543 |
+
"n03249569" : "drum",
|
544 |
+
"n03250847" : "drumstick",
|
545 |
+
"n03255030" : "dumbbell",
|
546 |
+
"n03259280" : "Dutch_oven",
|
547 |
+
"n03271574" : "electric_fan",
|
548 |
+
"n03272010" : "electric_guitar",
|
549 |
+
"n03272562" : "electric_locomotive",
|
550 |
+
"n03290653" : "entertainment_center",
|
551 |
+
"n03291819" : "envelope",
|
552 |
+
"n03297495" : "espresso_maker",
|
553 |
+
"n03314780" : "face_powder",
|
554 |
+
"n03325584" : "feather_boa",
|
555 |
+
"n03337140" : "file",
|
556 |
+
"n03344393" : "fireboat",
|
557 |
+
"n03345487" : "fire_engine",
|
558 |
+
"n03347037" : "fire_screen",
|
559 |
+
"n03355925" : "flagpole",
|
560 |
+
"n03372029" : "flute",
|
561 |
+
"n03376595" : "folding_chair",
|
562 |
+
"n03379051" : "football_helmet",
|
563 |
+
"n03384352" : "forklift",
|
564 |
+
"n03388043" : "fountain",
|
565 |
+
"n03388183" : "fountain_pen",
|
566 |
+
"n03388549" : "four-poster",
|
567 |
+
"n03393912" : "freight_car",
|
568 |
+
"n03394916" : "French_horn",
|
569 |
+
"n03400231" : "frying_pan",
|
570 |
+
"n03404251" : "fur_coat",
|
571 |
+
"n03417042" : "garbage_truck",
|
572 |
+
"n03424325" : "gasmask",
|
573 |
+
"n03425413" : "gas_pump",
|
574 |
+
"n03443371" : "goblet",
|
575 |
+
"n03444034" : "go-kart",
|
576 |
+
"n03445777" : "golf_ball",
|
577 |
+
"n03445924" : "golfcart",
|
578 |
+
"n03447447" : "gondola",
|
579 |
+
"n03447721" : "gong",
|
580 |
+
"n03450230" : "gown",
|
581 |
+
"n03452741" : "grand_piano",
|
582 |
+
"n03457902" : "greenhouse",
|
583 |
+
"n03459775" : "grille",
|
584 |
+
"n03461385" : "grocery_store",
|
585 |
+
"n03467068" : "guillotine",
|
586 |
+
"n03476684" : "hair_slide",
|
587 |
+
"n03476991" : "hair_spray",
|
588 |
+
"n03478589" : "half_track",
|
589 |
+
"n03481172" : "hammer",
|
590 |
+
"n03482405" : "hamper",
|
591 |
+
"n03483316" : "hand_blower",
|
592 |
+
"n03485407" : "hand-held_computer",
|
593 |
+
"n03485794" : "handkerchief",
|
594 |
+
"n03492542" : "hard_disc",
|
595 |
+
"n03494278" : "harmonica",
|
596 |
+
"n03495258" : "harp",
|
597 |
+
"n03496892" : "harvester",
|
598 |
+
"n03498962" : "hatchet",
|
599 |
+
"n03527444" : "holster",
|
600 |
+
"n03529860" : "home_theater",
|
601 |
+
"n03530642" : "honeycomb",
|
602 |
+
"n03532672" : "hook",
|
603 |
+
"n03534580" : "hoopskirt",
|
604 |
+
"n03535780" : "horizontal_bar",
|
605 |
+
"n03538406" : "horse_cart",
|
606 |
+
"n03544143" : "hourglass",
|
607 |
+
"n03584254" : "iPod",
|
608 |
+
"n03584829" : "iron",
|
609 |
+
"n03590841" : "jack-o'-lantern",
|
610 |
+
"n03594734" : "jean",
|
611 |
+
"n03594945" : "jeep",
|
612 |
+
"n03595614" : "jersey",
|
613 |
+
"n03598930" : "jigsaw_puzzle",
|
614 |
+
"n03599486" : "jinrikisha",
|
615 |
+
"n03602883" : "joystick",
|
616 |
+
"n03617480" : "kimono",
|
617 |
+
"n03623198" : "knee_pad",
|
618 |
+
"n03627232" : "knot",
|
619 |
+
"n03630383" : "lab_coat",
|
620 |
+
"n03633091" : "ladle",
|
621 |
+
"n03637318" : "lampshade",
|
622 |
+
"n03642806" : "laptop",
|
623 |
+
"n03649909" : "lawn_mower",
|
624 |
+
"n03657121" : "lens_cap",
|
625 |
+
"n03658185" : "letter_opener",
|
626 |
+
"n03661043" : "library",
|
627 |
+
"n03662601" : "lifeboat",
|
628 |
+
"n03666591" : "lighter",
|
629 |
+
"n03670208" : "limousine",
|
630 |
+
"n03673027" : "liner",
|
631 |
+
"n03676483" : "lipstick",
|
632 |
+
"n03680355" : "Loafer",
|
633 |
+
"n03690938" : "lotion",
|
634 |
+
"n03691459" : "loudspeaker",
|
635 |
+
"n03692522" : "loupe",
|
636 |
+
"n03697007" : "lumbermill",
|
637 |
+
"n03706229" : "magnetic_compass",
|
638 |
+
"n03709823" : "mailbag",
|
639 |
+
"n03710193" : "mailbox",
|
640 |
+
"n03710637" : "maillot",
|
641 |
+
"n03710721" : "maillot",
|
642 |
+
"n03717622" : "manhole_cover",
|
643 |
+
"n03720891" : "maraca",
|
644 |
+
"n03721384" : "marimba",
|
645 |
+
"n03724870" : "mask",
|
646 |
+
"n03729826" : "matchstick",
|
647 |
+
"n03733131" : "maypole",
|
648 |
+
"n03733281" : "maze",
|
649 |
+
"n03733805" : "measuring_cup",
|
650 |
+
"n03742115" : "medicine_chest",
|
651 |
+
"n03743016" : "megalith",
|
652 |
+
"n03759954" : "microphone",
|
653 |
+
"n03761084" : "microwave",
|
654 |
+
"n03763968" : "military_uniform",
|
655 |
+
"n03764736" : "milk_can",
|
656 |
+
"n03769881" : "minibus",
|
657 |
+
"n03770439" : "miniskirt",
|
658 |
+
"n03770679" : "minivan",
|
659 |
+
"n03773504" : "missile",
|
660 |
+
"n03775071" : "mitten",
|
661 |
+
"n03775546" : "mixing_bowl",
|
662 |
+
"n03776460" : "mobile_home",
|
663 |
+
"n03777568" : "Model_T",
|
664 |
+
"n03777754" : "modem",
|
665 |
+
"n03781244" : "monastery",
|
666 |
+
"n03782006" : "monitor",
|
667 |
+
"n03785016" : "moped",
|
668 |
+
"n03786901" : "mortar",
|
669 |
+
"n03787032" : "mortarboard",
|
670 |
+
"n03788195" : "mosque",
|
671 |
+
"n03788365" : "mosquito_net",
|
672 |
+
"n03791053" : "motor_scooter",
|
673 |
+
"n03792782" : "mountain_bike",
|
674 |
+
"n03792972" : "mountain_tent",
|
675 |
+
"n03793489" : "mouse",
|
676 |
+
"n03794056" : "mousetrap",
|
677 |
+
"n03796401" : "moving_van",
|
678 |
+
"n03803284" : "muzzle",
|
679 |
+
"n03804744" : "nail",
|
680 |
+
"n03814639" : "neck_brace",
|
681 |
+
"n03814906" : "necklace",
|
682 |
+
"n03825788" : "nipple",
|
683 |
+
"n03832673" : "notebook",
|
684 |
+
"n03837869" : "obelisk",
|
685 |
+
"n03838899" : "oboe",
|
686 |
+
"n03840681" : "ocarina",
|
687 |
+
"n03841143" : "odometer",
|
688 |
+
"n03843555" : "oil_filter",
|
689 |
+
"n03854065" : "organ",
|
690 |
+
"n03857828" : "oscilloscope",
|
691 |
+
"n03866082" : "overskirt",
|
692 |
+
"n03868242" : "oxcart",
|
693 |
+
"n03868863" : "oxygen_mask",
|
694 |
+
"n03871628" : "packet",
|
695 |
+
"n03873416" : "paddle",
|
696 |
+
"n03874293" : "paddlewheel",
|
697 |
+
"n03874599" : "padlock",
|
698 |
+
"n03876231" : "paintbrush",
|
699 |
+
"n03877472" : "pajama",
|
700 |
+
"n03877845" : "palace",
|
701 |
+
"n03884397" : "panpipe",
|
702 |
+
"n03887697" : "paper_towel",
|
703 |
+
"n03888257" : "parachute",
|
704 |
+
"n03888605" : "parallel_bars",
|
705 |
+
"n03891251" : "park_bench",
|
706 |
+
"n03891332" : "parking_meter",
|
707 |
+
"n03895866" : "passenger_car",
|
708 |
+
"n03899768" : "patio",
|
709 |
+
"n03902125" : "pay-phone",
|
710 |
+
"n03903868" : "pedestal",
|
711 |
+
"n03908618" : "pencil_box",
|
712 |
+
"n03908714" : "pencil_sharpener",
|
713 |
+
"n03916031" : "perfume",
|
714 |
+
"n03920288" : "Petri_dish",
|
715 |
+
"n03924679" : "photocopier",
|
716 |
+
"n03929660" : "pick",
|
717 |
+
"n03929855" : "pickelhaube",
|
718 |
+
"n03930313" : "picket_fence",
|
719 |
+
"n03930630" : "pickup",
|
720 |
+
"n03933933" : "pier",
|
721 |
+
"n03935335" : "piggy_bank",
|
722 |
+
"n03937543" : "pill_bottle",
|
723 |
+
"n03938244" : "pillow",
|
724 |
+
"n03942813" : "ping-pong_ball",
|
725 |
+
"n03944341" : "pinwheel",
|
726 |
+
"n03947888" : "pirate",
|
727 |
+
"n03950228" : "pitcher",
|
728 |
+
"n03954731" : "plane",
|
729 |
+
"n03956157" : "planetarium",
|
730 |
+
"n03958227" : "plastic_bag",
|
731 |
+
"n03961711" : "plate_rack",
|
732 |
+
"n03967562" : "plow",
|
733 |
+
"n03970156" : "plunger",
|
734 |
+
"n03976467" : "Polaroid_camera",
|
735 |
+
"n03976657" : "pole",
|
736 |
+
"n03977966" : "police_van",
|
737 |
+
"n03980874" : "poncho",
|
738 |
+
"n03982430" : "pool_table",
|
739 |
+
"n03983396" : "pop_bottle",
|
740 |
+
"n03991062" : "pot",
|
741 |
+
"n03992509" : "potter's_wheel",
|
742 |
+
"n03995372" : "power_drill",
|
743 |
+
"n03998194" : "prayer_rug",
|
744 |
+
"n04004767" : "printer",
|
745 |
+
"n04005630" : "prison",
|
746 |
+
"n04008634" : "projectile",
|
747 |
+
"n04009552" : "projector",
|
748 |
+
"n04019541" : "puck",
|
749 |
+
"n04023962" : "punching_bag",
|
750 |
+
"n04026417" : "purse",
|
751 |
+
"n04033901" : "quill",
|
752 |
+
"n04033995" : "quilt",
|
753 |
+
"n04037443" : "racer",
|
754 |
+
"n04039381" : "racket",
|
755 |
+
"n04040759" : "radiator",
|
756 |
+
"n04041544" : "radio",
|
757 |
+
"n04044716" : "radio_telescope",
|
758 |
+
"n04049303" : "rain_barrel",
|
759 |
+
"n04065272" : "recreational_vehicle",
|
760 |
+
"n04067472" : "reel",
|
761 |
+
"n04069434" : "reflex_camera",
|
762 |
+
"n04070727" : "refrigerator",
|
763 |
+
"n04074963" : "remote_control",
|
764 |
+
"n04081281" : "restaurant",
|
765 |
+
"n04086273" : "revolver",
|
766 |
+
"n04090263" : "rifle",
|
767 |
+
"n04099969" : "rocking_chair",
|
768 |
+
"n04111531" : "rotisserie",
|
769 |
+
"n04116512" : "rubber_eraser",
|
770 |
+
"n04118538" : "rugby_ball",
|
771 |
+
"n04118776" : "rule",
|
772 |
+
"n04120489" : "running_shoe",
|
773 |
+
"n04125021" : "safe",
|
774 |
+
"n04127249" : "safety_pin",
|
775 |
+
"n04131690" : "saltshaker",
|
776 |
+
"n04133789" : "sandal",
|
777 |
+
"n04136333" : "sarong",
|
778 |
+
"n04141076" : "sax",
|
779 |
+
"n04141327" : "scabbard",
|
780 |
+
"n04141975" : "scale",
|
781 |
+
"n04146614" : "school_bus",
|
782 |
+
"n04147183" : "schooner",
|
783 |
+
"n04149813" : "scoreboard",
|
784 |
+
"n04152593" : "screen",
|
785 |
+
"n04153751" : "screw",
|
786 |
+
"n04154565" : "screwdriver",
|
787 |
+
"n04162706" : "seat_belt",
|
788 |
+
"n04179913" : "sewing_machine",
|
789 |
+
"n04192698" : "shield",
|
790 |
+
"n04200800" : "shoe_shop",
|
791 |
+
"n04201297" : "shoji",
|
792 |
+
"n04204238" : "shopping_basket",
|
793 |
+
"n04204347" : "shopping_cart",
|
794 |
+
"n04208210" : "shovel",
|
795 |
+
"n04209133" : "shower_cap",
|
796 |
+
"n04209239" : "shower_curtain",
|
797 |
+
"n04228054" : "ski",
|
798 |
+
"n04229816" : "ski_mask",
|
799 |
+
"n04235860" : "sleeping_bag",
|
800 |
+
"n04238763" : "slide_rule",
|
801 |
+
"n04239074" : "sliding_door",
|
802 |
+
"n04243546" : "slot",
|
803 |
+
"n04251144" : "snorkel",
|
804 |
+
"n04252077" : "snowmobile",
|
805 |
+
"n04252225" : "snowplow",
|
806 |
+
"n04254120" : "soap_dispenser",
|
807 |
+
"n04254680" : "soccer_ball",
|
808 |
+
"n04254777" : "sock",
|
809 |
+
"n04258138" : "solar_dish",
|
810 |
+
"n04259630" : "sombrero",
|
811 |
+
"n04263257" : "soup_bowl",
|
812 |
+
"n04264628" : "space_bar",
|
813 |
+
"n04265275" : "space_heater",
|
814 |
+
"n04266014" : "space_shuttle",
|
815 |
+
"n04270147" : "spatula",
|
816 |
+
"n04273569" : "speedboat",
|
817 |
+
"n04275548" : "spider_web",
|
818 |
+
"n04277352" : "spindle",
|
819 |
+
"n04285008" : "sports_car",
|
820 |
+
"n04286575" : "spotlight",
|
821 |
+
"n04296562" : "stage",
|
822 |
+
"n04310018" : "steam_locomotive",
|
823 |
+
"n04311004" : "steel_arch_bridge",
|
824 |
+
"n04311174" : "steel_drum",
|
825 |
+
"n04317175" : "stethoscope",
|
826 |
+
"n04325704" : "stole",
|
827 |
+
"n04326547" : "stone_wall",
|
828 |
+
"n04328186" : "stopwatch",
|
829 |
+
"n04330267" : "stove",
|
830 |
+
"n04332243" : "strainer",
|
831 |
+
"n04335435" : "streetcar",
|
832 |
+
"n04336792" : "stretcher",
|
833 |
+
"n04344873" : "studio_couch",
|
834 |
+
"n04346328" : "stupa",
|
835 |
+
"n04347754" : "submarine",
|
836 |
+
"n04350905" : "suit",
|
837 |
+
"n04355338" : "sundial",
|
838 |
+
"n04355933" : "sunglass",
|
839 |
+
"n04356056" : "sunglasses",
|
840 |
+
"n04357314" : "sunscreen",
|
841 |
+
"n04366367" : "suspension_bridge",
|
842 |
+
"n04367480" : "swab",
|
843 |
+
"n04370456" : "sweatshirt",
|
844 |
+
"n04371430" : "swimming_trunks",
|
845 |
+
"n04371774" : "swing",
|
846 |
+
"n04372370" : "switch",
|
847 |
+
"n04376876" : "syringe",
|
848 |
+
"n04380533" : "table_lamp",
|
849 |
+
"n04389033" : "tank",
|
850 |
+
"n04392985" : "tape_player",
|
851 |
+
"n04398044" : "teapot",
|
852 |
+
"n04399382" : "teddy",
|
853 |
+
"n04404412" : "television",
|
854 |
+
"n04409515" : "tennis_ball",
|
855 |
+
"n04417672" : "thatch",
|
856 |
+
"n04418357" : "theater_curtain",
|
857 |
+
"n04423845" : "thimble",
|
858 |
+
"n04428191" : "thresher",
|
859 |
+
"n04429376" : "throne",
|
860 |
+
"n04435653" : "tile_roof",
|
861 |
+
"n04442312" : "toaster",
|
862 |
+
"n04443257" : "tobacco_shop",
|
863 |
+
"n04447861" : "toilet_seat",
|
864 |
+
"n04456115" : "torch",
|
865 |
+
"n04458633" : "totem_pole",
|
866 |
+
"n04461696" : "tow_truck",
|
867 |
+
"n04462240" : "toyshop",
|
868 |
+
"n04465501" : "tractor",
|
869 |
+
"n04467665" : "trailer_truck",
|
870 |
+
"n04476259" : "tray",
|
871 |
+
"n04479046" : "trench_coat",
|
872 |
+
"n04482393" : "tricycle",
|
873 |
+
"n04483307" : "trimaran",
|
874 |
+
"n04485082" : "tripod",
|
875 |
+
"n04486054" : "triumphal_arch",
|
876 |
+
"n04487081" : "trolleybus",
|
877 |
+
"n04487394" : "trombone",
|
878 |
+
"n04493381" : "tub",
|
879 |
+
"n04501370" : "turnstile",
|
880 |
+
"n04505470" : "typewriter_keyboard",
|
881 |
+
"n04507155" : "umbrella",
|
882 |
+
"n04509417" : "unicycle",
|
883 |
+
"n04515003" : "upright",
|
884 |
+
"n04517823" : "vacuum",
|
885 |
+
"n04522168" : "vase",
|
886 |
+
"n04523525" : "vault",
|
887 |
+
"n04525038" : "velvet",
|
888 |
+
"n04525305" : "vending_machine",
|
889 |
+
"n04532106" : "vestment",
|
890 |
+
"n04532670" : "viaduct",
|
891 |
+
"n04536866" : "violin",
|
892 |
+
"n04540053" : "volleyball",
|
893 |
+
"n04542943" : "waffle_iron",
|
894 |
+
"n04548280" : "wall_clock",
|
895 |
+
"n04548362" : "wallet",
|
896 |
+
"n04550184" : "wardrobe",
|
897 |
+
"n04552348" : "warplane",
|
898 |
+
"n04553703" : "washbasin",
|
899 |
+
"n04554684" : "washer",
|
900 |
+
"n04557648" : "water_bottle",
|
901 |
+
"n04560804" : "water_jug",
|
902 |
+
"n04562935" : "water_tower",
|
903 |
+
"n04579145" : "whiskey_jug",
|
904 |
+
"n04579432" : "whistle",
|
905 |
+
"n04584207" : "wig",
|
906 |
+
"n04589890" : "window_screen",
|
907 |
+
"n04590129" : "window_shade",
|
908 |
+
"n04591157" : "Windsor_tie",
|
909 |
+
"n04591713" : "wine_bottle",
|
910 |
+
"n04592741" : "wing",
|
911 |
+
"n04596742" : "wok",
|
912 |
+
"n04597913" : "wooden_spoon",
|
913 |
+
"n04599235" : "wool",
|
914 |
+
"n04604644" : "worm_fence",
|
915 |
+
"n04606251" : "wreck",
|
916 |
+
"n04612504" : "yawl",
|
917 |
+
"n04613696" : "yurt",
|
918 |
+
"n06359193" : "web_site",
|
919 |
+
"n06596364" : "comic_book",
|
920 |
+
"n06785654" : "crossword_puzzle",
|
921 |
+
"n06794110" : "street_sign",
|
922 |
+
"n06874185" : "traffic_light",
|
923 |
+
"n07248320" : "book_jacket",
|
924 |
+
"n07565083" : "menu",
|
925 |
+
"n07579787" : "plate",
|
926 |
+
"n07583066" : "guacamole",
|
927 |
+
"n07584110" : "consomme",
|
928 |
+
"n07590611" : "hot_pot",
|
929 |
+
"n07613480" : "trifle",
|
930 |
+
"n07614500" : "ice_cream",
|
931 |
+
"n07615774" : "ice_lolly",
|
932 |
+
"n07684084" : "French_loaf",
|
933 |
+
"n07693725" : "bagel",
|
934 |
+
"n07695742" : "pretzel",
|
935 |
+
"n07697313" : "cheeseburger",
|
936 |
+
"n07697537" : "hotdog",
|
937 |
+
"n07711569" : "mashed_potato",
|
938 |
+
"n07714571" : "head_cabbage",
|
939 |
+
"n07714990" : "broccoli",
|
940 |
+
"n07715103" : "cauliflower",
|
941 |
+
"n07716358" : "zucchini",
|
942 |
+
"n07716906" : "spaghetti_squash",
|
943 |
+
"n07717410" : "acorn_squash",
|
944 |
+
"n07717556" : "butternut_squash",
|
945 |
+
"n07718472" : "cucumber",
|
946 |
+
"n07718747" : "artichoke",
|
947 |
+
"n07720875" : "bell_pepper",
|
948 |
+
"n07730033" : "cardoon",
|
949 |
+
"n07734744" : "mushroom",
|
950 |
+
"n07742313" : "Granny_Smith",
|
951 |
+
"n07745940" : "strawberry",
|
952 |
+
"n07747607" : "orange",
|
953 |
+
"n07749582" : "lemon",
|
954 |
+
"n07753113" : "fig",
|
955 |
+
"n07753275" : "pineapple",
|
956 |
+
"n07753592" : "banana",
|
957 |
+
"n07754684" : "jackfruit",
|
958 |
+
"n07760859" : "custard_apple",
|
959 |
+
"n07768694" : "pomegranate",
|
960 |
+
"n07802026" : "hay",
|
961 |
+
"n07831146" : "carbonara",
|
962 |
+
"n07836838" : "chocolate_sauce",
|
963 |
+
"n07860988" : "dough",
|
964 |
+
"n07871810" : "meat_loaf",
|
965 |
+
"n07873807" : "pizza",
|
966 |
+
"n07875152" : "potpie",
|
967 |
+
"n07880968" : "burrito",
|
968 |
+
"n07892512" : "red_wine",
|
969 |
+
"n07920052" : "espresso",
|
970 |
+
"n07930864" : "cup",
|
971 |
+
"n07932039" : "eggnog",
|
972 |
+
"n09193705" : "alp",
|
973 |
+
"n09229709" : "bubble",
|
974 |
+
"n09246464" : "cliff",
|
975 |
+
"n09256479" : "coral_reef",
|
976 |
+
"n09288635" : "geyser",
|
977 |
+
"n09332890" : "lakeside",
|
978 |
+
"n09399592" : "promontory",
|
979 |
+
"n09421951" : "sandbar",
|
980 |
+
"n09428293" : "seashore",
|
981 |
+
"n09468604" : "valley",
|
982 |
+
"n09472597" : "volcano",
|
983 |
+
"n09835506" : "ballplayer",
|
984 |
+
"n10148035" : "groom",
|
985 |
+
"n10565667" : "scuba_diver",
|
986 |
+
"n11879895" : "rapeseed",
|
987 |
+
"n11939491" : "daisy",
|
988 |
+
"n12057211" : "yellow_lady's_slipper",
|
989 |
+
"n12144580" : "corn",
|
990 |
+
"n12267677" : "acorn",
|
991 |
+
"n12620546" : "hip",
|
992 |
+
"n12768682" : "buckeye",
|
993 |
+
"n12985857" : "coral_fungus",
|
994 |
+
"n12998815" : "agaric",
|
995 |
+
"n13037406" : "gyromitra",
|
996 |
+
"n13040303" : "stinkhorn",
|
997 |
+
"n13044778" : "earthstar",
|
998 |
+
"n13052670" : "hen-of-the-woods",
|
999 |
+
"n13054560" : "bolete",
|
1000 |
+
"n13133613" : "ear",
|
1001 |
+
"n15075141" : "toilet_tissu"
|
1002 |
+
}
|