Spaces:
Runtime error
Runtime error
[Init]
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +1 -0
- README.md +0 -12
- app.py +172 -0
- chatbot.py +82 -0
- configs/med_config.json +21 -0
- configs/q2l_config.json +23 -0
- configs/swin/config_swinB_224.json +10 -0
- configs/swin/config_swinB_384.json +10 -0
- configs/swin/config_swinB_480.json +9 -0
- configs/swin/config_swinB_576.json +9 -0
- configs/swin/config_swinB_608.json +9 -0
- configs/tag2text_caption.yaml +33 -0
- data/__pycache__/tag_class.cpython-38.pyc +0 -0
- data/__pycache__/tag_class.cpython-39.pyc +0 -0
- data/tag_class.py +3437 -0
- environment.yaml +288 -0
- images/making_cake.mp4 +0 -0
- images/playing_guitar.mp4 +0 -0
- images/yoga.mp4 +0 -0
- intern_action.py +510 -0
- load_internvideo.py +469 -0
- models/__pycache__/grit_model.cpython-38.pyc +0 -0
- models/__pycache__/grit_model.cpython-39.pyc +0 -0
- models/__pycache__/med.cpython-38.pyc +0 -0
- models/__pycache__/med.cpython-39.pyc +0 -0
- models/__pycache__/swin_transformer.cpython-38.pyc +0 -0
- models/__pycache__/swin_transformer.cpython-39.pyc +0 -0
- models/__pycache__/tag2text.cpython-38.pyc +0 -0
- models/__pycache__/tag2text.cpython-39.pyc +0 -0
- models/__pycache__/vit.cpython-38.pyc +0 -0
- models/__pycache__/vit.cpython-39.pyc +0 -0
- models/grit_model.py +46 -0
- models/grit_src/__pycache__/image_dense_captions.cpython-38.pyc +0 -0
- models/grit_src/__pycache__/image_dense_captions.cpython-39.pyc +0 -0
- models/grit_src/configs/Base.yaml +77 -0
- models/grit_src/configs/GRiT_B_DenseCap.yaml +20 -0
- models/grit_src/configs/GRiT_B_DenseCap_ObjectDet.yaml +23 -0
- models/grit_src/configs/GRiT_B_ObjectDet.yaml +20 -0
- models/grit_src/configs/GRiT_H_ObjectDet.yaml +21 -0
- models/grit_src/configs/GRiT_L_ObjectDet.yaml +20 -0
- models/grit_src/grit/__init__.py +7 -0
- models/grit_src/grit/__pycache__/__init__.cpython-38.pyc +0 -0
- models/grit_src/grit/__pycache__/__init__.cpython-39.pyc +0 -0
- models/grit_src/grit/__pycache__/config.cpython-38.pyc +0 -0
- models/grit_src/grit/__pycache__/config.cpython-39.pyc +0 -0
- models/grit_src/grit/__pycache__/predictor.cpython-38.pyc +0 -0
- models/grit_src/grit/__pycache__/predictor.cpython-39.pyc +0 -0
- models/grit_src/grit/config.py +50 -0
- models/grit_src/grit/custom_solver.py +88 -0
- models/grit_src/grit/data/__pycache__/custom_build_augmentation.cpython-38.pyc +0 -0
.gitattributes
CHANGED
@@ -31,4 +31,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
31 |
*.xz filter=lfs diff=lfs merge=lfs -text
|
32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
|
|
34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
31 |
*.xz filter=lfs diff=lfs merge=lfs -text
|
32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
---
|
2 |
-
title: AskAnything
|
3 |
-
emoji: 📚
|
4 |
-
colorFrom: blue
|
5 |
-
colorTo: gray
|
6 |
-
sdk: gradio
|
7 |
-
sdk_version: 3.27.0
|
8 |
-
app_file: app.py
|
9 |
-
pinned: false
|
10 |
-
---
|
11 |
-
|
12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import numpy as np
|
3 |
+
import random
|
4 |
+
import torch
|
5 |
+
import torchvision.transforms as transforms
|
6 |
+
from PIL import Image
|
7 |
+
from models.tag2text import tag2text_caption
|
8 |
+
from util import *
|
9 |
+
import gradio as gr
|
10 |
+
from chatbot_lv import *
|
11 |
+
from load_internvideo import *
|
12 |
+
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
13 |
+
from simplet5 import SimpleT5
|
14 |
+
from models.grit_model import DenseCaptioning
|
15 |
+
bot = ConversationBot()
|
16 |
+
image_size = 384
|
17 |
+
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
|
18 |
+
std=[0.229, 0.224, 0.225])
|
19 |
+
transform = transforms.Compose([transforms.ToPILImage(),transforms.Resize((image_size, image_size)),transforms.ToTensor(),normalize])
|
20 |
+
|
21 |
+
|
22 |
+
# define model
|
23 |
+
model = tag2text_caption(pretrained="pretrained_models/tag2text_swin_14m.pth", image_size=image_size, vit='swin_b' )
|
24 |
+
model.eval()
|
25 |
+
model = model.to(device)
|
26 |
+
print("[INFO] initialize caption model success!")
|
27 |
+
|
28 |
+
model_T5 = SimpleT5()
|
29 |
+
if torch.cuda.is_available():
|
30 |
+
model_T5.load_model(
|
31 |
+
"t5", "./pretrained_models/flan-t5-large-finetuned-openai-summarize_from_feedback", use_gpu=True)
|
32 |
+
else:
|
33 |
+
model_T5.load_model(
|
34 |
+
"t5", "./pretrained_models/flan-t5-large-finetuned-openai-summarize_from_feedback", use_gpu=False)
|
35 |
+
print("[INFO] initialize summarize model success!")
|
36 |
+
# action recognition
|
37 |
+
intern_action = load_intern_action(device)
|
38 |
+
trans_action = transform_action()
|
39 |
+
topil = T.ToPILImage()
|
40 |
+
print("[INFO] initialize InternVideo model success!")
|
41 |
+
|
42 |
+
dense_caption_model = DenseCaptioning(device)
|
43 |
+
dense_caption_model.initialize_model()
|
44 |
+
print("[INFO] initialize dense caption model success!")
|
45 |
+
|
46 |
+
def inference(video_path, input_tag, progress=gr.Progress()):
|
47 |
+
video_data = loadvideo_decord_origin(video_path)
|
48 |
+
prediction_list, frame_caption_list, dense_caption_list, tag_1, tag_2 = [],[],[],set(),set()
|
49 |
+
# split video every 60s
|
50 |
+
for start in progress.tqdm(range(0,len(video_data),60)):
|
51 |
+
data = video_data[start:start+60,...]
|
52 |
+
# InternVideo
|
53 |
+
action_index = np.linspace(0, len(data)-1, 8).astype(int)
|
54 |
+
tmp,tmpa = [],[]
|
55 |
+
for i,img in enumerate(data):
|
56 |
+
tmp.append(transform(img).to(device).unsqueeze(0))
|
57 |
+
if i in action_index:
|
58 |
+
tmpa.append(topil(img))
|
59 |
+
action_tensor = trans_action(tmpa)
|
60 |
+
TC, H, W = action_tensor.shape
|
61 |
+
action_tensor = action_tensor.reshape(1, TC//3, 3, H, W).permute(0, 2, 1, 3, 4).to(device)
|
62 |
+
with torch.no_grad():
|
63 |
+
prediction = intern_action(action_tensor)
|
64 |
+
prediction = F.softmax(prediction, dim=1).flatten()
|
65 |
+
prediction = kinetics_classnames[str(int(prediction.argmax()))]
|
66 |
+
prediction_list.append(prediction)
|
67 |
+
|
68 |
+
# dense caption
|
69 |
+
dense_caption = []
|
70 |
+
dense_index = np.arange(0, len(data)-1, 5)
|
71 |
+
original_images = data[dense_index,:,:,::-1]
|
72 |
+
with torch.no_grad():
|
73 |
+
for idx,original_image in zip(dense_index,original_images):
|
74 |
+
dense_caption.append((idx+start,dense_caption_model.run_caption_tensor(original_image)))
|
75 |
+
|
76 |
+
|
77 |
+
# Video Caption
|
78 |
+
image = torch.cat(tmp).to(device)
|
79 |
+
|
80 |
+
model.threshold = 0.68
|
81 |
+
if input_tag == '' or input_tag == 'none' or input_tag == 'None':
|
82 |
+
input_tag_list = None
|
83 |
+
else:
|
84 |
+
input_tag_list = []
|
85 |
+
input_tag_list.append(input_tag.replace(',',' | '))
|
86 |
+
with torch.no_grad():
|
87 |
+
caption, tag_predict = model.generate(image,tag_input = input_tag_list,max_length = 50, return_tag_predict = True)
|
88 |
+
tag_1.update(tag_predict)
|
89 |
+
tag_2 = ['none']
|
90 |
+
#print(frame_caption, dense_caption, synth_caption)
|
91 |
+
frame_caption_list.extend(caption)
|
92 |
+
dense_caption_list.extend(dense_caption)
|
93 |
+
synth_caption = model_T5.predict('. '.join(caption))
|
94 |
+
frame_caption = ' '.join([f"Second {i+1}:{j}.\n" for i,j in enumerate(frame_caption_list)])
|
95 |
+
dense_caption = ' '.join([f"Second {i+1} : {j}.\n" for (i,j) in dense_caption_list])
|
96 |
+
del data, action_tensor, original_image, image,tmp,tmpa
|
97 |
+
torch.cuda.empty_cache()
|
98 |
+
torch.cuda.ipc_collect()
|
99 |
+
|
100 |
+
return ' | '.join(tag_1),' | '.join(tag_2), frame_caption, dense_caption, synth_caption[0], gr.update(interactive = True), ','.join(set(prediction_list))
|
101 |
+
|
102 |
+
def set_example_video(example: list) -> dict:
|
103 |
+
return gr.Video.update(value=example[0])
|
104 |
+
|
105 |
+
|
106 |
+
with gr.Blocks(css="#chatbot {overflow:auto; height:500px;}") as demo:
|
107 |
+
gr.Markdown("<h1><center>Ask Anything with GPT</center></h1>")
|
108 |
+
gr.Markdown(
|
109 |
+
"""
|
110 |
+
Ask-Anything is a multifunctional video question answering tool that combines the functions of Action Recognition, Visual Captioning and ChatGPT. Our solution generates dense, descriptive captions for any object and action in a video, offering a range of language styles to suit different user preferences. It supports users to have conversations in different lengths, emotions, authenticity of language.<br>
|
111 |
+
<p><a href='https://github.com/OpenGVLab/Ask-Anything'><img src='https://img.shields.io/badge/Github-Code-blue'></a></p><p>
|
112 |
+
"""
|
113 |
+
)
|
114 |
+
|
115 |
+
with gr.Row():
|
116 |
+
with gr.Column():
|
117 |
+
input_video_path = gr.inputs.Video(label="Input Video")
|
118 |
+
input_tag = gr.Textbox(lines=1, label="User Prompt (Optional, Enter with commas)",visible=False)
|
119 |
+
|
120 |
+
with gr.Row():
|
121 |
+
with gr.Column(sclae=0.3, min_width=0):
|
122 |
+
caption = gr.Button("✍ Upload")
|
123 |
+
chat_video = gr.Button(" 🎥 Let's Chat! ", interactive=False)
|
124 |
+
with gr.Column(scale=0.7, min_width=0):
|
125 |
+
loadinglabel = gr.Label(label="State")
|
126 |
+
with gr.Column():
|
127 |
+
openai_api_key_textbox = gr.Textbox(
|
128 |
+
value=os.environ["OPENAI_API_KEY"],
|
129 |
+
placeholder="Paste your OpenAI API key here to start (sk-...)",
|
130 |
+
show_label=False,
|
131 |
+
lines=1,
|
132 |
+
type="password",
|
133 |
+
)
|
134 |
+
chatbot = gr.Chatbot(elem_id="chatbot", label="Chat_with_GPT")
|
135 |
+
state = gr.State([])
|
136 |
+
user_tag_output = gr.State("")
|
137 |
+
image_caption_output = gr.State("")
|
138 |
+
video_caption_output = gr.State("")
|
139 |
+
model_tag_output = gr.State("")
|
140 |
+
dense_caption_output = gr.State("")
|
141 |
+
with gr.Row(visible=False) as input_raws:
|
142 |
+
with gr.Column(scale=0.8):
|
143 |
+
txt = gr.Textbox(show_label=False, placeholder="Enter text and press enter").style(container=False)
|
144 |
+
with gr.Column(scale=0.10, min_width=0):
|
145 |
+
run = gr.Button("🏃♂️Run")
|
146 |
+
with gr.Column(scale=0.10, min_width=0):
|
147 |
+
clear = gr.Button("🔄Clear️")
|
148 |
+
|
149 |
+
with gr.Row():
|
150 |
+
example_videos = gr.Dataset(components=[input_video_path], samples=[['images/yoga.mp4'], ['images/making_cake.mp4'], ['images/playing_guitar.mp4']])
|
151 |
+
|
152 |
+
example_videos.click(fn=set_example_video, inputs=example_videos, outputs=example_videos.components)
|
153 |
+
caption.click(bot.memory.clear)
|
154 |
+
caption.click(lambda: gr.update(interactive = False), None, chat_video)
|
155 |
+
caption.click(lambda: [], None, chatbot)
|
156 |
+
caption.click(lambda: [], None, state)
|
157 |
+
caption.click(inference,[input_video_path,input_tag],[model_tag_output, user_tag_output, image_caption_output, dense_caption_output,video_caption_output, chat_video, loadinglabel])
|
158 |
+
|
159 |
+
chat_video.click(bot.init_agent, [openai_api_key_textbox, image_caption_output, dense_caption_output, video_caption_output, model_tag_output, state], [input_raws,chatbot, state, openai_api_key_textbox])
|
160 |
+
|
161 |
+
txt.submit(bot.run_text, [txt, state], [chatbot, state])
|
162 |
+
txt.submit(lambda: "", None, txt)
|
163 |
+
run.click(bot.run_text, [txt, state], [chatbot, state])
|
164 |
+
run.click(lambda: "", None, txt)
|
165 |
+
|
166 |
+
clear.click(bot.memory.clear)
|
167 |
+
clear.click(lambda: [], None, chatbot)
|
168 |
+
clear.click(lambda: [], None, state)
|
169 |
+
|
170 |
+
|
171 |
+
|
172 |
+
demo.launch(server_name="0.0.0.0",enable_queue=True,)#share=True)
|
chatbot.py
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain.agents.initialize import initialize_agent
|
2 |
+
from langchain.agents.tools import Tool
|
3 |
+
from langchain.chains.conversation.memory import ConversationBufferMemory
|
4 |
+
from langchain.llms.openai import OpenAI
|
5 |
+
import re
|
6 |
+
import gradio as gr
|
7 |
+
import openai
|
8 |
+
|
9 |
+
def cut_dialogue_history(history_memory, keep_last_n_words=400):
|
10 |
+
if history_memory is None or len(history_memory) == 0:
|
11 |
+
return history_memory
|
12 |
+
tokens = history_memory.split()
|
13 |
+
n_tokens = len(tokens)
|
14 |
+
print(f"history_memory:{history_memory}, n_tokens: {n_tokens}")
|
15 |
+
if n_tokens < keep_last_n_words:
|
16 |
+
return history_memory
|
17 |
+
paragraphs = history_memory.split('\n')
|
18 |
+
last_n_tokens = n_tokens
|
19 |
+
while last_n_tokens >= keep_last_n_words:
|
20 |
+
last_n_tokens -= len(paragraphs[0].split(' '))
|
21 |
+
paragraphs = paragraphs[1:]
|
22 |
+
return '\n' + '\n'.join(paragraphs)
|
23 |
+
|
24 |
+
|
25 |
+
class ConversationBot:
|
26 |
+
def __init__(self):
|
27 |
+
self.memory = ConversationBufferMemory(memory_key="chat_history", output_key='output')
|
28 |
+
self.tools = []
|
29 |
+
|
30 |
+
def run_text(self, text, state):
|
31 |
+
self.agent.memory.buffer = cut_dialogue_history(self.agent.memory.buffer, keep_last_n_words=500)
|
32 |
+
res = self.agent({"input": text.strip()})
|
33 |
+
res['output'] = res['output'].replace("\\", "/")
|
34 |
+
response = res['output'] #re.sub('(image/\S*png)', lambda m: f'![](/file={m.group(0)})*{m.group(0)}*', res['output'])
|
35 |
+
state = state + [(text, response)]
|
36 |
+
print(f"\nProcessed run_text, Input text: {text}\nCurrent state: {state}\n"
|
37 |
+
f"Current Memory: {self.agent.memory.buffer}")
|
38 |
+
return state, state
|
39 |
+
|
40 |
+
|
41 |
+
def init_agent(self, openai_api_key, image_caption, dense_caption, video_caption, tags, state):
|
42 |
+
chat_history =''
|
43 |
+
PREFIX = "ChatVideo is a chatbot that chats with you based on video descriptions."
|
44 |
+
FORMAT_INSTRUCTIONS = """
|
45 |
+
When you have a response to say to the Human, you MUST use the format:
|
46 |
+
```
|
47 |
+
{ai_prefix}: [your response here]
|
48 |
+
```
|
49 |
+
"""
|
50 |
+
SUFFIX = f"""You are a chatbot that conducts conversations based on video descriptions. You mainly answer based on the given video description, and you can also modify the content according to the tag information, and you can also answer the relevant knowledge of the person or object contained in the video. But you don't create a video plot out of nothing.
|
51 |
+
|
52 |
+
Begin!
|
53 |
+
|
54 |
+
Video tags are: {tags}
|
55 |
+
|
56 |
+
The frame description of the video is: {image_caption}
|
57 |
+
|
58 |
+
The dense caption of the video is: {dense_caption}
|
59 |
+
|
60 |
+
The general description of the video is: {video_caption}"""+"""Previous conversation history {chat_history}
|
61 |
+
|
62 |
+
New input: {input}
|
63 |
+
|
64 |
+
{agent_scratchpad}
|
65 |
+
"""
|
66 |
+
self.memory.clear()
|
67 |
+
|
68 |
+
self.llm = OpenAI(temperature=0, openai_api_key=openai_api_key)
|
69 |
+
self.agent = initialize_agent(
|
70 |
+
self.tools,
|
71 |
+
self.llm,
|
72 |
+
agent="conversational-react-description",
|
73 |
+
verbose=True,
|
74 |
+
memory=self.memory,
|
75 |
+
return_intermediate_steps=True,
|
76 |
+
agent_kwargs={'prefix': PREFIX, 'format_instructions': FORMAT_INSTRUCTIONS, 'suffix': SUFFIX}, )
|
77 |
+
state = state + [("I upload a video, Please watch it first! ","I have watch this video, Let's chat!")]
|
78 |
+
return gr.update(visible = True),state, state
|
79 |
+
|
80 |
+
if __name__=="__main__":
|
81 |
+
import pdb
|
82 |
+
pdb.set_trace()
|
configs/med_config.json
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"architectures": [
|
3 |
+
"BertModel"
|
4 |
+
],
|
5 |
+
"attention_probs_dropout_prob": 0.1,
|
6 |
+
"hidden_act": "gelu",
|
7 |
+
"hidden_dropout_prob": 0.1,
|
8 |
+
"hidden_size": 768,
|
9 |
+
"initializer_range": 0.02,
|
10 |
+
"intermediate_size": 3072,
|
11 |
+
"layer_norm_eps": 1e-12,
|
12 |
+
"max_position_embeddings": 512,
|
13 |
+
"model_type": "bert",
|
14 |
+
"num_attention_heads": 12,
|
15 |
+
"num_hidden_layers": 12,
|
16 |
+
"pad_token_id": 0,
|
17 |
+
"type_vocab_size": 2,
|
18 |
+
"vocab_size": 30524,
|
19 |
+
"encoder_width": 768,
|
20 |
+
"add_cross_attention": true
|
21 |
+
}
|
configs/q2l_config.json
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"architectures": [
|
3 |
+
"BertModel"
|
4 |
+
],
|
5 |
+
"attention_probs_dropout_prob": 0.1,
|
6 |
+
"hidden_act": "gelu",
|
7 |
+
"hidden_dropout_prob": 0.1,
|
8 |
+
"hidden_size": 768,
|
9 |
+
"initializer_range": 0.02,
|
10 |
+
"intermediate_size": 3072,
|
11 |
+
"layer_norm_eps": 1e-12,
|
12 |
+
"max_position_embeddings": 512,
|
13 |
+
"model_type": "bert",
|
14 |
+
"num_attention_heads": 4,
|
15 |
+
"num_hidden_layers": 2,
|
16 |
+
"pad_token_id": 0,
|
17 |
+
"type_vocab_size": 2,
|
18 |
+
"vocab_size": 30522,
|
19 |
+
"encoder_width": 768,
|
20 |
+
"add_cross_attention": true,
|
21 |
+
"add_tag_cross_attention": false
|
22 |
+
}
|
23 |
+
|
configs/swin/config_swinB_224.json
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ckpt": "pretrain_model/swin_base_patch4_window7_224_22k.pth",
|
3 |
+
"vision_width": 1024,
|
4 |
+
"image_res": 224,
|
5 |
+
"window_size": 7,
|
6 |
+
"embed_dim": 128,
|
7 |
+
"depths": [ 2, 2, 18, 2 ],
|
8 |
+
"num_heads": [ 4, 8, 16, 32 ]
|
9 |
+
}
|
10 |
+
|
configs/swin/config_swinB_384.json
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ckpt": "pretrain_model/swin_base_patch4_window7_224_22k.pth",
|
3 |
+
"vision_width": 1024,
|
4 |
+
"image_res": 384,
|
5 |
+
"window_size": 12,
|
6 |
+
"embed_dim": 128,
|
7 |
+
"depths": [ 2, 2, 18, 2 ],
|
8 |
+
"num_heads": [ 4, 8, 16, 32 ]
|
9 |
+
}
|
10 |
+
|
configs/swin/config_swinB_480.json
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ckpt": "pretrain_model/swin_base_patch4_window7_224_22k.pth",
|
3 |
+
"vision_width": 1024,
|
4 |
+
"image_res": 480,
|
5 |
+
"window_size": 15,
|
6 |
+
"embed_dim": 128,
|
7 |
+
"depths": [ 2, 2, 18, 2 ],
|
8 |
+
"num_heads": [ 4, 8, 16, 32 ]
|
9 |
+
}
|
configs/swin/config_swinB_576.json
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ckpt": "pretrain_model/swin_base_patch4_window7_224_22k.pth",
|
3 |
+
"vision_width": 1024,
|
4 |
+
"image_res": 576,
|
5 |
+
"window_size": 18,
|
6 |
+
"embed_dim": 128,
|
7 |
+
"depths": [ 2, 2, 18, 2 ],
|
8 |
+
"num_heads": [ 4, 8, 16, 32 ]
|
9 |
+
}
|
configs/swin/config_swinB_608.json
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ckpt": "pretrain_model/swin_base_patch4_window7_224_22k.pth",
|
3 |
+
"vision_width": 1024,
|
4 |
+
"image_res": 608,
|
5 |
+
"window_size": 19,
|
6 |
+
"embed_dim": 128,
|
7 |
+
"depths": [ 2, 2, 18, 2 ],
|
8 |
+
"num_heads": [ 4, 8, 16, 32 ]
|
9 |
+
}
|
configs/tag2text_caption.yaml
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
image_root: '/home/notebook/data/group/projects/tagging/caption/datasets/public/coco/'
|
2 |
+
|
3 |
+
ann_root: 'dataset/caption_dataset'
|
4 |
+
coco_gt_root: 'dataset/caption_dataset'
|
5 |
+
|
6 |
+
pretrained: '/home/notebook/code/personal/S9049611/BLIP/output/pretrain_caption_tagtotext_v2_bert_asl'
|
7 |
+
|
8 |
+
# size of vit model; base or large
|
9 |
+
vit: 'swin_b'
|
10 |
+
vit_grad_ckpt: False
|
11 |
+
vit_ckpt_layer: 0
|
12 |
+
|
13 |
+
batch_size: 35
|
14 |
+
init_lr: 5e-6
|
15 |
+
|
16 |
+
image_size: 384
|
17 |
+
|
18 |
+
# generation configs
|
19 |
+
max_length: 20
|
20 |
+
min_length: 5
|
21 |
+
num_beams: 3
|
22 |
+
prompt: 'a picture of '
|
23 |
+
|
24 |
+
# optimizer
|
25 |
+
weight_decay: 0.05
|
26 |
+
min_lr: 0
|
27 |
+
max_epoch: 10
|
28 |
+
|
29 |
+
text_pretrain: 'bert'
|
30 |
+
|
31 |
+
class_num: 3429
|
32 |
+
threshold: 0.7
|
33 |
+
|
data/__pycache__/tag_class.cpython-38.pyc
ADDED
Binary file (52.1 kB). View file
|
|
data/__pycache__/tag_class.cpython-39.pyc
ADDED
Binary file (32.6 kB). View file
|
|
data/tag_class.py
ADDED
@@ -0,0 +1,3437 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
|
3 |
+
|
4 |
+
tra_array = ['tennis',
|
5 |
+
'bear cub',
|
6 |
+
'observatory',
|
7 |
+
'bicycle',
|
8 |
+
'hillside',
|
9 |
+
'judge',
|
10 |
+
'watercolor illustration',
|
11 |
+
'granite',
|
12 |
+
'lobster',
|
13 |
+
'livery',
|
14 |
+
'stone',
|
15 |
+
'ceramic',
|
16 |
+
'ranch',
|
17 |
+
'cloth',
|
18 |
+
'smile',
|
19 |
+
'building',
|
20 |
+
'tattoo',
|
21 |
+
'cricketer',
|
22 |
+
'cheek',
|
23 |
+
'pear',
|
24 |
+
'source',
|
25 |
+
'winter',
|
26 |
+
'surface',
|
27 |
+
'spray',
|
28 |
+
'ceremony',
|
29 |
+
'magic',
|
30 |
+
'curve',
|
31 |
+
'container',
|
32 |
+
'fair',
|
33 |
+
'medicine',
|
34 |
+
'baby',
|
35 |
+
'tennis racquet',
|
36 |
+
'ornament',
|
37 |
+
'bamboo',
|
38 |
+
'duckling',
|
39 |
+
'song',
|
40 |
+
'safari',
|
41 |
+
'team presentation',
|
42 |
+
'daffodil',
|
43 |
+
'cross',
|
44 |
+
'toothpaste',
|
45 |
+
'shield',
|
46 |
+
'fashion model',
|
47 |
+
'capsule',
|
48 |
+
'map',
|
49 |
+
'creek',
|
50 |
+
'glass house',
|
51 |
+
'glass plate',
|
52 |
+
'siding',
|
53 |
+
'corner',
|
54 |
+
'water buffalo',
|
55 |
+
'bison',
|
56 |
+
'figure skater',
|
57 |
+
'diploma',
|
58 |
+
'tire',
|
59 |
+
'race',
|
60 |
+
'cable car',
|
61 |
+
'brain',
|
62 |
+
'gas stove',
|
63 |
+
'soap bubble',
|
64 |
+
'palette',
|
65 |
+
'snowboard',
|
66 |
+
'school child',
|
67 |
+
'trench coat',
|
68 |
+
'monk',
|
69 |
+
'fiber',
|
70 |
+
'kitchen window',
|
71 |
+
'sunglass',
|
72 |
+
'coffee',
|
73 |
+
'security',
|
74 |
+
'strawberry',
|
75 |
+
'penguin',
|
76 |
+
'tree root',
|
77 |
+
'loaf',
|
78 |
+
'engagement ring',
|
79 |
+
'lamb',
|
80 |
+
'vector cartoon illustration',
|
81 |
+
'sandwich',
|
82 |
+
'mountain village',
|
83 |
+
'shape',
|
84 |
+
'charm',
|
85 |
+
'fiction',
|
86 |
+
'knot',
|
87 |
+
'greenhouse',
|
88 |
+
'sushi',
|
89 |
+
'text',
|
90 |
+
'disaster',
|
91 |
+
'trophy',
|
92 |
+
'gang',
|
93 |
+
'strap',
|
94 |
+
'soccer game',
|
95 |
+
'cardinal',
|
96 |
+
'tee',
|
97 |
+
'turtle',
|
98 |
+
'water surface',
|
99 |
+
'grassland',
|
100 |
+
'dolphin',
|
101 |
+
'store',
|
102 |
+
'dirt',
|
103 |
+
'iceberg',
|
104 |
+
'pergola',
|
105 |
+
'farmer market',
|
106 |
+
'publicity portrait',
|
107 |
+
'tote bag',
|
108 |
+
'teenage girl',
|
109 |
+
'view mirror',
|
110 |
+
'session',
|
111 |
+
'commuter',
|
112 |
+
'dressing room',
|
113 |
+
'tricycle',
|
114 |
+
'christmas ball',
|
115 |
+
'headlight',
|
116 |
+
'police',
|
117 |
+
'armchair',
|
118 |
+
'chart',
|
119 |
+
'yacht',
|
120 |
+
'saw',
|
121 |
+
'printer',
|
122 |
+
'rock band',
|
123 |
+
'gingerbread house',
|
124 |
+
'tag',
|
125 |
+
'table lamp',
|
126 |
+
'hockey game',
|
127 |
+
'slope',
|
128 |
+
'font',
|
129 |
+
'wicker basket',
|
130 |
+
'jewelry',
|
131 |
+
'quarter',
|
132 |
+
'software',
|
133 |
+
'weapon',
|
134 |
+
'pin',
|
135 |
+
'worship',
|
136 |
+
'painter',
|
137 |
+
'goal',
|
138 |
+
'morning light',
|
139 |
+
'bike',
|
140 |
+
'baseball bat',
|
141 |
+
'elevator',
|
142 |
+
'cuisine',
|
143 |
+
'sausage',
|
144 |
+
'stunt',
|
145 |
+
'wrestler',
|
146 |
+
'statue',
|
147 |
+
'landing',
|
148 |
+
'pillar',
|
149 |
+
'willow tree',
|
150 |
+
'sea wave',
|
151 |
+
'chicken',
|
152 |
+
'peanut',
|
153 |
+
'muscle',
|
154 |
+
'bob',
|
155 |
+
'tv genre',
|
156 |
+
'bathroom window',
|
157 |
+
'radish',
|
158 |
+
'textile',
|
159 |
+
'pelican',
|
160 |
+
'marketplace',
|
161 |
+
'crest',
|
162 |
+
'elevation map',
|
163 |
+
'gift',
|
164 |
+
'parish',
|
165 |
+
'traffic light',
|
166 |
+
'campfire',
|
167 |
+
'fog',
|
168 |
+
'award winner',
|
169 |
+
'beach ball',
|
170 |
+
'mat',
|
171 |
+
'white house',
|
172 |
+
'plaster',
|
173 |
+
'moped',
|
174 |
+
'football team',
|
175 |
+
'solution',
|
176 |
+
'bicyclist',
|
177 |
+
'bit',
|
178 |
+
'playground',
|
179 |
+
'darkness',
|
180 |
+
'cake',
|
181 |
+
'maple leave',
|
182 |
+
'mold',
|
183 |
+
'cracker',
|
184 |
+
'blueberry',
|
185 |
+
'rubble',
|
186 |
+
'container ship',
|
187 |
+
'pedestrian bridge',
|
188 |
+
'snail',
|
189 |
+
'parrot',
|
190 |
+
'form',
|
191 |
+
'circuit',
|
192 |
+
'highlight',
|
193 |
+
'pickup truck',
|
194 |
+
'koala',
|
195 |
+
'rain',
|
196 |
+
'system',
|
197 |
+
'weather',
|
198 |
+
'raincoat',
|
199 |
+
'soccer team',
|
200 |
+
'windshield',
|
201 |
+
'thunderstorm',
|
202 |
+
'mike',
|
203 |
+
'bird house',
|
204 |
+
'bridge',
|
205 |
+
'grandfather',
|
206 |
+
'restroom',
|
207 |
+
'animation',
|
208 |
+
'wilderness',
|
209 |
+
'clown',
|
210 |
+
'banana',
|
211 |
+
'brown',
|
212 |
+
'braid',
|
213 |
+
'dining room',
|
214 |
+
'kindergarten',
|
215 |
+
'launch event',
|
216 |
+
'purple',
|
217 |
+
'school',
|
218 |
+
'stairwell',
|
219 |
+
'brooch',
|
220 |
+
'movie poster image',
|
221 |
+
'mountain river',
|
222 |
+
'shelf',
|
223 |
+
'wicket',
|
224 |
+
'headboard',
|
225 |
+
'buddha',
|
226 |
+
'flower field',
|
227 |
+
'dugout',
|
228 |
+
'cd',
|
229 |
+
'bald eagle',
|
230 |
+
'lagoon',
|
231 |
+
'seaweed',
|
232 |
+
'agriculture',
|
233 |
+
'emergency service',
|
234 |
+
'maple tree',
|
235 |
+
'parachute',
|
236 |
+
'continent',
|
237 |
+
'amusement park',
|
238 |
+
'remote',
|
239 |
+
'bun',
|
240 |
+
'tackle',
|
241 |
+
'hospital',
|
242 |
+
'garage door',
|
243 |
+
'birthday party',
|
244 |
+
'friendship',
|
245 |
+
'go',
|
246 |
+
'mausoleum',
|
247 |
+
'jeep',
|
248 |
+
'raccoon',
|
249 |
+
'step',
|
250 |
+
'ice hockey team',
|
251 |
+
'cigarette',
|
252 |
+
'lace dress',
|
253 |
+
'forest floor',
|
254 |
+
'mall',
|
255 |
+
'captain',
|
256 |
+
'milk',
|
257 |
+
'golf course',
|
258 |
+
'meal',
|
259 |
+
'picnic table',
|
260 |
+
'sail',
|
261 |
+
'volleyball',
|
262 |
+
'canal',
|
263 |
+
'terrace',
|
264 |
+
'computer desk',
|
265 |
+
'caravan',
|
266 |
+
'hotel',
|
267 |
+
'cheerleader',
|
268 |
+
'nurse',
|
269 |
+
'museum',
|
270 |
+
'marsh',
|
271 |
+
'fox',
|
272 |
+
'plateau',
|
273 |
+
'night',
|
274 |
+
'twin',
|
275 |
+
'letter logo',
|
276 |
+
'autumn tree',
|
277 |
+
'powder',
|
278 |
+
'convention',
|
279 |
+
'creature',
|
280 |
+
'lighthouse',
|
281 |
+
'shop window',
|
282 |
+
'jacket',
|
283 |
+
'stork',
|
284 |
+
'taxi',
|
285 |
+
'trade',
|
286 |
+
'blackboard',
|
287 |
+
'olive',
|
288 |
+
'road sign',
|
289 |
+
'resort',
|
290 |
+
'snowflake',
|
291 |
+
'cemetery',
|
292 |
+
'travel',
|
293 |
+
'evening dress',
|
294 |
+
'picnic',
|
295 |
+
'drink',
|
296 |
+
'winter morning',
|
297 |
+
'football player',
|
298 |
+
'snack',
|
299 |
+
'boxing glove',
|
300 |
+
'dinner party',
|
301 |
+
'airline',
|
302 |
+
'swing',
|
303 |
+
'port',
|
304 |
+
'wheelbarrow',
|
305 |
+
'bathroom sink',
|
306 |
+
'sweater',
|
307 |
+
'ambulance',
|
308 |
+
'gear',
|
309 |
+
'oil',
|
310 |
+
'wii controller',
|
311 |
+
'array',
|
312 |
+
'home office',
|
313 |
+
'car show',
|
314 |
+
'mixture',
|
315 |
+
'profession',
|
316 |
+
'tree frog',
|
317 |
+
'square',
|
318 |
+
'facility',
|
319 |
+
'coral reef',
|
320 |
+
'sea wall',
|
321 |
+
'pizza',
|
322 |
+
'exhibit',
|
323 |
+
'demolition',
|
324 |
+
'trout',
|
325 |
+
'ring',
|
326 |
+
'coffee shop',
|
327 |
+
'bracelet',
|
328 |
+
'bean',
|
329 |
+
'lip',
|
330 |
+
'fencing',
|
331 |
+
'landscape',
|
332 |
+
'sitting',
|
333 |
+
'package',
|
334 |
+
'metal',
|
335 |
+
'bust',
|
336 |
+
'king',
|
337 |
+
'hair',
|
338 |
+
'window seat',
|
339 |
+
'wildlife',
|
340 |
+
'trunk',
|
341 |
+
'greenery',
|
342 |
+
'stencil',
|
343 |
+
'fire hydrant',
|
344 |
+
'bridesmaid',
|
345 |
+
'plaza',
|
346 |
+
'alps',
|
347 |
+
'tower bridge',
|
348 |
+
'crop top',
|
349 |
+
'crossing',
|
350 |
+
'cinema',
|
351 |
+
'pedestrian crossing',
|
352 |
+
'family',
|
353 |
+
'shopping cart',
|
354 |
+
'stomach',
|
355 |
+
'church building',
|
356 |
+
'screen door',
|
357 |
+
'skater',
|
358 |
+
'soccer field',
|
359 |
+
'kettle',
|
360 |
+
'mussel',
|
361 |
+
'raindrop',
|
362 |
+
'candy cane',
|
363 |
+
'water lily',
|
364 |
+
'flower girl',
|
365 |
+
'desert',
|
366 |
+
'enclosure',
|
367 |
+
'christmas light',
|
368 |
+
'kitchen',
|
369 |
+
'caterpillar',
|
370 |
+
'plaid',
|
371 |
+
'bath',
|
372 |
+
'bush',
|
373 |
+
'mud',
|
374 |
+
'ballet',
|
375 |
+
'knee',
|
376 |
+
'adult',
|
377 |
+
'raft',
|
378 |
+
'sea view',
|
379 |
+
'cactus',
|
380 |
+
'office chair',
|
381 |
+
'overall',
|
382 |
+
'rim',
|
383 |
+
'scaffolding',
|
384 |
+
'pig',
|
385 |
+
'cover',
|
386 |
+
'poster page',
|
387 |
+
'sprinkle',
|
388 |
+
'chandelier',
|
389 |
+
'algae',
|
390 |
+
'traffic',
|
391 |
+
'surfboard',
|
392 |
+
'book',
|
393 |
+
'filming',
|
394 |
+
'flash',
|
395 |
+
'mansion',
|
396 |
+
'camouflage',
|
397 |
+
'trouser',
|
398 |
+
'ticket',
|
399 |
+
'weed',
|
400 |
+
'cab',
|
401 |
+
'trench',
|
402 |
+
'elephant',
|
403 |
+
'huddle',
|
404 |
+
'sphere',
|
405 |
+
'christmas decoration',
|
406 |
+
'city',
|
407 |
+
'launch',
|
408 |
+
'doll',
|
409 |
+
'christmas ornament',
|
410 |
+
'fabric',
|
411 |
+
'bikini',
|
412 |
+
'biplane',
|
413 |
+
'breakfast',
|
414 |
+
'neighbourhood',
|
415 |
+
'race track',
|
416 |
+
'foliage',
|
417 |
+
'avocado',
|
418 |
+
'school bus',
|
419 |
+
'footwear',
|
420 |
+
'highway',
|
421 |
+
'ocean view',
|
422 |
+
'art vector illustration',
|
423 |
+
'wall clock',
|
424 |
+
'curtain',
|
425 |
+
'teenager',
|
426 |
+
'kitchen area',
|
427 |
+
'robot',
|
428 |
+
'tusk',
|
429 |
+
'lounge chair',
|
430 |
+
'beam',
|
431 |
+
'paddle',
|
432 |
+
'camel',
|
433 |
+
'lid',
|
434 |
+
'world map',
|
435 |
+
'city view',
|
436 |
+
'newlywed',
|
437 |
+
'cargo ship',
|
438 |
+
'yellow',
|
439 |
+
'exhibition',
|
440 |
+
'bend',
|
441 |
+
'novel',
|
442 |
+
'wool',
|
443 |
+
'ontario',
|
444 |
+
'bread',
|
445 |
+
'campus',
|
446 |
+
'coastline',
|
447 |
+
'cutting board',
|
448 |
+
'booth',
|
449 |
+
'table top',
|
450 |
+
'carpet',
|
451 |
+
'beach chair',
|
452 |
+
'workout',
|
453 |
+
'street food',
|
454 |
+
'fun',
|
455 |
+
'costumer film designer',
|
456 |
+
'gadget',
|
457 |
+
'artist',
|
458 |
+
'fishing village',
|
459 |
+
'builder',
|
460 |
+
'violinist',
|
461 |
+
'iphone',
|
462 |
+
'spider web',
|
463 |
+
'traffic sign',
|
464 |
+
'ruin',
|
465 |
+
'rescue',
|
466 |
+
'clipboard',
|
467 |
+
'seal',
|
468 |
+
'film director',
|
469 |
+
'paw',
|
470 |
+
'nursery',
|
471 |
+
'intersection',
|
472 |
+
'tomato sauce',
|
473 |
+
'taste',
|
474 |
+
'paddy field',
|
475 |
+
'christmas tree',
|
476 |
+
'wave',
|
477 |
+
'stool',
|
478 |
+
'watering can',
|
479 |
+
'rug',
|
480 |
+
'daytime',
|
481 |
+
'subway station',
|
482 |
+
'craft',
|
483 |
+
'pine forest',
|
484 |
+
'black',
|
485 |
+
'planet',
|
486 |
+
'motif',
|
487 |
+
'christmas market',
|
488 |
+
'glass window',
|
489 |
+
'college',
|
490 |
+
'wheat',
|
491 |
+
'damage',
|
492 |
+
'rectangle',
|
493 |
+
'picture frame',
|
494 |
+
'chess',
|
495 |
+
'guest room',
|
496 |
+
'street corner',
|
497 |
+
'religion',
|
498 |
+
'seed',
|
499 |
+
'puzzle',
|
500 |
+
'freeway',
|
501 |
+
'beauty',
|
502 |
+
'ocean',
|
503 |
+
'watch',
|
504 |
+
'mother',
|
505 |
+
'garage',
|
506 |
+
'quote',
|
507 |
+
'dj',
|
508 |
+
'supporter',
|
509 |
+
'hip hop artist',
|
510 |
+
'muffin',
|
511 |
+
'eiffel tower',
|
512 |
+
'cash',
|
513 |
+
'firefighter',
|
514 |
+
'cauliflower',
|
515 |
+
'bunker',
|
516 |
+
'sled',
|
517 |
+
'manicure',
|
518 |
+
'shark',
|
519 |
+
'stall',
|
520 |
+
'jungle',
|
521 |
+
'family home',
|
522 |
+
'tour bus',
|
523 |
+
'chimney',
|
524 |
+
'touchdown',
|
525 |
+
'roundabout',
|
526 |
+
'coyote',
|
527 |
+
'street scene',
|
528 |
+
'tank',
|
529 |
+
'wedding dress',
|
530 |
+
'mantle',
|
531 |
+
'bedroom window',
|
532 |
+
'coconut',
|
533 |
+
'chapel',
|
534 |
+
'goat',
|
535 |
+
'living space',
|
536 |
+
'rock wall',
|
537 |
+
'polka dot',
|
538 |
+
'railway',
|
539 |
+
'mandala',
|
540 |
+
'mango',
|
541 |
+
'lesson',
|
542 |
+
'mountain landscape',
|
543 |
+
'team photo',
|
544 |
+
'bookshelf',
|
545 |
+
'meter',
|
546 |
+
'bulldog',
|
547 |
+
'evening sun',
|
548 |
+
'stick',
|
549 |
+
'card',
|
550 |
+
'pink',
|
551 |
+
'fish pond',
|
552 |
+
'paint',
|
553 |
+
'pill',
|
554 |
+
'cart',
|
555 |
+
'pea',
|
556 |
+
'van',
|
557 |
+
'album',
|
558 |
+
'football college game',
|
559 |
+
'mountain pass',
|
560 |
+
'doughnut',
|
561 |
+
'ski slope',
|
562 |
+
'match',
|
563 |
+
'official',
|
564 |
+
'shadow',
|
565 |
+
'organ',
|
566 |
+
'celebration',
|
567 |
+
'coin',
|
568 |
+
'log cabin',
|
569 |
+
'firework display',
|
570 |
+
'present',
|
571 |
+
'twig',
|
572 |
+
'chef',
|
573 |
+
'confetti',
|
574 |
+
'footpath',
|
575 |
+
'tour',
|
576 |
+
'ponytail',
|
577 |
+
'artwork',
|
578 |
+
'race car',
|
579 |
+
'club',
|
580 |
+
'season',
|
581 |
+
'hose',
|
582 |
+
'pencil',
|
583 |
+
'aircraft',
|
584 |
+
'rock formation',
|
585 |
+
'wardrobe',
|
586 |
+
'participant',
|
587 |
+
'politician',
|
588 |
+
'engineer',
|
589 |
+
'peace',
|
590 |
+
'filter',
|
591 |
+
'sailing boat',
|
592 |
+
'water bottle',
|
593 |
+
'service dog',
|
594 |
+
'poodle',
|
595 |
+
'loki',
|
596 |
+
'statesman',
|
597 |
+
'sleeping bag',
|
598 |
+
'outskirt',
|
599 |
+
'clock',
|
600 |
+
'factory',
|
601 |
+
'oak tree',
|
602 |
+
'physician',
|
603 |
+
'color',
|
604 |
+
'room',
|
605 |
+
'stairway',
|
606 |
+
'company',
|
607 |
+
'lady',
|
608 |
+
'graph',
|
609 |
+
'faucet',
|
610 |
+
'tablecloth',
|
611 |
+
'subway train',
|
612 |
+
'chocolate chip cookie',
|
613 |
+
'headquarters',
|
614 |
+
'screw',
|
615 |
+
'goggle',
|
616 |
+
'halloween',
|
617 |
+
'city street',
|
618 |
+
'swirl',
|
619 |
+
'cord',
|
620 |
+
'forward',
|
621 |
+
'bone',
|
622 |
+
'bedding',
|
623 |
+
'archway',
|
624 |
+
'wig',
|
625 |
+
'lobby',
|
626 |
+
'mask',
|
627 |
+
'attic',
|
628 |
+
'kitchen table',
|
629 |
+
'skylight',
|
630 |
+
'fire',
|
631 |
+
'exit',
|
632 |
+
'oil painting',
|
633 |
+
'passenger',
|
634 |
+
'meditation',
|
635 |
+
'salmon',
|
636 |
+
'fedora',
|
637 |
+
'rubber stamp',
|
638 |
+
'orange juice',
|
639 |
+
'arch',
|
640 |
+
'scientist',
|
641 |
+
'stroll',
|
642 |
+
'manhattan',
|
643 |
+
'float',
|
644 |
+
'baseball uniform',
|
645 |
+
'circle',
|
646 |
+
'church',
|
647 |
+
'decker bus',
|
648 |
+
'competitor',
|
649 |
+
'zoo',
|
650 |
+
'basketball team',
|
651 |
+
'tourist',
|
652 |
+
'daughter',
|
653 |
+
'silverware',
|
654 |
+
'ceiling fan',
|
655 |
+
'birth',
|
656 |
+
'vase',
|
657 |
+
'jack',
|
658 |
+
'mushroom',
|
659 |
+
'spiral',
|
660 |
+
'cage',
|
661 |
+
'limb',
|
662 |
+
'salad',
|
663 |
+
'ad',
|
664 |
+
'control',
|
665 |
+
'earth',
|
666 |
+
'party',
|
667 |
+
'bolt',
|
668 |
+
'tractor',
|
669 |
+
'barley',
|
670 |
+
'wedding photo',
|
671 |
+
'hawk',
|
672 |
+
'warehouse',
|
673 |
+
'vegetable garden',
|
674 |
+
'chocolate cake',
|
675 |
+
'cabbage',
|
676 |
+
'floor window',
|
677 |
+
'baby shower',
|
678 |
+
'magnifying glass',
|
679 |
+
'table',
|
680 |
+
'stethoscope',
|
681 |
+
'reading',
|
682 |
+
'mission',
|
683 |
+
'croissant',
|
684 |
+
'gift box',
|
685 |
+
'rocket',
|
686 |
+
'forest road',
|
687 |
+
'cooking',
|
688 |
+
'suite',
|
689 |
+
'hill country',
|
690 |
+
'motorcycle',
|
691 |
+
'baseball player',
|
692 |
+
'angle',
|
693 |
+
'drug',
|
694 |
+
'sport association',
|
695 |
+
'championship',
|
696 |
+
'family portrait',
|
697 |
+
'florist',
|
698 |
+
'softball',
|
699 |
+
'egret',
|
700 |
+
'office',
|
701 |
+
'plywood',
|
702 |
+
'jockey',
|
703 |
+
'mosque',
|
704 |
+
'brunch',
|
705 |
+
'beanie',
|
706 |
+
'office building',
|
707 |
+
'pattern',
|
708 |
+
'calendar',
|
709 |
+
'indoor',
|
710 |
+
'pepper',
|
711 |
+
'ledge',
|
712 |
+
'trail',
|
713 |
+
'fuel',
|
714 |
+
'laptop computer',
|
715 |
+
'tennis shoe',
|
716 |
+
'deck chair',
|
717 |
+
'guitarist',
|
718 |
+
'barn',
|
719 |
+
'surgery',
|
720 |
+
'cartoon illustration',
|
721 |
+
'nebula',
|
722 |
+
'railroad',
|
723 |
+
'mountain goat',
|
724 |
+
'goose',
|
725 |
+
'car door',
|
726 |
+
'cheer',
|
727 |
+
'liquid',
|
728 |
+
'hardwood floor',
|
729 |
+
'pathway',
|
730 |
+
'acorn',
|
731 |
+
'gull',
|
732 |
+
'airliner',
|
733 |
+
'couch',
|
734 |
+
'lake house',
|
735 |
+
'spaghetti',
|
736 |
+
'promenade',
|
737 |
+
'collection',
|
738 |
+
'garden',
|
739 |
+
'bank',
|
740 |
+
'robin',
|
741 |
+
'tennis ball',
|
742 |
+
'peony',
|
743 |
+
'gymnast',
|
744 |
+
'lavender',
|
745 |
+
'deck',
|
746 |
+
'test',
|
747 |
+
'riverside',
|
748 |
+
'rapper',
|
749 |
+
'domino',
|
750 |
+
'bride',
|
751 |
+
'mouse',
|
752 |
+
'basil',
|
753 |
+
'wedding couple',
|
754 |
+
'ocean wave',
|
755 |
+
'arm',
|
756 |
+
'kitchen floor',
|
757 |
+
'grove',
|
758 |
+
'family member',
|
759 |
+
'backyard',
|
760 |
+
'raspberry',
|
761 |
+
'forest fire',
|
762 |
+
'officer',
|
763 |
+
'hibiscus',
|
764 |
+
'canyon',
|
765 |
+
'composer',
|
766 |
+
'signature',
|
767 |
+
'olive oil',
|
768 |
+
'hibiscus flower',
|
769 |
+
'rose',
|
770 |
+
'vector icon',
|
771 |
+
'sunrise',
|
772 |
+
'horseback',
|
773 |
+
'motor scooter',
|
774 |
+
'office worker',
|
775 |
+
'tradition',
|
776 |
+
'ingredient',
|
777 |
+
'washing machine',
|
778 |
+
'lighting',
|
779 |
+
'bagel',
|
780 |
+
'sailboat',
|
781 |
+
'policeman',
|
782 |
+
'mare',
|
783 |
+
'graphic',
|
784 |
+
'halloween pumpkin',
|
785 |
+
'stock',
|
786 |
+
'pilot',
|
787 |
+
'education',
|
788 |
+
'team',
|
789 |
+
'body',
|
790 |
+
'horse',
|
791 |
+
'kimono',
|
792 |
+
'bazaar',
|
793 |
+
'bag',
|
794 |
+
'recording studio',
|
795 |
+
'parsley',
|
796 |
+
'entrance',
|
797 |
+
'denim',
|
798 |
+
'vet',
|
799 |
+
'horse farm',
|
800 |
+
'charcoal',
|
801 |
+
'architecture',
|
802 |
+
'glass vase',
|
803 |
+
'puppy',
|
804 |
+
'estuary',
|
805 |
+
'television show host',
|
806 |
+
'city bus',
|
807 |
+
'shoulder',
|
808 |
+
'beast',
|
809 |
+
'balance',
|
810 |
+
'golfer',
|
811 |
+
'roadside',
|
812 |
+
'denim jacket',
|
813 |
+
'stone wall',
|
814 |
+
'counter top',
|
815 |
+
'app icon',
|
816 |
+
'toast',
|
817 |
+
'head coach',
|
818 |
+
'ham',
|
819 |
+
'warrior',
|
820 |
+
'gem',
|
821 |
+
'refrigerator',
|
822 |
+
'snowman',
|
823 |
+
'construction worker',
|
824 |
+
'coal',
|
825 |
+
'website',
|
826 |
+
'morning fog',
|
827 |
+
'mustard',
|
828 |
+
'human',
|
829 |
+
'owl',
|
830 |
+
'puppy dog',
|
831 |
+
'piggy bank',
|
832 |
+
'vegetation',
|
833 |
+
'pirate',
|
834 |
+
'action film',
|
835 |
+
'marshmallow',
|
836 |
+
'thanksgiving',
|
837 |
+
'business',
|
838 |
+
'disease',
|
839 |
+
'signage',
|
840 |
+
'greeting',
|
841 |
+
'skate park',
|
842 |
+
'tile',
|
843 |
+
'mouth',
|
844 |
+
'spinach',
|
845 |
+
'vacation',
|
846 |
+
'leader',
|
847 |
+
'shrine',
|
848 |
+
'walker',
|
849 |
+
'science fiction film',
|
850 |
+
'bill',
|
851 |
+
'rabbit',
|
852 |
+
'motor boat',
|
853 |
+
'bar',
|
854 |
+
'radio',
|
855 |
+
'barge',
|
856 |
+
'tail',
|
857 |
+
'chainsaw',
|
858 |
+
'gallery',
|
859 |
+
'rainbow',
|
860 |
+
'pasta',
|
861 |
+
'padlock',
|
862 |
+
'web',
|
863 |
+
'pastry',
|
864 |
+
'ink',
|
865 |
+
'reef',
|
866 |
+
'school uniform',
|
867 |
+
'shawl',
|
868 |
+
'treasure',
|
869 |
+
'peach',
|
870 |
+
'dinner table',
|
871 |
+
'injury',
|
872 |
+
'harbor',
|
873 |
+
'witch',
|
874 |
+
'car dealership',
|
875 |
+
'litter',
|
876 |
+
'gesture',
|
877 |
+
'documentary',
|
878 |
+
'marriage',
|
879 |
+
'sea shell',
|
880 |
+
'priest',
|
881 |
+
'dome',
|
882 |
+
'kit',
|
883 |
+
'icon',
|
884 |
+
'seaside',
|
885 |
+
'bucket',
|
886 |
+
'entertainment',
|
887 |
+
'stable',
|
888 |
+
'hat',
|
889 |
+
'puddle',
|
890 |
+
'sock',
|
891 |
+
'shopper',
|
892 |
+
'technology',
|
893 |
+
'harbour',
|
894 |
+
'orbit',
|
895 |
+
'antler',
|
896 |
+
'tube',
|
897 |
+
'flag waving',
|
898 |
+
'cook',
|
899 |
+
'tight',
|
900 |
+
'commander',
|
901 |
+
'farmland',
|
902 |
+
'switch',
|
903 |
+
'hiker',
|
904 |
+
'wedding ceremony',
|
905 |
+
'award ceremony',
|
906 |
+
'champion',
|
907 |
+
'chopstick',
|
908 |
+
'farmhouse',
|
909 |
+
'performer',
|
910 |
+
'spike',
|
911 |
+
'accident',
|
912 |
+
'cruise ship',
|
913 |
+
'passenger train',
|
914 |
+
'attraction',
|
915 |
+
'entertainer',
|
916 |
+
'rear view',
|
917 |
+
'sidewalk',
|
918 |
+
'parade',
|
919 |
+
'racing',
|
920 |
+
'plane',
|
921 |
+
'ritual',
|
922 |
+
'peacock',
|
923 |
+
'pocket',
|
924 |
+
'plum',
|
925 |
+
'drop',
|
926 |
+
'carrot',
|
927 |
+
'floor',
|
928 |
+
'sunset',
|
929 |
+
'troop',
|
930 |
+
'architect',
|
931 |
+
'coffee table',
|
932 |
+
'dust',
|
933 |
+
'outline',
|
934 |
+
'leather',
|
935 |
+
'charity event',
|
936 |
+
'heat',
|
937 |
+
'whale',
|
938 |
+
'laundry',
|
939 |
+
'coconut tree',
|
940 |
+
'crosswalk',
|
941 |
+
'pony',
|
942 |
+
'ant',
|
943 |
+
'pipe',
|
944 |
+
'string',
|
945 |
+
'coat',
|
946 |
+
'angel',
|
947 |
+
'beef',
|
948 |
+
'church tower',
|
949 |
+
'dish',
|
950 |
+
'pitch',
|
951 |
+
'cupboard',
|
952 |
+
'thermometer',
|
953 |
+
'dirt field',
|
954 |
+
'fireworks',
|
955 |
+
'minute',
|
956 |
+
'cane',
|
957 |
+
'pajama',
|
958 |
+
'flower garden',
|
959 |
+
'autumn',
|
960 |
+
'trash can',
|
961 |
+
'dachshund',
|
962 |
+
'banana tree',
|
963 |
+
'tray',
|
964 |
+
'moose',
|
965 |
+
'roadway',
|
966 |
+
'carnival',
|
967 |
+
'antenna',
|
968 |
+
'pole',
|
969 |
+
'castle wall',
|
970 |
+
'ram',
|
971 |
+
'cattle',
|
972 |
+
'hay',
|
973 |
+
'cookie',
|
974 |
+
'swimmer',
|
975 |
+
'baseball team',
|
976 |
+
'strait',
|
977 |
+
'hedge',
|
978 |
+
'jet',
|
979 |
+
'fire pit',
|
980 |
+
'octopus',
|
981 |
+
'calf',
|
982 |
+
'cube',
|
983 |
+
'opera',
|
984 |
+
'cardboard box',
|
985 |
+
'tiara',
|
986 |
+
'kitchen sink',
|
987 |
+
'prairie',
|
988 |
+
'bowl',
|
989 |
+
'galaxy',
|
990 |
+
'straw hat',
|
991 |
+
'linen',
|
992 |
+
'ski resort',
|
993 |
+
'stitch',
|
994 |
+
'street lamp',
|
995 |
+
'motorist',
|
996 |
+
'icicle',
|
997 |
+
'stain',
|
998 |
+
'flora',
|
999 |
+
'drain',
|
1000 |
+
'kitchen cabinet',
|
1001 |
+
'decor',
|
1002 |
+
'bouquet',
|
1003 |
+
'pound',
|
1004 |
+
'interior design',
|
1005 |
+
'nail polish',
|
1006 |
+
'figurine',
|
1007 |
+
'tomb',
|
1008 |
+
'disc',
|
1009 |
+
'twist',
|
1010 |
+
'blouse',
|
1011 |
+
'ribbon',
|
1012 |
+
'figure',
|
1013 |
+
'burger',
|
1014 |
+
'cork',
|
1015 |
+
'soccer goalkeeper',
|
1016 |
+
'train bridge',
|
1017 |
+
'drinking water',
|
1018 |
+
'dew',
|
1019 |
+
'baker',
|
1020 |
+
'storm cloud',
|
1021 |
+
'tarmac',
|
1022 |
+
'tv drama',
|
1023 |
+
'sponge',
|
1024 |
+
'magnet',
|
1025 |
+
'sailor',
|
1026 |
+
'entry',
|
1027 |
+
'swan',
|
1028 |
+
'exercise',
|
1029 |
+
'sloth',
|
1030 |
+
'jewel',
|
1031 |
+
'scuba diver',
|
1032 |
+
'bite',
|
1033 |
+
'cat tree',
|
1034 |
+
'tent',
|
1035 |
+
'can',
|
1036 |
+
'tennis match',
|
1037 |
+
'ecosystem',
|
1038 |
+
'picket fence',
|
1039 |
+
'palm',
|
1040 |
+
'train car',
|
1041 |
+
'frying pan',
|
1042 |
+
'rally',
|
1043 |
+
'tablet pc',
|
1044 |
+
'reindeer',
|
1045 |
+
'image',
|
1046 |
+
'wolf',
|
1047 |
+
'chin',
|
1048 |
+
'conservatory',
|
1049 |
+
'flood water',
|
1050 |
+
'cityscape',
|
1051 |
+
'beach sand',
|
1052 |
+
'car park',
|
1053 |
+
'pavement',
|
1054 |
+
'farm field',
|
1055 |
+
'swimming',
|
1056 |
+
'winter storm',
|
1057 |
+
'stem',
|
1058 |
+
'pillow',
|
1059 |
+
'inning',
|
1060 |
+
'gorilla',
|
1061 |
+
'desk',
|
1062 |
+
'avenue',
|
1063 |
+
'fern',
|
1064 |
+
'money',
|
1065 |
+
'pearl',
|
1066 |
+
'train station',
|
1067 |
+
'skillet',
|
1068 |
+
'nap',
|
1069 |
+
'barber',
|
1070 |
+
'library',
|
1071 |
+
'freezer',
|
1072 |
+
'label',
|
1073 |
+
'rainforest',
|
1074 |
+
'parking sign',
|
1075 |
+
'mirror',
|
1076 |
+
'wing',
|
1077 |
+
'noodle',
|
1078 |
+
'press room',
|
1079 |
+
'sculpture',
|
1080 |
+
'tablet',
|
1081 |
+
'viewer',
|
1082 |
+
'prayer',
|
1083 |
+
'mini',
|
1084 |
+
'mechanic',
|
1085 |
+
'laugh',
|
1086 |
+
'rice field',
|
1087 |
+
'hand',
|
1088 |
+
'mustache',
|
1089 |
+
'mountain road',
|
1090 |
+
'catwalk',
|
1091 |
+
'conference',
|
1092 |
+
'cape',
|
1093 |
+
'installation',
|
1094 |
+
'musician',
|
1095 |
+
'stream',
|
1096 |
+
'machine',
|
1097 |
+
'speech',
|
1098 |
+
'crocodile',
|
1099 |
+
'soccer match',
|
1100 |
+
'town square',
|
1101 |
+
'passport',
|
1102 |
+
'post box',
|
1103 |
+
'point',
|
1104 |
+
'stone building',
|
1105 |
+
'motorway',
|
1106 |
+
'mix',
|
1107 |
+
'dentist',
|
1108 |
+
'businessperson',
|
1109 |
+
'happiness',
|
1110 |
+
'boat',
|
1111 |
+
'vineyard',
|
1112 |
+
'treadmill',
|
1113 |
+
'glass wall',
|
1114 |
+
'water droplet',
|
1115 |
+
'coffee mug',
|
1116 |
+
'graduate',
|
1117 |
+
'sunflower',
|
1118 |
+
'parliament',
|
1119 |
+
'shepherd',
|
1120 |
+
'movie',
|
1121 |
+
'wine',
|
1122 |
+
'orchard',
|
1123 |
+
'tulip',
|
1124 |
+
'motherboard',
|
1125 |
+
'cup',
|
1126 |
+
'broom',
|
1127 |
+
'spot',
|
1128 |
+
'drawing',
|
1129 |
+
'polo shirt',
|
1130 |
+
'graduation',
|
1131 |
+
'film producer',
|
1132 |
+
'moonlight',
|
1133 |
+
'glow',
|
1134 |
+
'film format',
|
1135 |
+
't shirt',
|
1136 |
+
'rock face',
|
1137 |
+
'sword',
|
1138 |
+
'clinic',
|
1139 |
+
'festival day',
|
1140 |
+
'meadow',
|
1141 |
+
'staple',
|
1142 |
+
'pupil',
|
1143 |
+
'training ground',
|
1144 |
+
'rider',
|
1145 |
+
'flower',
|
1146 |
+
'foal',
|
1147 |
+
'wharf',
|
1148 |
+
'foot bridge',
|
1149 |
+
'shooting',
|
1150 |
+
'top',
|
1151 |
+
'mast',
|
1152 |
+
'police car',
|
1153 |
+
'robe',
|
1154 |
+
'wedding bouquet',
|
1155 |
+
'stop sign',
|
1156 |
+
'birthday cake',
|
1157 |
+
'glitter',
|
1158 |
+
'butter',
|
1159 |
+
'scooter',
|
1160 |
+
'tundra',
|
1161 |
+
'superhero',
|
1162 |
+
'pocket watch',
|
1163 |
+
'inscription',
|
1164 |
+
'youngster',
|
1165 |
+
'fruit tree',
|
1166 |
+
'movie poster',
|
1167 |
+
'engine',
|
1168 |
+
'foundation',
|
1169 |
+
'motorcyclist',
|
1170 |
+
'take',
|
1171 |
+
'woman',
|
1172 |
+
'antelope',
|
1173 |
+
'country artist',
|
1174 |
+
'road trip',
|
1175 |
+
'typewriter',
|
1176 |
+
'tuxedo',
|
1177 |
+
'brand',
|
1178 |
+
'pine',
|
1179 |
+
'bathroom',
|
1180 |
+
'paradise',
|
1181 |
+
'texture',
|
1182 |
+
'balloon',
|
1183 |
+
'dining table',
|
1184 |
+
'home',
|
1185 |
+
'computer screen',
|
1186 |
+
'actor',
|
1187 |
+
'clip',
|
1188 |
+
'tv tower',
|
1189 |
+
'panorama',
|
1190 |
+
'summit',
|
1191 |
+
'cat',
|
1192 |
+
'plot',
|
1193 |
+
'eagle',
|
1194 |
+
'dancer',
|
1195 |
+
'pup',
|
1196 |
+
'studio shot',
|
1197 |
+
'tear',
|
1198 |
+
'bird bath',
|
1199 |
+
'classroom',
|
1200 |
+
'bookstore',
|
1201 |
+
'city wall',
|
1202 |
+
'tv programme',
|
1203 |
+
'blade',
|
1204 |
+
'easel',
|
1205 |
+
'buttercream',
|
1206 |
+
'sweet',
|
1207 |
+
'designer',
|
1208 |
+
'diamond',
|
1209 |
+
'handshake',
|
1210 |
+
'herb',
|
1211 |
+
'corn field',
|
1212 |
+
'seafront',
|
1213 |
+
'concrete',
|
1214 |
+
'street artist',
|
1215 |
+
'gas',
|
1216 |
+
'stamp',
|
1217 |
+
'window display',
|
1218 |
+
'paper',
|
1219 |
+
'note',
|
1220 |
+
'pint',
|
1221 |
+
'quarry',
|
1222 |
+
'research',
|
1223 |
+
'fixture',
|
1224 |
+
'manager',
|
1225 |
+
'soil',
|
1226 |
+
'leopard',
|
1227 |
+
'board game',
|
1228 |
+
'ladder',
|
1229 |
+
'stop light',
|
1230 |
+
'island',
|
1231 |
+
'ramp',
|
1232 |
+
'football match',
|
1233 |
+
'icing',
|
1234 |
+
'drill',
|
1235 |
+
'currency',
|
1236 |
+
'summer evening',
|
1237 |
+
'topping',
|
1238 |
+
'pyramid',
|
1239 |
+
'pomegranate',
|
1240 |
+
'cell',
|
1241 |
+
'ivy',
|
1242 |
+
'squad',
|
1243 |
+
'scenery',
|
1244 |
+
'computer',
|
1245 |
+
'locomotive',
|
1246 |
+
'surf',
|
1247 |
+
'mascot',
|
1248 |
+
'dune',
|
1249 |
+
'path',
|
1250 |
+
'duck',
|
1251 |
+
'twilight',
|
1252 |
+
'wire',
|
1253 |
+
'bow tie',
|
1254 |
+
'strike',
|
1255 |
+
'cormorant',
|
1256 |
+
'car wash',
|
1257 |
+
'crane',
|
1258 |
+
'market',
|
1259 |
+
'philosopher',
|
1260 |
+
'alarm clock',
|
1261 |
+
'camera',
|
1262 |
+
'birch',
|
1263 |
+
'greeting card',
|
1264 |
+
'plain',
|
1265 |
+
'clay',
|
1266 |
+
'donut',
|
1267 |
+
'lock',
|
1268 |
+
'moth',
|
1269 |
+
'laboratory',
|
1270 |
+
'fan',
|
1271 |
+
'violin',
|
1272 |
+
'jazz fusion artist',
|
1273 |
+
'mountain biker',
|
1274 |
+
'terrain',
|
1275 |
+
'magazine',
|
1276 |
+
'pickup',
|
1277 |
+
'comedy film',
|
1278 |
+
'smartphone',
|
1279 |
+
'film',
|
1280 |
+
'bed',
|
1281 |
+
'microwave oven',
|
1282 |
+
'tournament',
|
1283 |
+
'lawn',
|
1284 |
+
'car window',
|
1285 |
+
'alligator',
|
1286 |
+
'screen',
|
1287 |
+
'jetty',
|
1288 |
+
'shopping bag',
|
1289 |
+
'landscape view',
|
1290 |
+
'cabinetry',
|
1291 |
+
'friendly match',
|
1292 |
+
'thing',
|
1293 |
+
'petal',
|
1294 |
+
'shopping center',
|
1295 |
+
'transport',
|
1296 |
+
'ballet dancer',
|
1297 |
+
'shoreline',
|
1298 |
+
'princess',
|
1299 |
+
'car seat',
|
1300 |
+
'parking meter',
|
1301 |
+
'green',
|
1302 |
+
'vodka',
|
1303 |
+
'band',
|
1304 |
+
'rock',
|
1305 |
+
'costume',
|
1306 |
+
'warning sign',
|
1307 |
+
'strip',
|
1308 |
+
'plaque',
|
1309 |
+
'wheelchair',
|
1310 |
+
'headband',
|
1311 |
+
'ginger',
|
1312 |
+
'dice',
|
1313 |
+
'media',
|
1314 |
+
'hairdresser',
|
1315 |
+
'press',
|
1316 |
+
'living room',
|
1317 |
+
'stove',
|
1318 |
+
'player',
|
1319 |
+
'cherry',
|
1320 |
+
'workshop',
|
1321 |
+
'carving',
|
1322 |
+
'embroidery',
|
1323 |
+
'doodle',
|
1324 |
+
'adventure',
|
1325 |
+
'rugby player',
|
1326 |
+
'monument',
|
1327 |
+
'brush',
|
1328 |
+
'marker',
|
1329 |
+
'loft',
|
1330 |
+
'postcard',
|
1331 |
+
'collage',
|
1332 |
+
'ball',
|
1333 |
+
'professor',
|
1334 |
+
'dresser',
|
1335 |
+
'gig',
|
1336 |
+
'festival',
|
1337 |
+
'blackbird',
|
1338 |
+
'makeup artist',
|
1339 |
+
'video camera',
|
1340 |
+
'sticker',
|
1341 |
+
'peak',
|
1342 |
+
'wildflower',
|
1343 |
+
'santa hat',
|
1344 |
+
'rodeo',
|
1345 |
+
'wedding photographer',
|
1346 |
+
'guy',
|
1347 |
+
'staff',
|
1348 |
+
'waterfall',
|
1349 |
+
'operation',
|
1350 |
+
'defender',
|
1351 |
+
'falcon',
|
1352 |
+
'haze',
|
1353 |
+
'individual',
|
1354 |
+
'gentleman',
|
1355 |
+
'greyhound',
|
1356 |
+
'rocking chair',
|
1357 |
+
'rice',
|
1358 |
+
'garbage',
|
1359 |
+
'platter',
|
1360 |
+
'chocolate',
|
1361 |
+
'splash',
|
1362 |
+
'business suit',
|
1363 |
+
'cheetah',
|
1364 |
+
'valley',
|
1365 |
+
'maze',
|
1366 |
+
'trampoline',
|
1367 |
+
'garland',
|
1368 |
+
'slalom',
|
1369 |
+
'unicorn',
|
1370 |
+
'tree stump',
|
1371 |
+
'painting',
|
1372 |
+
'romance',
|
1373 |
+
'fight',
|
1374 |
+
'alcohol',
|
1375 |
+
'ghost',
|
1376 |
+
'fondant',
|
1377 |
+
'spa',
|
1378 |
+
'shutter',
|
1379 |
+
'death',
|
1380 |
+
'demonstration',
|
1381 |
+
'cotton',
|
1382 |
+
'pier',
|
1383 |
+
'flea market',
|
1384 |
+
'history',
|
1385 |
+
'savannah',
|
1386 |
+
'fist',
|
1387 |
+
'aisle',
|
1388 |
+
'crew',
|
1389 |
+
'jug',
|
1390 |
+
'pose',
|
1391 |
+
'anchor',
|
1392 |
+
'teapot',
|
1393 |
+
'boat house',
|
1394 |
+
'business team',
|
1395 |
+
'tripod',
|
1396 |
+
'bee',
|
1397 |
+
'pebble',
|
1398 |
+
'mattress',
|
1399 |
+
'canvas',
|
1400 |
+
'hallway',
|
1401 |
+
'campaign',
|
1402 |
+
'pod',
|
1403 |
+
'lake district',
|
1404 |
+
'article',
|
1405 |
+
'white',
|
1406 |
+
'sofa',
|
1407 |
+
'honey',
|
1408 |
+
'marathon',
|
1409 |
+
'pancake',
|
1410 |
+
'tourist attraction',
|
1411 |
+
'wedding gown',
|
1412 |
+
'battle',
|
1413 |
+
'shelving',
|
1414 |
+
'sea',
|
1415 |
+
'sheet music',
|
1416 |
+
'pie',
|
1417 |
+
'yarn',
|
1418 |
+
'construction site',
|
1419 |
+
'flyer',
|
1420 |
+
'tie',
|
1421 |
+
'star',
|
1422 |
+
'lettuce',
|
1423 |
+
'martial artist',
|
1424 |
+
'dart',
|
1425 |
+
'straw',
|
1426 |
+
'reflection',
|
1427 |
+
'conference room',
|
1428 |
+
'temperature',
|
1429 |
+
'rugby',
|
1430 |
+
'mosquito',
|
1431 |
+
'physicist',
|
1432 |
+
'rock climber',
|
1433 |
+
'crash',
|
1434 |
+
'backdrop',
|
1435 |
+
'toilet seat',
|
1436 |
+
'sand castle',
|
1437 |
+
'water park',
|
1438 |
+
'toy car',
|
1439 |
+
'waste',
|
1440 |
+
'luxury',
|
1441 |
+
'hangar',
|
1442 |
+
'rv',
|
1443 |
+
'tree trunk',
|
1444 |
+
'board',
|
1445 |
+
'gold',
|
1446 |
+
'project picture',
|
1447 |
+
'cap',
|
1448 |
+
'cottage',
|
1449 |
+
'relief',
|
1450 |
+
'attire',
|
1451 |
+
'microscope',
|
1452 |
+
'battery',
|
1453 |
+
'roll',
|
1454 |
+
'line',
|
1455 |
+
'parking garage',
|
1456 |
+
'crystal',
|
1457 |
+
'broadcasting',
|
1458 |
+
'brick wall',
|
1459 |
+
'lab',
|
1460 |
+
'flooring',
|
1461 |
+
'meeting',
|
1462 |
+
'3d cg rendering',
|
1463 |
+
'desktop computer',
|
1464 |
+
'cowboy',
|
1465 |
+
'sailing ship',
|
1466 |
+
'junction',
|
1467 |
+
'hairstyle',
|
1468 |
+
'homework',
|
1469 |
+
'profile',
|
1470 |
+
'model',
|
1471 |
+
'flower pot',
|
1472 |
+
'street light',
|
1473 |
+
'salt lake',
|
1474 |
+
'maple',
|
1475 |
+
'space',
|
1476 |
+
'blizzard',
|
1477 |
+
'throw',
|
1478 |
+
'zebras',
|
1479 |
+
'brochure',
|
1480 |
+
'constellation',
|
1481 |
+
'beak',
|
1482 |
+
'kilt',
|
1483 |
+
'pond',
|
1484 |
+
'blue sky',
|
1485 |
+
'sneaker',
|
1486 |
+
'sand dune',
|
1487 |
+
'morning sun',
|
1488 |
+
'almond',
|
1489 |
+
'grill',
|
1490 |
+
'curl',
|
1491 |
+
'basketball girl game',
|
1492 |
+
'chameleon',
|
1493 |
+
'toilet bowl',
|
1494 |
+
'prince',
|
1495 |
+
'keyboard',
|
1496 |
+
'queen',
|
1497 |
+
'computer monitor',
|
1498 |
+
'writing',
|
1499 |
+
'crown',
|
1500 |
+
'basilica',
|
1501 |
+
'kiss',
|
1502 |
+
'house',
|
1503 |
+
'parking',
|
1504 |
+
'football competition',
|
1505 |
+
'shell',
|
1506 |
+
'sport equipment',
|
1507 |
+
'comedy',
|
1508 |
+
'baboon',
|
1509 |
+
'vendor',
|
1510 |
+
'rise building',
|
1511 |
+
'wrap',
|
1512 |
+
'food truck',
|
1513 |
+
'cat bed',
|
1514 |
+
'rickshaw',
|
1515 |
+
'flare',
|
1516 |
+
'teal',
|
1517 |
+
'nectar',
|
1518 |
+
'eclipse',
|
1519 |
+
'vehicle',
|
1520 |
+
'steam locomotive',
|
1521 |
+
'gorge',
|
1522 |
+
'cow',
|
1523 |
+
'christmas card',
|
1524 |
+
'demonstrator',
|
1525 |
+
'memorial',
|
1526 |
+
'towel',
|
1527 |
+
'jewellery',
|
1528 |
+
'train',
|
1529 |
+
'frisbee',
|
1530 |
+
'baseball game',
|
1531 |
+
'fur',
|
1532 |
+
'afternoon sun',
|
1533 |
+
'community',
|
1534 |
+
'sparkler',
|
1535 |
+
'bandage',
|
1536 |
+
'firework',
|
1537 |
+
'dollar',
|
1538 |
+
'pasture',
|
1539 |
+
'video',
|
1540 |
+
'bus',
|
1541 |
+
'tree house',
|
1542 |
+
'seashore',
|
1543 |
+
'field',
|
1544 |
+
'hamburger',
|
1545 |
+
'souvenir',
|
1546 |
+
'hedgehog',
|
1547 |
+
'worm',
|
1548 |
+
'pine cone',
|
1549 |
+
'osprey',
|
1550 |
+
'dinosaur',
|
1551 |
+
'vegetable',
|
1552 |
+
'junk',
|
1553 |
+
'poster',
|
1554 |
+
'army',
|
1555 |
+
'winger',
|
1556 |
+
'bundle',
|
1557 |
+
'stage',
|
1558 |
+
'growth',
|
1559 |
+
'wedding party',
|
1560 |
+
'service',
|
1561 |
+
'blanket',
|
1562 |
+
'ruler',
|
1563 |
+
'eye',
|
1564 |
+
'credit card',
|
1565 |
+
'castle',
|
1566 |
+
'diner',
|
1567 |
+
'hut',
|
1568 |
+
'elk',
|
1569 |
+
'hard rock artist',
|
1570 |
+
'nun',
|
1571 |
+
'dog breed',
|
1572 |
+
'nest',
|
1573 |
+
'drama film',
|
1574 |
+
'number icon',
|
1575 |
+
'water tank',
|
1576 |
+
'giraffe',
|
1577 |
+
'altar',
|
1578 |
+
'pavilion',
|
1579 |
+
'tv personality',
|
1580 |
+
'suv',
|
1581 |
+
'street vendor',
|
1582 |
+
'street sign',
|
1583 |
+
'ditch',
|
1584 |
+
'debris',
|
1585 |
+
'foam',
|
1586 |
+
'takeoff',
|
1587 |
+
'spice',
|
1588 |
+
'mountain lake',
|
1589 |
+
'tea',
|
1590 |
+
'orchestra',
|
1591 |
+
'spacecraft',
|
1592 |
+
'counter',
|
1593 |
+
'abbey',
|
1594 |
+
'mountain',
|
1595 |
+
'hydrangea',
|
1596 |
+
'racer',
|
1597 |
+
'orange tree',
|
1598 |
+
'tide',
|
1599 |
+
'cowboy hat',
|
1600 |
+
'rapid',
|
1601 |
+
'town',
|
1602 |
+
'wild',
|
1603 |
+
'herd',
|
1604 |
+
'vein',
|
1605 |
+
'driveway',
|
1606 |
+
'jar',
|
1607 |
+
'bark',
|
1608 |
+
'illustration',
|
1609 |
+
'horror film',
|
1610 |
+
'corn',
|
1611 |
+
'stroller',
|
1612 |
+
'industry',
|
1613 |
+
'mountain stream',
|
1614 |
+
'gym',
|
1615 |
+
'neckline',
|
1616 |
+
'pan',
|
1617 |
+
'client',
|
1618 |
+
'spectator',
|
1619 |
+
'eggplant',
|
1620 |
+
'camper',
|
1621 |
+
'fawn',
|
1622 |
+
'hoodie',
|
1623 |
+
'meat',
|
1624 |
+
'lemonade',
|
1625 |
+
'food market',
|
1626 |
+
'slum',
|
1627 |
+
'comic book character',
|
1628 |
+
'flower market',
|
1629 |
+
'love',
|
1630 |
+
'palace',
|
1631 |
+
'gun',
|
1632 |
+
'heel',
|
1633 |
+
'shopping street',
|
1634 |
+
'shooting basketball guard',
|
1635 |
+
'family photo',
|
1636 |
+
'rooftop',
|
1637 |
+
'laundry basket',
|
1638 |
+
'airport runway',
|
1639 |
+
'horn',
|
1640 |
+
'face mask',
|
1641 |
+
'flight',
|
1642 |
+
'appetizer',
|
1643 |
+
'violet',
|
1644 |
+
'country lane',
|
1645 |
+
'cement',
|
1646 |
+
'instrument',
|
1647 |
+
'tv actor',
|
1648 |
+
'spark',
|
1649 |
+
'celebrity',
|
1650 |
+
'award',
|
1651 |
+
'country house',
|
1652 |
+
'standing',
|
1653 |
+
'auction',
|
1654 |
+
'date',
|
1655 |
+
'engagement',
|
1656 |
+
'puck',
|
1657 |
+
'advertisement',
|
1658 |
+
'chair',
|
1659 |
+
'zebra',
|
1660 |
+
'driftwood',
|
1661 |
+
'bumblebee',
|
1662 |
+
'maple leaf',
|
1663 |
+
'bonnet',
|
1664 |
+
'orange',
|
1665 |
+
'water tower',
|
1666 |
+
'door',
|
1667 |
+
'singer',
|
1668 |
+
'floor plan',
|
1669 |
+
'discussion',
|
1670 |
+
'theatre',
|
1671 |
+
'pilgrim',
|
1672 |
+
'mug',
|
1673 |
+
'branch',
|
1674 |
+
'window sill',
|
1675 |
+
'baseball pitcher',
|
1676 |
+
'bakery',
|
1677 |
+
'lollipop',
|
1678 |
+
'basketball player',
|
1679 |
+
'toilet paper',
|
1680 |
+
'chalkboard',
|
1681 |
+
'cabin',
|
1682 |
+
'sign',
|
1683 |
+
'night sky',
|
1684 |
+
'cannon',
|
1685 |
+
'fishing net',
|
1686 |
+
'submarine',
|
1687 |
+
'suit',
|
1688 |
+
'fur coat',
|
1689 |
+
'wine bottle',
|
1690 |
+
'folder',
|
1691 |
+
'street art',
|
1692 |
+
'suspension bridge',
|
1693 |
+
'evening sky',
|
1694 |
+
'billboard',
|
1695 |
+
'postage stamp',
|
1696 |
+
'newspaper',
|
1697 |
+
'transportation',
|
1698 |
+
'surgeon',
|
1699 |
+
'light',
|
1700 |
+
'park',
|
1701 |
+
'horizon',
|
1702 |
+
'road',
|
1703 |
+
'sand bar',
|
1704 |
+
'trumpet',
|
1705 |
+
'lounge',
|
1706 |
+
'cloud forest',
|
1707 |
+
'birthday celebration',
|
1708 |
+
'balcony',
|
1709 |
+
'anime',
|
1710 |
+
'beehive',
|
1711 |
+
'umbrella',
|
1712 |
+
'goldfish',
|
1713 |
+
'baseball cap',
|
1714 |
+
'waterhole',
|
1715 |
+
'ceiling',
|
1716 |
+
'carousel',
|
1717 |
+
'backpack',
|
1718 |
+
'plant pot',
|
1719 |
+
'atmosphere',
|
1720 |
+
'sunflower field',
|
1721 |
+
'spire',
|
1722 |
+
'vision',
|
1723 |
+
'woodpecker',
|
1724 |
+
'chip',
|
1725 |
+
'pool table',
|
1726 |
+
'lotus flower',
|
1727 |
+
'cone',
|
1728 |
+
'humpback whale',
|
1729 |
+
'reservoir',
|
1730 |
+
'hunt',
|
1731 |
+
'piano',
|
1732 |
+
'plate',
|
1733 |
+
'dining area',
|
1734 |
+
'luggage',
|
1735 |
+
'skier',
|
1736 |
+
'dance floor',
|
1737 |
+
'crow',
|
1738 |
+
'stair',
|
1739 |
+
'overpass',
|
1740 |
+
'opera house',
|
1741 |
+
'bear',
|
1742 |
+
'jazz artist',
|
1743 |
+
'water',
|
1744 |
+
'vessel',
|
1745 |
+
'cast',
|
1746 |
+
'yard',
|
1747 |
+
'cathedral',
|
1748 |
+
'basketball hoop',
|
1749 |
+
'graveyard',
|
1750 |
+
'sound',
|
1751 |
+
'berry',
|
1752 |
+
'onlooker',
|
1753 |
+
'fauna',
|
1754 |
+
'birch tree',
|
1755 |
+
'retail',
|
1756 |
+
'hill',
|
1757 |
+
'skeleton',
|
1758 |
+
'journalist',
|
1759 |
+
'frost',
|
1760 |
+
'basket',
|
1761 |
+
'nail',
|
1762 |
+
'dusk',
|
1763 |
+
'trash',
|
1764 |
+
'dawn',
|
1765 |
+
'clover',
|
1766 |
+
'hen',
|
1767 |
+
'volcano',
|
1768 |
+
'basketball coach',
|
1769 |
+
'home decor',
|
1770 |
+
'charge',
|
1771 |
+
'haircut',
|
1772 |
+
'sense',
|
1773 |
+
'university',
|
1774 |
+
'lizard',
|
1775 |
+
'daisy',
|
1776 |
+
'tablet computer',
|
1777 |
+
'grass field',
|
1778 |
+
'prison',
|
1779 |
+
'metal artist',
|
1780 |
+
'bathroom mirror',
|
1781 |
+
'window frame',
|
1782 |
+
'chest',
|
1783 |
+
'flavor',
|
1784 |
+
'pop country artist',
|
1785 |
+
'market square',
|
1786 |
+
'monkey',
|
1787 |
+
'blog',
|
1788 |
+
'deer',
|
1789 |
+
'speech bubble',
|
1790 |
+
'dog',
|
1791 |
+
'independence day',
|
1792 |
+
'girl',
|
1793 |
+
'boy',
|
1794 |
+
'tartan',
|
1795 |
+
'furniture',
|
1796 |
+
'appliance',
|
1797 |
+
'office window',
|
1798 |
+
'fish boat',
|
1799 |
+
'sand box',
|
1800 |
+
'tv sitcom',
|
1801 |
+
'drama',
|
1802 |
+
'sleigh',
|
1803 |
+
'depression',
|
1804 |
+
'paper towel',
|
1805 |
+
'baseball',
|
1806 |
+
'protestor',
|
1807 |
+
'grape',
|
1808 |
+
'wedding cake',
|
1809 |
+
'invitation',
|
1810 |
+
'accessory',
|
1811 |
+
'pick',
|
1812 |
+
'grandparent',
|
1813 |
+
'racket',
|
1814 |
+
'tea plantation',
|
1815 |
+
'outdoors',
|
1816 |
+
'egg',
|
1817 |
+
'glass bowl',
|
1818 |
+
'sun',
|
1819 |
+
'organization',
|
1820 |
+
'lion',
|
1821 |
+
'panel',
|
1822 |
+
'station',
|
1823 |
+
'wallpaper',
|
1824 |
+
'helicopter',
|
1825 |
+
'salt',
|
1826 |
+
'vanity',
|
1827 |
+
'patio',
|
1828 |
+
'lunch',
|
1829 |
+
'street performer',
|
1830 |
+
'mountain range',
|
1831 |
+
'soup',
|
1832 |
+
'bacon',
|
1833 |
+
'power station',
|
1834 |
+
'cantilever bridge',
|
1835 |
+
'hummingbird',
|
1836 |
+
'shirt',
|
1837 |
+
'rope',
|
1838 |
+
'hip',
|
1839 |
+
'chalk',
|
1840 |
+
'pendant',
|
1841 |
+
'choir',
|
1842 |
+
'tv',
|
1843 |
+
'lichen',
|
1844 |
+
'railway bridge',
|
1845 |
+
'art gallery',
|
1846 |
+
'bartender',
|
1847 |
+
'wagon',
|
1848 |
+
'baby elephant',
|
1849 |
+
'accordion',
|
1850 |
+
'horseshoe',
|
1851 |
+
'building site',
|
1852 |
+
'clutch',
|
1853 |
+
'harvest',
|
1854 |
+
'savanna',
|
1855 |
+
'geranium',
|
1856 |
+
'business woman',
|
1857 |
+
'paddock',
|
1858 |
+
'patch',
|
1859 |
+
'beech tree',
|
1860 |
+
'war',
|
1861 |
+
'suburbs',
|
1862 |
+
'hospital bed',
|
1863 |
+
'motorcycle racer',
|
1864 |
+
'moss',
|
1865 |
+
'gravel',
|
1866 |
+
'government agency',
|
1867 |
+
'dollar bill',
|
1868 |
+
'father',
|
1869 |
+
'fjord',
|
1870 |
+
'concert',
|
1871 |
+
'nut',
|
1872 |
+
'wedding photography',
|
1873 |
+
'finish line',
|
1874 |
+
'home plate',
|
1875 |
+
'food',
|
1876 |
+
'nose',
|
1877 |
+
'thumb',
|
1878 |
+
'village',
|
1879 |
+
'dining room table',
|
1880 |
+
'bumper',
|
1881 |
+
'monster',
|
1882 |
+
'blackberry',
|
1883 |
+
'lime',
|
1884 |
+
'conflict',
|
1885 |
+
'gala',
|
1886 |
+
'wallet',
|
1887 |
+
'wrist',
|
1888 |
+
'hug',
|
1889 |
+
'mermaid',
|
1890 |
+
'lava',
|
1891 |
+
'lawyer',
|
1892 |
+
'folk rock artist',
|
1893 |
+
'arena',
|
1894 |
+
'onion',
|
1895 |
+
'toothbrush',
|
1896 |
+
'fashion',
|
1897 |
+
'perfume',
|
1898 |
+
'flip',
|
1899 |
+
'triangle',
|
1900 |
+
'woodland',
|
1901 |
+
'mail',
|
1902 |
+
'grasshopper',
|
1903 |
+
'studio',
|
1904 |
+
'wood floor',
|
1905 |
+
'den',
|
1906 |
+
'racquet',
|
1907 |
+
'cello',
|
1908 |
+
'lemur',
|
1909 |
+
'astronaut',
|
1910 |
+
'glass table',
|
1911 |
+
'blood',
|
1912 |
+
'dvd',
|
1913 |
+
'planter',
|
1914 |
+
'silver',
|
1915 |
+
'leash',
|
1916 |
+
'master bedroom',
|
1917 |
+
'forest',
|
1918 |
+
'batter',
|
1919 |
+
'shoe',
|
1920 |
+
'engraving',
|
1921 |
+
'opening',
|
1922 |
+
'product',
|
1923 |
+
'toe',
|
1924 |
+
'cocktail',
|
1925 |
+
'mallard duck',
|
1926 |
+
'bike ride',
|
1927 |
+
'oasis',
|
1928 |
+
'wedding ring',
|
1929 |
+
'cinematographer',
|
1930 |
+
'holly',
|
1931 |
+
'autograph',
|
1932 |
+
'fence',
|
1933 |
+
'ice cube',
|
1934 |
+
'cove',
|
1935 |
+
'pineapple',
|
1936 |
+
'aurora',
|
1937 |
+
'glass bead',
|
1938 |
+
'produce',
|
1939 |
+
'apartment building',
|
1940 |
+
'cob',
|
1941 |
+
'miniature',
|
1942 |
+
'cockpit',
|
1943 |
+
'flashlight',
|
1944 |
+
'frog',
|
1945 |
+
'sheep',
|
1946 |
+
'groom',
|
1947 |
+
'steel',
|
1948 |
+
'watermelon',
|
1949 |
+
'clip art',
|
1950 |
+
'paper plate',
|
1951 |
+
'ostrich',
|
1952 |
+
'contour',
|
1953 |
+
'mural',
|
1954 |
+
'cub',
|
1955 |
+
'paisley bandanna',
|
1956 |
+
'winery',
|
1957 |
+
'turn',
|
1958 |
+
'handle',
|
1959 |
+
'satellite',
|
1960 |
+
'post',
|
1961 |
+
'pork',
|
1962 |
+
'child',
|
1963 |
+
'asphalt',
|
1964 |
+
'grocery store',
|
1965 |
+
'vulture',
|
1966 |
+
'trolley',
|
1967 |
+
'nightclub',
|
1968 |
+
'brick',
|
1969 |
+
'trailer',
|
1970 |
+
'compass',
|
1971 |
+
'cereal',
|
1972 |
+
'cafe',
|
1973 |
+
'cartoon character',
|
1974 |
+
'sugar',
|
1975 |
+
'fiction book',
|
1976 |
+
'glass floor',
|
1977 |
+
'umpire',
|
1978 |
+
'guitar',
|
1979 |
+
'hamster',
|
1980 |
+
'protester',
|
1981 |
+
'airplane',
|
1982 |
+
'garment',
|
1983 |
+
'blazer',
|
1984 |
+
'railway line',
|
1985 |
+
'wedding',
|
1986 |
+
'shoe box',
|
1987 |
+
'parking lot',
|
1988 |
+
'construction',
|
1989 |
+
'graduation ceremony',
|
1990 |
+
'tram',
|
1991 |
+
'telescope',
|
1992 |
+
'copper',
|
1993 |
+
'pain',
|
1994 |
+
'autumn forest',
|
1995 |
+
'guest house',
|
1996 |
+
'partner',
|
1997 |
+
'crayon',
|
1998 |
+
'dip',
|
1999 |
+
'boot',
|
2000 |
+
'corridor',
|
2001 |
+
'computer keyboard',
|
2002 |
+
'hockey player',
|
2003 |
+
'chicken coop',
|
2004 |
+
'bus station',
|
2005 |
+
'gathering',
|
2006 |
+
'ankle',
|
2007 |
+
'bunk bed',
|
2008 |
+
'wood table',
|
2009 |
+
'football coach',
|
2010 |
+
'monarch',
|
2011 |
+
'pharmacy',
|
2012 |
+
'legging',
|
2013 |
+
'mannequin',
|
2014 |
+
'female',
|
2015 |
+
'train track',
|
2016 |
+
'stack',
|
2017 |
+
'canopy',
|
2018 |
+
'design element',
|
2019 |
+
'grandmother',
|
2020 |
+
'symbol',
|
2021 |
+
'beach hut',
|
2022 |
+
'zucchini',
|
2023 |
+
'bomb',
|
2024 |
+
'businessman',
|
2025 |
+
'skyscraper',
|
2026 |
+
'tongue',
|
2027 |
+
'case',
|
2028 |
+
'sparkle',
|
2029 |
+
'highland',
|
2030 |
+
'ballroom',
|
2031 |
+
'prom',
|
2032 |
+
'estate',
|
2033 |
+
'customer',
|
2034 |
+
'archipelago',
|
2035 |
+
'cheese',
|
2036 |
+
'debate',
|
2037 |
+
'carriage',
|
2038 |
+
'bulldozer',
|
2039 |
+
'pumpkin',
|
2040 |
+
'sitting room',
|
2041 |
+
'gas station',
|
2042 |
+
'wedding reception',
|
2043 |
+
'camp',
|
2044 |
+
'dog bed',
|
2045 |
+
'tower',
|
2046 |
+
'property',
|
2047 |
+
'river bed',
|
2048 |
+
'pop latin artist',
|
2049 |
+
'fridge',
|
2050 |
+
'wine glass',
|
2051 |
+
'coast',
|
2052 |
+
'beer',
|
2053 |
+
'tow truck',
|
2054 |
+
'fire truck',
|
2055 |
+
'mountain bike',
|
2056 |
+
'thigh',
|
2057 |
+
'heron',
|
2058 |
+
'boat ride',
|
2059 |
+
'gondola',
|
2060 |
+
'turquoise',
|
2061 |
+
'lake',
|
2062 |
+
'llama',
|
2063 |
+
'kitty',
|
2064 |
+
'tin',
|
2065 |
+
'waiting room',
|
2066 |
+
'coffee cup',
|
2067 |
+
'socialite',
|
2068 |
+
'guard',
|
2069 |
+
'tap',
|
2070 |
+
'waterway',
|
2071 |
+
'forehead',
|
2072 |
+
'list',
|
2073 |
+
'erosion',
|
2074 |
+
'box',
|
2075 |
+
'sea lion',
|
2076 |
+
'pollen',
|
2077 |
+
'dam',
|
2078 |
+
'wasp',
|
2079 |
+
'salon',
|
2080 |
+
'tennis tournament',
|
2081 |
+
'flower box',
|
2082 |
+
'aquarium',
|
2083 |
+
'rain cloud',
|
2084 |
+
'clothing store',
|
2085 |
+
'lead singer',
|
2086 |
+
'cupcake',
|
2087 |
+
'tortoise',
|
2088 |
+
'lettering',
|
2089 |
+
'sport facility',
|
2090 |
+
'dance',
|
2091 |
+
'dog house',
|
2092 |
+
'nature',
|
2093 |
+
'football',
|
2094 |
+
'rooster',
|
2095 |
+
'footballer',
|
2096 |
+
'railway track',
|
2097 |
+
'crowd',
|
2098 |
+
'fishing rod',
|
2099 |
+
'silhouette',
|
2100 |
+
'wind turbine',
|
2101 |
+
'sari',
|
2102 |
+
'bus window',
|
2103 |
+
'cloud',
|
2104 |
+
'charity',
|
2105 |
+
'medal',
|
2106 |
+
'yoga',
|
2107 |
+
'event',
|
2108 |
+
'veil',
|
2109 |
+
'fashion menswear milan week',
|
2110 |
+
'news',
|
2111 |
+
'knife',
|
2112 |
+
'print',
|
2113 |
+
'screen tv',
|
2114 |
+
'walnut',
|
2115 |
+
'fungus',
|
2116 |
+
'ice cream',
|
2117 |
+
'computer mouse',
|
2118 |
+
'play',
|
2119 |
+
'tribe',
|
2120 |
+
'picture',
|
2121 |
+
'video game',
|
2122 |
+
'business card',
|
2123 |
+
'music festival',
|
2124 |
+
'rack',
|
2125 |
+
'envelope',
|
2126 |
+
'shower',
|
2127 |
+
'dirt road',
|
2128 |
+
'mine',
|
2129 |
+
'oyster',
|
2130 |
+
'monarch butterfly',
|
2131 |
+
'dude',
|
2132 |
+
'fruit salad',
|
2133 |
+
'podium',
|
2134 |
+
'fork',
|
2135 |
+
'lace',
|
2136 |
+
'test match',
|
2137 |
+
'boulder',
|
2138 |
+
'cricket player',
|
2139 |
+
'staircase',
|
2140 |
+
'peninsula',
|
2141 |
+
'shopping',
|
2142 |
+
'popcorn',
|
2143 |
+
'oak',
|
2144 |
+
'market stall',
|
2145 |
+
'pine tree',
|
2146 |
+
'mountaineer',
|
2147 |
+
'student',
|
2148 |
+
'closet',
|
2149 |
+
'hood',
|
2150 |
+
'handstand',
|
2151 |
+
'centerpiece',
|
2152 |
+
'insect',
|
2153 |
+
'patient',
|
2154 |
+
'makeover',
|
2155 |
+
'tennis player',
|
2156 |
+
'sheet',
|
2157 |
+
'park bench',
|
2158 |
+
'apple',
|
2159 |
+
'organism',
|
2160 |
+
'hook',
|
2161 |
+
'turkey',
|
2162 |
+
'tangerine',
|
2163 |
+
'sibling',
|
2164 |
+
'shopping mall',
|
2165 |
+
'bird',
|
2166 |
+
'scarf',
|
2167 |
+
'smoothie',
|
2168 |
+
'net',
|
2169 |
+
'grass',
|
2170 |
+
'napkin',
|
2171 |
+
'ray',
|
2172 |
+
'eyebrow',
|
2173 |
+
'laptop keyboard',
|
2174 |
+
'motorbike',
|
2175 |
+
'woman hand',
|
2176 |
+
'oven',
|
2177 |
+
'book cover',
|
2178 |
+
'easter egg',
|
2179 |
+
'microwave',
|
2180 |
+
'sand',
|
2181 |
+
'snapshot',
|
2182 |
+
'soccer ball',
|
2183 |
+
'makeup',
|
2184 |
+
'knight',
|
2185 |
+
'bowling ball',
|
2186 |
+
'shower curtain',
|
2187 |
+
'flame',
|
2188 |
+
'lightning',
|
2189 |
+
'running',
|
2190 |
+
'power plant',
|
2191 |
+
'crib',
|
2192 |
+
'cartoon',
|
2193 |
+
'moat',
|
2194 |
+
'fashion girl',
|
2195 |
+
'wedding invitation',
|
2196 |
+
'bottle',
|
2197 |
+
'cliff',
|
2198 |
+
'monastery',
|
2199 |
+
'file photo',
|
2200 |
+
'apartment',
|
2201 |
+
'casino',
|
2202 |
+
'cream',
|
2203 |
+
'sweatshirt',
|
2204 |
+
'storm',
|
2205 |
+
'cruise',
|
2206 |
+
'teddy bear',
|
2207 |
+
'shovel',
|
2208 |
+
'wind farm',
|
2209 |
+
'writer',
|
2210 |
+
'dock',
|
2211 |
+
'professional',
|
2212 |
+
'hotel room',
|
2213 |
+
'job',
|
2214 |
+
'monitor',
|
2215 |
+
'donkey',
|
2216 |
+
'pass',
|
2217 |
+
'interview',
|
2218 |
+
'duchess',
|
2219 |
+
'mark',
|
2220 |
+
'plank',
|
2221 |
+
'beard',
|
2222 |
+
'zombie',
|
2223 |
+
'trio',
|
2224 |
+
'channel',
|
2225 |
+
'cricket team',
|
2226 |
+
'windmill',
|
2227 |
+
'vest',
|
2228 |
+
'diagram',
|
2229 |
+
'cable',
|
2230 |
+
'winter scene',
|
2231 |
+
'golden gate bridge',
|
2232 |
+
'buffalo',
|
2233 |
+
'studio portrait',
|
2234 |
+
'pagoda',
|
2235 |
+
'whiskey',
|
2236 |
+
'freight train',
|
2237 |
+
'kite',
|
2238 |
+
'future',
|
2239 |
+
'steam train',
|
2240 |
+
'phone box',
|
2241 |
+
'headset',
|
2242 |
+
'wood',
|
2243 |
+
'snowboarder',
|
2244 |
+
'paper bag',
|
2245 |
+
'slide',
|
2246 |
+
'grapefruit',
|
2247 |
+
'seating',
|
2248 |
+
'morning',
|
2249 |
+
'bronze sculpture',
|
2250 |
+
'theatre actor',
|
2251 |
+
'stump',
|
2252 |
+
'jean',
|
2253 |
+
'landmark',
|
2254 |
+
'jam',
|
2255 |
+
'waist',
|
2256 |
+
'watercolor',
|
2257 |
+
'hammock',
|
2258 |
+
'light fixture',
|
2259 |
+
'ice',
|
2260 |
+
'basin',
|
2261 |
+
'beverage',
|
2262 |
+
'shelter',
|
2263 |
+
'premiere',
|
2264 |
+
'mound',
|
2265 |
+
'ear',
|
2266 |
+
'bronze',
|
2267 |
+
'sunlight',
|
2268 |
+
'street',
|
2269 |
+
'energy',
|
2270 |
+
'barn door',
|
2271 |
+
'hike',
|
2272 |
+
'fleet',
|
2273 |
+
'claw',
|
2274 |
+
'beach',
|
2275 |
+
'pepperoni',
|
2276 |
+
'bin',
|
2277 |
+
'trainer',
|
2278 |
+
'buffet',
|
2279 |
+
'archive',
|
2280 |
+
'toddler',
|
2281 |
+
'referee',
|
2282 |
+
'bay window',
|
2283 |
+
'dove',
|
2284 |
+
'production company',
|
2285 |
+
'evening light',
|
2286 |
+
'gate',
|
2287 |
+
'farm',
|
2288 |
+
'reed',
|
2289 |
+
'fruit stand',
|
2290 |
+
'explorer',
|
2291 |
+
'snow storm',
|
2292 |
+
'throw pillow',
|
2293 |
+
'button',
|
2294 |
+
'display case',
|
2295 |
+
'bookcase',
|
2296 |
+
'lead',
|
2297 |
+
'lipstick',
|
2298 |
+
'basketball court',
|
2299 |
+
'cargo',
|
2300 |
+
'ensemble',
|
2301 |
+
'pope',
|
2302 |
+
'clock tower',
|
2303 |
+
'teen',
|
2304 |
+
'speaker',
|
2305 |
+
'rat',
|
2306 |
+
'laptop',
|
2307 |
+
'ski',
|
2308 |
+
'mess',
|
2309 |
+
'stadium',
|
2310 |
+
'ferry boat',
|
2311 |
+
'bunny',
|
2312 |
+
'waterfront',
|
2313 |
+
'downtown',
|
2314 |
+
'sink',
|
2315 |
+
'press conference',
|
2316 |
+
'dinner',
|
2317 |
+
'condiment',
|
2318 |
+
'thread',
|
2319 |
+
'audience',
|
2320 |
+
'grid',
|
2321 |
+
'car',
|
2322 |
+
'plastic',
|
2323 |
+
'people',
|
2324 |
+
'barbecue',
|
2325 |
+
'pigeon',
|
2326 |
+
'urinal',
|
2327 |
+
'seagull',
|
2328 |
+
'volunteer',
|
2329 |
+
'hockey',
|
2330 |
+
'fir tree',
|
2331 |
+
'pollution',
|
2332 |
+
'trial',
|
2333 |
+
'collar',
|
2334 |
+
'area',
|
2335 |
+
'meeting room',
|
2336 |
+
'circus',
|
2337 |
+
'yogurt',
|
2338 |
+
'orangutan',
|
2339 |
+
'viaduct',
|
2340 |
+
'comedian',
|
2341 |
+
'drone',
|
2342 |
+
'scissor',
|
2343 |
+
'pop rock artist',
|
2344 |
+
'biscuit',
|
2345 |
+
'panda',
|
2346 |
+
'water feature',
|
2347 |
+
'air balloon',
|
2348 |
+
'remote control',
|
2349 |
+
'watercolor painting',
|
2350 |
+
'show',
|
2351 |
+
'walk',
|
2352 |
+
'post office',
|
2353 |
+
'bike path',
|
2354 |
+
'rap gangsta artist',
|
2355 |
+
'microphone',
|
2356 |
+
'crack',
|
2357 |
+
'sunset sky',
|
2358 |
+
'glass',
|
2359 |
+
'tv show',
|
2360 |
+
'cartoon style',
|
2361 |
+
'stripe',
|
2362 |
+
'foyer',
|
2363 |
+
'signal',
|
2364 |
+
'calligraphy',
|
2365 |
+
'bulb',
|
2366 |
+
'gardener',
|
2367 |
+
'coffee bean',
|
2368 |
+
'spider',
|
2369 |
+
'tapestry',
|
2370 |
+
'city skyline',
|
2371 |
+
'necklace',
|
2372 |
+
'kitten',
|
2373 |
+
'traveler',
|
2374 |
+
'veteran',
|
2375 |
+
'frosting',
|
2376 |
+
'fry',
|
2377 |
+
'tennis court',
|
2378 |
+
'tank top',
|
2379 |
+
'butterfly house',
|
2380 |
+
'mist',
|
2381 |
+
'drummer',
|
2382 |
+
'water level',
|
2383 |
+
'scale',
|
2384 |
+
'baseball glove',
|
2385 |
+
'music video performer',
|
2386 |
+
'champagne',
|
2387 |
+
'camping',
|
2388 |
+
'clothing',
|
2389 |
+
'water drop',
|
2390 |
+
'telephone box',
|
2391 |
+
'pen',
|
2392 |
+
'morning mist',
|
2393 |
+
'fire engine',
|
2394 |
+
'porch',
|
2395 |
+
'opening ceremony',
|
2396 |
+
'style',
|
2397 |
+
'palm tree',
|
2398 |
+
'fashion show',
|
2399 |
+
'universe',
|
2400 |
+
'scratch',
|
2401 |
+
'axe',
|
2402 |
+
'ottoman',
|
2403 |
+
'explosion',
|
2404 |
+
'rib',
|
2405 |
+
'boutique',
|
2406 |
+
'game',
|
2407 |
+
'cucumber',
|
2408 |
+
'fruit',
|
2409 |
+
'stone bridge',
|
2410 |
+
'nature reserve',
|
2411 |
+
'track',
|
2412 |
+
'train window',
|
2413 |
+
'punch',
|
2414 |
+
'telephone pole',
|
2415 |
+
'velvet',
|
2416 |
+
'sauce',
|
2417 |
+
'moon',
|
2418 |
+
'contrast',
|
2419 |
+
'flamingo',
|
2420 |
+
'bat',
|
2421 |
+
'vending machine',
|
2422 |
+
'ship',
|
2423 |
+
'equestrian',
|
2424 |
+
'shade',
|
2425 |
+
'comforter',
|
2426 |
+
'pallet',
|
2427 |
+
'sparrow',
|
2428 |
+
'wii',
|
2429 |
+
'glaze',
|
2430 |
+
'grocery',
|
2431 |
+
'steeple',
|
2432 |
+
'soccer player',
|
2433 |
+
'contract',
|
2434 |
+
'advertising',
|
2435 |
+
'runner',
|
2436 |
+
'chimpanzee',
|
2437 |
+
'world',
|
2438 |
+
'seat',
|
2439 |
+
'project',
|
2440 |
+
'chihuahua',
|
2441 |
+
'bubble',
|
2442 |
+
'willow',
|
2443 |
+
'pedestal',
|
2444 |
+
'soul hip hop artist',
|
2445 |
+
'curb',
|
2446 |
+
'drawer',
|
2447 |
+
'leaf',
|
2448 |
+
'banner',
|
2449 |
+
'launch party',
|
2450 |
+
'coach',
|
2451 |
+
'government',
|
2452 |
+
'snowball',
|
2453 |
+
'toy',
|
2454 |
+
'portrait',
|
2455 |
+
'doctor',
|
2456 |
+
'whiteboard',
|
2457 |
+
'electronic',
|
2458 |
+
'tiger',
|
2459 |
+
'graffiti',
|
2460 |
+
'column',
|
2461 |
+
'nightstand',
|
2462 |
+
'whistle',
|
2463 |
+
'maxi dress',
|
2464 |
+
'bench',
|
2465 |
+
'wetsuit',
|
2466 |
+
'bird feeder',
|
2467 |
+
'football game',
|
2468 |
+
'basketball',
|
2469 |
+
'class',
|
2470 |
+
'bathroom door',
|
2471 |
+
'store window',
|
2472 |
+
'text message',
|
2473 |
+
'wreath',
|
2474 |
+
'street view',
|
2475 |
+
'binocular',
|
2476 |
+
'pet',
|
2477 |
+
'facade',
|
2478 |
+
'drought',
|
2479 |
+
'lemon',
|
2480 |
+
'new year',
|
2481 |
+
'night view',
|
2482 |
+
'airplane window',
|
2483 |
+
'specie',
|
2484 |
+
'rule',
|
2485 |
+
'jaw',
|
2486 |
+
'wheat field',
|
2487 |
+
'diet',
|
2488 |
+
'pop artist',
|
2489 |
+
'habitat',
|
2490 |
+
'screenshot',
|
2491 |
+
'scoreboard',
|
2492 |
+
'shore',
|
2493 |
+
'mane',
|
2494 |
+
'quilt',
|
2495 |
+
'ski lift',
|
2496 |
+
'orchid',
|
2497 |
+
'turban',
|
2498 |
+
'christmas',
|
2499 |
+
'airport',
|
2500 |
+
'marina',
|
2501 |
+
'glass door',
|
2502 |
+
'glass bottle',
|
2503 |
+
'restaurant',
|
2504 |
+
'conductor',
|
2505 |
+
'logo',
|
2506 |
+
'sleep',
|
2507 |
+
'tape',
|
2508 |
+
'tomato',
|
2509 |
+
'river bank',
|
2510 |
+
'lilac',
|
2511 |
+
'tooth',
|
2512 |
+
'training',
|
2513 |
+
'pottery',
|
2514 |
+
'shop',
|
2515 |
+
'steam engine',
|
2516 |
+
'mason jar',
|
2517 |
+
'base',
|
2518 |
+
'procession',
|
2519 |
+
'border',
|
2520 |
+
'shoot',
|
2521 |
+
'footprint',
|
2522 |
+
'hotdog',
|
2523 |
+
'bull',
|
2524 |
+
'stocking',
|
2525 |
+
'recreation',
|
2526 |
+
'automobile model',
|
2527 |
+
'design',
|
2528 |
+
'country pop artist',
|
2529 |
+
'river',
|
2530 |
+
'retriever',
|
2531 |
+
'department store',
|
2532 |
+
'auditorium',
|
2533 |
+
'sport car',
|
2534 |
+
'supermarket',
|
2535 |
+
'belt',
|
2536 |
+
'cricket',
|
2537 |
+
'window box',
|
2538 |
+
'dress shirt',
|
2539 |
+
'letter',
|
2540 |
+
'residence',
|
2541 |
+
'megaphone',
|
2542 |
+
'pant',
|
2543 |
+
'wildfire',
|
2544 |
+
'bird nest',
|
2545 |
+
'crab',
|
2546 |
+
'swimsuit',
|
2547 |
+
'candle',
|
2548 |
+
'funeral',
|
2549 |
+
'mill',
|
2550 |
+
'national park',
|
2551 |
+
'plant',
|
2552 |
+
'cop',
|
2553 |
+
'power line',
|
2554 |
+
'perch',
|
2555 |
+
'blue',
|
2556 |
+
'finger',
|
2557 |
+
'ferris wheel',
|
2558 |
+
'globe',
|
2559 |
+
'skateboard',
|
2560 |
+
'helmet',
|
2561 |
+
'movie theater',
|
2562 |
+
'uniform',
|
2563 |
+
'hammer',
|
2564 |
+
'material',
|
2565 |
+
'kid',
|
2566 |
+
'well',
|
2567 |
+
'butterfly',
|
2568 |
+
'sideline',
|
2569 |
+
'fashion fall show',
|
2570 |
+
'planet earth',
|
2571 |
+
'lift',
|
2572 |
+
'male',
|
2573 |
+
'sauna',
|
2574 |
+
'gray',
|
2575 |
+
'flour',
|
2576 |
+
'sand sculpture',
|
2577 |
+
'program',
|
2578 |
+
'cabinet',
|
2579 |
+
'infant',
|
2580 |
+
'wheel',
|
2581 |
+
'aircraft model',
|
2582 |
+
'dough',
|
2583 |
+
'garlic',
|
2584 |
+
'skate',
|
2585 |
+
'arrow',
|
2586 |
+
'wrapping paper',
|
2587 |
+
'ripple',
|
2588 |
+
'lamp',
|
2589 |
+
'iron',
|
2590 |
+
'banknote',
|
2591 |
+
'beaver',
|
2592 |
+
'ferry',
|
2593 |
+
'courtyard',
|
2594 |
+
'bassist',
|
2595 |
+
'countryside',
|
2596 |
+
'steak',
|
2597 |
+
'comfort',
|
2598 |
+
'boxer',
|
2599 |
+
'laundry room',
|
2600 |
+
'campsite',
|
2601 |
+
'brick building',
|
2602 |
+
'golf',
|
2603 |
+
'subway',
|
2604 |
+
'headphone',
|
2605 |
+
'fort',
|
2606 |
+
'handbag',
|
2607 |
+
'drum',
|
2608 |
+
'flood',
|
2609 |
+
'saddle',
|
2610 |
+
'bass',
|
2611 |
+
'labyrinth',
|
2612 |
+
'needle',
|
2613 |
+
'sun ray',
|
2614 |
+
'app',
|
2615 |
+
'menu',
|
2616 |
+
'president',
|
2617 |
+
'cardigan',
|
2618 |
+
'dandelion',
|
2619 |
+
'wetland',
|
2620 |
+
'ice hockey player',
|
2621 |
+
'number',
|
2622 |
+
'city hall',
|
2623 |
+
'fishing',
|
2624 |
+
'portrait session',
|
2625 |
+
'pug',
|
2626 |
+
'key',
|
2627 |
+
'art print',
|
2628 |
+
'minister',
|
2629 |
+
'hurdle',
|
2630 |
+
'emergency',
|
2631 |
+
'painting artist',
|
2632 |
+
'flag pole',
|
2633 |
+
'evening',
|
2634 |
+
'purse',
|
2635 |
+
'recipe',
|
2636 |
+
'golf ball',
|
2637 |
+
'coloring book',
|
2638 |
+
'mountain peak',
|
2639 |
+
'senior',
|
2640 |
+
'holiday',
|
2641 |
+
'bud',
|
2642 |
+
'cousin',
|
2643 |
+
'pantry',
|
2644 |
+
'lap',
|
2645 |
+
'skin',
|
2646 |
+
'flag',
|
2647 |
+
'tissue paper',
|
2648 |
+
'ridge',
|
2649 |
+
'wire fence',
|
2650 |
+
'surfer',
|
2651 |
+
'climber',
|
2652 |
+
'photograph',
|
2653 |
+
'sewing machine',
|
2654 |
+
'cooler',
|
2655 |
+
'actress',
|
2656 |
+
'apple tree',
|
2657 |
+
'cancer',
|
2658 |
+
'starfish',
|
2659 |
+
'automobile make',
|
2660 |
+
'dumbbell',
|
2661 |
+
'brace',
|
2662 |
+
'tunnel',
|
2663 |
+
'window',
|
2664 |
+
'paint artist',
|
2665 |
+
'composition',
|
2666 |
+
'school student',
|
2667 |
+
'condo',
|
2668 |
+
'convertible',
|
2669 |
+
'cushion',
|
2670 |
+
'selfie',
|
2671 |
+
'territory',
|
2672 |
+
'guide',
|
2673 |
+
'tree',
|
2674 |
+
'court',
|
2675 |
+
'shrimp',
|
2676 |
+
'stone house',
|
2677 |
+
'dress',
|
2678 |
+
'eyelash',
|
2679 |
+
'juice',
|
2680 |
+
'broccoli',
|
2681 |
+
'chain',
|
2682 |
+
'tourism',
|
2683 |
+
'mountain top',
|
2684 |
+
'concept car',
|
2685 |
+
'film premiere',
|
2686 |
+
'light bulb',
|
2687 |
+
'cafeteria',
|
2688 |
+
'badge',
|
2689 |
+
'flower bed',
|
2690 |
+
'theater',
|
2691 |
+
'root',
|
2692 |
+
'racecar driver',
|
2693 |
+
'basketball boy game',
|
2694 |
+
'glove',
|
2695 |
+
'skyline',
|
2696 |
+
'wall',
|
2697 |
+
'glacier',
|
2698 |
+
'airport terminal',
|
2699 |
+
'bug',
|
2700 |
+
'trim',
|
2701 |
+
'railway station',
|
2702 |
+
'briefcase',
|
2703 |
+
'flat',
|
2704 |
+
'fountain',
|
2705 |
+
'person',
|
2706 |
+
'lane',
|
2707 |
+
'asparagus',
|
2708 |
+
'art',
|
2709 |
+
'lantern',
|
2710 |
+
'dishwasher',
|
2711 |
+
'director',
|
2712 |
+
'snake',
|
2713 |
+
'lecture',
|
2714 |
+
'game controller',
|
2715 |
+
'tree branch',
|
2716 |
+
'pub',
|
2717 |
+
'bathing suit',
|
2718 |
+
'queue',
|
2719 |
+
'belly',
|
2720 |
+
'poppy',
|
2721 |
+
'bow',
|
2722 |
+
'pitcher',
|
2723 |
+
'ice cream cone',
|
2724 |
+
'cave',
|
2725 |
+
'candy',
|
2726 |
+
'road bridge',
|
2727 |
+
'host',
|
2728 |
+
'traffic jam',
|
2729 |
+
'earring',
|
2730 |
+
'file',
|
2731 |
+
'foot',
|
2732 |
+
'watermark overlay stamp',
|
2733 |
+
'mailbox',
|
2734 |
+
'supercar',
|
2735 |
+
'railing',
|
2736 |
+
'bedroom',
|
2737 |
+
'seafood',
|
2738 |
+
'waffle',
|
2739 |
+
'bronze statue',
|
2740 |
+
'plan',
|
2741 |
+
'flow',
|
2742 |
+
'marble',
|
2743 |
+
'basketball game',
|
2744 |
+
'automobile',
|
2745 |
+
'scene',
|
2746 |
+
'cypress tree',
|
2747 |
+
'soldier',
|
2748 |
+
'skateboarder',
|
2749 |
+
'glass building',
|
2750 |
+
'cherry tree',
|
2751 |
+
'pump',
|
2752 |
+
'grain',
|
2753 |
+
'wildebeest',
|
2754 |
+
'loop',
|
2755 |
+
'frame',
|
2756 |
+
'bathtub',
|
2757 |
+
'saxophone',
|
2758 |
+
'diver',
|
2759 |
+
'stalk',
|
2760 |
+
'lily',
|
2761 |
+
'bead',
|
2762 |
+
'alley',
|
2763 |
+
'flock',
|
2764 |
+
'family room',
|
2765 |
+
'manufacturing',
|
2766 |
+
'pointer',
|
2767 |
+
'worker',
|
2768 |
+
'navy',
|
2769 |
+
'potato',
|
2770 |
+
'teacher',
|
2771 |
+
'photography',
|
2772 |
+
'dolly',
|
2773 |
+
'boardwalk',
|
2774 |
+
'water fountain',
|
2775 |
+
'athlete',
|
2776 |
+
'side dish',
|
2777 |
+
'bay',
|
2778 |
+
'ice hockey',
|
2779 |
+
'phone',
|
2780 |
+
'hero',
|
2781 |
+
'face',
|
2782 |
+
'gold medal',
|
2783 |
+
'blind',
|
2784 |
+
'swamp',
|
2785 |
+
'researcher',
|
2786 |
+
'swim',
|
2787 |
+
'meatball',
|
2788 |
+
'iguana',
|
2789 |
+
'leather jacket',
|
2790 |
+
'jellyfish',
|
2791 |
+
'site',
|
2792 |
+
'smoke',
|
2793 |
+
'traffic signal',
|
2794 |
+
'melon',
|
2795 |
+
'beetle',
|
2796 |
+
'calculator',
|
2797 |
+
'skirt',
|
2798 |
+
'plantation',
|
2799 |
+
'sculptor',
|
2800 |
+
'barrier',
|
2801 |
+
'catcher',
|
2802 |
+
'security guard',
|
2803 |
+
'sketch',
|
2804 |
+
'awning',
|
2805 |
+
'steering wheel',
|
2806 |
+
'mountain view',
|
2807 |
+
'bus stop',
|
2808 |
+
'pool',
|
2809 |
+
'leg',
|
2810 |
+
'spotlight',
|
2811 |
+
'apron',
|
2812 |
+
'mineral',
|
2813 |
+
'inlet',
|
2814 |
+
'sleeve',
|
2815 |
+
'torch',
|
2816 |
+
'emotion',
|
2817 |
+
'march',
|
2818 |
+
'police officer',
|
2819 |
+
'performance',
|
2820 |
+
'lamp post',
|
2821 |
+
'fishing boat',
|
2822 |
+
'summer',
|
2823 |
+
'presentation',
|
2824 |
+
'saucer',
|
2825 |
+
'suitcase',
|
2826 |
+
'supermodel',
|
2827 |
+
'goalkeeper',
|
2828 |
+
'shrub',
|
2829 |
+
'rock artist',
|
2830 |
+
'document',
|
2831 |
+
'beach house',
|
2832 |
+
'man',
|
2833 |
+
'blue artist',
|
2834 |
+
'cigar',
|
2835 |
+
'railroad track',
|
2836 |
+
'gown',
|
2837 |
+
'mosaic',
|
2838 |
+
'bungalow',
|
2839 |
+
'alphabet',
|
2840 |
+
'baseball field',
|
2841 |
+
'shed',
|
2842 |
+
'pedestrian',
|
2843 |
+
'rail',
|
2844 |
+
'soap',
|
2845 |
+
'kitchen counter',
|
2846 |
+
'dessert',
|
2847 |
+
'dunk',
|
2848 |
+
'blossom',
|
2849 |
+
'conversation',
|
2850 |
+
'fruit market',
|
2851 |
+
'glass jar',
|
2852 |
+
'military',
|
2853 |
+
'beer bottle',
|
2854 |
+
'photographer',
|
2855 |
+
'tennis racket',
|
2856 |
+
'competition',
|
2857 |
+
'escalator',
|
2858 |
+
'bell tower',
|
2859 |
+
'stilt',
|
2860 |
+
'ballerina',
|
2861 |
+
'television',
|
2862 |
+
'feather',
|
2863 |
+
'fence post',
|
2864 |
+
'rear',
|
2865 |
+
'dahlia',
|
2866 |
+
'red carpet',
|
2867 |
+
'tub',
|
2868 |
+
'hole',
|
2869 |
+
'fortress',
|
2870 |
+
'pack',
|
2871 |
+
'telephone',
|
2872 |
+
'cardboard',
|
2873 |
+
'city park',
|
2874 |
+
'platform',
|
2875 |
+
'college student',
|
2876 |
+
'arch bridge',
|
2877 |
+
'wind',
|
2878 |
+
'blender',
|
2879 |
+
'bloom',
|
2880 |
+
'ice rink',
|
2881 |
+
'birthday',
|
2882 |
+
'raven',
|
2883 |
+
'fairy',
|
2884 |
+
'embankment',
|
2885 |
+
'hall',
|
2886 |
+
'flower shop',
|
2887 |
+
'suburb',
|
2888 |
+
'barrel',
|
2889 |
+
'biker',
|
2890 |
+
'steam',
|
2891 |
+
'dragonfly',
|
2892 |
+
'formation',
|
2893 |
+
'electricity',
|
2894 |
+
'business people',
|
2895 |
+
'symmetry',
|
2896 |
+
'walkway',
|
2897 |
+
'fisherman',
|
2898 |
+
'gas mask',
|
2899 |
+
'loch',
|
2900 |
+
'youth',
|
2901 |
+
'hanger',
|
2902 |
+
'dot',
|
2903 |
+
'fish',
|
2904 |
+
'street market',
|
2905 |
+
'animation film',
|
2906 |
+
'crime fiction film',
|
2907 |
+
'boar',
|
2908 |
+
'emblem',
|
2909 |
+
'halloween costume',
|
2910 |
+
'kangaroo',
|
2911 |
+
'couple',
|
2912 |
+
'spoon',
|
2913 |
+
'squirrel',
|
2914 |
+
'neon sign',
|
2915 |
+
'sky',
|
2916 |
+
'office desk',
|
2917 |
+
'beauty salon',
|
2918 |
+
'breakwater',
|
2919 |
+
'fashion look',
|
2920 |
+
'toaster',
|
2921 |
+
'author',
|
2922 |
+
'news conference',
|
2923 |
+
'outdoor',
|
2924 |
+
'canoe',
|
2925 |
+
'dragon',
|
2926 |
+
'tool',
|
2927 |
+
'shopping centre',
|
2928 |
+
'ladybug',
|
2929 |
+
'swimming pool',
|
2930 |
+
'landscaping',
|
2931 |
+
'ski pole',
|
2932 |
+
'red',
|
2933 |
+
'truck',
|
2934 |
+
'fly',
|
2935 |
+
'temple',
|
2936 |
+
'level',
|
2937 |
+
'sunday',
|
2938 |
+
'railroad bridge',
|
2939 |
+
'car mirror',
|
2940 |
+
'lawn mower',
|
2941 |
+
'flute',
|
2942 |
+
'aircraft carrier',
|
2943 |
+
'fashion menswear london week',
|
2944 |
+
'sunshine',
|
2945 |
+
'tile floor',
|
2946 |
+
'skull',
|
2947 |
+
'fossil',
|
2948 |
+
'flower arrangement',
|
2949 |
+
'diaper',
|
2950 |
+
'sea turtle',
|
2951 |
+
'cherry blossom',
|
2952 |
+
'fireman',
|
2953 |
+
'shack',
|
2954 |
+
'lens',
|
2955 |
+
'waiter',
|
2956 |
+
'animal',
|
2957 |
+
'basement',
|
2958 |
+
'snow',
|
2959 |
+
'autumn park',
|
2960 |
+
'glass box',
|
2961 |
+
'kick',
|
2962 |
+
'head',
|
2963 |
+
'anniversary',
|
2964 |
+
'vine',
|
2965 |
+
'back',
|
2966 |
+
'paper lantern',
|
2967 |
+
'fish tank',
|
2968 |
+
'cellphone',
|
2969 |
+
'silk',
|
2970 |
+
'coral',
|
2971 |
+
'notebook',
|
2972 |
+
'photo',
|
2973 |
+
'gazebo',
|
2974 |
+
'ketchup',
|
2975 |
+
'driver',
|
2976 |
+
'farmer',
|
2977 |
+
'bonfire',
|
2978 |
+
'chestnut',
|
2979 |
+
'photoshoot',
|
2980 |
+
'football field',
|
2981 |
+
'olive tree',
|
2982 |
+
'pheasant',
|
2983 |
+
'sandal',
|
2984 |
+
'toilet',
|
2985 |
+
'fireplace',
|
2986 |
+
'music',
|
2987 |
+
'deity',
|
2988 |
+
'fish market',
|
2989 |
+
'fig',
|
2990 |
+
'bell',
|
2991 |
+
'neck',
|
2992 |
+
'grave',
|
2993 |
+
'villa',
|
2994 |
+
'cyclist',
|
2995 |
+
'crate',
|
2996 |
+
'grey',
|
2997 |
+
'asphalt road',
|
2998 |
+
'soccer',
|
2999 |
+
'hostel',
|
3000 |
+
'municipality',
|
3001 |
+
'courthouse',
|
3002 |
+
'roof',
|
3003 |
+
'end table',
|
3004 |
+
'pot',
|
3005 |
+
'sedan',
|
3006 |
+
'structure',
|
3007 |
+
'folk artist',
|
3008 |
+
'sport',
|
3009 |
+
'sport team',
|
3010 |
+
'protest',
|
3011 |
+
'syringe',
|
3012 |
+
'fashion designer',
|
3013 |
+
'jersey',
|
3014 |
+
'heart shape',
|
3015 |
+
'kayak',
|
3016 |
+
'stare',
|
3017 |
+
'sit with',
|
3018 |
+
'direct',
|
3019 |
+
'read',
|
3020 |
+
'photograph',
|
3021 |
+
'spin',
|
3022 |
+
'teach',
|
3023 |
+
'laugh',
|
3024 |
+
'carve',
|
3025 |
+
'grow on',
|
3026 |
+
'warm',
|
3027 |
+
'watch',
|
3028 |
+
'stretch',
|
3029 |
+
'smell',
|
3030 |
+
'decorate',
|
3031 |
+
'shine',
|
3032 |
+
'light',
|
3033 |
+
'dance',
|
3034 |
+
'send',
|
3035 |
+
'park',
|
3036 |
+
'chase',
|
3037 |
+
'collect',
|
3038 |
+
'lead',
|
3039 |
+
'kiss',
|
3040 |
+
'lead to',
|
3041 |
+
'lick',
|
3042 |
+
'smile',
|
3043 |
+
'cheer',
|
3044 |
+
'sit',
|
3045 |
+
'point',
|
3046 |
+
'block',
|
3047 |
+
'rock',
|
3048 |
+
'drop',
|
3049 |
+
'cut',
|
3050 |
+
'ski',
|
3051 |
+
'wrap',
|
3052 |
+
'lose',
|
3053 |
+
'serve',
|
3054 |
+
'provide',
|
3055 |
+
'sleep',
|
3056 |
+
'dress',
|
3057 |
+
'embrace',
|
3058 |
+
'burn',
|
3059 |
+
'pack',
|
3060 |
+
'stir',
|
3061 |
+
'create',
|
3062 |
+
'touch',
|
3063 |
+
'wash',
|
3064 |
+
'stick',
|
3065 |
+
'reveal',
|
3066 |
+
'shop',
|
3067 |
+
'train',
|
3068 |
+
'paint',
|
3069 |
+
'groom',
|
3070 |
+
'hunt',
|
3071 |
+
'bloom',
|
3072 |
+
'play',
|
3073 |
+
'pay',
|
3074 |
+
'brush',
|
3075 |
+
'shoot',
|
3076 |
+
'hold',
|
3077 |
+
'picture',
|
3078 |
+
'carry',
|
3079 |
+
'sip',
|
3080 |
+
'contain',
|
3081 |
+
'turn',
|
3082 |
+
'pour',
|
3083 |
+
'pitch',
|
3084 |
+
'give',
|
3085 |
+
'add',
|
3086 |
+
'blow',
|
3087 |
+
'look in',
|
3088 |
+
'show',
|
3089 |
+
'walk',
|
3090 |
+
'illuminate',
|
3091 |
+
'kneel',
|
3092 |
+
'cover',
|
3093 |
+
'drag',
|
3094 |
+
'post',
|
3095 |
+
'present',
|
3096 |
+
'fit',
|
3097 |
+
'operate',
|
3098 |
+
'fish',
|
3099 |
+
'race',
|
3100 |
+
'write',
|
3101 |
+
'deliver',
|
3102 |
+
'peel',
|
3103 |
+
'push',
|
3104 |
+
'run',
|
3105 |
+
'sit around',
|
3106 |
+
'buy',
|
3107 |
+
'jump',
|
3108 |
+
'walk on',
|
3109 |
+
'attend',
|
3110 |
+
'clean',
|
3111 |
+
'sell',
|
3112 |
+
'ride on',
|
3113 |
+
'mount',
|
3114 |
+
'host',
|
3115 |
+
'dry',
|
3116 |
+
'plant',
|
3117 |
+
'sing',
|
3118 |
+
'row',
|
3119 |
+
'shake',
|
3120 |
+
'perch',
|
3121 |
+
'ride',
|
3122 |
+
'fight',
|
3123 |
+
'skateboard',
|
3124 |
+
'live',
|
3125 |
+
'call',
|
3126 |
+
'surround',
|
3127 |
+
'practice',
|
3128 |
+
'play on',
|
3129 |
+
'work on',
|
3130 |
+
'step',
|
3131 |
+
'relax',
|
3132 |
+
'hit',
|
3133 |
+
'fall in',
|
3134 |
+
'flow',
|
3135 |
+
'greet',
|
3136 |
+
'launch',
|
3137 |
+
'wear',
|
3138 |
+
'hang on',
|
3139 |
+
'drive',
|
3140 |
+
'sit in',
|
3141 |
+
'break',
|
3142 |
+
'learn',
|
3143 |
+
'fly',
|
3144 |
+
'connect',
|
3145 |
+
'display',
|
3146 |
+
'locate',
|
3147 |
+
'compete',
|
3148 |
+
'go for',
|
3149 |
+
'sail',
|
3150 |
+
'lift',
|
3151 |
+
'toast',
|
3152 |
+
'help',
|
3153 |
+
'run on',
|
3154 |
+
'reflect',
|
3155 |
+
'pose',
|
3156 |
+
'scratch',
|
3157 |
+
'frame',
|
3158 |
+
'dribble',
|
3159 |
+
'herd',
|
3160 |
+
'enter',
|
3161 |
+
'exit',
|
3162 |
+
'place',
|
3163 |
+
'inspect',
|
3164 |
+
'build',
|
3165 |
+
'pick',
|
3166 |
+
'fill',
|
3167 |
+
'grind',
|
3168 |
+
'skate',
|
3169 |
+
'offer',
|
3170 |
+
'float',
|
3171 |
+
'sit by',
|
3172 |
+
'stand',
|
3173 |
+
'release',
|
3174 |
+
'rest',
|
3175 |
+
'singe',
|
3176 |
+
'climb',
|
3177 |
+
'tie',
|
3178 |
+
'mark',
|
3179 |
+
'lay',
|
3180 |
+
'stand around',
|
3181 |
+
'capture',
|
3182 |
+
'set',
|
3183 |
+
'land',
|
3184 |
+
'swinge',
|
3185 |
+
'run in',
|
3186 |
+
'kick',
|
3187 |
+
'lean',
|
3188 |
+
'head',
|
3189 |
+
'sign',
|
3190 |
+
'approach',
|
3191 |
+
'swim',
|
3192 |
+
'close',
|
3193 |
+
'crash',
|
3194 |
+
'control',
|
3195 |
+
'fall',
|
3196 |
+
'remove',
|
3197 |
+
'repair',
|
3198 |
+
'open',
|
3199 |
+
'appear',
|
3200 |
+
'travel',
|
3201 |
+
'load',
|
3202 |
+
'miss',
|
3203 |
+
'check',
|
3204 |
+
'surf',
|
3205 |
+
'moor',
|
3206 |
+
'smoke',
|
3207 |
+
'drink',
|
3208 |
+
'board',
|
3209 |
+
'seat',
|
3210 |
+
'feed',
|
3211 |
+
'rise',
|
3212 |
+
'sit on',
|
3213 |
+
'swing',
|
3214 |
+
'grow',
|
3215 |
+
'strike',
|
3216 |
+
'date',
|
3217 |
+
'slide',
|
3218 |
+
'share',
|
3219 |
+
'graze',
|
3220 |
+
'jump in',
|
3221 |
+
'lie',
|
3222 |
+
'extrude',
|
3223 |
+
'roll',
|
3224 |
+
'move',
|
3225 |
+
'gather',
|
3226 |
+
'eat',
|
3227 |
+
'pull',
|
3228 |
+
'run through',
|
3229 |
+
'squeeze',
|
3230 |
+
'lay on',
|
3231 |
+
'draw',
|
3232 |
+
'play with',
|
3233 |
+
'wave',
|
3234 |
+
'assemble',
|
3235 |
+
'perform',
|
3236 |
+
'march',
|
3237 |
+
'score',
|
3238 |
+
'attach',
|
3239 |
+
'adjust',
|
3240 |
+
'hang',
|
3241 |
+
'hug',
|
3242 |
+
'sleep on',
|
3243 |
+
'throw',
|
3244 |
+
'live in',
|
3245 |
+
'talk',
|
3246 |
+
'pet',
|
3247 |
+
'work',
|
3248 |
+
'run with',
|
3249 |
+
'see',
|
3250 |
+
'flip',
|
3251 |
+
'catch',
|
3252 |
+
'cook',
|
3253 |
+
'receive',
|
3254 |
+
'celebrate',
|
3255 |
+
'look',
|
3256 |
+
'classic',
|
3257 |
+
'bridal',
|
3258 |
+
'indoor',
|
3259 |
+
'industrial',
|
3260 |
+
'teenage',
|
3261 |
+
'mini',
|
3262 |
+
'grassy',
|
3263 |
+
'aged',
|
3264 |
+
'long',
|
3265 |
+
'warm',
|
3266 |
+
'light',
|
3267 |
+
'handsome',
|
3268 |
+
'happy',
|
3269 |
+
'three',
|
3270 |
+
'pregnant',
|
3271 |
+
'circular',
|
3272 |
+
'urban',
|
3273 |
+
'silver',
|
3274 |
+
'ceramic',
|
3275 |
+
'3d',
|
3276 |
+
'green',
|
3277 |
+
'blonde',
|
3278 |
+
'golden',
|
3279 |
+
'dark',
|
3280 |
+
'tropical',
|
3281 |
+
'ripe',
|
3282 |
+
'deep',
|
3283 |
+
'fat',
|
3284 |
+
'musical',
|
3285 |
+
'giant',
|
3286 |
+
'medical',
|
3287 |
+
'medieval',
|
3288 |
+
'bare',
|
3289 |
+
'stunning',
|
3290 |
+
'bold',
|
3291 |
+
'geographical',
|
3292 |
+
'huge',
|
3293 |
+
'plastic',
|
3294 |
+
'foggy',
|
3295 |
+
'stormy',
|
3296 |
+
'gothic',
|
3297 |
+
'biological',
|
3298 |
+
'empty',
|
3299 |
+
'clear',
|
3300 |
+
'antique',
|
3301 |
+
'pink',
|
3302 |
+
'steep',
|
3303 |
+
'brown',
|
3304 |
+
'striped',
|
3305 |
+
'aerial',
|
3306 |
+
'rainy',
|
3307 |
+
'cool',
|
3308 |
+
'flying',
|
3309 |
+
'commercial',
|
3310 |
+
'purple',
|
3311 |
+
'trendy',
|
3312 |
+
'blank',
|
3313 |
+
'haired',
|
3314 |
+
'dead',
|
3315 |
+
'wooden',
|
3316 |
+
'flat',
|
3317 |
+
'high',
|
3318 |
+
'beige',
|
3319 |
+
'panoramic',
|
3320 |
+
'angry',
|
3321 |
+
'dozen',
|
3322 |
+
'rural',
|
3323 |
+
'solar',
|
3324 |
+
'big',
|
3325 |
+
'small',
|
3326 |
+
'stained',
|
3327 |
+
'thick',
|
3328 |
+
'many',
|
3329 |
+
'fresh',
|
3330 |
+
'clean',
|
3331 |
+
'strong',
|
3332 |
+
'abstract',
|
3333 |
+
'crowded',
|
3334 |
+
'retro',
|
3335 |
+
'dry',
|
3336 |
+
'gorgeous',
|
3337 |
+
'martial',
|
3338 |
+
'modern',
|
3339 |
+
'blue',
|
3340 |
+
'cloudy',
|
3341 |
+
'low',
|
3342 |
+
'four',
|
3343 |
+
'outdoor',
|
3344 |
+
'single',
|
3345 |
+
'much',
|
3346 |
+
'beautiful',
|
3347 |
+
'snowy',
|
3348 |
+
'pretty',
|
3349 |
+
'new',
|
3350 |
+
'short',
|
3351 |
+
'sunny',
|
3352 |
+
'closed',
|
3353 |
+
'rocky',
|
3354 |
+
'red',
|
3355 |
+
'two',
|
3356 |
+
'double',
|
3357 |
+
'male',
|
3358 |
+
'gray',
|
3359 |
+
'five',
|
3360 |
+
'colorful',
|
3361 |
+
'automotive',
|
3362 |
+
'various',
|
3363 |
+
'one',
|
3364 |
+
'old',
|
3365 |
+
'rusty',
|
3366 |
+
'tall',
|
3367 |
+
'wild',
|
3368 |
+
'narrow',
|
3369 |
+
'natural',
|
3370 |
+
'several',
|
3371 |
+
'frozen',
|
3372 |
+
'textured',
|
3373 |
+
'lush',
|
3374 |
+
'young',
|
3375 |
+
'hot',
|
3376 |
+
'mixed',
|
3377 |
+
'white',
|
3378 |
+
'float',
|
3379 |
+
'quiet',
|
3380 |
+
'round',
|
3381 |
+
'bright',
|
3382 |
+
'religious',
|
3383 |
+
'female',
|
3384 |
+
'historical',
|
3385 |
+
'shiny',
|
3386 |
+
'traditional',
|
3387 |
+
'tourist',
|
3388 |
+
'yellow',
|
3389 |
+
'bald',
|
3390 |
+
'coastal',
|
3391 |
+
'lovely',
|
3392 |
+
'little',
|
3393 |
+
'broken',
|
3394 |
+
'romantic',
|
3395 |
+
'wide',
|
3396 |
+
'royal',
|
3397 |
+
'rich',
|
3398 |
+
'open',
|
3399 |
+
'cute',
|
3400 |
+
'ancient',
|
3401 |
+
'cold',
|
3402 |
+
'political',
|
3403 |
+
'elderly',
|
3404 |
+
'gold',
|
3405 |
+
'full',
|
3406 |
+
'rustic',
|
3407 |
+
'metallic',
|
3408 |
+
'floral',
|
3409 |
+
'sad',
|
3410 |
+
'wet',
|
3411 |
+
'fancy',
|
3412 |
+
'senior',
|
3413 |
+
'tiny',
|
3414 |
+
'stylish',
|
3415 |
+
'large',
|
3416 |
+
'frosty',
|
3417 |
+
'orange',
|
3418 |
+
'transparent',
|
3419 |
+
'electronic',
|
3420 |
+
'shallow',
|
3421 |
+
'scared',
|
3422 |
+
'armed',
|
3423 |
+
'dirty',
|
3424 |
+
'historic',
|
3425 |
+
'black',
|
3426 |
+
'few',
|
3427 |
+
'windy',
|
3428 |
+
'some',
|
3429 |
+
'square',
|
3430 |
+
'ornamental',
|
3431 |
+
'sandy',
|
3432 |
+
'thin']
|
3433 |
+
|
3434 |
+
|
3435 |
+
tra_array = np.array(tra_array)
|
3436 |
+
|
3437 |
+
|
environment.yaml
ADDED
@@ -0,0 +1,288 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
name: py38
|
2 |
+
channels:
|
3 |
+
- pytorch
|
4 |
+
- nvidia
|
5 |
+
- defaults
|
6 |
+
dependencies:
|
7 |
+
- _libgcc_mutex=0.1=main
|
8 |
+
- _openmp_mutex=5.1=1_gnu
|
9 |
+
- appdirs=1.4.4=pyhd3eb1b0_0
|
10 |
+
- asttokens=2.0.5=pyhd3eb1b0_0
|
11 |
+
- backcall=0.2.0=pyhd3eb1b0_0
|
12 |
+
- blas=1.0=mkl
|
13 |
+
- brotlipy=0.7.0=py38h27cfd23_1003
|
14 |
+
- bzip2=1.0.8=h7b6447c_0
|
15 |
+
- ca-certificates=2023.01.10=h06a4308_0
|
16 |
+
- certifi=2022.12.7=py38h06a4308_0
|
17 |
+
- cffi=1.15.1=py38h5eee18b_3
|
18 |
+
- charset-normalizer=2.0.4=pyhd3eb1b0_0
|
19 |
+
- comm=0.1.2=py38h06a4308_0
|
20 |
+
- cryptography=39.0.1=py38h9ce1e76_0
|
21 |
+
- cuda-cudart=11.7.99=0
|
22 |
+
- cuda-cupti=11.7.101=0
|
23 |
+
- cuda-libraries=11.7.1=0
|
24 |
+
- cuda-nvrtc=11.7.99=0
|
25 |
+
- cuda-nvtx=11.7.91=0
|
26 |
+
- cuda-runtime=11.7.1=0
|
27 |
+
- debugpy=1.5.1=py38h295c915_0
|
28 |
+
- executing=0.8.3=pyhd3eb1b0_0
|
29 |
+
- ffmpeg=4.3=hf484d3e_0
|
30 |
+
- flit-core=3.8.0=py38h06a4308_0
|
31 |
+
- freetype=2.12.1=h4a9f257_0
|
32 |
+
- giflib=5.2.1=h5eee18b_3
|
33 |
+
- gmp=6.2.1=h295c915_3
|
34 |
+
- gnutls=3.6.15=he1e5248_0
|
35 |
+
- idna=3.4=py38h06a4308_0
|
36 |
+
- importlib_metadata=6.0.0=hd3eb1b0_0
|
37 |
+
- intel-openmp=2021.4.0=h06a4308_3561
|
38 |
+
- ipykernel=6.19.2=py38hb070fc8_0
|
39 |
+
- ipython=8.12.0=py38h06a4308_0
|
40 |
+
- jedi=0.18.1=py38h06a4308_1
|
41 |
+
- jpeg=9e=h5eee18b_1
|
42 |
+
- jupyter_client=8.1.0=py38h06a4308_0
|
43 |
+
- jupyter_core=5.3.0=py38h06a4308_0
|
44 |
+
- lame=3.100=h7b6447c_0
|
45 |
+
- lcms2=2.12=h3be6417_0
|
46 |
+
- ld_impl_linux-64=2.38=h1181459_1
|
47 |
+
- lerc=3.0=h295c915_0
|
48 |
+
- libcublas=11.10.3.66=0
|
49 |
+
- libcufft=10.7.2.124=h4fbf590_0
|
50 |
+
- libcufile=1.6.0.25=0
|
51 |
+
- libcurand=10.3.2.56=0
|
52 |
+
- libcusolver=11.4.0.1=0
|
53 |
+
- libcusparse=11.7.4.91=0
|
54 |
+
- libdeflate=1.17=h5eee18b_0
|
55 |
+
- libffi=3.4.2=h6a678d5_6
|
56 |
+
- libgcc-ng=11.2.0=h1234567_1
|
57 |
+
- libgfortran-ng=11.2.0=h00389a5_1
|
58 |
+
- libgfortran5=11.2.0=h1234567_1
|
59 |
+
- libgomp=11.2.0=h1234567_1
|
60 |
+
- libiconv=1.16=h7f8727e_2
|
61 |
+
- libidn2=2.3.2=h7f8727e_0
|
62 |
+
- libnpp=11.7.4.75=0
|
63 |
+
- libnvjpeg=11.8.0.2=0
|
64 |
+
- libpng=1.6.39=h5eee18b_0
|
65 |
+
- libsodium=1.0.18=h7b6447c_0
|
66 |
+
- libstdcxx-ng=11.2.0=h1234567_1
|
67 |
+
- libtasn1=4.19.0=h5eee18b_0
|
68 |
+
- libtiff=4.5.0=h6a678d5_2
|
69 |
+
- libunistring=0.9.10=h27cfd23_0
|
70 |
+
- libwebp=1.2.4=h11a3e52_1
|
71 |
+
- libwebp-base=1.2.4=h5eee18b_1
|
72 |
+
- lz4-c=1.9.4=h6a678d5_0
|
73 |
+
- matplotlib-inline=0.1.6=py38h06a4308_0
|
74 |
+
- mkl=2021.4.0=h06a4308_640
|
75 |
+
- mkl-service=2.4.0=py38h7f8727e_0
|
76 |
+
- mkl_fft=1.3.1=py38hd3c417c_0
|
77 |
+
- mkl_random=1.2.2=py38h51133e4_0
|
78 |
+
- ncurses=6.4=h6a678d5_0
|
79 |
+
- nest-asyncio=1.5.6=py38h06a4308_0
|
80 |
+
- nettle=3.7.3=hbbd107a_1
|
81 |
+
- numpy=1.23.5=py38h14f4228_0
|
82 |
+
- numpy-base=1.23.5=py38h31eccc5_0
|
83 |
+
- openh264=2.1.1=h4ff587b_0
|
84 |
+
- openssl=1.1.1t=h7f8727e_0
|
85 |
+
- packaging=23.0=py38h06a4308_0
|
86 |
+
- parso=0.8.3=pyhd3eb1b0_0
|
87 |
+
- pexpect=4.8.0=pyhd3eb1b0_3
|
88 |
+
- pickleshare=0.7.5=pyhd3eb1b0_1003
|
89 |
+
- pillow=9.4.0=py38h6a678d5_0
|
90 |
+
- pip=23.0.1=py38h06a4308_0
|
91 |
+
- platformdirs=2.5.2=py38h06a4308_0
|
92 |
+
- pooch=1.4.0=pyhd3eb1b0_0
|
93 |
+
- prompt-toolkit=3.0.36=py38h06a4308_0
|
94 |
+
- psutil=5.9.0=py38h5eee18b_0
|
95 |
+
- ptyprocess=0.7.0=pyhd3eb1b0_2
|
96 |
+
- pure_eval=0.2.2=pyhd3eb1b0_0
|
97 |
+
- pycparser=2.21=pyhd3eb1b0_0
|
98 |
+
- pyopenssl=23.0.0=py38h06a4308_0
|
99 |
+
- pysocks=1.7.1=py38h06a4308_0
|
100 |
+
- python=3.8.16=h7a1cb2a_3
|
101 |
+
- python-dateutil=2.8.2=pyhd3eb1b0_0
|
102 |
+
- pytorch=1.13.1=py3.8_cuda11.7_cudnn8.5.0_0
|
103 |
+
- pytorch-cuda=11.7=h778d358_3
|
104 |
+
- pytorch-mutex=1.0=cuda
|
105 |
+
- pyzmq=23.2.0=py38h6a678d5_0
|
106 |
+
- readline=8.2=h5eee18b_0
|
107 |
+
- requests=2.28.1=py38h06a4308_1
|
108 |
+
- scipy=1.10.1=py38h14f4228_0
|
109 |
+
- six=1.16.0=pyhd3eb1b0_1
|
110 |
+
- sqlite=3.41.2=h5eee18b_0
|
111 |
+
- stack_data=0.2.0=pyhd3eb1b0_0
|
112 |
+
- tk=8.6.12=h1ccaba5_0
|
113 |
+
- torchaudio=0.13.1=py38_cu117
|
114 |
+
- torchvision=0.14.1=py38_cu117
|
115 |
+
- tornado=6.2=py38h5eee18b_0
|
116 |
+
- traitlets=5.7.1=py38h06a4308_0
|
117 |
+
- typing_extensions=4.4.0=py38h06a4308_0
|
118 |
+
- urllib3=1.26.15=py38h06a4308_0
|
119 |
+
- wcwidth=0.2.5=pyhd3eb1b0_0
|
120 |
+
- wheel=0.38.4=py38h06a4308_0
|
121 |
+
- xz=5.2.10=h5eee18b_1
|
122 |
+
- zeromq=4.3.4=h2531618_0
|
123 |
+
- zlib=1.2.13=h5eee18b_0
|
124 |
+
- zstd=1.5.5=hc292b87_0
|
125 |
+
- pip:
|
126 |
+
- absl-py==1.4.0
|
127 |
+
- accelerate==0.18.0
|
128 |
+
- addict==2.4.0
|
129 |
+
- aiofiles==23.1.0
|
130 |
+
- aiohttp==3.8.4
|
131 |
+
- aiosignal==1.3.1
|
132 |
+
- altair==4.2.2
|
133 |
+
- antlr4-python3-runtime==4.9.3
|
134 |
+
- anyio==3.6.2
|
135 |
+
- async-timeout==4.0.2
|
136 |
+
- attrs==22.2.0
|
137 |
+
- av==10.0.0
|
138 |
+
- bitsandbytes==0.37.0
|
139 |
+
- black==23.3.0
|
140 |
+
- blis==0.7.9
|
141 |
+
- boto3==1.26.111
|
142 |
+
- botocore==1.29.111
|
143 |
+
- braceexpand==0.1.7
|
144 |
+
- cachetools==5.3.0
|
145 |
+
- catalogue==2.0.8
|
146 |
+
- click==8.1.3
|
147 |
+
- cloudpickle==2.2.1
|
148 |
+
- colorama==0.4.6
|
149 |
+
- confection==0.0.4
|
150 |
+
- contourpy==1.0.7
|
151 |
+
- cycler==0.11.0
|
152 |
+
- cymem==2.0.7
|
153 |
+
- cython==0.29.34
|
154 |
+
- dataclasses-json==0.5.7
|
155 |
+
- decorator==4.4.2
|
156 |
+
- decord==0.6.0
|
157 |
+
- detectron2==0.6
|
158 |
+
- einops==0.3.0
|
159 |
+
- entrypoints==0.4
|
160 |
+
- fairscale==0.4.13
|
161 |
+
- fastapi==0.95.0
|
162 |
+
- ffmpy==0.3.0
|
163 |
+
- filelock==3.11.0
|
164 |
+
- fire==0.5.0
|
165 |
+
- fonttools==4.39.3
|
166 |
+
- frozenlist==1.3.3
|
167 |
+
- fsspec==2023.3.0
|
168 |
+
- future==0.18.3
|
169 |
+
- fvcore==0.1.5.post20221221
|
170 |
+
- google-auth==2.17.3
|
171 |
+
- google-auth-oauthlib==0.4.6
|
172 |
+
- gradio==3.25.0
|
173 |
+
- gradio-client==0.1.0
|
174 |
+
- greenlet==2.0.2
|
175 |
+
- grpcio==1.53.0
|
176 |
+
- h11==0.14.0
|
177 |
+
- httpcore==0.16.3
|
178 |
+
- httpx==0.23.3
|
179 |
+
- huggingface-hub==0.13.3
|
180 |
+
- hydra-core==1.3.2
|
181 |
+
- imageio==2.9.0
|
182 |
+
- imageio-ffmpeg==0.4.2
|
183 |
+
- importlib-metadata==6.1.0
|
184 |
+
- importlib-resources==5.12.0
|
185 |
+
- iopath==0.1.9
|
186 |
+
- ipdb==0.13.13
|
187 |
+
- jinja2==3.1.2
|
188 |
+
- jmespath==1.0.1
|
189 |
+
- joblib==1.2.0
|
190 |
+
- jsonschema==4.17.3
|
191 |
+
- kiwisolver==1.4.4
|
192 |
+
- langchain==0.0.101
|
193 |
+
- langcodes==3.3.0
|
194 |
+
- lightning-utilities==0.3.0
|
195 |
+
- linkify-it-py==2.0.0
|
196 |
+
- lvis==0.5.3
|
197 |
+
- markdown==3.4.3
|
198 |
+
- markdown-it-py==2.2.0
|
199 |
+
- markupsafe==2.1.2
|
200 |
+
- marshmallow==3.19.0
|
201 |
+
- marshmallow-enum==1.5.1
|
202 |
+
- matplotlib==3.7.1
|
203 |
+
- mdit-py-plugins==0.3.3
|
204 |
+
- mdurl==0.1.2
|
205 |
+
- mmcv==1.7.1
|
206 |
+
- model-index==0.1.11
|
207 |
+
- moviepy==1.0.3
|
208 |
+
- multidict==6.0.4
|
209 |
+
- murmurhash==1.0.9
|
210 |
+
- mypy-extensions==1.0.0
|
211 |
+
- nltk==3.8.1
|
212 |
+
- oauthlib==3.2.2
|
213 |
+
- omegaconf==2.3.0
|
214 |
+
- openai==0.27.2
|
215 |
+
- openapi-schema-pydantic==1.2.4
|
216 |
+
- opencv-python==4.1.2.30
|
217 |
+
- openmim==0.3.7
|
218 |
+
- ordered-set==4.1.0
|
219 |
+
- orjson==3.8.9
|
220 |
+
- pandas==1.5.3
|
221 |
+
- pathspec==0.11.1
|
222 |
+
- pathy==0.10.1
|
223 |
+
- pkgutil-resolve-name==1.3.10
|
224 |
+
- portalocker==2.7.0
|
225 |
+
- preshed==3.0.8
|
226 |
+
- proglog==0.1.10
|
227 |
+
- protobuf==3.20.3
|
228 |
+
- pyasn1==0.4.8
|
229 |
+
- pyasn1-modules==0.2.8
|
230 |
+
- pycocotools==2.0.2
|
231 |
+
- pydantic==1.10.7
|
232 |
+
- pydeprecate==0.3.1
|
233 |
+
- pydub==0.25.1
|
234 |
+
- pygments==2.14.0
|
235 |
+
- pyparsing==3.0.9
|
236 |
+
- pyre-extensions==0.0.23
|
237 |
+
- pyrsistent==0.19.3
|
238 |
+
- python-multipart==0.0.6
|
239 |
+
- pytorch-lightning==1.8.3
|
240 |
+
- pytz==2023.3
|
241 |
+
- pyyaml==6.0
|
242 |
+
- regex==2023.3.23
|
243 |
+
- requests-oauthlib==1.3.1
|
244 |
+
- rfc3986==1.5.0
|
245 |
+
- rich==13.3.3
|
246 |
+
- rsa==4.9
|
247 |
+
- s3transfer==0.6.0
|
248 |
+
- sacremoses==0.0.53
|
249 |
+
- semantic-version==2.10.0
|
250 |
+
- sentencepiece==0.1.97
|
251 |
+
- setuptools==59.5.0
|
252 |
+
- simplet5==0.1.4
|
253 |
+
- smart-open==6.3.0
|
254 |
+
- sniffio==1.3.0
|
255 |
+
- spacy==3.5.1
|
256 |
+
- spacy-legacy==3.0.12
|
257 |
+
- spacy-loggers==1.0.4
|
258 |
+
- sqlalchemy==1.4.47
|
259 |
+
- srsly==2.4.6
|
260 |
+
- starlette==0.26.1
|
261 |
+
- tabulate==0.9.0
|
262 |
+
- tenacity==8.2.2
|
263 |
+
- tensorboard==2.12.0
|
264 |
+
- tensorboard-data-server==0.7.0
|
265 |
+
- tensorboard-plugin-wit==1.8.1
|
266 |
+
- tensorboardx==2.6
|
267 |
+
- termcolor==2.2.0
|
268 |
+
- thinc==8.1.9
|
269 |
+
- timm==0.6.13
|
270 |
+
- tokenizers==0.10.3
|
271 |
+
- tomli==2.0.1
|
272 |
+
- toolz==0.12.0
|
273 |
+
- torchmetrics==0.11.4
|
274 |
+
- tqdm==4.65.0
|
275 |
+
- transformers==4.15.0
|
276 |
+
- typer==0.7.0
|
277 |
+
- typing-inspect==0.8.0
|
278 |
+
- uc-micro-py==1.0.1
|
279 |
+
- uvicorn==0.21.1
|
280 |
+
- wasabi==1.1.1
|
281 |
+
- webdataset==0.2.48
|
282 |
+
- websockets==10.4
|
283 |
+
- werkzeug==2.2.3
|
284 |
+
- xformers==0.0.13
|
285 |
+
- yacs==0.1.8
|
286 |
+
- yapf==0.32.0
|
287 |
+
- yarl==1.8.2
|
288 |
+
- zipp==3.15.0
|
images/making_cake.mp4
ADDED
Binary file (479 kB). View file
|
|
images/playing_guitar.mp4
ADDED
Binary file (367 kB). View file
|
|
images/yoga.mp4
ADDED
Binary file (776 kB). View file
|
|
intern_action.py
ADDED
@@ -0,0 +1,510 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python
|
2 |
+
import os
|
3 |
+
from collections import OrderedDict
|
4 |
+
|
5 |
+
from timm.models.layers import DropPath
|
6 |
+
import torch
|
7 |
+
from torch import nn
|
8 |
+
from torch.nn import MultiheadAttention
|
9 |
+
import torch.nn.functional as F
|
10 |
+
import torch.utils.checkpoint as checkpoint
|
11 |
+
|
12 |
+
|
13 |
+
MODEL_PATH = './'
|
14 |
+
_MODELS = {
|
15 |
+
"ViT-B/16": os.path.join(MODEL_PATH, "vit_b16.pth"),
|
16 |
+
"ViT-L/14": os.path.join(MODEL_PATH, "vit_l14.pth"),
|
17 |
+
"ViT-L/14_336": os.path.join(MODEL_PATH, "vit_l14_336.pth"),
|
18 |
+
}
|
19 |
+
|
20 |
+
|
21 |
+
class LayerNorm(nn.LayerNorm):
|
22 |
+
"""Subclass torch's LayerNorm to handle fp16."""
|
23 |
+
|
24 |
+
def forward(self, x):
|
25 |
+
orig_type = x.dtype
|
26 |
+
ret = super().forward(x.type(torch.float32))
|
27 |
+
return ret.type(orig_type)
|
28 |
+
|
29 |
+
|
30 |
+
class QuickGELU(nn.Module):
|
31 |
+
def forward(self, x):
|
32 |
+
return x * torch.sigmoid(1.702 * x)
|
33 |
+
|
34 |
+
|
35 |
+
class Local_MHRA(nn.Module):
|
36 |
+
def __init__(self, d_model, dw_reduction=1.5, pos_kernel_size=3):
|
37 |
+
super().__init__()
|
38 |
+
|
39 |
+
padding = pos_kernel_size // 2
|
40 |
+
re_d_model = int(d_model // dw_reduction)
|
41 |
+
self.pos_embed = nn.Sequential(
|
42 |
+
nn.BatchNorm3d(d_model),
|
43 |
+
nn.Conv3d(d_model, re_d_model, kernel_size=1, stride=1, padding=0),
|
44 |
+
nn.Conv3d(re_d_model, re_d_model, kernel_size=(pos_kernel_size, 1, 1), stride=(1, 1, 1), padding=(padding, 0, 0), groups=re_d_model),
|
45 |
+
nn.Conv3d(re_d_model, d_model, kernel_size=1, stride=1, padding=0),
|
46 |
+
)
|
47 |
+
|
48 |
+
# init zero
|
49 |
+
print('Init zero for Conv in pos_emb')
|
50 |
+
nn.init.constant_(self.pos_embed[3].weight, 0)
|
51 |
+
nn.init.constant_(self.pos_embed[3].bias, 0)
|
52 |
+
|
53 |
+
def forward(self, x):
|
54 |
+
return self.pos_embed(x)
|
55 |
+
|
56 |
+
|
57 |
+
class ResidualAttentionBlock(nn.Module):
|
58 |
+
def __init__(
|
59 |
+
self, d_model, n_head, attn_mask=None, drop_path=0.0,
|
60 |
+
dw_reduction=1.5, no_lmhra=False, double_lmhra=True
|
61 |
+
):
|
62 |
+
super().__init__()
|
63 |
+
|
64 |
+
self.n_head = n_head
|
65 |
+
self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
|
66 |
+
print(f'Drop path rate: {drop_path}')
|
67 |
+
|
68 |
+
self.no_lmhra = no_lmhra
|
69 |
+
self.double_lmhra = double_lmhra
|
70 |
+
print(f'No L_MHRA: {no_lmhra}')
|
71 |
+
print(f'Double L_MHRA: {double_lmhra}')
|
72 |
+
if not no_lmhra:
|
73 |
+
self.lmhra1 = Local_MHRA(d_model, dw_reduction=dw_reduction)
|
74 |
+
if double_lmhra:
|
75 |
+
self.lmhra2 = Local_MHRA(d_model, dw_reduction=dw_reduction)
|
76 |
+
|
77 |
+
# spatial
|
78 |
+
self.attn = MultiheadAttention(d_model, n_head)
|
79 |
+
self.ln_1 = LayerNorm(d_model)
|
80 |
+
self.mlp = nn.Sequential(OrderedDict([
|
81 |
+
("c_fc", nn.Linear(d_model, d_model * 4)),
|
82 |
+
("gelu", QuickGELU()),
|
83 |
+
("c_proj", nn.Linear(d_model * 4, d_model))
|
84 |
+
]))
|
85 |
+
self.ln_2 = LayerNorm(d_model)
|
86 |
+
self.attn_mask = attn_mask
|
87 |
+
|
88 |
+
def attention(self, x):
|
89 |
+
self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None
|
90 |
+
return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0]
|
91 |
+
|
92 |
+
def forward(self, x, T=8, use_checkpoint=False):
|
93 |
+
# x: 1+HW, NT, C
|
94 |
+
if not self.no_lmhra:
|
95 |
+
# Local MHRA
|
96 |
+
tmp_x = x[1:, :, :]
|
97 |
+
L, NT, C = tmp_x.shape
|
98 |
+
N = NT // T
|
99 |
+
H = W = int(L ** 0.5)
|
100 |
+
tmp_x = tmp_x.view(H, W, N, T, C).permute(2, 4, 3, 0, 1).contiguous()
|
101 |
+
tmp_x = tmp_x + self.drop_path(self.lmhra1(tmp_x))
|
102 |
+
tmp_x = tmp_x.view(N, C, T, L).permute(3, 0, 2, 1).contiguous().view(L, NT, C)
|
103 |
+
x = torch.cat([x[:1, :, :], tmp_x], dim=0)
|
104 |
+
# MHSA
|
105 |
+
if use_checkpoint:
|
106 |
+
attn_out = checkpoint.checkpoint(self.attention, self.ln_1(x))
|
107 |
+
x = x + self.drop_path(attn_out)
|
108 |
+
else:
|
109 |
+
x = x + self.drop_path(self.attention(self.ln_1(x)))
|
110 |
+
# Local MHRA
|
111 |
+
if not self.no_lmhra and self.double_lmhra:
|
112 |
+
tmp_x = x[1:, :, :]
|
113 |
+
tmp_x = tmp_x.view(H, W, N, T, C).permute(2, 4, 3, 0, 1).contiguous()
|
114 |
+
tmp_x = tmp_x + self.drop_path(self.lmhra2(tmp_x))
|
115 |
+
tmp_x = tmp_x.view(N, C, T, L).permute(3, 0, 2, 1).contiguous().view(L, NT, C)
|
116 |
+
x = torch.cat([x[:1, :, :], tmp_x], dim=0)
|
117 |
+
# FFN
|
118 |
+
if use_checkpoint:
|
119 |
+
mlp_out = checkpoint.checkpoint(self.mlp, self.ln_2(x))
|
120 |
+
x = x + self.drop_path(mlp_out)
|
121 |
+
else:
|
122 |
+
x = x + self.drop_path(self.mlp(self.ln_2(x)))
|
123 |
+
return x
|
124 |
+
|
125 |
+
|
126 |
+
class Extractor(nn.Module):
|
127 |
+
def __init__(
|
128 |
+
self, d_model, n_head, attn_mask=None,
|
129 |
+
mlp_factor=4.0, dropout=0.0, drop_path=0.0,
|
130 |
+
):
|
131 |
+
super().__init__()
|
132 |
+
|
133 |
+
self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
|
134 |
+
print(f'Drop path rate: {drop_path}')
|
135 |
+
self.attn = nn.MultiheadAttention(d_model, n_head)
|
136 |
+
self.ln_1 = nn.LayerNorm(d_model)
|
137 |
+
d_mlp = round(mlp_factor * d_model)
|
138 |
+
self.mlp = nn.Sequential(OrderedDict([
|
139 |
+
("c_fc", nn.Linear(d_model, d_mlp)),
|
140 |
+
("gelu", QuickGELU()),
|
141 |
+
("dropout", nn.Dropout(dropout)),
|
142 |
+
("c_proj", nn.Linear(d_mlp, d_model))
|
143 |
+
]))
|
144 |
+
self.ln_2 = nn.LayerNorm(d_model)
|
145 |
+
self.ln_3 = nn.LayerNorm(d_model)
|
146 |
+
self.attn_mask = attn_mask
|
147 |
+
|
148 |
+
# zero init
|
149 |
+
nn.init.xavier_uniform_(self.attn.in_proj_weight)
|
150 |
+
nn.init.constant_(self.attn.out_proj.weight, 0.)
|
151 |
+
nn.init.constant_(self.attn.out_proj.bias, 0.)
|
152 |
+
nn.init.xavier_uniform_(self.mlp[0].weight)
|
153 |
+
nn.init.constant_(self.mlp[-1].weight, 0.)
|
154 |
+
nn.init.constant_(self.mlp[-1].bias, 0.)
|
155 |
+
|
156 |
+
def attention(self, x, y):
|
157 |
+
d_model = self.ln_1.weight.size(0)
|
158 |
+
q = (x @ self.attn.in_proj_weight[:d_model].T) + self.attn.in_proj_bias[:d_model]
|
159 |
+
|
160 |
+
k = (y @ self.attn.in_proj_weight[d_model:-d_model].T) + self.attn.in_proj_bias[d_model:-d_model]
|
161 |
+
v = (y @ self.attn.in_proj_weight[-d_model:].T) + self.attn.in_proj_bias[-d_model:]
|
162 |
+
Tx, Ty, N = q.size(0), k.size(0), q.size(1)
|
163 |
+
q = q.view(Tx, N, self.attn.num_heads, self.attn.head_dim).permute(1, 2, 0, 3)
|
164 |
+
k = k.view(Ty, N, self.attn.num_heads, self.attn.head_dim).permute(1, 2, 0, 3)
|
165 |
+
v = v.view(Ty, N, self.attn.num_heads, self.attn.head_dim).permute(1, 2, 0, 3)
|
166 |
+
aff = (q @ k.transpose(-2, -1) / (self.attn.head_dim ** 0.5))
|
167 |
+
|
168 |
+
aff = aff.softmax(dim=-1)
|
169 |
+
out = aff @ v
|
170 |
+
out = out.permute(2, 0, 1, 3).flatten(2)
|
171 |
+
out = self.attn.out_proj(out)
|
172 |
+
return out
|
173 |
+
|
174 |
+
def forward(self, x, y):
|
175 |
+
x = x + self.drop_path(self.attention(self.ln_1(x), self.ln_3(y)))
|
176 |
+
x = x + self.drop_path(self.mlp(self.ln_2(x)))
|
177 |
+
return x
|
178 |
+
|
179 |
+
|
180 |
+
class Transformer(nn.Module):
|
181 |
+
def __init__(
|
182 |
+
self, width, layers, heads, attn_mask=None, backbone_drop_path_rate=0.,
|
183 |
+
use_checkpoint=False, checkpoint_num=[0], t_size=8, dw_reduction=2,
|
184 |
+
no_lmhra=False, double_lmhra=True,
|
185 |
+
return_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
|
186 |
+
n_layers=12, n_dim=768, n_head=12, mlp_factor=4.0, drop_path_rate=0.,
|
187 |
+
mlp_dropout=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
|
188 |
+
cls_dropout=0.5, num_classes=400,
|
189 |
+
):
|
190 |
+
super().__init__()
|
191 |
+
self.T = t_size
|
192 |
+
self.return_list = return_list
|
193 |
+
# backbone
|
194 |
+
b_dpr = [x.item() for x in torch.linspace(0, backbone_drop_path_rate, layers)]
|
195 |
+
self.resblocks = nn.ModuleList([
|
196 |
+
ResidualAttentionBlock(
|
197 |
+
width, heads, attn_mask,
|
198 |
+
drop_path=b_dpr[i],
|
199 |
+
dw_reduction=dw_reduction,
|
200 |
+
no_lmhra=no_lmhra,
|
201 |
+
double_lmhra=double_lmhra,
|
202 |
+
) for i in range(layers)
|
203 |
+
])
|
204 |
+
# checkpoint
|
205 |
+
self.use_checkpoint = use_checkpoint
|
206 |
+
self.checkpoint_num = checkpoint_num
|
207 |
+
self.n_layers = n_layers
|
208 |
+
print(f'Use checkpoint: {self.use_checkpoint}')
|
209 |
+
print(f'Checkpoint number: {self.checkpoint_num}')
|
210 |
+
|
211 |
+
# global block
|
212 |
+
assert n_layers == len(return_list)
|
213 |
+
if n_layers > 0:
|
214 |
+
self.temporal_cls_token = nn.Parameter(torch.zeros(1, 1, n_dim))
|
215 |
+
self.dpe = nn.ModuleList([
|
216 |
+
nn.Conv3d(n_dim, n_dim, kernel_size=3, stride=1, padding=1, bias=True, groups=n_dim)
|
217 |
+
for i in range(n_layers)
|
218 |
+
])
|
219 |
+
for m in self.dpe:
|
220 |
+
nn.init.constant_(m.bias, 0.)
|
221 |
+
dpr = [x.item() for x in torch.linspace(0, drop_path_rate, n_layers)]
|
222 |
+
self.dec = nn.ModuleList([
|
223 |
+
Extractor(
|
224 |
+
n_dim, n_head, mlp_factor=mlp_factor,
|
225 |
+
dropout=mlp_dropout[i], drop_path=dpr[i],
|
226 |
+
) for i in range(n_layers)
|
227 |
+
])
|
228 |
+
self.balance = nn.Parameter(torch.zeros((n_dim)))
|
229 |
+
self.sigmoid = nn.Sigmoid()
|
230 |
+
# projection
|
231 |
+
self.proj = nn.Sequential(
|
232 |
+
nn.LayerNorm(n_dim),
|
233 |
+
nn.Dropout(cls_dropout),
|
234 |
+
nn.Linear(n_dim, num_classes),
|
235 |
+
)
|
236 |
+
|
237 |
+
def forward(self, x):
|
238 |
+
T_down = self.T
|
239 |
+
L, NT, C = x.shape
|
240 |
+
N = NT // T_down
|
241 |
+
H = W = int((L - 1) ** 0.5)
|
242 |
+
|
243 |
+
if self.n_layers > 0:
|
244 |
+
cls_token = self.temporal_cls_token.repeat(1, N, 1)
|
245 |
+
|
246 |
+
j = -1
|
247 |
+
for i, resblock in enumerate(self.resblocks):
|
248 |
+
if self.use_checkpoint and i < self.checkpoint_num[0]:
|
249 |
+
x = resblock(x, self.T, use_checkpoint=True)
|
250 |
+
else:
|
251 |
+
x = resblock(x, T_down)
|
252 |
+
if i in self.return_list:
|
253 |
+
j += 1
|
254 |
+
tmp_x = x.clone()
|
255 |
+
tmp_x = tmp_x.view(L, N, T_down, C)
|
256 |
+
# dpe
|
257 |
+
_, tmp_feats = tmp_x[:1], tmp_x[1:]
|
258 |
+
tmp_feats = tmp_feats.permute(1, 3, 2, 0).reshape(N, C, T_down, H, W)
|
259 |
+
tmp_feats = self.dpe[j](tmp_feats).view(N, C, T_down, L - 1).permute(3, 0, 2, 1).contiguous()
|
260 |
+
tmp_x[1:] = tmp_x[1:] + tmp_feats
|
261 |
+
# global block
|
262 |
+
tmp_x = tmp_x.permute(2, 0, 1, 3).flatten(0, 1) # T * L, N, C
|
263 |
+
cls_token = self.dec[j](cls_token, tmp_x)
|
264 |
+
|
265 |
+
if self.n_layers > 0:
|
266 |
+
weight = self.sigmoid(self.balance)
|
267 |
+
residual = x.view(L, N, T_down, C)[0].mean(1) # L, N, T, C
|
268 |
+
return self.proj((1 - weight) * cls_token[0, :, :] + weight * residual)
|
269 |
+
else:
|
270 |
+
residual = x.view(L, N, T_down, C)[0].mean(1) # L, N, T, C
|
271 |
+
return self.proj(residual)
|
272 |
+
|
273 |
+
|
274 |
+
class VisionTransformer(nn.Module):
|
275 |
+
def __init__(
|
276 |
+
self,
|
277 |
+
# backbone
|
278 |
+
input_resolution, patch_size, width, layers, heads, output_dim, backbone_drop_path_rate=0.,
|
279 |
+
use_checkpoint=False, checkpoint_num=[0], t_size=8, kernel_size=3, dw_reduction=1.5,
|
280 |
+
temporal_downsample=True,
|
281 |
+
no_lmhra=-False, double_lmhra=True,
|
282 |
+
# global block
|
283 |
+
return_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
|
284 |
+
n_layers=12, n_dim=768, n_head=12, mlp_factor=4.0, drop_path_rate=0.,
|
285 |
+
mlp_dropout=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
|
286 |
+
cls_dropout=0.5, num_classes=400,
|
287 |
+
):
|
288 |
+
super().__init__()
|
289 |
+
self.input_resolution = input_resolution
|
290 |
+
self.output_dim = output_dim
|
291 |
+
padding = (kernel_size - 1) // 2
|
292 |
+
if temporal_downsample:
|
293 |
+
self.conv1 = nn.Conv3d(3, width, (kernel_size, patch_size, patch_size), (2, patch_size, patch_size), (padding, 0, 0), bias=False)
|
294 |
+
t_size = t_size // 2
|
295 |
+
else:
|
296 |
+
self.conv1 = nn.Conv3d(3, width, (1, patch_size, patch_size), (1, patch_size, patch_size), (0, 0, 0), bias=False)
|
297 |
+
|
298 |
+
scale = width ** -0.5
|
299 |
+
self.class_embedding = nn.Parameter(scale * torch.randn(width))
|
300 |
+
self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width))
|
301 |
+
self.ln_pre = LayerNorm(width)
|
302 |
+
|
303 |
+
self.transformer = Transformer(
|
304 |
+
width, layers, heads, dw_reduction=dw_reduction,
|
305 |
+
backbone_drop_path_rate=backbone_drop_path_rate,
|
306 |
+
use_checkpoint=use_checkpoint, checkpoint_num=checkpoint_num, t_size=t_size,
|
307 |
+
no_lmhra=no_lmhra, double_lmhra=double_lmhra,
|
308 |
+
return_list=return_list, n_layers=n_layers, n_dim=n_dim, n_head=n_head,
|
309 |
+
mlp_factor=mlp_factor, drop_path_rate=drop_path_rate, mlp_dropout=mlp_dropout,
|
310 |
+
cls_dropout=cls_dropout, num_classes=num_classes,
|
311 |
+
)
|
312 |
+
|
313 |
+
def forward(self, x):
|
314 |
+
x = self.conv1(x) # shape = [*, width, grid, grid]
|
315 |
+
N, C, T, H, W = x.shape
|
316 |
+
x = x.permute(0, 2, 3, 4, 1).reshape(N * T, H * W, C)
|
317 |
+
|
318 |
+
x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1) # shape = [*, grid ** 2 + 1, width]
|
319 |
+
x = x + self.positional_embedding.to(x.dtype)
|
320 |
+
x = self.ln_pre(x)
|
321 |
+
|
322 |
+
x = x.permute(1, 0, 2) # NLD -> LND
|
323 |
+
out = self.transformer(x)
|
324 |
+
return out
|
325 |
+
|
326 |
+
|
327 |
+
def inflate_weight(weight_2d, time_dim, center=True):
|
328 |
+
print(f'Init center: {center}')
|
329 |
+
if center:
|
330 |
+
weight_3d = torch.zeros(*weight_2d.shape)
|
331 |
+
weight_3d = weight_3d.unsqueeze(2).repeat(1, 1, time_dim, 1, 1)
|
332 |
+
middle_idx = time_dim // 2
|
333 |
+
weight_3d[:, :, middle_idx, :, :] = weight_2d
|
334 |
+
else:
|
335 |
+
weight_3d = weight_2d.unsqueeze(2).repeat(1, 1, time_dim, 1, 1)
|
336 |
+
weight_3d = weight_3d / time_dim
|
337 |
+
return weight_3d
|
338 |
+
|
339 |
+
|
340 |
+
def load_state_dict(model, state_dict):
|
341 |
+
state_dict_3d = model.state_dict()
|
342 |
+
for k in state_dict.keys():
|
343 |
+
if state_dict[k].shape != state_dict_3d[k].shape:
|
344 |
+
if len(state_dict_3d[k].shape) <= 2:
|
345 |
+
print(f'Ignore: {k}')
|
346 |
+
continue
|
347 |
+
print(f'Inflate: {k}, {state_dict[k].shape} => {state_dict_3d[k].shape}')
|
348 |
+
time_dim = state_dict_3d[k].shape[2]
|
349 |
+
state_dict[k] = inflate_weight(state_dict[k], time_dim)
|
350 |
+
model.load_state_dict(state_dict, strict=False)
|
351 |
+
|
352 |
+
|
353 |
+
def intern_action_b16(
|
354 |
+
pretrained=True, use_checkpoint=False, checkpoint_num=[0],
|
355 |
+
t_size=16, dw_reduction=1.5, backbone_drop_path_rate=0.,
|
356 |
+
temporal_downsample=True,
|
357 |
+
no_lmhra=False, double_lmhra=True,
|
358 |
+
return_list=[8, 9, 10, 11],
|
359 |
+
n_layers=4, n_dim=768, n_head=12, mlp_factor=4.0, drop_path_rate=0.,
|
360 |
+
mlp_dropout=[0.5, 0.5, 0.5, 0.5],
|
361 |
+
cls_dropout=0.5, num_classes=400,
|
362 |
+
):
|
363 |
+
model = VisionTransformer(
|
364 |
+
input_resolution=224,
|
365 |
+
patch_size=16,
|
366 |
+
width=768,
|
367 |
+
layers=12,
|
368 |
+
heads=12,
|
369 |
+
output_dim=512,
|
370 |
+
use_checkpoint=use_checkpoint,
|
371 |
+
checkpoint_num=checkpoint_num,
|
372 |
+
t_size=t_size,
|
373 |
+
dw_reduction=dw_reduction,
|
374 |
+
backbone_drop_path_rate=backbone_drop_path_rate,
|
375 |
+
temporal_downsample=temporal_downsample,
|
376 |
+
no_lmhra=no_lmhra,
|
377 |
+
double_lmhra=double_lmhra,
|
378 |
+
return_list=return_list,
|
379 |
+
n_layers=n_layers,
|
380 |
+
n_dim=n_dim,
|
381 |
+
n_head=n_head,
|
382 |
+
mlp_factor=mlp_factor,
|
383 |
+
drop_path_rate=drop_path_rate,
|
384 |
+
mlp_dropout=mlp_dropout,
|
385 |
+
cls_dropout=cls_dropout,
|
386 |
+
num_classes=num_classes,
|
387 |
+
)
|
388 |
+
|
389 |
+
if pretrained:
|
390 |
+
print('load pretrained weights')
|
391 |
+
state_dict = torch.load(_MODELS["ViT-B/16"], map_location='cpu')
|
392 |
+
load_state_dict(model, state_dict)
|
393 |
+
return model.eval()
|
394 |
+
|
395 |
+
|
396 |
+
def intern_action_l14(
|
397 |
+
pretrained=True, use_checkpoint=False, checkpoint_num=[0],
|
398 |
+
t_size=16, dw_reduction=1.5, backbone_drop_path_rate=0.,
|
399 |
+
temporal_downsample=True,
|
400 |
+
no_lmhra=False, double_lmhra=True,
|
401 |
+
return_list=[20, 21, 22, 23],
|
402 |
+
n_layers=4, n_dim=1024, n_head=16, mlp_factor=4.0, drop_path_rate=0.,
|
403 |
+
mlp_dropout=[0.5, 0.5, 0.5, 0.5],
|
404 |
+
cls_dropout=0.5, num_classes=400,
|
405 |
+
):
|
406 |
+
model = VisionTransformer(
|
407 |
+
input_resolution=224,
|
408 |
+
patch_size=14,
|
409 |
+
width=1024,
|
410 |
+
layers=24,
|
411 |
+
heads=16,
|
412 |
+
output_dim=768,
|
413 |
+
use_checkpoint=use_checkpoint,
|
414 |
+
checkpoint_num=checkpoint_num,
|
415 |
+
t_size=t_size,
|
416 |
+
dw_reduction=dw_reduction,
|
417 |
+
backbone_drop_path_rate=backbone_drop_path_rate,
|
418 |
+
temporal_downsample=temporal_downsample,
|
419 |
+
no_lmhra=no_lmhra,
|
420 |
+
double_lmhra=double_lmhra,
|
421 |
+
return_list=return_list,
|
422 |
+
n_layers=n_layers,
|
423 |
+
n_dim=n_dim,
|
424 |
+
n_head=n_head,
|
425 |
+
mlp_factor=mlp_factor,
|
426 |
+
drop_path_rate=drop_path_rate,
|
427 |
+
mlp_dropout=mlp_dropout,
|
428 |
+
cls_dropout=cls_dropout,
|
429 |
+
num_classes=num_classes,
|
430 |
+
)
|
431 |
+
|
432 |
+
if pretrained:
|
433 |
+
print('load pretrained weights')
|
434 |
+
state_dict = torch.load(_MODELS["ViT-L/14"], map_location='cpu')
|
435 |
+
load_state_dict(model, state_dict)
|
436 |
+
return model.eval()
|
437 |
+
|
438 |
+
|
439 |
+
def intern_action_l14_336(
|
440 |
+
pretrained=True, use_checkpoint=False, checkpoint_num=[0],
|
441 |
+
t_size=16, dw_reduction=1.5, backbone_drop_path_rate=0.,
|
442 |
+
no_temporal_downsample=True,
|
443 |
+
no_lmhra=False, double_lmhra=True,
|
444 |
+
return_list=[20, 21, 22, 23],
|
445 |
+
n_layers=4, n_dim=1024, n_head=16, mlp_factor=4.0, drop_path_rate=0.,
|
446 |
+
mlp_dropout=[0.5, 0.5, 0.5, 0.5],
|
447 |
+
cls_dropout=0.5, num_classes=400,
|
448 |
+
):
|
449 |
+
model = VisionTransformer(
|
450 |
+
input_resolution=336,
|
451 |
+
patch_size=14,
|
452 |
+
width=1024,
|
453 |
+
layers=24,
|
454 |
+
heads=16,
|
455 |
+
output_dim=768,
|
456 |
+
use_checkpoint=use_checkpoint,
|
457 |
+
checkpoint_num=checkpoint_num,
|
458 |
+
t_size=t_size,
|
459 |
+
dw_reduction=dw_reduction,
|
460 |
+
backbone_drop_path_rate=backbone_drop_path_rate,
|
461 |
+
no_temporal_downsample=no_temporal_downsample,
|
462 |
+
no_lmhra=no_lmhra,
|
463 |
+
double_lmhra=double_lmhra,
|
464 |
+
return_list=return_list,
|
465 |
+
n_layers=n_layers,
|
466 |
+
n_dim=n_dim,
|
467 |
+
n_head=n_head,
|
468 |
+
mlp_factor=mlp_factor,
|
469 |
+
drop_path_rate=drop_path_rate,
|
470 |
+
mlp_dropout=mlp_dropout,
|
471 |
+
cls_dropout=cls_dropout,
|
472 |
+
num_classes=num_classes,
|
473 |
+
)
|
474 |
+
|
475 |
+
if pretrained:
|
476 |
+
print('load pretrained weights')
|
477 |
+
state_dict = torch.load(_MODELS["ViT-L/14_336"], map_location='cpu')
|
478 |
+
load_state_dict(model, state_dict)
|
479 |
+
return model.eval()
|
480 |
+
|
481 |
+
|
482 |
+
if __name__ == '__main__':
|
483 |
+
import time
|
484 |
+
from fvcore.nn import FlopCountAnalysis
|
485 |
+
from fvcore.nn import flop_count_table
|
486 |
+
import numpy as np
|
487 |
+
|
488 |
+
seed = 4217
|
489 |
+
np.random.seed(seed)
|
490 |
+
torch.manual_seed(seed)
|
491 |
+
torch.cuda.manual_seed(seed)
|
492 |
+
torch.cuda.manual_seed_all(seed)
|
493 |
+
num_frames = 16
|
494 |
+
|
495 |
+
model = intern_action_l14(
|
496 |
+
pretrained=False,
|
497 |
+
t_size=num_frames, backbone_drop_path_rate=0., drop_path_rate=0.,
|
498 |
+
dw_reduction=1.5,
|
499 |
+
no_lmhra=False,
|
500 |
+
temporal_downsample=True,
|
501 |
+
return_list=[8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
|
502 |
+
mlp_dropout=[0.5]*16,
|
503 |
+
n_layers=16
|
504 |
+
)
|
505 |
+
print(model)
|
506 |
+
|
507 |
+
flops = FlopCountAnalysis(model, torch.rand(1, 3, num_frames, 224, 224))
|
508 |
+
s = time.time()
|
509 |
+
print(flop_count_table(flops, max_depth=1))
|
510 |
+
print(time.time()-s)
|
load_internvideo.py
ADDED
@@ -0,0 +1,469 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from intern_action import intern_action_b16
|
2 |
+
from huggingface_hub import hf_hub_download
|
3 |
+
# from kinetics_class_index import kinetics_classnames
|
4 |
+
import torch
|
5 |
+
import torch.nn as nn
|
6 |
+
import torchvision.transforms as T
|
7 |
+
import torch.nn.functional as F
|
8 |
+
import numpy as np
|
9 |
+
|
10 |
+
from transforms import (
|
11 |
+
GroupNormalize, GroupScale, GroupCenterCrop,
|
12 |
+
Stack, ToTorchFormatTensor
|
13 |
+
)
|
14 |
+
|
15 |
+
class Intern_Action(nn.Module):
|
16 |
+
def __init__(self, model):
|
17 |
+
super().__init__()
|
18 |
+
self.backbone = model
|
19 |
+
|
20 |
+
def forward(self, x):
|
21 |
+
return self.backbone(x)
|
22 |
+
|
23 |
+
def get_index(num_frames, num_segments=8):
|
24 |
+
seg_size = float(num_frames - 1) / num_segments
|
25 |
+
start = int(seg_size / 2)
|
26 |
+
offsets = np.array([
|
27 |
+
start + int(np.round(seg_size * idx)) for idx in range(num_segments)
|
28 |
+
])
|
29 |
+
return offsets
|
30 |
+
|
31 |
+
def transform_action():
|
32 |
+
# transform
|
33 |
+
crop_size = 224
|
34 |
+
scale_size = 256
|
35 |
+
input_mean = [0.485, 0.456, 0.406]
|
36 |
+
input_std = [0.229, 0.224, 0.225]
|
37 |
+
|
38 |
+
return T.Compose([
|
39 |
+
# T.ToPILImage(),
|
40 |
+
GroupScale(int(scale_size)),
|
41 |
+
GroupCenterCrop(crop_size),
|
42 |
+
Stack(),
|
43 |
+
ToTorchFormatTensor(),
|
44 |
+
GroupNormalize(input_mean, input_std)
|
45 |
+
])
|
46 |
+
|
47 |
+
def load_intern_action(device):
|
48 |
+
# Create an id to label name mapping
|
49 |
+
kinetics_id_to_classname = {}
|
50 |
+
for k, v in kinetics_classnames.items():
|
51 |
+
kinetics_id_to_classname[k] = v
|
52 |
+
|
53 |
+
model_path = hf_hub_download(repo_id="Andy1621/uniformerv2", filename="k400+k710_uniformerv2_b16_8x224.pyth")
|
54 |
+
# Pick a pretrained model
|
55 |
+
model = Intern_Action(intern_action_b16(pretrained=False, t_size=8, no_lmhra=True, temporal_downsample=False))
|
56 |
+
state_dict = torch.load(model_path, map_location=device)
|
57 |
+
model.load_state_dict(state_dict)
|
58 |
+
# Set to eval mode and move to desired device
|
59 |
+
model = model.to(device)
|
60 |
+
model = model.eval()
|
61 |
+
return model
|
62 |
+
|
63 |
+
def cut_frame_to_8(data):
|
64 |
+
index = np.linspace(0, len(data)-1, 8).astype(int)
|
65 |
+
return data[index]
|
66 |
+
|
67 |
+
kinetics_classnames = {
|
68 |
+
"0": "riding a bike",
|
69 |
+
"1": "marching",
|
70 |
+
"2": "dodgeball",
|
71 |
+
"3": "playing cymbals",
|
72 |
+
"4": "checking tires",
|
73 |
+
"5": "roller skating",
|
74 |
+
"6": "tasting beer",
|
75 |
+
"7": "clapping",
|
76 |
+
"8": "drawing",
|
77 |
+
"9": "juggling fire",
|
78 |
+
"10": "bobsledding",
|
79 |
+
"11": "petting animal (not cat)",
|
80 |
+
"12": "spray painting",
|
81 |
+
"13": "training dog",
|
82 |
+
"14": "eating watermelon",
|
83 |
+
"15": "building cabinet",
|
84 |
+
"16": "applauding",
|
85 |
+
"17": "playing harp",
|
86 |
+
"18": "balloon blowing",
|
87 |
+
"19": "sled dog racing",
|
88 |
+
"20": "wrestling",
|
89 |
+
"21": "pole vault",
|
90 |
+
"22": "hurling (sport)",
|
91 |
+
"23": "riding scooter",
|
92 |
+
"24": "shearing sheep",
|
93 |
+
"25": "sweeping floor",
|
94 |
+
"26": "eating carrots",
|
95 |
+
"27": "skateboarding",
|
96 |
+
"28": "dunking basketball",
|
97 |
+
"29": "disc golfing",
|
98 |
+
"30": "eating spaghetti",
|
99 |
+
"31": "playing flute",
|
100 |
+
"32": "riding mechanical bull",
|
101 |
+
"33": "making sushi",
|
102 |
+
"34": "trapezing",
|
103 |
+
"35": "picking fruit",
|
104 |
+
"36": "stretching leg",
|
105 |
+
"37": "playing ukulele",
|
106 |
+
"38": "tying tie",
|
107 |
+
"39": "skydiving",
|
108 |
+
"40": "playing cello",
|
109 |
+
"41": "jumping into pool",
|
110 |
+
"42": "shooting goal (soccer)",
|
111 |
+
"43": "trimming trees",
|
112 |
+
"44": "bookbinding",
|
113 |
+
"45": "ski jumping",
|
114 |
+
"46": "walking the dog",
|
115 |
+
"47": "riding unicycle",
|
116 |
+
"48": "shaving head",
|
117 |
+
"49": "hopscotch",
|
118 |
+
"50": "playing piano",
|
119 |
+
"51": "parasailing",
|
120 |
+
"52": "bartending",
|
121 |
+
"53": "kicking field goal",
|
122 |
+
"54": "finger snapping",
|
123 |
+
"55": "dining",
|
124 |
+
"56": "yawning",
|
125 |
+
"57": "peeling potatoes",
|
126 |
+
"58": "canoeing or kayaking",
|
127 |
+
"59": "front raises",
|
128 |
+
"60": "laughing",
|
129 |
+
"61": "dancing macarena",
|
130 |
+
"62": "digging",
|
131 |
+
"63": "reading newspaper",
|
132 |
+
"64": "hitting baseball",
|
133 |
+
"65": "clay pottery making",
|
134 |
+
"66": "exercising with an exercise ball",
|
135 |
+
"67": "playing saxophone",
|
136 |
+
"68": "shooting basketball",
|
137 |
+
"69": "washing hair",
|
138 |
+
"70": "lunge",
|
139 |
+
"71": "brushing hair",
|
140 |
+
"72": "curling hair",
|
141 |
+
"73": "kitesurfing",
|
142 |
+
"74": "tapping guitar",
|
143 |
+
"75": "bending back",
|
144 |
+
"76": "skipping rope",
|
145 |
+
"77": "situp",
|
146 |
+
"78": "folding paper",
|
147 |
+
"79": "cracking neck",
|
148 |
+
"80": "assembling computer",
|
149 |
+
"81": "cleaning gutters",
|
150 |
+
"82": "blowing out candles",
|
151 |
+
"83": "shaking hands",
|
152 |
+
"84": "dancing gangnam style",
|
153 |
+
"85": "windsurfing",
|
154 |
+
"86": "tap dancing",
|
155 |
+
"87": "skiing (not slalom or crosscountry)",
|
156 |
+
"88": "bandaging",
|
157 |
+
"89": "push up",
|
158 |
+
"90": "doing nails",
|
159 |
+
"91": "punching person (boxing)",
|
160 |
+
"92": "bouncing on trampoline",
|
161 |
+
"93": "scrambling eggs",
|
162 |
+
"94": "singing",
|
163 |
+
"95": "cleaning floor",
|
164 |
+
"96": "krumping",
|
165 |
+
"97": "drumming fingers",
|
166 |
+
"98": "snowmobiling",
|
167 |
+
"99": "gymnastics tumbling",
|
168 |
+
"100": "headbanging",
|
169 |
+
"101": "catching or throwing frisbee",
|
170 |
+
"102": "riding elephant",
|
171 |
+
"103": "bee keeping",
|
172 |
+
"104": "feeding birds",
|
173 |
+
"105": "snatch weight lifting",
|
174 |
+
"106": "mowing lawn",
|
175 |
+
"107": "fixing hair",
|
176 |
+
"108": "playing trumpet",
|
177 |
+
"109": "flying kite",
|
178 |
+
"110": "crossing river",
|
179 |
+
"111": "swinging legs",
|
180 |
+
"112": "sanding floor",
|
181 |
+
"113": "belly dancing",
|
182 |
+
"114": "sneezing",
|
183 |
+
"115": "clean and jerk",
|
184 |
+
"116": "side kick",
|
185 |
+
"117": "filling eyebrows",
|
186 |
+
"118": "shuffling cards",
|
187 |
+
"119": "recording music",
|
188 |
+
"120": "cartwheeling",
|
189 |
+
"121": "feeding fish",
|
190 |
+
"122": "folding clothes",
|
191 |
+
"123": "water skiing",
|
192 |
+
"124": "tobogganing",
|
193 |
+
"125": "blowing leaves",
|
194 |
+
"126": "smoking",
|
195 |
+
"127": "unboxing",
|
196 |
+
"128": "tai chi",
|
197 |
+
"129": "waxing legs",
|
198 |
+
"130": "riding camel",
|
199 |
+
"131": "slapping",
|
200 |
+
"132": "tossing salad",
|
201 |
+
"133": "capoeira",
|
202 |
+
"134": "playing cards",
|
203 |
+
"135": "playing organ",
|
204 |
+
"136": "playing violin",
|
205 |
+
"137": "playing drums",
|
206 |
+
"138": "tapping pen",
|
207 |
+
"139": "vault",
|
208 |
+
"140": "shoveling snow",
|
209 |
+
"141": "playing tennis",
|
210 |
+
"142": "getting a tattoo",
|
211 |
+
"143": "making a sandwich",
|
212 |
+
"144": "making tea",
|
213 |
+
"145": "grinding meat",
|
214 |
+
"146": "squat",
|
215 |
+
"147": "eating doughnuts",
|
216 |
+
"148": "ice fishing",
|
217 |
+
"149": "snowkiting",
|
218 |
+
"150": "kicking soccer ball",
|
219 |
+
"151": "playing controller",
|
220 |
+
"152": "giving or receiving award",
|
221 |
+
"153": "welding",
|
222 |
+
"154": "throwing discus",
|
223 |
+
"155": "throwing axe",
|
224 |
+
"156": "ripping paper",
|
225 |
+
"157": "swimming butterfly stroke",
|
226 |
+
"158": "air drumming",
|
227 |
+
"159": "blowing nose",
|
228 |
+
"160": "hockey stop",
|
229 |
+
"161": "taking a shower",
|
230 |
+
"162": "bench pressing",
|
231 |
+
"163": "planting trees",
|
232 |
+
"164": "pumping fist",
|
233 |
+
"165": "climbing tree",
|
234 |
+
"166": "tickling",
|
235 |
+
"167": "high kick",
|
236 |
+
"168": "waiting in line",
|
237 |
+
"169": "slacklining",
|
238 |
+
"170": "tango dancing",
|
239 |
+
"171": "hurdling",
|
240 |
+
"172": "carrying baby",
|
241 |
+
"173": "celebrating",
|
242 |
+
"174": "sharpening knives",
|
243 |
+
"175": "passing American football (in game)",
|
244 |
+
"176": "headbutting",
|
245 |
+
"177": "playing recorder",
|
246 |
+
"178": "brush painting",
|
247 |
+
"179": "garbage collecting",
|
248 |
+
"180": "robot dancing",
|
249 |
+
"181": "shredding paper",
|
250 |
+
"182": "pumping gas",
|
251 |
+
"183": "rock climbing",
|
252 |
+
"184": "hula hooping",
|
253 |
+
"185": "braiding hair",
|
254 |
+
"186": "opening present",
|
255 |
+
"187": "texting",
|
256 |
+
"188": "decorating the christmas tree",
|
257 |
+
"189": "answering questions",
|
258 |
+
"190": "playing keyboard",
|
259 |
+
"191": "writing",
|
260 |
+
"192": "bungee jumping",
|
261 |
+
"193": "sniffing",
|
262 |
+
"194": "eating burger",
|
263 |
+
"195": "playing accordion",
|
264 |
+
"196": "making pizza",
|
265 |
+
"197": "playing volleyball",
|
266 |
+
"198": "tasting food",
|
267 |
+
"199": "pushing cart",
|
268 |
+
"200": "spinning poi",
|
269 |
+
"201": "cleaning windows",
|
270 |
+
"202": "arm wrestling",
|
271 |
+
"203": "changing oil",
|
272 |
+
"204": "swimming breast stroke",
|
273 |
+
"205": "tossing coin",
|
274 |
+
"206": "deadlifting",
|
275 |
+
"207": "hoverboarding",
|
276 |
+
"208": "cutting watermelon",
|
277 |
+
"209": "cheerleading",
|
278 |
+
"210": "snorkeling",
|
279 |
+
"211": "washing hands",
|
280 |
+
"212": "eating cake",
|
281 |
+
"213": "pull ups",
|
282 |
+
"214": "surfing water",
|
283 |
+
"215": "eating hotdog",
|
284 |
+
"216": "holding snake",
|
285 |
+
"217": "playing harmonica",
|
286 |
+
"218": "ironing",
|
287 |
+
"219": "cutting nails",
|
288 |
+
"220": "golf chipping",
|
289 |
+
"221": "shot put",
|
290 |
+
"222": "hugging",
|
291 |
+
"223": "playing clarinet",
|
292 |
+
"224": "faceplanting",
|
293 |
+
"225": "trimming or shaving beard",
|
294 |
+
"226": "drinking shots",
|
295 |
+
"227": "riding mountain bike",
|
296 |
+
"228": "tying bow tie",
|
297 |
+
"229": "swinging on something",
|
298 |
+
"230": "skiing crosscountry",
|
299 |
+
"231": "unloading truck",
|
300 |
+
"232": "cleaning pool",
|
301 |
+
"233": "jogging",
|
302 |
+
"234": "ice climbing",
|
303 |
+
"235": "mopping floor",
|
304 |
+
"236": "making bed",
|
305 |
+
"237": "diving cliff",
|
306 |
+
"238": "washing dishes",
|
307 |
+
"239": "grooming dog",
|
308 |
+
"240": "weaving basket",
|
309 |
+
"241": "frying vegetables",
|
310 |
+
"242": "stomping grapes",
|
311 |
+
"243": "moving furniture",
|
312 |
+
"244": "cooking sausages",
|
313 |
+
"245": "doing laundry",
|
314 |
+
"246": "dying hair",
|
315 |
+
"247": "knitting",
|
316 |
+
"248": "reading book",
|
317 |
+
"249": "baby waking up",
|
318 |
+
"250": "punching bag",
|
319 |
+
"251": "surfing crowd",
|
320 |
+
"252": "cooking chicken",
|
321 |
+
"253": "pushing car",
|
322 |
+
"254": "springboard diving",
|
323 |
+
"255": "swing dancing",
|
324 |
+
"256": "massaging legs",
|
325 |
+
"257": "beatboxing",
|
326 |
+
"258": "breading or breadcrumbing",
|
327 |
+
"259": "somersaulting",
|
328 |
+
"260": "brushing teeth",
|
329 |
+
"261": "stretching arm",
|
330 |
+
"262": "juggling balls",
|
331 |
+
"263": "massaging person's head",
|
332 |
+
"264": "eating ice cream",
|
333 |
+
"265": "extinguishing fire",
|
334 |
+
"266": "hammer throw",
|
335 |
+
"267": "whistling",
|
336 |
+
"268": "crawling baby",
|
337 |
+
"269": "using remote controller (not gaming)",
|
338 |
+
"270": "playing cricket",
|
339 |
+
"271": "opening bottle",
|
340 |
+
"272": "playing xylophone",
|
341 |
+
"273": "motorcycling",
|
342 |
+
"274": "driving car",
|
343 |
+
"275": "exercising arm",
|
344 |
+
"276": "passing American football (not in game)",
|
345 |
+
"277": "playing kickball",
|
346 |
+
"278": "sticking tongue out",
|
347 |
+
"279": "flipping pancake",
|
348 |
+
"280": "catching fish",
|
349 |
+
"281": "eating chips",
|
350 |
+
"282": "shaking head",
|
351 |
+
"283": "sword fighting",
|
352 |
+
"284": "playing poker",
|
353 |
+
"285": "cooking on campfire",
|
354 |
+
"286": "doing aerobics",
|
355 |
+
"287": "paragliding",
|
356 |
+
"288": "using segway",
|
357 |
+
"289": "folding napkins",
|
358 |
+
"290": "playing bagpipes",
|
359 |
+
"291": "gargling",
|
360 |
+
"292": "skiing slalom",
|
361 |
+
"293": "strumming guitar",
|
362 |
+
"294": "javelin throw",
|
363 |
+
"295": "waxing back",
|
364 |
+
"296": "riding or walking with horse",
|
365 |
+
"297": "plastering",
|
366 |
+
"298": "long jump",
|
367 |
+
"299": "parkour",
|
368 |
+
"300": "wrapping present",
|
369 |
+
"301": "egg hunting",
|
370 |
+
"302": "archery",
|
371 |
+
"303": "cleaning toilet",
|
372 |
+
"304": "swimming backstroke",
|
373 |
+
"305": "snowboarding",
|
374 |
+
"306": "catching or throwing baseball",
|
375 |
+
"307": "massaging back",
|
376 |
+
"308": "blowing glass",
|
377 |
+
"309": "playing guitar",
|
378 |
+
"310": "playing chess",
|
379 |
+
"311": "golf driving",
|
380 |
+
"312": "presenting weather forecast",
|
381 |
+
"313": "rock scissors paper",
|
382 |
+
"314": "high jump",
|
383 |
+
"315": "baking cookies",
|
384 |
+
"316": "using computer",
|
385 |
+
"317": "washing feet",
|
386 |
+
"318": "arranging flowers",
|
387 |
+
"319": "playing bass guitar",
|
388 |
+
"320": "spraying",
|
389 |
+
"321": "cutting pineapple",
|
390 |
+
"322": "waxing chest",
|
391 |
+
"323": "auctioning",
|
392 |
+
"324": "jetskiing",
|
393 |
+
"325": "drinking",
|
394 |
+
"326": "busking",
|
395 |
+
"327": "playing monopoly",
|
396 |
+
"328": "salsa dancing",
|
397 |
+
"329": "waxing eyebrows",
|
398 |
+
"330": "watering plants",
|
399 |
+
"331": "zumba",
|
400 |
+
"332": "chopping wood",
|
401 |
+
"333": "pushing wheelchair",
|
402 |
+
"334": "carving pumpkin",
|
403 |
+
"335": "building shed",
|
404 |
+
"336": "making jewelry",
|
405 |
+
"337": "catching or throwing softball",
|
406 |
+
"338": "bending metal",
|
407 |
+
"339": "ice skating",
|
408 |
+
"340": "dancing charleston",
|
409 |
+
"341": "abseiling",
|
410 |
+
"342": "climbing a rope",
|
411 |
+
"343": "crying",
|
412 |
+
"344": "cleaning shoes",
|
413 |
+
"345": "dancing ballet",
|
414 |
+
"346": "driving tractor",
|
415 |
+
"347": "triple jump",
|
416 |
+
"348": "throwing ball",
|
417 |
+
"349": "getting a haircut",
|
418 |
+
"350": "running on treadmill",
|
419 |
+
"351": "climbing ladder",
|
420 |
+
"352": "blasting sand",
|
421 |
+
"353": "playing trombone",
|
422 |
+
"354": "drop kicking",
|
423 |
+
"355": "country line dancing",
|
424 |
+
"356": "changing wheel",
|
425 |
+
"357": "feeding goats",
|
426 |
+
"358": "tying knot (not on a tie)",
|
427 |
+
"359": "setting table",
|
428 |
+
"360": "shaving legs",
|
429 |
+
"361": "kissing",
|
430 |
+
"362": "riding mule",
|
431 |
+
"363": "counting money",
|
432 |
+
"364": "laying bricks",
|
433 |
+
"365": "barbequing",
|
434 |
+
"366": "news anchoring",
|
435 |
+
"367": "smoking hookah",
|
436 |
+
"368": "cooking egg",
|
437 |
+
"369": "peeling apples",
|
438 |
+
"370": "yoga",
|
439 |
+
"371": "sharpening pencil",
|
440 |
+
"372": "dribbling basketball",
|
441 |
+
"373": "petting cat",
|
442 |
+
"374": "playing ice hockey",
|
443 |
+
"375": "milking cow",
|
444 |
+
"376": "shining shoes",
|
445 |
+
"377": "juggling soccer ball",
|
446 |
+
"378": "scuba diving",
|
447 |
+
"379": "playing squash or racquetball",
|
448 |
+
"380": "drinking beer",
|
449 |
+
"381": "sign language interpreting",
|
450 |
+
"382": "playing basketball",
|
451 |
+
"383": "breakdancing",
|
452 |
+
"384": "testifying",
|
453 |
+
"385": "making snowman",
|
454 |
+
"386": "golf putting",
|
455 |
+
"387": "playing didgeridoo",
|
456 |
+
"388": "biking through snow",
|
457 |
+
"389": "sailing",
|
458 |
+
"390": "jumpstyle dancing",
|
459 |
+
"391": "water sliding",
|
460 |
+
"392": "grooming horse",
|
461 |
+
"393": "massaging feet",
|
462 |
+
"394": "playing paintball",
|
463 |
+
"395": "making a cake",
|
464 |
+
"396": "bowling",
|
465 |
+
"397": "contact juggling",
|
466 |
+
"398": "applying cream",
|
467 |
+
"399": "playing badminton"
|
468 |
+
}
|
469 |
+
|
models/__pycache__/grit_model.cpython-38.pyc
ADDED
Binary file (2.14 kB). View file
|
|
models/__pycache__/grit_model.cpython-39.pyc
ADDED
Binary file (2.14 kB). View file
|
|
models/__pycache__/med.cpython-38.pyc
ADDED
Binary file (29 kB). View file
|
|
models/__pycache__/med.cpython-39.pyc
ADDED
Binary file (29 kB). View file
|
|
models/__pycache__/swin_transformer.cpython-38.pyc
ADDED
Binary file (21.5 kB). View file
|
|
models/__pycache__/swin_transformer.cpython-39.pyc
ADDED
Binary file (21.4 kB). View file
|
|
models/__pycache__/tag2text.cpython-38.pyc
ADDED
Binary file (11.7 kB). View file
|
|
models/__pycache__/tag2text.cpython-39.pyc
ADDED
Binary file (11.7 kB). View file
|
|
models/__pycache__/vit.cpython-38.pyc
ADDED
Binary file (12.4 kB). View file
|
|
models/__pycache__/vit.cpython-39.pyc
ADDED
Binary file (12.3 kB). View file
|
|
models/grit_model.py
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import sys
|
3 |
+
|
4 |
+
from models.grit_src.image_dense_captions import image_caption_api, init_demo, dense_pred_to_caption, dense_pred_to_caption_only_name
|
5 |
+
from detectron2.data.detection_utils import read_image
|
6 |
+
|
7 |
+
class DenseCaptioning():
|
8 |
+
def __init__(self, device):
|
9 |
+
self.device = device
|
10 |
+
self.demo = None
|
11 |
+
|
12 |
+
|
13 |
+
def initialize_model(self):
|
14 |
+
self.demo = init_demo(self.device)
|
15 |
+
|
16 |
+
def image_dense_caption_debug(self, image_src):
|
17 |
+
dense_caption = """
|
18 |
+
1. the broccoli is green, [0, 0, 333, 325];
|
19 |
+
2. a piece of broccoli, [0, 147, 143, 324];
|
20 |
+
3. silver fork on plate, [4, 547, 252, 612];
|
21 |
+
"""
|
22 |
+
return dense_caption
|
23 |
+
|
24 |
+
def image_dense_caption(self, image_src):
|
25 |
+
dense_caption = image_caption_api(image_src, self.device)
|
26 |
+
print('\033[1;35m' + '*' * 100 + '\033[0m')
|
27 |
+
print("Step2, Dense Caption:\n")
|
28 |
+
print(dense_caption)
|
29 |
+
print('\033[1;35m' + '*' * 100 + '\033[0m')
|
30 |
+
return dense_caption
|
31 |
+
|
32 |
+
def run_caption_api(self,image_src):
|
33 |
+
img = read_image(image_src, format="BGR")
|
34 |
+
print(img.shape)
|
35 |
+
predictions, visualized_output = self.demo.run_on_image(img)
|
36 |
+
new_caption = dense_pred_to_caption_only_name(predictions)
|
37 |
+
return new_caption
|
38 |
+
|
39 |
+
def run_caption_tensor(self,img):
|
40 |
+
# img = read_image(image_src, format="BGR")
|
41 |
+
# print(img.shape)
|
42 |
+
predictions, visualized_output = self.demo.run_on_image(img)
|
43 |
+
new_caption = dense_pred_to_caption_only_name(predictions)
|
44 |
+
return new_caption
|
45 |
+
|
46 |
+
|
models/grit_src/__pycache__/image_dense_captions.cpython-38.pyc
ADDED
Binary file (2.95 kB). View file
|
|
models/grit_src/__pycache__/image_dense_captions.cpython-39.pyc
ADDED
Binary file (2.94 kB). View file
|
|
models/grit_src/configs/Base.yaml
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MODEL:
|
2 |
+
META_ARCHITECTURE: "GRiT"
|
3 |
+
MASK_ON: True
|
4 |
+
PROPOSAL_GENERATOR:
|
5 |
+
NAME: "CenterNet"
|
6 |
+
FPN:
|
7 |
+
IN_FEATURES: ["layer3", "layer4", "layer5"]
|
8 |
+
PIXEL_MEAN: [123.675, 116.280, 103.530]
|
9 |
+
PIXEL_STD: [58.395, 57.12, 57.375]
|
10 |
+
ROI_HEADS:
|
11 |
+
NAME: GRiTROIHeadsAndTextDecoder
|
12 |
+
IN_FEATURES: ["p3", "p4", "p5"]
|
13 |
+
IOU_THRESHOLDS: [0.6]
|
14 |
+
NUM_CLASSES: 1
|
15 |
+
SCORE_THRESH_TEST: 0.02
|
16 |
+
NMS_THRESH_TEST: 0.5
|
17 |
+
OBJECT_FEAT_POOLER_RES: 14
|
18 |
+
ROI_BOX_CASCADE_HEAD:
|
19 |
+
IOUS: [0.6, 0.7, 0.8]
|
20 |
+
ROI_BOX_HEAD:
|
21 |
+
NAME: "FastRCNNConvFCHead"
|
22 |
+
NUM_FC: 2
|
23 |
+
POOLER_RESOLUTION: 7
|
24 |
+
CLS_AGNOSTIC_BBOX_REG: True
|
25 |
+
MULT_PROPOSAL_SCORE: True
|
26 |
+
ROI_MASK_HEAD:
|
27 |
+
NAME: "MaskRCNNConvUpsampleHead"
|
28 |
+
NUM_CONV: 4
|
29 |
+
POOLER_RESOLUTION: 14
|
30 |
+
CLS_AGNOSTIC_MASK: True
|
31 |
+
CENTERNET:
|
32 |
+
NUM_CLASSES: 1
|
33 |
+
REG_WEIGHT: 1.
|
34 |
+
NOT_NORM_REG: True
|
35 |
+
ONLY_PROPOSAL: True
|
36 |
+
WITH_AGN_HM: True
|
37 |
+
INFERENCE_TH: 0.0001
|
38 |
+
PRE_NMS_TOPK_TRAIN: 4000
|
39 |
+
POST_NMS_TOPK_TRAIN: 2000
|
40 |
+
PRE_NMS_TOPK_TEST: 1000
|
41 |
+
POST_NMS_TOPK_TEST: 256
|
42 |
+
NMS_TH_TRAIN: 0.9
|
43 |
+
NMS_TH_TEST: 0.9
|
44 |
+
POS_WEIGHT: 0.5
|
45 |
+
NEG_WEIGHT: 0.5
|
46 |
+
IGNORE_HIGH_FP: 0.85
|
47 |
+
DATASETS:
|
48 |
+
TRAIN: ("coco_2017_train",)
|
49 |
+
TEST: ("coco_2017_val",)
|
50 |
+
DATALOADER:
|
51 |
+
SAMPLER_TRAIN: "MultiDatasetSampler"
|
52 |
+
DATASET_RATIO: [1]
|
53 |
+
DATASET_INPUT_SIZE: [1024]
|
54 |
+
DATASET_INPUT_SCALE: [[0.1, 2.0]]
|
55 |
+
FILTER_EMPTY_ANNOTATIONS: False
|
56 |
+
NUM_WORKERS: 8
|
57 |
+
TEST:
|
58 |
+
DETECTIONS_PER_IMAGE: 256
|
59 |
+
SOLVER:
|
60 |
+
LR_SCHEDULER_NAME: "WarmupCosineLR"
|
61 |
+
CHECKPOINT_PERIOD: 10000
|
62 |
+
WARMUP_ITERS: 1000
|
63 |
+
WARMUP_FACTOR: 0.001
|
64 |
+
USE_CUSTOM_SOLVER: True
|
65 |
+
OPTIMIZER: "ADAMW"
|
66 |
+
MAX_ITER: 180000
|
67 |
+
IMS_PER_BATCH: 64
|
68 |
+
BASE_LR: 0.00008
|
69 |
+
VIT_LAYER_DECAY: True
|
70 |
+
CLIP_GRADIENTS:
|
71 |
+
ENABLED: True
|
72 |
+
INPUT:
|
73 |
+
FORMAT: RGB
|
74 |
+
CUSTOM_AUG: EfficientDetResizeCrop
|
75 |
+
TRAIN_SIZE: 640
|
76 |
+
USE_ACT_CHECKPOINT: True
|
77 |
+
VERSION: 2
|
models/grit_src/configs/GRiT_B_DenseCap.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_BASE_: "Base.yaml"
|
2 |
+
MODEL:
|
3 |
+
TRAIN_TASK: ["DenseCap"]
|
4 |
+
TEST_TASK: "DenseCap"
|
5 |
+
MASK_ON: False
|
6 |
+
ROI_HEADS:
|
7 |
+
SOFT_NMS_ENABLED: False
|
8 |
+
BEAM_SIZE: 1
|
9 |
+
WEIGHTS: "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_base.pth"
|
10 |
+
BACKBONE:
|
11 |
+
NAME: build_vit_fpn_backbone
|
12 |
+
VIT_LAYERS: 12
|
13 |
+
SOLVER:
|
14 |
+
VIT_LAYER_DECAY_RATE: 0.7
|
15 |
+
DATASETS:
|
16 |
+
TRAIN: ("vg_train",)
|
17 |
+
TEST: ("vg_test",)
|
18 |
+
DATALOADER:
|
19 |
+
DATASET_BS: 2
|
20 |
+
OUTPUT_DIR: "./output/GRiT_B_DenseCap"
|
models/grit_src/configs/GRiT_B_DenseCap_ObjectDet.yaml
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_BASE_: "Base.yaml"
|
2 |
+
MODEL:
|
3 |
+
TRAIN_TASK: ["ObjectDet", "DenseCap"]
|
4 |
+
TEST_TASK: "DenseCap" # DenseCap or ObjectDet: Choose one for testing
|
5 |
+
MASK_ON: True
|
6 |
+
ROI_HEADS:
|
7 |
+
SOFT_NMS_ENABLED: False
|
8 |
+
BEAM_SIZE: 1
|
9 |
+
WEIGHTS: "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_base.pth"
|
10 |
+
BACKBONE:
|
11 |
+
NAME: build_vit_fpn_backbone
|
12 |
+
VIT_LAYERS: 12
|
13 |
+
SOLVER:
|
14 |
+
VIT_LAYER_DECAY_RATE: 0.7
|
15 |
+
DATASETS:
|
16 |
+
TRAIN: ("GRiT_coco2017_train", "vg_train")
|
17 |
+
TEST: ("coco_2017_test-dev",)
|
18 |
+
DATALOADER:
|
19 |
+
DATASET_RATIO: [1, 1]
|
20 |
+
DATASET_BS: 2
|
21 |
+
DATASET_INPUT_SIZE: [1024, 1024]
|
22 |
+
DATASET_INPUT_SCALE: [[0.1, 2.0], [0.1, 2.0]]
|
23 |
+
OUTPUT_DIR: "./output/GRiT_B_DenseCap_ObjectDet"
|
models/grit_src/configs/GRiT_B_ObjectDet.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_BASE_: "Base.yaml"
|
2 |
+
MODEL:
|
3 |
+
TRAIN_TASK: ["ObjectDet"]
|
4 |
+
TEST_TASK: "ObjectDet"
|
5 |
+
MASK_ON: True
|
6 |
+
ROI_HEADS:
|
7 |
+
SOFT_NMS_ENABLED: True
|
8 |
+
BEAM_SIZE: 3
|
9 |
+
WEIGHTS: "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_base.pth"
|
10 |
+
BACKBONE:
|
11 |
+
NAME: build_vit_fpn_backbone
|
12 |
+
VIT_LAYERS: 12
|
13 |
+
SOLVER:
|
14 |
+
VIT_LAYER_DECAY_RATE: 0.7
|
15 |
+
DATASETS:
|
16 |
+
TRAIN: ("GRiT_coco2017_train",)
|
17 |
+
TEST: ("coco_2017_val",)
|
18 |
+
DATALOADER:
|
19 |
+
DATASET_BS: 2
|
20 |
+
OUTPUT_DIR: "./output/GRiT_B_ObjectDet"
|
models/grit_src/configs/GRiT_H_ObjectDet.yaml
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_BASE_: "Base.yaml"
|
2 |
+
MODEL:
|
3 |
+
TRAIN_TASK: ["ObjectDet"]
|
4 |
+
TEST_TASK: "ObjectDet"
|
5 |
+
MASK_ON: True
|
6 |
+
ROI_HEADS:
|
7 |
+
SOFT_NMS_ENABLED: True
|
8 |
+
BEAM_SIZE: 3
|
9 |
+
WEIGHTS: "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_huge_p14to16.pth"
|
10 |
+
BACKBONE:
|
11 |
+
NAME: build_vit_fpn_backbone_huge
|
12 |
+
VIT_LAYERS: 32
|
13 |
+
SOLVER:
|
14 |
+
MAX_ITER: 135000
|
15 |
+
VIT_LAYER_DECAY_RATE: 0.9
|
16 |
+
DATASETS:
|
17 |
+
TRAIN: ("GRiT_coco2017_train",)
|
18 |
+
TEST: ("coco_2017_val",)
|
19 |
+
DATALOADER:
|
20 |
+
DATASET_BS: 1
|
21 |
+
OUTPUT_DIR: "./output/GRiT_H_ObjectDet"
|
models/grit_src/configs/GRiT_L_ObjectDet.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_BASE_: "Base.yaml"
|
2 |
+
MODEL:
|
3 |
+
TRAIN_TASK: ["ObjectDet"]
|
4 |
+
TEST_TASK: "ObjectDet"
|
5 |
+
MASK_ON: True
|
6 |
+
ROI_HEADS:
|
7 |
+
SOFT_NMS_ENABLED: True
|
8 |
+
BEAM_SIZE: 3
|
9 |
+
WEIGHTS: "detectron2://ImageNetPretrained/MAE/mae_pretrain_vit_large.pth"
|
10 |
+
BACKBONE:
|
11 |
+
NAME: build_vit_fpn_backbone_large
|
12 |
+
VIT_LAYERS: 24
|
13 |
+
SOLVER:
|
14 |
+
VIT_LAYER_DECAY_RATE: 0.8
|
15 |
+
DATASETS:
|
16 |
+
TRAIN: ("GRiT_coco2017_train",)
|
17 |
+
TEST: ("coco_2017_val",)
|
18 |
+
DATALOADER:
|
19 |
+
DATASET_BS: 1
|
20 |
+
OUTPUT_DIR: "./output/GRiT_L_ObjectDet"
|
models/grit_src/grit/__init__.py
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from .modeling.meta_arch import grit
|
2 |
+
from .modeling.roi_heads import grit_roi_heads
|
3 |
+
from .modeling.backbone import vit
|
4 |
+
|
5 |
+
from .data.datasets import object365
|
6 |
+
from .data.datasets import vg
|
7 |
+
from .data.datasets import grit_coco
|
models/grit_src/grit/__pycache__/__init__.cpython-38.pyc
ADDED
Binary file (425 Bytes). View file
|
|
models/grit_src/grit/__pycache__/__init__.cpython-39.pyc
ADDED
Binary file (425 Bytes). View file
|
|
models/grit_src/grit/__pycache__/config.cpython-38.pyc
ADDED
Binary file (1.42 kB). View file
|
|
models/grit_src/grit/__pycache__/config.cpython-39.pyc
ADDED
Binary file (1.42 kB). View file
|
|
models/grit_src/grit/__pycache__/predictor.cpython-38.pyc
ADDED
Binary file (3.63 kB). View file
|
|
models/grit_src/grit/__pycache__/predictor.cpython-39.pyc
ADDED
Binary file (3.63 kB). View file
|
|
models/grit_src/grit/config.py
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from detectron2.config import CfgNode as CN
|
2 |
+
|
3 |
+
|
4 |
+
def add_grit_config(cfg):
|
5 |
+
_C = cfg
|
6 |
+
|
7 |
+
_C.MODEL.BEAM_SIZE = 1
|
8 |
+
_C.MODEL.TRAIN_TASK = ["ObjectDet", "DenseCap"]
|
9 |
+
_C.MODEL.TEST_TASK = "DenseCap" # This can be varied if the model is jointly trained on multiple tasks
|
10 |
+
|
11 |
+
_C.MODEL.ROI_BOX_HEAD.USE_BIAS = 0.0 # >= 0: not use
|
12 |
+
_C.MODEL.ROI_BOX_HEAD.MULT_PROPOSAL_SCORE = False
|
13 |
+
|
14 |
+
_C.MODEL.ROI_HEADS.MASK_WEIGHT = 1.0
|
15 |
+
_C.MODEL.ROI_HEADS.OBJECT_FEAT_POOLER_RES = 14
|
16 |
+
_C.MODEL.ROI_HEADS.SOFT_NMS_ENABLED = False
|
17 |
+
|
18 |
+
# Backbones
|
19 |
+
_C.MODEL.VIT_LAYERS = 12
|
20 |
+
|
21 |
+
# Text Decoder
|
22 |
+
_C.TEXT_DECODER = CN()
|
23 |
+
_C.TEXT_DECODER.VOCAB_SIZE = 30522
|
24 |
+
_C.TEXT_DECODER.HIDDEN_SIZE = 768
|
25 |
+
_C.TEXT_DECODER.NUM_LAYERS = 6
|
26 |
+
_C.TEXT_DECODER.ATTENTION_HEADS = 12
|
27 |
+
_C.TEXT_DECODER.FEEDFORWARD_SIZE = 768 * 4
|
28 |
+
|
29 |
+
# Multi-dataset dataloader
|
30 |
+
_C.DATALOADER.DATASET_RATIO = [1, 1] # sample ratio
|
31 |
+
_C.DATALOADER.DATASET_BS = 1
|
32 |
+
_C.DATALOADER.DATASET_INPUT_SIZE = [1024, 1024]
|
33 |
+
_C.DATALOADER.DATASET_INPUT_SCALE = [(0.1, 2.0), (0.1, 2.0)]
|
34 |
+
_C.DATALOADER.DATASET_MIN_SIZES = [(640, 800), (640, 800)]
|
35 |
+
_C.DATALOADER.DATASET_MAX_SIZES = [1333, 1333]
|
36 |
+
|
37 |
+
_C.SOLVER.USE_CUSTOM_SOLVER = True
|
38 |
+
_C.SOLVER.OPTIMIZER = 'ADAMW'
|
39 |
+
_C.SOLVER.VIT_LAYER_DECAY = True
|
40 |
+
_C.SOLVER.VIT_LAYER_DECAY_RATE = 0.7
|
41 |
+
|
42 |
+
_C.INPUT.CUSTOM_AUG = 'EfficientDetResizeCrop'
|
43 |
+
_C.INPUT.TRAIN_SIZE = 1024
|
44 |
+
_C.INPUT.TEST_SIZE = 1024
|
45 |
+
_C.INPUT.SCALE_RANGE = (0.1, 2.)
|
46 |
+
# 'default' for fixed short / long edge
|
47 |
+
_C.INPUT.TEST_INPUT_TYPE = 'default'
|
48 |
+
|
49 |
+
_C.FIND_UNUSED_PARAM = True
|
50 |
+
_C.USE_ACT_CHECKPOINT = True
|
models/grit_src/grit/custom_solver.py
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
|
2 |
+
# Modified by Jialian Wu from https://github.com/facebookresearch/Detic/blob/main/detic/custom_solver.py
|
3 |
+
import itertools
|
4 |
+
from typing import Any, Callable, Dict, Iterable, List, Set, Type, Union
|
5 |
+
import torch
|
6 |
+
|
7 |
+
from detectron2.config import CfgNode
|
8 |
+
|
9 |
+
from detectron2.solver.build import maybe_add_gradient_clipping
|
10 |
+
|
11 |
+
|
12 |
+
def build_custom_optimizer(cfg: CfgNode, model: torch.nn.Module) -> torch.optim.Optimizer:
|
13 |
+
params: List[Dict[str, Any]] = []
|
14 |
+
memo: Set[torch.nn.parameter.Parameter] = set()
|
15 |
+
optimizer_type = cfg.SOLVER.OPTIMIZER
|
16 |
+
|
17 |
+
for key, value in model.named_parameters(recurse=True):
|
18 |
+
if not value.requires_grad:
|
19 |
+
continue
|
20 |
+
# Avoid duplicating parameters
|
21 |
+
if value in memo:
|
22 |
+
continue
|
23 |
+
memo.add(value)
|
24 |
+
lr = cfg.SOLVER.BASE_LR
|
25 |
+
weight_decay = cfg.SOLVER.WEIGHT_DECAY
|
26 |
+
|
27 |
+
if cfg.SOLVER.VIT_LAYER_DECAY:
|
28 |
+
lr = lr * get_vit_lr_decay_rate(key, cfg.SOLVER.VIT_LAYER_DECAY_RATE, cfg.MODEL.VIT_LAYERS)
|
29 |
+
|
30 |
+
param = {"params": [value], "lr": lr}
|
31 |
+
if optimizer_type != 'ADAMW':
|
32 |
+
param['weight_decay'] = weight_decay
|
33 |
+
params += [param]
|
34 |
+
|
35 |
+
def maybe_add_full_model_gradient_clipping(optim): # optim: the optimizer class
|
36 |
+
# detectron2 doesn't have full model gradient clipping now
|
37 |
+
clip_norm_val = cfg.SOLVER.CLIP_GRADIENTS.CLIP_VALUE
|
38 |
+
enable = (
|
39 |
+
cfg.SOLVER.CLIP_GRADIENTS.ENABLED
|
40 |
+
and cfg.SOLVER.CLIP_GRADIENTS.CLIP_TYPE == "full_model"
|
41 |
+
and clip_norm_val > 0.0
|
42 |
+
)
|
43 |
+
|
44 |
+
class FullModelGradientClippingOptimizer(optim):
|
45 |
+
def step(self, closure=None):
|
46 |
+
all_params = itertools.chain(*[x["params"] for x in self.param_groups])
|
47 |
+
torch.nn.utils.clip_grad_norm_(all_params, clip_norm_val)
|
48 |
+
super().step(closure=closure)
|
49 |
+
|
50 |
+
return FullModelGradientClippingOptimizer if enable else optim
|
51 |
+
|
52 |
+
|
53 |
+
if optimizer_type == 'SGD':
|
54 |
+
optimizer = maybe_add_full_model_gradient_clipping(torch.optim.SGD)(
|
55 |
+
params, cfg.SOLVER.BASE_LR, momentum=cfg.SOLVER.MOMENTUM,
|
56 |
+
nesterov=cfg.SOLVER.NESTEROV
|
57 |
+
)
|
58 |
+
elif optimizer_type == 'ADAMW':
|
59 |
+
optimizer = maybe_add_full_model_gradient_clipping(torch.optim.AdamW)(
|
60 |
+
params, cfg.SOLVER.BASE_LR,
|
61 |
+
weight_decay=cfg.SOLVER.WEIGHT_DECAY
|
62 |
+
)
|
63 |
+
else:
|
64 |
+
raise NotImplementedError(f"no optimizer type {optimizer_type}")
|
65 |
+
if not cfg.SOLVER.CLIP_GRADIENTS.CLIP_TYPE == "full_model":
|
66 |
+
optimizer = maybe_add_gradient_clipping(cfg, optimizer)
|
67 |
+
return optimizer
|
68 |
+
|
69 |
+
|
70 |
+
def get_vit_lr_decay_rate(name, lr_decay_rate=1.0, num_layers=12):
|
71 |
+
"""
|
72 |
+
Calculate lr decay rate for different ViT blocks.
|
73 |
+
Args:
|
74 |
+
name (string): parameter name.
|
75 |
+
lr_decay_rate (float): base lr decay rate.
|
76 |
+
num_layers (int): number of ViT blocks.
|
77 |
+
|
78 |
+
Returns:
|
79 |
+
lr decay rate for the given parameter.
|
80 |
+
"""
|
81 |
+
layer_id = num_layers + 1
|
82 |
+
if name.startswith("backbone"):
|
83 |
+
if ".pos_embed" in name or ".patch_embed" in name:
|
84 |
+
layer_id = 0
|
85 |
+
elif ".blocks." in name and ".residual." not in name:
|
86 |
+
layer_id = int(name[name.find(".blocks.") :].split(".")[2]) + 1
|
87 |
+
|
88 |
+
return lr_decay_rate ** (num_layers + 1 - layer_id)
|
models/grit_src/grit/data/__pycache__/custom_build_augmentation.cpython-38.pyc
ADDED
Binary file (1.23 kB). View file
|
|