Closed florinbarbisch closed 2 months ago
To upgrade old runs with new meta data:
import wandb
api = wandb.Api()
for run in api.runs("crop-classification/messis"):
if "experiment_name" not in run.config:
run.config["experiment_name"] = "-".join(run.name.split("-")[:-1])
print(run.config["experiment_name"])
run.update()
if "name" not in run.config:
run.config["name"] = run.name.split("-")[-2]
print(run.config["name"])
run.update()
if "experiment_name_short" in run.config:
del run.config["experiment_name_short"]
run.update()
if "experiment_group" not in run.config:
run.config["experiment_group"] = "-".join(run.name.split("-")[:-2])
print(run.config["experiment_group"])
run.update()
Rename the name of an experiment:
import wandb
api = wandb.Api()
for run in api.runs("crop-classification/messis", filters={"config.experiment_name": "exp-11-more-channels-1024"}):
if run.name == 'exp-11-more-channels-1024-0-wrong-kernel-size':
print(run.name, run.state)
print(run.config["name"], run.config["experiment_name"])
run.config["name"] = "1024-wrong-kernel-size"
run.config["experiment_name"] = "exp-11-more-channels-1024-wrong-kernel-size"
run.update()
Prioritäten
A wird definitiv umgesetzt, A > B > C
Hyperparameter Tuning:
A
|2
| Different Learning Rates / OptimizersModel Architecture:
B
| Increased Number of CNN Layers - Anzahl CNN Layers im Head erhöhenB
| Parallel instead of Serial Classification - Tier 1, 2, 3 parallel auf Neck Output Predicten, dann concat, anstelle die transformierten Features von Tier 1 an Tier 2 weiter zu geben etc.A
|8
| Drop Refinement Head and Hierarchy - Modell für Tier 3 Prediction vollständig ohne Hierarchy und Refinement HeadTraining Approach:
A
|4
| Frozen Prithvi Backbone - Trainieren mit Prithvi Backbone frozen (Neck und Head wird trainiert)A
|4
| (don't perform if CUDA out of memory) | Full Training - Trainieren mit allen Layers unfrozenA
|4
| From Scratch TrainingLater Overfitting:
A
|5
| Data Augmentation - Jitter und Intensity in die Color Channels vom Input Image bringenA
|5
| Dropout - Dropout Einsatz überprüfenDataset Split Strategy:
A
|1
| Train/Val Split - 5 Streifen als Folds, damit Cross ValidationA
|1
| Train/Val/Test Split - Chips aufteilen mit Stratified Sampling basierend auf Class Distribution in 5 oder 6 Folds, damit Cross ValidationUmgang mit Class Imbalance:
C
| Class-Based Weighted Loss Penalty - basierend auf umgekehrt proportionalem Anteil der Klassen an den Daten (Wir sollten uns überlegen, ob für den Anwendungsfall des Modells eher FP oder FN zu bevorzugen sind, da eine solche Penalty die Performance auf den Majority Klassen bestrafen kann. Im Hinterkopf behalten was sind Hauptkulturen CH: Mais Gerste Weizen Kartoffeln Zuckerrüben Raps)B
| Drop Underrepresented Classes - Klassen mit wenigen Daten verwerfen (Vergleichbarkeit mit ZüriCrop berücksichtigen)Temporal Resolution:
B
| Composite Satellite Images - Composite Bilder Entlang der Zeitachse, z. B. 14 Tage aggregieren über Mean/MedianB
| Increased Time Steps - Anstelle von 3 Time Steps z.B. 6 oder 9 als Input verwenden (Prüfen ob möglich, alternativ vielleicht Prithvi seriell)A
|3
| Crop Optimized Time Range - Anstelle von März bis September, alternative kleinere Zeiträume verwenden (prüfen mit Notizen von Meeting mit Gregor)C
| Ensemble Model - Saison-spezifische Modelle trainieren, und deren Resultate kombinieren für PredictionEffect of Hierarchy:
B
| Compare Tier 3 Refined Dereviated Preds. against Model Preds for all Tiers 1,2,3 - Metriken von allen Tiers auf Basis von tier_3_refined berechnen. In der Hierarchie zurückzurechnen von tier3_refined für die Metriken und Visualisierungen. Wir sollten jedoch beides loggen, um dann Vergleiche der Performance anstellen zu können. Martin: Vor allem Vergleich von tier1/2 abgeleitet vs. auxilliary tier1/2 wäre interessantA
|7
| New Label Hierarchy - Modell mit neuer Label Hierarchie trainieren. Die Performance-Implikationen der neuen Label-Hierarchie mit Fokus auf Saisonalität der Ackerkulturen untersuchen.Additional:
A
|6
| Background Weight in Loss to 0 - Das Loss weight für die Klasse Background auf 0 stellen. Ziel ist Fehler bei der Prediction von Background nicht zu bestrafen, da im Endeffekt vom Modell erwartet wird zu lernen, ob eine Fläche landwirtschaftlich genutzt wird oder nicht. Prüfen, ob das zu Verbesserung der Performance führt, und ob das Modell trotzdem lernt generalisiert Grasflächen zu erkennen, die gar nicht als Feld existieren (Strassenränder, Waldrand etc.).C
| Use More Satellite Bands - Anstelle der 6 aktuellen Bänder, zusätzliche verwenden die in anderen Papers relevant erscheinenC
| Decrease Spatial Resolution - Von Satellitenbilder 10m Auflösung hoch auf 20m oder 30m (werden viele Trainingsdaten und kleine Felder verlieren, man müsste wohl neuen Datensatz schaffen für die ganze Schweiz)Architecture Experiments:
9
| Dropout wechseln auf Dropout2d, in allen Layers (Dropout_p als Modellweiten hparam einführen) @yvokeller10
| Kleinere Kernel Size von 1x1 in FCNHeads @florinbarbisch11
| Mehr Channels in FCNHeads12
| Mehr Conv Layers in FCNHeads13
| Neck reduzieren (weniger Channels) oder ResNet Bottleneck Approach @yvokeller