Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Obtain patch level metadata (e.g. geospatial bounds and cloud cover), save and demo DEP use case (sim search) #172

Merged
merged 33 commits into from
Mar 24, 2024

Conversation

lillythomas
Copy link
Contributor

@lillythomas lillythomas commented Mar 6, 2024

This PR will work towards a demonstration of how to obtain patch level embeddings and write them to GeoParquet files to run similarity search with.

Main tasks that need to be done:

Reference tickets: #168 #140

@lillythomas lillythomas marked this pull request as draft March 6, 2024 08:31
@lillythomas lillythomas marked this pull request as ready for review March 11, 2024 20:48
@lillythomas
Copy link
Contributor Author

The notebook docs/tutorial_digital_earth_pacific_patch_level.ipynb walks through an example of:

  • generating patch level embeddings for an area where known mining extraction events occur
  • saving the patch level embeddings to independent GeoParquet files
  • executing similarity search based on a ground truth point's overlapping patch

@weiji14 @yellowcap ready for when you have time to review.

@weiji14
Copy link
Contributor

weiji14 commented Mar 11, 2024

Thanks @lillythomas! I haven't looked too closely yet, but would it be possible to show where the similarity search results are located? Maybe something like showing the bounding boxes of all the patches on a map, and also overlay where the original quarry points are.

@lillythomas
Copy link
Contributor Author

Thanks @lillythomas! I haven't looked too closely yet, but would it be possible to show where the similarity search results are located? Maybe something like showing the bounding boxes of all the patches on a map, and also overlay where the original quarry points are.

Yes! Great idea. Working on this tomorrow.

Copy link
Member

@yellowcap yellowcap left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Lilly, this is great to see! I did not yet have time get to the sim search part, but will get back to it on Monday. Left some comments for now.

Could you add some more context on what the purpose is? Do you think we going to apply this to a region for searching certain events / features?

"outputs": [],
"source": [
"mrd = gpd.read_file(\n",
" \"../mineral-resource-detection/training_data/draft_inputs/MRD_dissagregated_25.geojson\"\n",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"outputs": [],
"source": [
"DATA_DIR = \"data/minicubes\"\n",
"CKPT_PATH = \"/home/ubuntu/data/checkpoints/mae_epoch-24_val-loss-0.46.ckpt\"\n",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

" box_emb = shapely.geometry.box(box_[0], box_[1], box_[2], box_[3])\n",
"\n",
" # Create the GeoDataFrame\n",
" gdf = gpd.GeoDataFrame(data, geometry=[box_emb], crs=f\"EPSG:{epsg}\")\n",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why making one pdf file per embedding and not one that contains all? This would make everything downstream much easier. Would it be possible to create one before the loop and add rows to it?

" lambda x: Path(x).stem.rsplit(\"/\")[-1].rsplit(\"_\")[0]\n",
" )\n",
" gdf[\"idx\"] = \"_\".join(emb.split(\"/\")[-1].split(\"_\")[2:]).replace(\".gpq\", \"\")\n",
" gdf[\"box\"] = [gdf.geometry[0].bounds]\n",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This did not work for me, replaced with the following to get it to work

gdf["box"] = [box(*geom.bounds) for geom in gdf.geometry]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh interesting. It works on my end. Do you have the traceback?

"# Combine patch level geodataframes into one\n",
"embeddings_gdf = pd.concat(gdfs, ignore_index=True)\n",
"# Make a polygon for each patch level bounding box\n",
"embeddings_gdf[\"bbox\"] = embeddings_gdf[\"box\"].apply(lambda bbox: box(*bbox))"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The lambda function is no longer necessary if comment above is applied

},
{
"data": {
"image/png": "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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I got the following error.

ArrowInvalid: Could not convert <POLYGON ((177.507 -17.778, 177.507 -17.775, 177.504 -17.775, 177.504 -17.77...> with type Polygon: did not recognize Python value type when inferring an Arrow data type

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was introduced by making your suggested change in #172 (comment) but I have a way to handling it. Essentially pyarrow doesn't like a polygon object, so I can get a list equivalent for the table by adding the bounds method to "box": row["box"] e.g. "box": row["box"].bounds, which I am in favor of doing as it allows us to drop the lamba function as you pointed out.

@@ -790,7 +790,7 @@ def __init__( # noqa: PLR0913
wd=0.05,
b1=0.9,
b2=0.95,
embeddings_level: Literal["mean", "patch", "group"] = "mean",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would drop this from this PR seems not necessary for the notebook to work.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True. Will do.

… results and ground truth points on rgb xarray, add descriptions, revert change in model_clay.py
@lillythomas lillythomas changed the title Obtain patch level metadata (e.g. geospatial bounds) and demo DEP use case Obtain patch level metadata (e.g. geospatial bounds and cloud cover), save and demo DEP use case (sim search) Mar 19, 2024
@lillythomas lillythomas force-pushed the patch_level_metadata branch 2 times, most recently from b8cdd25 to a87597e Compare March 22, 2024 19:09
@lillythomas lillythomas merged commit 7bda731 into main Mar 24, 2024
6 checks passed
@lillythomas lillythomas deleted the patch_level_metadata branch March 24, 2024 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants