{"id":46714970,"url":"https://github.com/see-geo/sarssw","last_synced_at":"2026-03-09T10:10:51.604Z","repository":{"id":196626467,"uuid":"596153704","full_name":"SEE-GEO/sarssw","owner":"SEE-GEO","description":"Relating SAR-images to wave/wind parameters with machine learning","archived":false,"fork":false,"pushed_at":"2023-09-10T07:58:52.000Z","size":68247,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-17T23:41:11.935Z","etag":null,"topics":["computer-vision","machine-learning","master-thesis","oceanography","radar","synthetic-aperture-radar"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SEE-GEO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-02-01T15:25:23.000Z","updated_at":"2025-09-07T14:28:52.000Z","dependencies_parsed_at":"2023-09-26T18:21:02.107Z","dependency_job_id":null,"html_url":"https://github.com/SEE-GEO/sarssw","commit_stats":null,"previous_names":["see-geo/sarssw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SEE-GEO/sarssw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEE-GEO%2Fsarssw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEE-GEO%2Fsarssw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEE-GEO%2Fsarssw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEE-GEO%2Fsarssw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SEE-GEO","download_url":"https://codeload.github.com/SEE-GEO/sarssw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SEE-GEO%2Fsarssw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30291274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","machine-learning","master-thesis","oceanography","radar","synthetic-aperture-radar"],"created_at":"2026-03-09T10:10:51.057Z","updated_at":"2026-03-09T10:10:51.598Z","avatar_url":"https://github.com/SEE-GEO.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Predicting sea surface wave and wind parameters from satellite radar images using machine learning\n\n## Project Overview\n\nAccurate predictions of wave and wind parameters over oceans are crucial for various marine operations. Although buoys provide accurate measurements, their deployment is limited, which necessitates the exploration of alternative data sources. Sentinel-1, a satellite mission capturing Synthetic Aperture Radar (SAR) images with high coverage, presents a promising opportunity. This project aims to find the relationship between SAR images and wave/wind parameters to make accurate predictions. The methodology encompasses training deep learning models using features and sub-images extracted from SAR images and correlating them with buoy measurements and model data.\n\n## Getting Started\n\nTo utilize this project, the user needs to have access to the following data:\n- **Buoy Data**: Downloaded for the year 2021 from [DOI 10.48670/moi-00036](https://doi.org/10.48670/moi-00036)\n- **Model Data**:\n  - Significant Wave Height: [DOI 10.24381/cds.adbb2d47](https://doi.org/10.24381/cds.adbb2d47)\n  - Wind Speed: [DOI 10.48670/moi-00185](https://doi.org/10.48670/moi-00185)\n- **SAR Data**: Obtainable from the Alaska Satellite Facility through the [ASF SeachAPI](https://search.asf.alaska.edu/#/)\n\n## Repository Structure\n\nThe repository holds multiple files dedicated to analysis, plotting, experimentation, and other project-related tasks. However, the key files and directories needed to run the project from raw data to predictions are detailed below:\n\n### Buoy Survey\n\n- `survey.py`\n  - **Description**: Code to perform collocation, identifying all SAR images covering locations found in the buoy data and labels them using the closest measurements. Also creates .kml pinmaps for visualizing the buoy data.\n  - **Key Input**: Downloaded buoy data.\n  - **Key Output**: Dataframe relating buoy measurements to the corresponding SAR image.\n\n### Pipeline\n\n- `download_sar_multiprocess.py`\n  - **Description**: Utilizes the dataframe from `bouy_survey/survey.py` to extract sub-images around each measurement, storing each as a NetCDF file.\n  - **Key Input**: Dataframe from `bouy_survey/survey.py`.\n  - **Key Output**: Sub-images from all measurements, stored as NetCDF files.\n\n- `analyze_hom_filter_dataset.ipynb`\n  - **Description**: Demonstrates the creation and functionality of the homogeneity filter. Allows users to utilize the existing filter or supply their own.\n  - **Key Input**: Dataset of homogenous and non-homogenous images.\n  - **Key Output**: Support Vector Classifier (SVC) that differentiates the classes.\n  \n- `sar_dataset_loader.py`\n  - **Description**: Details the process of compiling the final dataset, including feature calculation from sub-images and setting up the data split for model training.\n  - **Key Input**: Dataframe from `bouy_survey/survey.py`, sub-image directory from `download_sar_multiprocess.py`, homogeneity filter SVC from `analyze_hom_filter_dataset.ipynb`.\n  - **Key Output**: Dataframe relating features and labels. \n  \n- `data_copy.py`\n  - **Description**: Enables copying datasets to a new location (mostly intended for moving data to Alvis node) according to user specifications, for example regarding swath, polarization, size, nan-values, train-test-val split and homogeneity. \n  - **Key Input**: Sub-image directory from `download_sar_multiprocess.py`, dataframe from `sar_dataset_loader.py`.\n  - **Key Output**: Dataset according to specifications in new location.\n  \n### Machine Learning\n\n`machine_learning` holds scripts for training, analyzing, and testing the deep learning models. \n\n#### Library File:\n\n- `sarssw_ml_lib.py`\n  - **Description**: Repository of machine learning functions, including the loss function, PyTorch network architecture, and data loaders.\n\n#### Script Breakdown:\n\nThe scripting files are organized using a naming convention which describes their role in the project:\n\n- Files prefixed with `run_` are shell scripts designed to execute the corresponding Python scripts on the Alvis cluster.\n- Files containing `feature_nn` relate to the deep learning model that only uses the extracted features. Conversely, those containing `image_feature_nn` involve a model that also employs a CNN as a feature extractor.\n- The files suffixed with:\n  - `_optuna.py` are used for hyperparameter tuning of the respective model.\n  - `_train.py` trains a specific model with determined hyperparameters, saving the best ones.\n  - `_test.py` tests the trained models, concluding the process from raw data to parameter predictions.\n\n## Precomputed data\n\n#### This repository\nIn this repository, the following files are of special interest for running the project. A pickle file of the data frame after the collocation in `bouy_survey/survey.py` can be found in `bouy_survey/1h_survey/result_df`. A precomputed SVC homogeneity filter can be found in `sar_survey/out/homogenity_svc.pkl`\n\n#### Quartz server `/data/exjobb/sarssw/`\nFor those with access to the quartz server for this project, the dataset of sub-images from `pipeline/download_sar_multiprocess.py` can be found in `sar_dataset/`. A dataset of non-homogenous sub-images can be found in `wind_farm/`, which together with the other sub-images can be used to train a new homogeneity filter. The most recent dataset of features and lables can be found in `sar_dataset_features_lables_22_may/sar_dataset.pickle`. The predictions of the final models can be found in `result_predictions/` and `result_predictions_only_features/`. Finally, the checkpoints of the final models can be found in `final_img_feat/version_0/` and `final_only_feat/version_1/`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsee-geo%2Fsarssw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsee-geo%2Fsarssw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsee-geo%2Fsarssw/lists"}