ynhe commited on
Commit
5423e78
1 Parent(s): 7eb621b
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. README.md +0 -12
  3. app.py +172 -0
  4. chatbot.py +82 -0
  5. configs/med_config.json +21 -0
  6. configs/q2l_config.json +23 -0
  7. configs/swin/config_swinB_224.json +10 -0
  8. configs/swin/config_swinB_384.json +10 -0
  9. configs/swin/config_swinB_480.json +9 -0
  10. configs/swin/config_swinB_576.json +9 -0
  11. configs/swin/config_swinB_608.json +9 -0
  12. configs/tag2text_caption.yaml +33 -0
  13. data/__pycache__/tag_class.cpython-38.pyc +0 -0
  14. data/__pycache__/tag_class.cpython-39.pyc +0 -0
  15. data/tag_class.py +3437 -0
  16. environment.yaml +288 -0
  17. images/making_cake.mp4 +0 -0
  18. images/playing_guitar.mp4 +0 -0
  19. images/yoga.mp4 +0 -0
  20. intern_action.py +510 -0
  21. load_internvideo.py +469 -0
  22. models/__pycache__/grit_model.cpython-38.pyc +0 -0
  23. models/__pycache__/grit_model.cpython-39.pyc +0 -0
  24. models/__pycache__/med.cpython-38.pyc +0 -0
  25. models/__pycache__/med.cpython-39.pyc +0 -0
  26. models/__pycache__/swin_transformer.cpython-38.pyc +0 -0
  27. models/__pycache__/swin_transformer.cpython-39.pyc +0 -0
  28. models/__pycache__/tag2text.cpython-38.pyc +0 -0
  29. models/__pycache__/tag2text.cpython-39.pyc +0 -0
  30. models/__pycache__/vit.cpython-38.pyc +0 -0
  31. models/__pycache__/vit.cpython-39.pyc +0 -0
  32. models/grit_model.py +46 -0
  33. models/grit_src/__pycache__/image_dense_captions.cpython-38.pyc +0 -0
  34. models/grit_src/__pycache__/image_dense_captions.cpython-39.pyc +0 -0
  35. models/grit_src/configs/Base.yaml +77 -0
  36. models/grit_src/configs/GRiT_B_DenseCap.yaml +20 -0
  37. models/grit_src/configs/GRiT_B_DenseCap_ObjectDet.yaml +23 -0
  38. models/grit_src/configs/GRiT_B_ObjectDet.yaml +20 -0
  39. models/grit_src/configs/GRiT_H_ObjectDet.yaml +21 -0
  40. models/grit_src/configs/GRiT_L_ObjectDet.yaml +20 -0
  41. models/grit_src/grit/__init__.py +7 -0
  42. models/grit_src/grit/__pycache__/__init__.cpython-38.pyc +0 -0
  43. models/grit_src/grit/__pycache__/__init__.cpython-39.pyc +0 -0
  44. models/grit_src/grit/__pycache__/config.cpython-38.pyc +0 -0
  45. models/grit_src/grit/__pycache__/config.cpython-39.pyc +0 -0
  46. models/grit_src/grit/__pycache__/predictor.cpython-38.pyc +0 -0
  47. models/grit_src/grit/__pycache__/predictor.cpython-39.pyc +0 -0
  48. models/grit_src/grit/config.py +50 -0
  49. models/grit_src/grit/custom_solver.py +88 -0
  50. 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