Spaces:
Running
Running
yunusserhat
commited on
Create APP
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +35 -35
- README.md +13 -13
- app.py +128 -0
- configs/computer/a100.yaml +8 -0
- configs/computer/cluster-node-a100.yaml +8 -0
- configs/computer/cluster-node-v100.yaml +8 -0
- configs/computer/cpu.yaml +8 -0
- configs/computer/v100.yaml +8 -0
- configs/config.yaml +89 -0
- configs/dataset/baselines/im2gps.yaml +16 -0
- configs/dataset/baselines/im2gps3k.yaml +16 -0
- configs/dataset/baselines/yfcc4k.yaml +16 -0
- configs/dataset/osv5m.yaml +46 -0
- configs/dataset/osv5m_contrastive.yaml +34 -0
- configs/dataset/osv5m_contrastive_best.yaml +37 -0
- configs/dataset/osv5m_text_contrastive.yaml +34 -0
- configs/dataset/test_transform/center_crop.yaml +12 -0
- configs/dataset/test_transform/clip.yaml +2 -0
- configs/dataset/test_transform/fast_clip.yaml +12 -0
- configs/dataset/test_transform/fast_resnet.yaml +12 -0
- configs/dataset/test_transform/none.yaml +6 -0
- configs/dataset/train_transform/augmentation.yaml +85 -0
- configs/dataset/train_transform/center_crop.yaml +14 -0
- configs/dataset/train_transform/clip.yaml +2 -0
- configs/dataset/train_transform/fast_clip.yaml +12 -0
- configs/dataset/train_transform/fast_resnet.yaml +12 -0
- configs/dataset/train_transform/none.yaml +7 -0
- configs/exp/DinoV2.yaml +18 -0
- configs/exp/ResNet.yaml +21 -0
- configs/exp/base_model.yaml +19 -0
- configs/exp/best_model.yaml +25 -0
- configs/exp/classification_area.yaml +19 -0
- configs/exp/classification_cell.yaml +19 -0
- configs/exp/classification_cell_hier.yaml +20 -0
- configs/exp/classification_city.yaml +19 -0
- configs/exp/classification_city_hier.yaml +20 -0
- configs/exp/classification_country.yaml +19 -0
- configs/exp/classification_region copy.yaml +19 -0
- configs/exp/classification_region.yaml +19 -0
- configs/exp/clip_L_14_DataComp.yaml +18 -0
- configs/exp/clip_L_14_Laion.yaml +18 -0
- configs/exp/clip_L_14_OpenAI.yaml +18 -0
- configs/exp/clip_bigG_14_Laion.yaml +18 -0
- configs/exp/contrastive_area.yaml +20 -0
- configs/exp/contrastive_cell.yaml +20 -0
- configs/exp/contrastive_city.yaml +20 -0
- configs/exp/contrastive_country.yaml +20 -0
- configs/exp/contrastive_region.yaml +20 -0
- configs/exp/contrastive_text.yaml +22 -0
- configs/exp/eval_best_model.yaml +29 -0
.gitattributes
CHANGED
@@ -1,35 +1,35 @@
|
|
1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
-
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
-
---
|
2 |
-
title: Location Predictor
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo: red
|
6 |
-
sdk: gradio
|
7 |
-
sdk_version: 4.38.1
|
8 |
-
app_file: app.py
|
9 |
-
pinned: false
|
10 |
-
license: mit
|
11 |
-
---
|
12 |
-
|
13 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
+
---
|
2 |
+
title: Location Predictor
|
3 |
+
emoji: 🌍
|
4 |
+
colorFrom: red
|
5 |
+
colorTo: red
|
6 |
+
sdk: gradio
|
7 |
+
sdk_version: 4.38.1
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
license: mit
|
11 |
+
---
|
12 |
+
|
13 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import torch
|
2 |
+
from geoclip import GeoCLIP
|
3 |
+
from PIL import Image
|
4 |
+
import tempfile
|
5 |
+
from pathlib import Path
|
6 |
+
import gradio as gr
|
7 |
+
import spaces
|
8 |
+
from geopy.geocoders import Nominatim
|
9 |
+
from transformers import CLIPProcessor, CLIPModel
|
10 |
+
from torchvision import transforms
|
11 |
+
import reverse_geocoder as rg
|
12 |
+
from models.huggingface import Geolocalizer
|
13 |
+
import folium
|
14 |
+
import json
|
15 |
+
from geopy.exc import GeocoderTimedOut
|
16 |
+
|
17 |
+
if torch.cuda.is_available():
|
18 |
+
geoclip_model = GeoCLIP().to("cuda")
|
19 |
+
else:
|
20 |
+
geoclip_model = GeoCLIP()
|
21 |
+
|
22 |
+
geolocator = Nominatim(user_agent="predictGeolocforImage")
|
23 |
+
|
24 |
+
streetclip_model = CLIPModel.from_pretrained("geolocal/StreetCLIP")
|
25 |
+
streetclip_processor = CLIPProcessor.from_pretrained("geolocal/StreetCLIP")
|
26 |
+
labels = ['Albania', 'Andorra', 'Argentina', 'Australia', 'Austria', 'Bangladesh', 'Belgium', 'Bermuda', 'Bhutan', 'Bolivia', 'Botswana', 'Brazil', 'Bulgaria', 'Cambodia', 'Canada', 'Chile', 'China', 'Colombia', 'Croatia', 'Czech Republic', 'Denmark', 'Dominican Republic', 'Ecuador', 'Estonia', 'Finland', 'France', 'Germany', 'Ghana', 'Greece', 'Greenland', 'Guam', 'Guatemala', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Ireland', 'Israel', 'Italy', 'Japan', 'Jordan', 'Kenya', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lesotho', 'Lithuania', 'Luxembourg', 'Macedonia', 'Madagascar', 'Malaysia', 'Malta', 'Mexico', 'Monaco', 'Mongolia', 'Montenegro', 'Netherlands', 'New Zealand', 'Nigeria', 'Norway', 'Pakistan', 'Palestine', 'Peru', 'Philippines', 'Poland', 'Portugal', 'Puerto Rico', 'Romania', 'Russia', 'Rwanda', 'Senegal', 'Serbia', 'Singapore', 'Slovakia', 'Slovenia', 'South Africa', 'South Korea', 'Spain', 'Sri Lanka', 'Swaziland', 'Sweden', 'Switzerland', 'Taiwan', 'Thailand', 'Tunisia', 'Turkey', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'Uruguay']
|
27 |
+
|
28 |
+
IMAGE_SIZE = (224, 224)
|
29 |
+
GEOLOC_MODEL_NAME = "osv5m/baseline"
|
30 |
+
geoloc_model = Geolocalizer.from_pretrained(GEOLOC_MODEL_NAME)
|
31 |
+
geoloc_model.eval()
|
32 |
+
|
33 |
+
def transform_image(image):
|
34 |
+
transform = transforms.Compose([
|
35 |
+
transforms.Resize(IMAGE_SIZE),
|
36 |
+
transforms.ToTensor(),
|
37 |
+
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
|
38 |
+
])
|
39 |
+
return transform(image).unsqueeze(0)
|
40 |
+
|
41 |
+
def create_map(lat, lon):
|
42 |
+
m = folium.Map(location=[lat, lon], zoom_start=4)
|
43 |
+
folium.Marker([lat, lon]).add_to(m)
|
44 |
+
map_html = m._repr_html_()
|
45 |
+
return map_html
|
46 |
+
|
47 |
+
def get_country_coordinates(country_name):
|
48 |
+
try:
|
49 |
+
location = geolocator.geocode(country_name, timeout=10)
|
50 |
+
if location:
|
51 |
+
return location.latitude, location.longitude
|
52 |
+
except GeocoderTimedOut:
|
53 |
+
return None
|
54 |
+
return None
|
55 |
+
|
56 |
+
@spaces.GPU
|
57 |
+
def predict_geoclip(image):
|
58 |
+
with tempfile.TemporaryDirectory() as tmp_dir:
|
59 |
+
tmppath = Path(tmp_dir) / "tmp.jpg"
|
60 |
+
image.save(str(tmppath))
|
61 |
+
top_pred_gps, top_pred_prob = geoclip_model.predict(str(tmppath), top_k=50)
|
62 |
+
|
63 |
+
predictions = []
|
64 |
+
for i in range(1):
|
65 |
+
lat, lon = top_pred_gps[i]
|
66 |
+
probpercent = top_pred_prob[i] * 100
|
67 |
+
location = geolocator.reverse((lat, lon), exactly_one=True)
|
68 |
+
address = location.raw['address']
|
69 |
+
city = address.get('city', '')
|
70 |
+
country = address.get('country', '')
|
71 |
+
prediction = f"Latitude: {lat:.6f}, Longitude: {lon:.6f} - Country: {country}"
|
72 |
+
predictions.append(prediction)
|
73 |
+
|
74 |
+
map_html = create_map(lat, lon)
|
75 |
+
return "\n".join(predictions), map_html
|
76 |
+
|
77 |
+
@spaces.GPU
|
78 |
+
def classify_streetclip(image):
|
79 |
+
inputs = streetclip_processor(text=labels, images=image, return_tensors="pt", padding=True)
|
80 |
+
with torch.no_grad():
|
81 |
+
outputs = streetclip_model(**inputs)
|
82 |
+
logits_per_image = outputs.logits_per_image
|
83 |
+
prediction = logits_per_image.softmax(dim=1)
|
84 |
+
confidences = {labels[i]: float(prediction[0][i].item()) for i in range(len(labels))}
|
85 |
+
|
86 |
+
sorted_confidences = sorted(confidences.items(), key=lambda item: item[1], reverse=True)
|
87 |
+
top_label, top_confidence = sorted_confidences[0]
|
88 |
+
coords = get_country_coordinates(top_label)
|
89 |
+
map_html = create_map(*coords) if coords else "Map not available"
|
90 |
+
return f"Country: {top_label}", map_html
|
91 |
+
|
92 |
+
def infer(image):
|
93 |
+
try:
|
94 |
+
img_tensor = transform_image(image)
|
95 |
+
gps_radians = geoloc_model(img_tensor)
|
96 |
+
gps_degrees = torch.rad2deg(gps_radians).squeeze(0).cpu().tolist()
|
97 |
+
lat, lon = gps_degrees[0], gps_degrees[1]
|
98 |
+
location_query = rg.search((lat, lon))[0]
|
99 |
+
location_name = f"{location_query['name']}, {location_query['admin1']}, {location_query['cc']}"
|
100 |
+
map_html = create_map(lat, lon)
|
101 |
+
return f"Latitude: {lat:.6f}, Longitude: {lon:.6f} - Country: {location_query['admin1']} - {location_query['cc']}", map_html
|
102 |
+
except Exception as e:
|
103 |
+
return f"Failed to predict the location: {e}", None
|
104 |
+
|
105 |
+
geoclip_interface = gr.Interface(
|
106 |
+
fn=predict_geoclip,
|
107 |
+
inputs=gr.Image(type="pil", label="Upload Image", elem_id="geoclip_image_input"),
|
108 |
+
outputs=[gr.Textbox(label="Prediction", elem_id="geoclip_output"), gr.HTML(label="Map", elem_id="geoclip_map_output")],
|
109 |
+
title="GeoCLIP"
|
110 |
+
)
|
111 |
+
|
112 |
+
streetclip_interface = gr.Interface(
|
113 |
+
fn=classify_streetclip,
|
114 |
+
inputs=gr.Image(type="pil", label="Upload Image", elem_id="streetclip_image_input"),
|
115 |
+
outputs=[gr.Textbox(label="Prediction", elem_id="streetclip_output"), gr.HTML(label="Map", elem_id="streetclip_map_output")],
|
116 |
+
title="StreetCLIP"
|
117 |
+
)
|
118 |
+
|
119 |
+
osv5m_interface = gr.Interface(
|
120 |
+
fn=infer,
|
121 |
+
inputs=gr.Image(label="Upload Image", type="pil", elem_id="osv5m_image_input"),
|
122 |
+
outputs=[gr.Textbox(label="Prediction", elem_id="result_text"), gr.HTML(label="Map", elem_id="map_output")],
|
123 |
+
title="OSV-5M Baseline"
|
124 |
+
)
|
125 |
+
|
126 |
+
demo = gr.TabbedInterface([geoclip_interface, streetclip_interface, osv5m_interface], tab_names=["GeoCLIP", "StreetCLIP", "OSV-5M Baseline"])
|
127 |
+
|
128 |
+
demo.launch()
|
configs/computer/a100.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
devices: 1
|
2 |
+
progress_bar_refresh_rate: 2
|
3 |
+
num_workers: 8
|
4 |
+
sync_batchnorm: False
|
5 |
+
accelerator: gpu
|
6 |
+
precision: 32
|
7 |
+
strategy: auto
|
8 |
+
num_nodes: 1
|
configs/computer/cluster-node-a100.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
devices: 8
|
2 |
+
num_workers: 8
|
3 |
+
progress_bar_refresh_rate: 2
|
4 |
+
sync_batchnorm: True
|
5 |
+
accelerator: gpu
|
6 |
+
precision: 32
|
7 |
+
strategy: ddp
|
8 |
+
num_nodes: 1
|
configs/computer/cluster-node-v100.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
devices: 4
|
2 |
+
num_workers: 10
|
3 |
+
progress_bar_refresh_rate: 2
|
4 |
+
sync_batchnorm: True
|
5 |
+
accelerator: gpu
|
6 |
+
precision: 32
|
7 |
+
strategy: ddp
|
8 |
+
num_nodes: 1
|
configs/computer/cpu.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
devices: null
|
2 |
+
num_workers: 0
|
3 |
+
progress_bar_refresh_rate: 2
|
4 |
+
sync_batchnorm: False
|
5 |
+
accelerator: cpu
|
6 |
+
precision: 32
|
7 |
+
strategy: auto
|
8 |
+
num_nodes: null
|
configs/computer/v100.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
devices: 1
|
2 |
+
num_workers: 10
|
3 |
+
progress_bar_refresh_rate: 2
|
4 |
+
sync_batchnorm: False
|
5 |
+
accelerator: gpu
|
6 |
+
precision: 32
|
7 |
+
strategy: auto
|
8 |
+
num_nodes: 1
|
configs/config.yaml
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
defaults:
|
2 |
+
- model: default
|
3 |
+
- computer: v100
|
4 |
+
- dataset: osv5m
|
5 |
+
- _self_
|
6 |
+
- exp: ???
|
7 |
+
|
8 |
+
model:
|
9 |
+
val_metrics:
|
10 |
+
_target_: metrics.distance_based.HaversineMetrics
|
11 |
+
acc_radiuses:
|
12 |
+
- 1
|
13 |
+
- 25
|
14 |
+
- 200
|
15 |
+
- 750
|
16 |
+
- 2500
|
17 |
+
acc_area: []
|
18 |
+
aux_data: ${aux_data}
|
19 |
+
test_metrics:
|
20 |
+
_target_: metrics.distance_based.HaversineMetrics
|
21 |
+
acc_radiuses:
|
22 |
+
- 1
|
23 |
+
- 25
|
24 |
+
- 200
|
25 |
+
- 750
|
26 |
+
- 2500
|
27 |
+
acc_area: ${areas}
|
28 |
+
aux_data: ${aux_data}
|
29 |
+
|
30 |
+
datamodule:
|
31 |
+
_target_: data.datamodule.ImageDataModule
|
32 |
+
train_dataset: ${dataset.train_dataset}
|
33 |
+
val_dataset: ${dataset.val_dataset}
|
34 |
+
test_dataset: ${dataset.test_dataset}
|
35 |
+
global_batch_size: ${dataset.global_batch_size}
|
36 |
+
num_workers: ${computer.num_workers}
|
37 |
+
num_nodes: ${computer.num_nodes}
|
38 |
+
num_devices: ${computer.devices}
|
39 |
+
val_proportion: 0.1
|
40 |
+
|
41 |
+
trainer:
|
42 |
+
_target_: pytorch_lightning.Trainer
|
43 |
+
devices: ${computer.devices}
|
44 |
+
accelerator: ${computer.accelerator}
|
45 |
+
strategy: ${computer.strategy}
|
46 |
+
num_nodes: ${computer.num_nodes}
|
47 |
+
precision: ${computer.precision}
|
48 |
+
max_epochs: ${max_epochs}
|
49 |
+
|
50 |
+
logger:
|
51 |
+
_target_: pytorch_lightning.loggers.WandbLogger
|
52 |
+
save_dir: ${root_dir}
|
53 |
+
name: ${experiment_name}
|
54 |
+
project: plonk
|
55 |
+
log_model: False
|
56 |
+
offline: False
|
57 |
+
entity: imaginelab
|
58 |
+
|
59 |
+
checkpoints:
|
60 |
+
_target_: pytorch_lightning.callbacks.ModelCheckpoint
|
61 |
+
dirpath: ${root_dir}/checkpoints/${experiment_name}
|
62 |
+
filename: 'epoch_{epoch}'
|
63 |
+
monitor: val/loss
|
64 |
+
save_last: True
|
65 |
+
save_top_k: 0
|
66 |
+
every_n_epochs: 1
|
67 |
+
|
68 |
+
progress_bar:
|
69 |
+
_target_: pytorch_lightning.callbacks.TQDMProgressBar
|
70 |
+
refresh_rate: ${computer.progress_bar_refresh_rate}
|
71 |
+
|
72 |
+
aux_data: []
|
73 |
+
max_epochs: 100
|
74 |
+
data_dir: ${root_dir}/datasets
|
75 |
+
root_dir: ${hydra:runtime.cwd}
|
76 |
+
experiment_name: ${dataset.name}__${model.name}
|
77 |
+
mode: train # change that to eval to do the testing
|
78 |
+
num_classes: 0
|
79 |
+
areas: ['country', 'region', 'sub-region', 'city']
|
80 |
+
class_name: null
|
81 |
+
streetclip: False
|
82 |
+
blur: False
|
83 |
+
text_tuning: False
|
84 |
+
|
85 |
+
hydra:
|
86 |
+
run:
|
87 |
+
dir: outputs/${hydra.job.name}/${now:%Y-%m-%d_%H-%M-%S}/${experiment_name}
|
88 |
+
job:
|
89 |
+
chdir: true
|
configs/dataset/baselines/im2gps.yaml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
dataset:
|
2 |
+
name: im2gps
|
3 |
+
global_batch_size: 512
|
4 |
+
test_dataset:
|
5 |
+
_partial_: true
|
6 |
+
_target_: data.data.Baseline
|
7 |
+
path: ${data_dir}/baselines/im2gps
|
8 |
+
which: 'im2gps'
|
9 |
+
transforms: ${dataset.test_transform}
|
10 |
+
datamodule:
|
11 |
+
_target_: data.datamodule.BaselineDataModule
|
12 |
+
test_dataset: ${dataset.test_dataset}
|
13 |
+
global_batch_size: ${dataset.global_batch_size}
|
14 |
+
num_workers: ${computer.num_workers}
|
15 |
+
num_nodes: ${computer.num_nodes}
|
16 |
+
num_devices: ${computer.devices}
|
configs/dataset/baselines/im2gps3k.yaml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
dataset:
|
2 |
+
name: im2gps3k
|
3 |
+
global_batch_size: 512
|
4 |
+
test_dataset:
|
5 |
+
_partial_: true
|
6 |
+
_target_: data.data.Baseline
|
7 |
+
path: ${data_dir}/baselines/im2gps3k
|
8 |
+
which: 'im2gps3k'
|
9 |
+
transforms: ${dataset.test_transform}
|
10 |
+
datamodule:
|
11 |
+
_target_: data.datamodule.BaselineDataModule
|
12 |
+
test_dataset: ${dataset.test_dataset}
|
13 |
+
global_batch_size: ${dataset.global_batch_size}
|
14 |
+
num_workers: ${computer.num_workers}
|
15 |
+
num_nodes: ${computer.num_nodes}
|
16 |
+
num_devices: ${computer.devices}
|
configs/dataset/baselines/yfcc4k.yaml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
dataset:
|
2 |
+
name: yfcc4k
|
3 |
+
global_batch_size: 512
|
4 |
+
test_dataset:
|
5 |
+
_partial_: true
|
6 |
+
_target_: data.data.Baseline
|
7 |
+
path: ${data_dir}/baselines/yfcc4k
|
8 |
+
which: 'yfcc4k'
|
9 |
+
transforms: ${dataset.test_transform}
|
10 |
+
datamodule:
|
11 |
+
_target_: data.datamodule.BaselineDataModule
|
12 |
+
test_dataset: ${dataset.test_dataset}
|
13 |
+
global_batch_size: ${dataset.global_batch_size}
|
14 |
+
num_workers: ${computer.num_workers}
|
15 |
+
num_nodes: ${computer.num_nodes}
|
16 |
+
num_devices: ${computer.devices}
|
configs/dataset/osv5m.yaml
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
defaults:
|
2 |
+
- train_transform: fast_clip
|
3 |
+
- test_transform: fast_clip
|
4 |
+
- _self_
|
5 |
+
|
6 |
+
name: osv5m
|
7 |
+
global_batch_size: 256
|
8 |
+
|
9 |
+
train_dataset:
|
10 |
+
_partial_: true
|
11 |
+
_target_: data.data.osv5m
|
12 |
+
path: ${data_dir}/osv5m/
|
13 |
+
split: train
|
14 |
+
class_name: ${class_name}
|
15 |
+
transforms: ${dataset.train_transform}
|
16 |
+
aux_data: ${aux_data}
|
17 |
+
is_baseline: ${is_baseline}
|
18 |
+
areas: ${areas}
|
19 |
+
streetclip: ${streetclip}
|
20 |
+
blur: ${blur}
|
21 |
+
|
22 |
+
val_dataset:
|
23 |
+
_partial_: true
|
24 |
+
_target_: data.data.osv5m
|
25 |
+
path: ${data_dir}/osv5m/
|
26 |
+
split: val
|
27 |
+
class_name: ${class_name}
|
28 |
+
transforms: ${dataset.test_transform}
|
29 |
+
aux_data: ${aux_data}
|
30 |
+
is_baseline: ${is_baseline}
|
31 |
+
areas: ${areas}
|
32 |
+
streetclip: ${streetclip}
|
33 |
+
blur: ${blur}
|
34 |
+
|
35 |
+
test_dataset:
|
36 |
+
_partial_: true
|
37 |
+
_target_: data.data.osv5m
|
38 |
+
path: ${data_dir}/osv5m/
|
39 |
+
split: test
|
40 |
+
class_name: ${class_name}
|
41 |
+
transforms: ${dataset.test_transform}
|
42 |
+
aux_data: ${aux_data}
|
43 |
+
is_baseline: ${is_baseline}
|
44 |
+
areas: ${areas}
|
45 |
+
streetclip: ${streetclip}
|
46 |
+
blur: ${blur}
|
configs/dataset/osv5m_contrastive.yaml
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
defaults:
|
2 |
+
- train_transform: fast_clip
|
3 |
+
- test_transform: fast_clip
|
4 |
+
- _self_
|
5 |
+
|
6 |
+
name: osv5m
|
7 |
+
global_batch_size: 256
|
8 |
+
|
9 |
+
train_dataset:
|
10 |
+
_partial_: true
|
11 |
+
_target_: data.data.Contrastiveosv5m
|
12 |
+
path: ${data_dir}/osv5m/
|
13 |
+
split: train
|
14 |
+
class_name: ${class_name}
|
15 |
+
transforms: ${dataset.train_transform}
|
16 |
+
blur: ${blur}
|
17 |
+
|
18 |
+
val_dataset:
|
19 |
+
_partial_: true
|
20 |
+
_target_: data.data.Contrastiveosv5m
|
21 |
+
path: ${data_dir}/osv5m/
|
22 |
+
split: val
|
23 |
+
class_name: ${class_name}
|
24 |
+
transforms: ${dataset.test_transform}
|
25 |
+
blur: ${blur}
|
26 |
+
|
27 |
+
test_dataset:
|
28 |
+
_partial_: true
|
29 |
+
_target_: data.data.Contrastiveosv5m
|
30 |
+
path: ${data_dir}/osv5m/
|
31 |
+
split: test
|
32 |
+
class_name: ${class_name}
|
33 |
+
transforms: ${dataset.test_transform}
|
34 |
+
blur: ${blur}
|
configs/dataset/osv5m_contrastive_best.yaml
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
defaults:
|
2 |
+
- train_transform: fast_clip
|
3 |
+
- test_transform: fast_clip
|
4 |
+
- _self_
|
5 |
+
|
6 |
+
name: osv5m
|
7 |
+
global_batch_size: 256
|
8 |
+
|
9 |
+
train_dataset:
|
10 |
+
_partial_: true
|
11 |
+
_target_: data.data.Contrastiveosv5m
|
12 |
+
path: ${data_dir}/osv5m/
|
13 |
+
split: train
|
14 |
+
class_name: ${class_name}
|
15 |
+
transforms: ${dataset.train_transform}
|
16 |
+
class_name2: 'unique_region'
|
17 |
+
blur: ${blur}
|
18 |
+
|
19 |
+
val_dataset:
|
20 |
+
_partial_: true
|
21 |
+
_target_: data.data.Contrastiveosv5m
|
22 |
+
path: ${data_dir}/osv5m/
|
23 |
+
split: val
|
24 |
+
class_name: ${class_name}
|
25 |
+
transforms: ${dataset.test_transform}
|
26 |
+
class_name2: 'unique_region'
|
27 |
+
blur: ${blur}
|
28 |
+
|
29 |
+
test_dataset:
|
30 |
+
_partial_: true
|
31 |
+
_target_: data.data.Contrastiveosv5m
|
32 |
+
path: ${data_dir}/osv5m/
|
33 |
+
split: test
|
34 |
+
class_name: ${class_name}
|
35 |
+
transforms: ${dataset.test_transform}
|
36 |
+
class_name2: 'unique_region'
|
37 |
+
blur: ${blur}
|
configs/dataset/osv5m_text_contrastive.yaml
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
defaults:
|
2 |
+
- train_transform: fast_clip
|
3 |
+
- test_transform: fast_clip
|
4 |
+
- _self_
|
5 |
+
|
6 |
+
name: osv5m
|
7 |
+
global_batch_size: 256
|
8 |
+
|
9 |
+
train_dataset:
|
10 |
+
_partial_: true
|
11 |
+
_target_: data.data.TextContrastiveosv5m
|
12 |
+
path: ${data_dir}/osv5m/
|
13 |
+
split: train
|
14 |
+
class_name: ${class_name}
|
15 |
+
transforms: ${dataset.train_transform}
|
16 |
+
blur: ${blur}
|
17 |
+
|
18 |
+
val_dataset:
|
19 |
+
_partial_: true
|
20 |
+
_target_: data.data.TextContrastiveosv5m
|
21 |
+
path: ${data_dir}/osv5m/
|
22 |
+
split: val
|
23 |
+
class_name: ${class_name}
|
24 |
+
transforms: ${dataset.test_transform}
|
25 |
+
blur: ${blur}
|
26 |
+
|
27 |
+
test_dataset:
|
28 |
+
_partial_: true
|
29 |
+
_target_: data.data.TextContrastiveosv5m
|
30 |
+
path: ${data_dir}/osv5m/
|
31 |
+
split: test
|
32 |
+
class_name: ${class_name}
|
33 |
+
transforms: ${dataset.test_transform}
|
34 |
+
blur: ${blur}
|
configs/dataset/test_transform/center_crop.yaml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.ToTensor
|
4 |
+
- _target_: utils.image_processing.CenterCrop
|
5 |
+
ratio: "1:1"
|
6 |
+
- _target_: torchvision.transforms.Resize
|
7 |
+
size: ${dataset.img_resolution}
|
8 |
+
interpolation: 3
|
9 |
+
antialias: true
|
10 |
+
- _target_: torchvision.transforms.Normalize
|
11 |
+
mean: 0.5
|
12 |
+
std: 0.5
|
configs/dataset/test_transform/clip.yaml
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
_target_: data.transforms.ClipTransform
|
2 |
+
split: val
|
configs/dataset/test_transform/fast_clip.yaml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.Resize
|
4 |
+
size: 224
|
5 |
+
interpolation: 3
|
6 |
+
antialias: true
|
7 |
+
- _target_: torchvision.transforms.CenterCrop
|
8 |
+
size: 224
|
9 |
+
- _target_: torchvision.transforms.ToTensor
|
10 |
+
- _target_: torchvision.transforms.Normalize
|
11 |
+
mean: [0.48145466, 0.4578275, 0.40821073]
|
12 |
+
std: [0.26862954, 0.26130258, 0.27577711]
|
configs/dataset/test_transform/fast_resnet.yaml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.Resize
|
4 |
+
size: 224
|
5 |
+
interpolation: 3
|
6 |
+
antialias: true
|
7 |
+
- _target_: torchvision.transforms.CenterCrop
|
8 |
+
size: 224
|
9 |
+
- _target_: torchvision.transforms.ToTensor
|
10 |
+
- _target_: torchvision.transforms.Normalize
|
11 |
+
mean: [0.485 ,0.456 ,0.406]
|
12 |
+
std: [0.229, 0.224, 0.225]
|
configs/dataset/test_transform/none.yaml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.ToTensor
|
4 |
+
- _target_: torchvision.transforms.Normalize
|
5 |
+
mean: 0.5
|
6 |
+
std: 0.5
|
configs/dataset/train_transform/augmentation.yaml
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: data.augmentation.ImageAugmentation
|
2 |
+
names: "standard_augmentation,geometric_augmentation,clip_transform"
|
3 |
+
|
4 |
+
# always apply clip_transform at the end
|
5 |
+
clip_transform:
|
6 |
+
_target_: torchvision.transforms.Compose
|
7 |
+
transforms:
|
8 |
+
- _target_: torchvision.transforms.Resize
|
9 |
+
size: 224
|
10 |
+
interpolation: 3
|
11 |
+
antialias: true
|
12 |
+
- _target_: torchvision.transforms.CenterCrop
|
13 |
+
size: 224
|
14 |
+
- _target_: torchvision.transforms.ToTensor
|
15 |
+
- _target_: torchvision.transforms.Normalize
|
16 |
+
mean: [0.48145466, 0.4578275, 0.40821073]
|
17 |
+
std: [0.26862954, 0.26130258, 0.27577711]
|
18 |
+
|
19 |
+
standard_augmentation:
|
20 |
+
_target_: data.augmentation.StandardAugmentation
|
21 |
+
# by default, we all augmentation methods
|
22 |
+
names: "brightness,contrast,sharpness,color,blur,gaussian_noise"
|
23 |
+
|
24 |
+
# random PIL brigtness
|
25 |
+
brightness:
|
26 |
+
_target_: data.augmentation.PillowBrightness
|
27 |
+
p: 0.2
|
28 |
+
factor_interval: [0.5, 1.5]
|
29 |
+
|
30 |
+
# random PIL contrast
|
31 |
+
contrast:
|
32 |
+
_target_: data.augmentation.PillowContrast
|
33 |
+
p: 0.2
|
34 |
+
factor_interval: [0.3, 3]
|
35 |
+
|
36 |
+
# random PIL sharpness
|
37 |
+
sharpness:
|
38 |
+
_target_: data.augmentation.PillowSharpness
|
39 |
+
p: 0.2
|
40 |
+
factor_interval: [0.5, 30.0]
|
41 |
+
|
42 |
+
# random PIL color
|
43 |
+
color:
|
44 |
+
_target_: data.augmentation.PillowColor
|
45 |
+
p: 0.2
|
46 |
+
factor_interval: [0.0, 2.0]
|
47 |
+
|
48 |
+
# random PIL blur
|
49 |
+
blur:
|
50 |
+
_target_: data.augmentation.PillowBlur
|
51 |
+
p: 0.2
|
52 |
+
factor_interval: [1, 2]
|
53 |
+
|
54 |
+
# random numpy gaussian noise
|
55 |
+
gaussian_noise:
|
56 |
+
_target_: data.augmentation.NumpyGaussianNoise
|
57 |
+
p: 0.2
|
58 |
+
factor_interval: [0.1, 0.04]
|
59 |
+
|
60 |
+
geometric_augmentation:
|
61 |
+
_target_: data.augmentation.GeometricAugmentation
|
62 |
+
# by default, we all augmentation methods
|
63 |
+
names: "random_rotation,random_resized_crop,random_horizontal_flip"
|
64 |
+
|
65 |
+
# random rotation
|
66 |
+
random_rotation:
|
67 |
+
_target_: torchvision.transforms.RandomRotation
|
68 |
+
degrees: [-15, 15]
|
69 |
+
|
70 |
+
# random crop
|
71 |
+
random_resized_crop:
|
72 |
+
_target_: torchvision.transforms.RandomResizedCrop
|
73 |
+
scale: [0.5, 1.0]
|
74 |
+
ratio: [0.9, 1.1]
|
75 |
+
size: 224
|
76 |
+
|
77 |
+
# random horizontal flip
|
78 |
+
random_horizontal_flip:
|
79 |
+
_target_: torchvision.transforms.RandomHorizontalFlip
|
80 |
+
p: 0.5
|
81 |
+
|
82 |
+
# random vertical flip
|
83 |
+
random_vertical_flip:
|
84 |
+
_target_: torchvision.transforms.RandomVerticalFlip
|
85 |
+
p: 0.5
|
configs/dataset/train_transform/center_crop.yaml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.ToTensor
|
4 |
+
- _target_: utils.image_processing.CenterCrop
|
5 |
+
ratio: "1:1"
|
6 |
+
- _target_: torchvision.transforms.Resize
|
7 |
+
size: ${dataset.img_resolution}
|
8 |
+
interpolation: 3
|
9 |
+
antialias: true
|
10 |
+
- _target_: torchvision.transforms.RandomHorizontalFlip
|
11 |
+
p: 0.5
|
12 |
+
- _target_: torchvision.transforms.Normalize
|
13 |
+
mean: 0.5
|
14 |
+
std: 0.5
|
configs/dataset/train_transform/clip.yaml
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
_target_: data.transforms.ClipTransform
|
2 |
+
split: val
|
configs/dataset/train_transform/fast_clip.yaml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.Resize
|
4 |
+
size: 224
|
5 |
+
interpolation: 3
|
6 |
+
antialias: true
|
7 |
+
- _target_: torchvision.transforms.CenterCrop
|
8 |
+
size: 224
|
9 |
+
- _target_: torchvision.transforms.ToTensor
|
10 |
+
- _target_: torchvision.transforms.Normalize
|
11 |
+
mean: [0.48145466, 0.4578275, 0.40821073]
|
12 |
+
std: [0.26862954, 0.26130258, 0.27577711]
|
configs/dataset/train_transform/fast_resnet.yaml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.Resize
|
4 |
+
size: 224
|
5 |
+
interpolation: 3
|
6 |
+
antialias: true
|
7 |
+
- _target_: torchvision.transforms.CenterCrop
|
8 |
+
size: 224
|
9 |
+
- _target_: torchvision.transforms.ToTensor
|
10 |
+
- _target_: torchvision.transforms.Normalize
|
11 |
+
mean: [0.485 ,0.456 ,0.406]
|
12 |
+
std: [0.229, 0.224, 0.225]
|
configs/dataset/train_transform/none.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
_target_: torchvision.transforms.Compose
|
2 |
+
transforms:
|
3 |
+
- _target_: torchvision.transforms.Resize
|
4 |
+
size: 224
|
5 |
+
interpolation: 3
|
6 |
+
antialias: true
|
7 |
+
- _target_: torchvision.transforms.ToTensor
|
configs/exp/DinoV2.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: dinov2_vitl14
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
optimizer:
|
10 |
+
optim:
|
11 |
+
lr: 0.0002
|
12 |
+
weight_decay: 0.0001
|
13 |
+
|
14 |
+
is_baseline: false
|
15 |
+
max_epochs: 30
|
16 |
+
|
17 |
+
dataset:
|
18 |
+
global_batch_size: 2048
|
configs/exp/ResNet.yaml
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /dataset/test_transform: fast_resnet
|
6 |
+
- override /dataset/train_transform: fast_resnet
|
7 |
+
- override /model.network.mid: mlp_resnet
|
8 |
+
- override /model/network/backbone: ResNet50
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 0.0002
|
15 |
+
weight_decay: 0.0001
|
16 |
+
|
17 |
+
is_baseline: false
|
18 |
+
max_epochs: 30
|
19 |
+
|
20 |
+
dataset:
|
21 |
+
global_batch_size: 2048
|
configs/exp/base_model.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
name: base_model
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 30
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/best_model.yaml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive_best
|
5 |
+
- override /model: hybrid
|
6 |
+
- override /model/network: best_backbone
|
7 |
+
- override /model/network/backbone: clip_L_14_DataComp
|
8 |
+
- override /model/network/mid: mlp_hybrid
|
9 |
+
- override /model/loss: best_model
|
10 |
+
- _self_
|
11 |
+
|
12 |
+
class_name: 'quadtree_10_1000'
|
13 |
+
is_baseline: false
|
14 |
+
max_epochs: 30
|
15 |
+
|
16 |
+
model:
|
17 |
+
name: best_model
|
18 |
+
optimizer:
|
19 |
+
optim:
|
20 |
+
lr: 2e-4
|
21 |
+
weight_decay: 0.0001
|
22 |
+
backbone_lr: 2e-5
|
23 |
+
|
24 |
+
dataset:
|
25 |
+
global_batch_size: 2048
|
configs/exp/classification_area.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: 'area'
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/classification_cell.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: quadtree_10_1000
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/classification_cell_hier.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- override /model/loss: cls_hier_quad
|
7 |
+
- _self_
|
8 |
+
|
9 |
+
class_name: quadtree_10_1000
|
10 |
+
model:
|
11 |
+
optimizer:
|
12 |
+
optim:
|
13 |
+
lr: 0.0002
|
14 |
+
weight_decay: 0.0001
|
15 |
+
|
16 |
+
is_baseline: false
|
17 |
+
max_epochs: 15
|
18 |
+
|
19 |
+
dataset:
|
20 |
+
global_batch_size: 2048
|
configs/exp/classification_city.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: 'city'
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/classification_city_hier.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- override /model/loss: cls_hier
|
7 |
+
- _self_
|
8 |
+
|
9 |
+
class_name: 'city'
|
10 |
+
model:
|
11 |
+
optimizer:
|
12 |
+
optim:
|
13 |
+
lr: 0.0002
|
14 |
+
weight_decay: 0.0001
|
15 |
+
|
16 |
+
is_baseline: false
|
17 |
+
max_epochs: 15
|
18 |
+
|
19 |
+
dataset:
|
20 |
+
global_batch_size: 2048
|
configs/exp/classification_country.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: 'country'
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/classification_region copy.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: 'region'
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/classification_region.yaml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: classification
|
5 |
+
- override /model/network/backbone: openclip_B_32
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
class_name: 'region'
|
9 |
+
model:
|
10 |
+
optimizer:
|
11 |
+
optim:
|
12 |
+
lr: 0.0002
|
13 |
+
weight_decay: 0.0001
|
14 |
+
|
15 |
+
is_baseline: false
|
16 |
+
max_epochs: 15
|
17 |
+
|
18 |
+
dataset:
|
19 |
+
global_batch_size: 2048
|
configs/exp/clip_L_14_DataComp.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: clip_L_14_DataComp
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
optimizer:
|
10 |
+
optim:
|
11 |
+
lr: 0.0002
|
12 |
+
weight_decay: 0.0001
|
13 |
+
|
14 |
+
is_baseline: false
|
15 |
+
max_epochs: 30
|
16 |
+
|
17 |
+
dataset:
|
18 |
+
global_batch_size: 2048
|
configs/exp/clip_L_14_Laion.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: openclip_L_14
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
optimizer:
|
10 |
+
optim:
|
11 |
+
lr: 0.0002
|
12 |
+
weight_decay: 0.0001
|
13 |
+
|
14 |
+
is_baseline: false
|
15 |
+
max_epochs: 30
|
16 |
+
|
17 |
+
dataset:
|
18 |
+
global_batch_size: 2048
|
configs/exp/clip_L_14_OpenAI.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: clip_L_14
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
optimizer:
|
10 |
+
optim:
|
11 |
+
lr: 0.0002
|
12 |
+
weight_decay: 0.0001
|
13 |
+
|
14 |
+
is_baseline: false
|
15 |
+
max_epochs: 30
|
16 |
+
|
17 |
+
dataset:
|
18 |
+
global_batch_size: 2048
|
configs/exp/clip_bigG_14_Laion.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /model: regression
|
5 |
+
- override /model/network/backbone: openclip_bigG_14
|
6 |
+
- _self_
|
7 |
+
|
8 |
+
model:
|
9 |
+
optimizer:
|
10 |
+
optim:
|
11 |
+
lr: 0.0002
|
12 |
+
weight_decay: 0.0001
|
13 |
+
|
14 |
+
is_baseline: false
|
15 |
+
max_epochs: 30
|
16 |
+
|
17 |
+
dataset:
|
18 |
+
global_batch_size: 2048
|
configs/exp/contrastive_area.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive
|
5 |
+
- override /model: regression
|
6 |
+
- override /model/network: contrastive_unfrozen_backbone
|
7 |
+
- override /model/network/backbone: openclip_B_32
|
8 |
+
- override /model/loss: contrastive
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 2e-4
|
15 |
+
weight_decay: 0.0001
|
16 |
+
backbone_lr: 2e-5
|
17 |
+
|
18 |
+
class_name: area
|
19 |
+
is_baseline: false
|
20 |
+
max_epochs: 30
|
configs/exp/contrastive_cell.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive
|
5 |
+
- override /model: regression
|
6 |
+
- override /model/network: contrastive_unfrozen_backbone
|
7 |
+
- override /model/network/backbone: openclip_B_32
|
8 |
+
- override /model/loss: contrastive
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 2e-4
|
15 |
+
weight_decay: 0.0001
|
16 |
+
backbone_lr: 2e-5
|
17 |
+
|
18 |
+
class_name: quadtree_10_1000
|
19 |
+
is_baseline: false
|
20 |
+
max_epochs: 30
|
configs/exp/contrastive_city.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive
|
5 |
+
- override /model: regression
|
6 |
+
- override /model/network: contrastive_unfrozen_backbone
|
7 |
+
- override /model/network/backbone: openclip_B_32
|
8 |
+
- override /model/loss: contrastive
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 2e-4
|
15 |
+
weight_decay: 0.0001
|
16 |
+
backbone_lr: 2e-5
|
17 |
+
|
18 |
+
class_name: city
|
19 |
+
is_baseline: false
|
20 |
+
max_epochs: 30
|
configs/exp/contrastive_country.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive
|
5 |
+
- override /model: regression
|
6 |
+
- override /model/network: contrastive_unfrozen_backbone
|
7 |
+
- override /model/network/backbone: openclip_B_32
|
8 |
+
- override /model/loss: contrastive
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 2e-4
|
15 |
+
weight_decay: 0.0001
|
16 |
+
backbone_lr: 2e-5
|
17 |
+
|
18 |
+
class_name: country
|
19 |
+
is_baseline: false
|
20 |
+
max_epochs: 30
|
configs/exp/contrastive_region.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive
|
5 |
+
- override /model: regression
|
6 |
+
- override /model/network: contrastive_unfrozen_backbone
|
7 |
+
- override /model/network/backbone: openclip_B_32
|
8 |
+
- override /model/loss: contrastive
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
model:
|
12 |
+
optimizer:
|
13 |
+
optim:
|
14 |
+
lr: 2e-4
|
15 |
+
weight_decay: 0.0001
|
16 |
+
backbone_lr: 2e-5
|
17 |
+
|
18 |
+
class_name: region
|
19 |
+
is_baseline: false
|
20 |
+
max_epochs: 30
|
configs/exp/contrastive_text.yaml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_text_contrastive
|
5 |
+
- override /model: text_tuning
|
6 |
+
- override /model/network/backbone: openclip_B_32
|
7 |
+
- _self_
|
8 |
+
|
9 |
+
model:
|
10 |
+
network:
|
11 |
+
backbone:
|
12 |
+
instance:
|
13 |
+
_target_: models.networks.backbones.CLIPText
|
14 |
+
optimizer:
|
15 |
+
optim:
|
16 |
+
lr: 0.0002
|
17 |
+
weight_decay: 0.0001
|
18 |
+
|
19 |
+
is_baseline: false
|
20 |
+
class_name: city
|
21 |
+
text_tuning: True
|
22 |
+
max_epochs: 30
|
configs/exp/eval_best_model.yaml
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# @package _global_
|
2 |
+
|
3 |
+
defaults:
|
4 |
+
- override /dataset: osv5m_contrastive_best
|
5 |
+
- override /model: hybrid
|
6 |
+
- override /model/network: best_backbone
|
7 |
+
- override /model/network/backbone: clip_L_14_DataComp
|
8 |
+
- override /model/network/mid: mlp_hybrid
|
9 |
+
- _self_
|
10 |
+
|
11 |
+
class_name: 'quadtree_10_1000'
|
12 |
+
is_baseline: false
|
13 |
+
max_epochs: 30
|
14 |
+
mode: 'eval'
|
15 |
+
|
16 |
+
model:
|
17 |
+
name: best_model
|
18 |
+
optimizer:
|
19 |
+
optim:
|
20 |
+
lr: 2e-4
|
21 |
+
weight_decay: 0.0001
|
22 |
+
backbone_lr: 2e-5
|
23 |
+
network:
|
24 |
+
head:
|
25 |
+
instance:
|
26 |
+
quadtree_path: ${root_dir}/quadtree_10_1000.csv
|
27 |
+
|
28 |
+
dataset:
|
29 |
+
global_batch_size: 2048
|