<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Darkblueb</id>
	<title>OSGeo - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Darkblueb"/>
	<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/wiki/Special:Contributions/Darkblueb"/>
	<updated>2026-05-21T04:55:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_embeddings&amp;diff=135773</id>
		<title>TorchGeo embeddings</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_embeddings&amp;diff=135773"/>
		<updated>2026-05-03T17:41:19Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;Notes on     '''EARTH EMBEDDINGS AS PRODUCTS: TAXONOMY, ECOSYSTEM, AND STANDARDIZED ACCESS''' &amp;lt;pre&amp;gt; Heng Fang† ∗  Adam J Stewart‡ ∗  Isaac Corley§ *  Xiao Xiang Zhu *...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes on &lt;br /&gt;
   '''EARTH EMBEDDINGS AS PRODUCTS: TAXONOMY, ECOSYSTEM, AND STANDARDIZED ACCESS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Heng Fang† ∗  Adam J Stewart‡ ∗  Isaac Corley§ *  Xiao Xiang Zhu *  Hossein Azizpour†&lt;br /&gt;
† KTH Royal Institute of Technology, Stockholm, Sweden&lt;br /&gt;
‡ Chair of Data Science in Earth Observation, Technical University of Munich, Munich, Germany&lt;br /&gt;
§ Wherobots, San Antonio, USA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
arXiv:2601.13134v1 19 Jan 2026  [LINK](https://arxiv.org/abs/2601.13134)&lt;br /&gt;
&lt;br /&gt;
Introduction&lt;br /&gt;
&lt;br /&gt;
• A comprehensive survey that organizes existing geospatial embedding products into a structured taxonomy and provides a detailed metadata atlas (resolution, license, etc.).&lt;br /&gt;
• Unified Integration: implements standardized data loaders for these embeddings in [TorchGeo](https://www.osgeo.org/projects/torchgeo/)  &lt;br /&gt;
&lt;br /&gt;
An overview landscape is proposed : a) Analysis Frameworks &amp;amp; Tools; b) Embeddings data artifacts; c) charting downstream application value, specifically mapping tasks and retrieval tasks. Embeddings are differentiated as either location-typed, patch-typed or pixel-typed. Details of existing products are shown. &lt;br /&gt;
&lt;br /&gt;
 🌍 1. Foundation Models for Earth Observation (EO)&lt;br /&gt;
&lt;br /&gt;
These are the leading projects that aim to build general-purpose models capable of representing Earth from &lt;br /&gt;
satellite imagery and other geospatial modalities.&lt;br /&gt;
&lt;br /&gt;
 🔧 Projects:&lt;br /&gt;
- Clay Foundation Model – [Hugging Face](https://huggingface.co/made-with-clay/Clay) 2024  &lt;br /&gt;
  *A multimodal foundation model for Earth using diverse data sources.*&lt;br /&gt;
&lt;br /&gt;
- Major TOM – [AFrancis IGARSS 2024](https://huggingface.co/Major-TOM)  &lt;br /&gt;
  *Expandable datasets and models for global EO coverage.*&lt;br /&gt;
&lt;br /&gt;
- Earth Index Embeddings – [Earth Genome](https://www.earthgenome.org/earth-index), 2025  &lt;br /&gt;
  *A large-scale embedding system built from Earth observation data.*&lt;br /&gt;
&lt;br /&gt;
- Copernicus-Embed – [Zhu et al., AI4Copernicus Project](https://github.com/zhu-xlab/Copernicus-FM)  &lt;br /&gt;
  *Foundation model leveraging Copernicus Sentinel data.*&lt;br /&gt;
&lt;br /&gt;
- Presto Embeddings – [NASA Harvest](https://nasaharvest.github.io/presto-embeddings/)  &lt;br /&gt;
  *Embedding framework for satellite time series and land use analysis.*&lt;br /&gt;
&lt;br /&gt;
- Tessera Embeddings – [GeoTessera Docs](https://geotessera.readthedocs.io/en/latest/)  [REPO](https://github.com/ucam-eo/tessera)&lt;br /&gt;
  *pixel-based Temporal spectral embeddings for Earth representation.*&lt;br /&gt;
&lt;br /&gt;
- Google Satellite Embedding (AlphaEarth) – [Google Earth &lt;br /&gt;
Engine](https://developers.google.com/earth-engine/datasets/catalog/GOOGLE_SATELLITE_EMBEDDING_V1_ANNUAL)  &lt;br /&gt;
  *An early-stage embedding model using Google's global satellite data.*&lt;br /&gt;
&lt;br /&gt;
- OlmoEarth – [AllenAI, 2025](https://allenai.org/olmoearth)  &lt;br /&gt;
  *Latent image modeling approach for multimodal Earth observation.*&lt;br /&gt;
&lt;br /&gt;
 📚 Key Papers:&lt;br /&gt;
- XXZhu 2025 [LINK](https://www.nature.com/articles/s43247-025-03127-x) – “On the Foundations of Earth Foundation Models”  &lt;br /&gt;
- CFBrown 2025 [LINK](https://arxiv.org/abs/2507.22291) – “AlphaEarth Foundations”  &lt;br /&gt;
- KKlemmer 2023 [LINK](https://arxiv.org/abs/2311.17179) – “SatCLIP: Global Location Embeddings with Satellite Imagery”&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
 📦 2. **Datasets**&lt;br /&gt;
&lt;br /&gt;
Large-scale, open-access datasets play a central role in training and evaluating Earth foundation models.&lt;br /&gt;
&lt;br /&gt;
 🗃 Datasets:&lt;br /&gt;
- EuroSAT – [Zenodo](https://zenodo.org/records/7711810)  &lt;br /&gt;
  *Land use classification dataset using Sentinel-2 satellite data.*&lt;br /&gt;
&lt;br /&gt;
- EuroCrops – [PMC 10495462](https://pmc.ncbi.nlm.nih.gov/articles/PMC10495462/)  &lt;br /&gt;
  *Crop type mapping dataset for Europe.*&lt;br /&gt;
&lt;br /&gt;
- National Land Cover Database (NLCD) – Photogrammetric Engineering &amp;amp; Remote Sensing 2001 [LINK](https://www.ingentaconnect.com/content/asprs/pers/2004/00000070/00000007/art00005;jsessionid=2awgc0agiboi4.x-ic-live-02)  &lt;br /&gt;
  *USA land cover classes*&lt;br /&gt;
&lt;br /&gt;
- SSL4EO-S12 – IEEE Geoscience and Remote Sensing  2023 [LINK](https://github.com/zhu-xlab/SSL4EO-S12)  &lt;br /&gt;
  *Multimodal, multitemporal dataset for self-supervised learning.*&lt;br /&gt;
&lt;br /&gt;
- Copernicus-Pretrain – [IEEE Geoscience and Remote Sensing  2023](https://github.com/zhu-xlab/Copernicus-FM) &lt;br /&gt;
  *an extension of the SSL4EO-S12 dataset to all major Sentinel missions (S1-S5P)*&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
 🧠 3. **Models &amp;amp; Methods**&lt;br /&gt;
&lt;br /&gt;
These include both classical and cutting-edge machine learning approaches used in building Earth foundation &lt;br /&gt;
models.&lt;br /&gt;
&lt;br /&gt;
 ⚙ Core Methods:&lt;br /&gt;
- SatCLIP** – AAAI 2025 etc [LINK](https://arxiv.org/abs/2311.17179)&lt;br /&gt;
  *Vision-language model for global location representations.*&lt;br /&gt;
&lt;br /&gt;
- MMEarth** – [EU/CV 2024](https://arxiv.org/abs/2405.02771)&lt;br /&gt;
  *Multimodal pretext tasks for geospatial representation learning.*&lt;br /&gt;
&lt;br /&gt;
- ResNet** – [KHe IEEE/CV 2016](https://viso.ai/deep-learning/resnet-residual-neural-network/)&lt;br /&gt;
  *Baseline CNN architecture widely used in EO.*&lt;br /&gt;
&lt;br /&gt;
- ConvNeXt V2** – [Woo et al., IEEE/CVF 2023](https://github.com/facebookresearch/ConvNeXt-V2)  &lt;br /&gt;
  *Efficient ConvNet architecture using masked autoencoders (MAE).*&lt;br /&gt;
&lt;br /&gt;
- DINO, DINOv2, DINOv3** – INRIA 2021–2023, META [LINK](https://dinov3.org/) &lt;br /&gt;
  *Vision transformers with self-supervised learning capabilities.*&lt;br /&gt;
&lt;br /&gt;
- MAE (Masked Autoencoders)** – IEEE/CVF 2021 [LINK](https://arxiv.org/abs/2111.06377)  &lt;br /&gt;
  *Self-supervised learning for vision transformers.*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 🧬 Distillation &amp;amp; Advanced Approaches:&lt;br /&gt;
- **Distillation methods** – Transfer knowledge from large models.&lt;br /&gt;
- **Neural plasticity-inspired models** – [ZXiong, arXiv 2024]  &lt;br /&gt;
  *Inspired by biological learning mechanisms.*&lt;br /&gt;
- **Multi-label guided soft contrastive learning** – [YWang, IEEE TGRS, 2024]&lt;br /&gt;
- **Barlow Twins** – [Zbontar et al., arXiv 2021]  &lt;br /&gt;
  *Method for learning representations without contrastive loss.*&lt;br /&gt;
- **Continual Barlow Twins** – [IEEE JSTARS, 2023]  &lt;br /&gt;
  *Extends Barlow Twins to continual learning in EO segmentation.*&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
 🛠 4. **Tools &amp;amp; Benchmarks**&lt;br /&gt;
&lt;br /&gt;
These are software systems and frameworks that support development, evaluation, or deployment of EO AI &lt;br /&gt;
models.&lt;br /&gt;
&lt;br /&gt;
 🧰 Tools:&lt;br /&gt;
- TorchGeo** – [AJStewart ACM 2025](https://www.osgeo.org/projects/torchgeo/)&lt;br /&gt;
  *PyTorch library for geospatial deep learning.*&lt;br /&gt;
&lt;br /&gt;
- NeuCo-Bench** – [RVinge, arXiv 2025](https://arxiv.org/html/2510.17914v1) &lt;br /&gt;
  *Benchmarking framework for neural embeddings in Earth observation.*&lt;br /&gt;
&lt;br /&gt;
- GeoINRID** – [GitHub: arjunarao619/GeoINRID](https://github.com/arjunarao619/GeoINRID)  &lt;br /&gt;
  *Geospatial inference and representation learning toolkit.*&lt;br /&gt;
&lt;br /&gt;
 🏆 Challenges:&lt;br /&gt;
- **Embed2Scale Challenge** – [CVPR CAlbrecht 2025](https://research.ibm.com/publications/the-2025-cvpr-earthvision-data-challenge-by-embed2scale)  &lt;br /&gt;
  *Large-scale Earth vision challenge focused on scale-aware embeddings.*&lt;br /&gt;
&lt;br /&gt;
- TerraMind Blue-Sky Challenge** – [JJakubik, arXiv 2025]  &lt;br /&gt;
  *Generative modeling for Earth observation.*&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
 🧭 5. **Key Themes &amp;amp; Trends**&lt;br /&gt;
&lt;br /&gt;
1. Foundation Models**: TorchGeo now includes data loaders designed for search/retrieval (Clay, Major TOM, Earth&lt;br /&gt;
Index),  and for dense prediction tasks like land cover mapping (Copernicus, Presto, Tessera, Google). TorchGeo allows us to enable fair, side-by-side benchmarking of different embedding models on the same downstream tasks, forming the basis for future experiments. Projects are encouraged to strengthen and improve explainability.&lt;br /&gt;
&lt;br /&gt;
1.1 Major TOM Notes**  Major TOM embeddings are not (yet) really product-oriented and are aimed with a similar purpose to the MT Core datasets - to make it easier to experiment and benchmark model outputs (hence, unlike TESSERA and AEF which came a few months after, MT embeddings do not have consistent or aggregated temporal scope). We haven't had enough time to finish off the preprint, but my current plan is to provide a simple MT Embedding benchmark at this year's EGU and integrate that into the arxiv pre-print. --Miko&lt;br /&gt;
&lt;br /&gt;
1.2 Earth Index / Earth Genome** Use the Earth Index application (earthindex.ai)  for non-technical users to use the embeddings we published on source.coop. Users of the web app (non-technical journalists, indigenous communities/allies, NGOs) have been our main focus. Users of the source.coop embeddings have generally been more technical folks interested in exploring/innovating in what's possible --BenStrong&lt;br /&gt;
&lt;br /&gt;
1.3 Clay** Clay and Presto offer documented tutorials on generating new embeddings with their models. In CLAY, the encoder receives unmasked patches, latitude-longitude data, and timestep information. Notably, the last 2 embeddings from the encoder specifically represent the latitude-longitude and timestep embeddings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Self-Supervised Learning (SSL)**: &lt;br /&gt;
&lt;br /&gt;
3. Multimodal Integration**:&lt;br /&gt;
&lt;br /&gt;
4. Open Data &amp;amp; Tools**: Open-source projects (e.g., TorchGeo, Copernicus-Embed) and public datasets &lt;br /&gt;
(EuroSAT, EuroCrops) are crucial for reproducibility and democratization of EO AI. Projects are encouraged to increase Input Data Diversity, and to adopt cloud-native data formats for geospatial data.&lt;br /&gt;
&lt;br /&gt;
5. Benchmarking**: Projects are encouraged to standardize in benchmarking. Benchmarks including NeuCo-Bench and Embed2Scale.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
 📌 Research Directions&lt;br /&gt;
&lt;br /&gt;
- Unified Earth Foundation Models**: &lt;br /&gt;
- Interpretability in EO AI**: Exploring how these embeddings can be interpreted by domain experts.&lt;br /&gt;
- Ethics and Bias**: Investigating fairness and bias in global EO models trained on unevenly distributed &lt;br /&gt;
data.&lt;br /&gt;
- Edge Deployment**: Making these large foundation models deployable on resource-constrained platforms &lt;br /&gt;
     (e.g., for field use).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TorchGeo]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=File:Torchgeo_logo_370x206.png&amp;diff=135713</id>
		<title>File:Torchgeo logo 370x206.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=File:Torchgeo_logo_370x206.png&amp;diff=135713"/>
		<updated>2026-04-21T15:48:44Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: add Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;torchgeo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TorchGeo]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135712</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135712"/>
		<updated>2026-04-21T15:47:48Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: add Cetegory tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (TSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a TSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for TSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the TSC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:TorchGeo]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135711</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135711"/>
		<updated>2026-04-21T14:39:16Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: add Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN][https://arxiv.org/pdf/2512.05025 pdf] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Overview&lt;br /&gt;
|-&lt;br /&gt;
! Topic&lt;br /&gt;
! DOFA&lt;br /&gt;
! RAMEN&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Design Philosophy&lt;br /&gt;
| Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
| Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Flexibility Mechanism&lt;br /&gt;
| Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
| Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Adaptation Strategy&lt;br /&gt;
| Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
| Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
| Masked autoencoding with random resolution selection&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Code Implementation&lt;br /&gt;
| More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
| Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Resolution Handling&lt;br /&gt;
| No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
| Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, &lt;br /&gt;
and resolution-aware positional embeddings&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Architecture Modularity&lt;br /&gt;
| Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
| Separate encoder/decoder components with clear division of labor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Flexibility&lt;br /&gt;
| Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
| Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data Handling&lt;br /&gt;
| Simpler data handling focused on channel count variations&lt;br /&gt;
| Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Input Handling&lt;br /&gt;
| Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: &lt;br /&gt;
2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
| Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input &lt;br /&gt;
requirements&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
| Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Evaluation Focus&lt;br /&gt;
| Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
| Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== Encoder Architectures ===&lt;br /&gt;
&lt;br /&gt;
==== DOFA: Neuroplasticity-Inspired Multi-Modal Encoder ====&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN: Resolution-Adjustable Multi-Modal Encoder ====&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TorchGeo]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Category:TorchGeo&amp;diff=135710</id>
		<title>Category:TorchGeo</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Category:TorchGeo&amp;diff=135710"/>
		<updated>2026-04-21T14:36:42Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: new&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;notes&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135408</id>
		<title>PROJ Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135408"/>
		<updated>2026-02-27T05:36:46Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Kristian Evers (kbevers)&lt;br /&gt;
* Project page information: https://github.com/OSGeo/PROJ&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
The PROJ project had a productive year in 2025&lt;br /&gt;
&lt;br /&gt;
'''Version 9.6 Series:'''&lt;br /&gt;
* '''9.6.0 (March 15, 2025):''' &lt;br /&gt;
    * Improved `projinfo` display for time-dependent operations.&lt;br /&gt;
    * Added CMake options for embedding resources (`EMBED_RESOURCE_FILES`, `USE_ONLY_EMBEDDED_RESOURCE_FILES`).&lt;br /&gt;
    * Enhanced database ingestion for deprecated ESRI names.&lt;br /&gt;
    * Improved `proj_factors()` speed for repeated calls.&lt;br /&gt;
    * Added the Airocean (formerly Dymaxion) projection.&lt;br /&gt;
    * Optimized `createOperations()` for CRS lookups.&lt;br /&gt;
    * Added explicit type members to PROJJSON exports for Projected CRSs.&lt;br /&gt;
    * Improved handling of CompoundCRS transformations.&lt;br /&gt;
    * Mapped EPSG methods to PROJ equivalents.&lt;br /&gt;
    * Added support for Coordinate Frame rotation methods.&lt;br /&gt;
    * Added CMake option for embedding .tif/.json files.&lt;br /&gt;
    * Incorporated new EPSG methods for TIN interpolation.&lt;br /&gt;
    * Added native CA configuration option.&lt;br /&gt;
    * Enhanced the concatenated operation step table in the database.&lt;br /&gt;
    * Updated ETRF and WGS 84 records in the database.&lt;br /&gt;
    * Updated to C++17.&lt;br /&gt;
    * Added bash completion script for `projinfo`.&lt;br /&gt;
    * Refactored 4D API code.&lt;br /&gt;
    * Added `proj_trans_bounds_3D()`.&lt;br /&gt;
    * Added engineering datum and CRS tables to the database.&lt;br /&gt;
    * Added support for EUREF-FIN transformations.&lt;br /&gt;
    * Added the Spilhaus projection.&lt;br /&gt;
    * Exported ESRI:54099 as PROJ string.&lt;br /&gt;
    * Updated the EPSG database to version 12.004.&lt;br /&gt;
    * Improved cache invalidation for downloaded files.&lt;br /&gt;
* '''9.6.1 (June 2, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Addressed issues with ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
    * Added missing includes and fixed build issues.&lt;br /&gt;
    * Improved error handling in WKT parsing.&lt;br /&gt;
    * Fixed issues with NAD83 transformations.&lt;br /&gt;
    * Fixed memory leaks and other bugs.&lt;br /&gt;
    * Updated EPSG database to version 12.012.&lt;br /&gt;
* '''9.6.2 (June 6, 2025):''' Primarily focused on bug fixes and database updates:&lt;br /&gt;
    * Updated EPSG to version 12.013.&lt;br /&gt;
    * Addressed issues with ESRI deprecated records and D_Unknown_based_on_WGS_84_ellipsoid datums.&lt;br /&gt;
    * Improved `proj_trans_bounds()` for world-wide coverage.&lt;br /&gt;
&lt;br /&gt;
'''Version 9.7 Series:'''&lt;br /&gt;
* '''9.7.0 (September 15, 2025):''' Introduced major new features and improvements:&lt;br /&gt;
    * Implemented 'exact' authalic latitude conversions.&lt;br /&gt;
    * Implemented uniform conversions between auxiliary latitudes.&lt;br /&gt;
    * Improved WKT2 parser.&lt;br /&gt;
    * Updated the EPSG database to version 12.022.&lt;br /&gt;
    * Enabled compiler warnings for improved code quality.&lt;br /&gt;
    * Improved Geostationary projection performance.&lt;br /&gt;
    * Improved WKT importer error messages.&lt;br /&gt;
    * Added `proj_geod_direct` for PJ transformations.&lt;br /&gt;
    * Supported exporting Mercator (Spherical) as Mercator_1SP in WKT1.&lt;br /&gt;
    * Addressed various bug fixes related to transformations, memory management, and data handling.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 9.7 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 9.7 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135407</id>
		<title>PROJ Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135407"/>
		<updated>2026-02-27T05:36:13Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* General information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Kristian Evers (kbevers)&lt;br /&gt;
* Project page information: https://github.com/OSGeo/PROJ&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
The PROJ project had a productive year in 2025&lt;br /&gt;
&lt;br /&gt;
'''Version 9.6 Series:'''&lt;br /&gt;
* '''9.6.0 (March 15, 2025):''' Introduced significant enhancements and new capabilities:&lt;br /&gt;
    * Improved `projinfo` display for time-dependent operations.&lt;br /&gt;
    * Added CMake options for embedding resources (`EMBED_RESOURCE_FILES`, `USE_ONLY_EMBEDDED_RESOURCE_FILES`).&lt;br /&gt;
    * Enhanced database ingestion for deprecated ESRI names.&lt;br /&gt;
    * Improved `proj_factors()` speed for repeated calls.&lt;br /&gt;
    * Added the Airocean (formerly Dymaxion) projection.&lt;br /&gt;
    * Optimized `createOperations()` for CRS lookups.&lt;br /&gt;
    * Added explicit type members to PROJJSON exports for Projected CRSs.&lt;br /&gt;
    * Improved handling of CompoundCRS transformations.&lt;br /&gt;
    * Mapped EPSG methods to PROJ equivalents.&lt;br /&gt;
    * Added support for Coordinate Frame rotation methods.&lt;br /&gt;
    * Added CMake option for embedding .tif/.json files.&lt;br /&gt;
    * Incorporated new EPSG methods for TIN interpolation.&lt;br /&gt;
    * Added native CA configuration option.&lt;br /&gt;
    * Enhanced the concatenated operation step table in the database.&lt;br /&gt;
    * Updated ETRF and WGS 84 records in the database.&lt;br /&gt;
    * Updated to C++17.&lt;br /&gt;
    * Added bash completion script for `projinfo`.&lt;br /&gt;
    * Refactored 4D API code.&lt;br /&gt;
    * Added `proj_trans_bounds_3D()`.&lt;br /&gt;
    * Added engineering datum and CRS tables to the database.&lt;br /&gt;
    * Added support for EUREF-FIN transformations.&lt;br /&gt;
    * Added the Spilhaus projection.&lt;br /&gt;
    * Exported ESRI:54099 as PROJ string.&lt;br /&gt;
    * Updated the EPSG database to version 12.004.&lt;br /&gt;
    * Improved cache invalidation for downloaded files.&lt;br /&gt;
* '''9.6.1 (June 2, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Addressed issues with ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
    * Added missing includes and fixed build issues.&lt;br /&gt;
    * Improved error handling in WKT parsing.&lt;br /&gt;
    * Fixed issues with NAD83 transformations.&lt;br /&gt;
    * Fixed memory leaks and other bugs.&lt;br /&gt;
    * Updated EPSG database to version 12.012.&lt;br /&gt;
* '''9.6.2 (June 6, 2025):''' Primarily focused on bug fixes and database updates:&lt;br /&gt;
    * Updated EPSG to version 12.013.&lt;br /&gt;
    * Addressed issues with ESRI deprecated records and D_Unknown_based_on_WGS_84_ellipsoid datums.&lt;br /&gt;
    * Improved `proj_trans_bounds()` for world-wide coverage.&lt;br /&gt;
&lt;br /&gt;
'''Version 9.7 Series:'''&lt;br /&gt;
* '''9.7.0 (September 15, 2025):''' Introduced major new features and improvements:&lt;br /&gt;
    * Implemented 'exact' authalic latitude conversions.&lt;br /&gt;
    * Implemented uniform conversions between auxiliary latitudes.&lt;br /&gt;
    * Improved WKT2 parser.&lt;br /&gt;
    * Updated the EPSG database to version 12.022.&lt;br /&gt;
    * Enabled compiler warnings for improved code quality.&lt;br /&gt;
    * Improved Geostationary projection performance.&lt;br /&gt;
    * Improved WKT importer error messages.&lt;br /&gt;
    * Added `proj_geod_direct` for PJ transformations.&lt;br /&gt;
    * Supported exporting Mercator (Spherical) as Mercator_1SP in WKT1.&lt;br /&gt;
    * Addressed various bug fixes related to transformations, memory management, and data handling.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 9.7 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 9.7 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135406</id>
		<title>PROJ Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135406"/>
		<updated>2026-02-27T05:35:40Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* General information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Kristian Evers (kbevers)&lt;br /&gt;
* Project page information: https://github.com/proj4/proj&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
The PROJ project had a productive year in 2025&lt;br /&gt;
&lt;br /&gt;
'''Version 9.6 Series:'''&lt;br /&gt;
* '''9.6.0 (March 15, 2025):''' Introduced significant enhancements and new capabilities:&lt;br /&gt;
    * Improved `projinfo` display for time-dependent operations.&lt;br /&gt;
    * Added CMake options for embedding resources (`EMBED_RESOURCE_FILES`, `USE_ONLY_EMBEDDED_RESOURCE_FILES`).&lt;br /&gt;
    * Enhanced database ingestion for deprecated ESRI names.&lt;br /&gt;
    * Improved `proj_factors()` speed for repeated calls.&lt;br /&gt;
    * Added the Airocean (formerly Dymaxion) projection.&lt;br /&gt;
    * Optimized `createOperations()` for CRS lookups.&lt;br /&gt;
    * Added explicit type members to PROJJSON exports for Projected CRSs.&lt;br /&gt;
    * Improved handling of CompoundCRS transformations.&lt;br /&gt;
    * Mapped EPSG methods to PROJ equivalents.&lt;br /&gt;
    * Added support for Coordinate Frame rotation methods.&lt;br /&gt;
    * Added CMake option for embedding .tif/.json files.&lt;br /&gt;
    * Incorporated new EPSG methods for TIN interpolation.&lt;br /&gt;
    * Added native CA configuration option.&lt;br /&gt;
    * Enhanced the concatenated operation step table in the database.&lt;br /&gt;
    * Updated ETRF and WGS 84 records in the database.&lt;br /&gt;
    * Updated to C++17.&lt;br /&gt;
    * Added bash completion script for `projinfo`.&lt;br /&gt;
    * Refactored 4D API code.&lt;br /&gt;
    * Added `proj_trans_bounds_3D()`.&lt;br /&gt;
    * Added engineering datum and CRS tables to the database.&lt;br /&gt;
    * Added support for EUREF-FIN transformations.&lt;br /&gt;
    * Added the Spilhaus projection.&lt;br /&gt;
    * Exported ESRI:54099 as PROJ string.&lt;br /&gt;
    * Updated the EPSG database to version 12.004.&lt;br /&gt;
    * Improved cache invalidation for downloaded files.&lt;br /&gt;
* '''9.6.1 (June 2, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Addressed issues with ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
    * Added missing includes and fixed build issues.&lt;br /&gt;
    * Improved error handling in WKT parsing.&lt;br /&gt;
    * Fixed issues with NAD83 transformations.&lt;br /&gt;
    * Fixed memory leaks and other bugs.&lt;br /&gt;
    * Updated EPSG database to version 12.012.&lt;br /&gt;
* '''9.6.2 (June 6, 2025):''' Primarily focused on bug fixes and database updates:&lt;br /&gt;
    * Updated EPSG to version 12.013.&lt;br /&gt;
    * Addressed issues with ESRI deprecated records and D_Unknown_based_on_WGS_84_ellipsoid datums.&lt;br /&gt;
    * Improved `proj_trans_bounds()` for world-wide coverage.&lt;br /&gt;
&lt;br /&gt;
'''Version 9.7 Series:'''&lt;br /&gt;
* '''9.7.0 (September 15, 2025):''' Introduced major new features and improvements:&lt;br /&gt;
    * Implemented 'exact' authalic latitude conversions.&lt;br /&gt;
    * Implemented uniform conversions between auxiliary latitudes.&lt;br /&gt;
    * Improved WKT2 parser.&lt;br /&gt;
    * Updated the EPSG database to version 12.022.&lt;br /&gt;
    * Enabled compiler warnings for improved code quality.&lt;br /&gt;
    * Improved Geostationary projection performance.&lt;br /&gt;
    * Improved WKT importer error messages.&lt;br /&gt;
    * Added `proj_geod_direct` for PJ transformations.&lt;br /&gt;
    * Supported exporting Mercator (Spherical) as Mercator_1SP in WKT1.&lt;br /&gt;
    * Addressed various bug fixes related to transformations, memory management, and data handling.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 9.7 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 9.7 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135405</id>
		<title>PROJ Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=PROJ_Report_2025&amp;diff=135405"/>
		<updated>2026-02-27T05:34:55Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;= General information =  * Project officer: (To be filled in - no project officer specified in input) * Project page information: https://github.com/proj4/proj  = Milestones =...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: (To be filled in - no project officer specified in input)&lt;br /&gt;
* Project page information: https://github.com/proj4/proj&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
The PROJ project had a productive year in 2025&lt;br /&gt;
&lt;br /&gt;
'''Version 9.6 Series:'''&lt;br /&gt;
* '''9.6.0 (March 15, 2025):''' Introduced significant enhancements and new capabilities:&lt;br /&gt;
    * Improved `projinfo` display for time-dependent operations.&lt;br /&gt;
    * Added CMake options for embedding resources (`EMBED_RESOURCE_FILES`, `USE_ONLY_EMBEDDED_RESOURCE_FILES`).&lt;br /&gt;
    * Enhanced database ingestion for deprecated ESRI names.&lt;br /&gt;
    * Improved `proj_factors()` speed for repeated calls.&lt;br /&gt;
    * Added the Airocean (formerly Dymaxion) projection.&lt;br /&gt;
    * Optimized `createOperations()` for CRS lookups.&lt;br /&gt;
    * Added explicit type members to PROJJSON exports for Projected CRSs.&lt;br /&gt;
    * Improved handling of CompoundCRS transformations.&lt;br /&gt;
    * Mapped EPSG methods to PROJ equivalents.&lt;br /&gt;
    * Added support for Coordinate Frame rotation methods.&lt;br /&gt;
    * Added CMake option for embedding .tif/.json files.&lt;br /&gt;
    * Incorporated new EPSG methods for TIN interpolation.&lt;br /&gt;
    * Added native CA configuration option.&lt;br /&gt;
    * Enhanced the concatenated operation step table in the database.&lt;br /&gt;
    * Updated ETRF and WGS 84 records in the database.&lt;br /&gt;
    * Updated to C++17.&lt;br /&gt;
    * Added bash completion script for `projinfo`.&lt;br /&gt;
    * Refactored 4D API code.&lt;br /&gt;
    * Added `proj_trans_bounds_3D()`.&lt;br /&gt;
    * Added engineering datum and CRS tables to the database.&lt;br /&gt;
    * Added support for EUREF-FIN transformations.&lt;br /&gt;
    * Added the Spilhaus projection.&lt;br /&gt;
    * Exported ESRI:54099 as PROJ string.&lt;br /&gt;
    * Updated the EPSG database to version 12.004.&lt;br /&gt;
    * Improved cache invalidation for downloaded files.&lt;br /&gt;
* '''9.6.1 (June 2, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Addressed issues with ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
    * Added missing includes and fixed build issues.&lt;br /&gt;
    * Improved error handling in WKT parsing.&lt;br /&gt;
    * Fixed issues with NAD83 transformations.&lt;br /&gt;
    * Fixed memory leaks and other bugs.&lt;br /&gt;
    * Updated EPSG database to version 12.012.&lt;br /&gt;
* '''9.6.2 (June 6, 2025):''' Primarily focused on bug fixes and database updates:&lt;br /&gt;
    * Updated EPSG to version 12.013.&lt;br /&gt;
    * Addressed issues with ESRI deprecated records and D_Unknown_based_on_WGS_84_ellipsoid datums.&lt;br /&gt;
    * Improved `proj_trans_bounds()` for world-wide coverage.&lt;br /&gt;
&lt;br /&gt;
'''Version 9.7 Series:'''&lt;br /&gt;
* '''9.7.0 (September 15, 2025):''' Introduced major new features and improvements:&lt;br /&gt;
    * Implemented 'exact' authalic latitude conversions.&lt;br /&gt;
    * Implemented uniform conversions between auxiliary latitudes.&lt;br /&gt;
    * Improved WKT2 parser.&lt;br /&gt;
    * Updated the EPSG database to version 12.022.&lt;br /&gt;
    * Enabled compiler warnings for improved code quality.&lt;br /&gt;
    * Improved Geostationary projection performance.&lt;br /&gt;
    * Improved WKT importer error messages.&lt;br /&gt;
    * Added `proj_geod_direct` for PJ transformations.&lt;br /&gt;
    * Supported exporting Mercator (Spherical) as Mercator_1SP in WKT1.&lt;br /&gt;
    * Addressed various bug fixes related to transformations, memory management, and data handling.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 9.7 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 9.7 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135404</id>
		<title>Marble Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135404"/>
		<updated>2026-02-27T04:18:44Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Dennis Nienhüser  (Earthwings)&lt;br /&gt;
* Project page information: https://apps.kde.org/marble/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The KDE-Marble project released a dozen updates to the stable version 24 series, also the final iterations of version 23.  &lt;br /&gt;
&lt;br /&gt;
As of 2025, KDE Marble had not yet completed its official Qt6 port, but active development and a functional Qt6 branch were in progress.  A community contributor successfully ported Marble to Qt6 in early 2023, with the work available in a public branch (''marble-qt6'') on KDE's Invent platform.  Despite this, the official master branch of Marble still primarily relied on Qt5 throughout 2025. &lt;br /&gt;
&lt;br /&gt;
'''Version 24 Development and Releases:''' (Throughout 2025)&lt;br /&gt;
* About 15 releases of version 24 were made throughout the year.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
  https://github.com/sponsors/KDE&lt;br /&gt;
  https://kde.org/community/donations/&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 24 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 24 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135403</id>
		<title>GEOS Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135403"/>
		<updated>2026-02-27T01:51:16Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Paul Ramsey (pramsey)&lt;br /&gt;
* Project page information: https://libgeos.org/&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
In the spring of 2025, update releases for versions 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x were made available. Version 3.14 was released in August of 2025, updated by 3.14.1 two months afterward.&lt;br /&gt;
&lt;br /&gt;
'''Update Releases:''' (March 3, 2025)&lt;br /&gt;
* '''3.13.1 :''' Primarily focused on bug fixes, including improvements to &lt;br /&gt;
ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
* '''3.12.3 :''' Addressed several crashes and stability issues, including fixes related to &lt;br /&gt;
TopologyPreservingSimplifier, Centroid calculations, and handling of NaN inputs.&lt;br /&gt;
* '''3.11.5 :''' Included fixes to the TopologyPreservingSimplifier and improvements to &lt;br /&gt;
ConcaveHullOfPolygons and handling of NaN values.&lt;br /&gt;
* '''3.10.7 :''' Focused on robustness improvements, particularly in Intersection calculations &lt;br /&gt;
using DoubleDouble computation, and fixes for various crash scenarios.&lt;br /&gt;
* '''3.9.6 :''' Bug fixes / improvements:&lt;br /&gt;
  Intersection: change to using DoubleDouble computation to improve robustness (GH-937, Martin Davis)&lt;br /&gt;
  Centroid: Fix crash on polygons with empty holes (GH-1075, Dan Baston)&lt;br /&gt;
  GEOSRelatePatternMatch: Fix crash on invalid DE-9IM pattern (GH-1089, Dan Baston)&lt;br /&gt;
&lt;br /&gt;
'''Version 3.14:'''&lt;br /&gt;
&lt;br /&gt;
* '''3.14.0 (August 21, 2025):''' Introduced significant new features and changes:&lt;br /&gt;
    * Added clustering functions to the C API.&lt;br /&gt;
    * Ported LineDissolver and CoverageCleaner.&lt;br /&gt;
    * Added GEOSGridIntersectionFractions to the C API.&lt;br /&gt;
    * Added functions to interrupt processing in a specific thread/context.&lt;br /&gt;
    * Added &amp;quot;geos-targets.cmake&amp;quot; to the build tree for easier integration with other software.&lt;br /&gt;
    * Added GEOSCoordSeq_hasZ, GEOSCoordSeq_hasM, GEOSCoordSeq_createWithDimensions, GEOSCoordSeq_setM, and  GEOSCoordSeq_getM functions.&lt;br /&gt;
    * Added GEOSGeoJSONWriter_setOutputDimension and GEOSGeom_transformXYZ functions.&lt;br /&gt;
    * Added GEOSisSimpleDetail function.&lt;br /&gt;
&lt;br /&gt;
    '''Breaking Changes:''' Required C++17, implemented stricter WKT parsing, and modified GEOSCoordSeq_setOrdinate behavior.&lt;br /&gt;
* '''3.14.1 (October 27, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Fixed floating-point exception handling for geosop.&lt;br /&gt;
    * Fixed undefined behavior in CoordinateSequence::closeRing.&lt;br /&gt;
    * Fixed crashes in GridIntersection for certain polygons outside the grid extent.&lt;br /&gt;
    * Fixed incorrect envelope calculation for arcs.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135402</id>
		<title>GEOS Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135402"/>
		<updated>2026-02-27T01:50:20Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Paul Ramsey (pramsey)&lt;br /&gt;
* Project page information: https://libgeos.org/&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
&lt;br /&gt;
In the spring of 2025, update releases for versions 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x were made available. In August of 2025 3.14 was released, updated by 3.14.1 two months afterward.&lt;br /&gt;
&lt;br /&gt;
'''Update Releases:''' (March 3, 2025)&lt;br /&gt;
* '''3.13.1 :''' Primarily focused on bug fixes, including improvements to &lt;br /&gt;
ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
* '''3.12.3 :''' Addressed several crashes and stability issues, including fixes related to &lt;br /&gt;
TopologyPreservingSimplifier, Centroid calculations, and handling of NaN inputs.&lt;br /&gt;
* '''3.11.5 :''' Included fixes to the TopologyPreservingSimplifier and improvements to &lt;br /&gt;
ConcaveHullOfPolygons and handling of NaN values.&lt;br /&gt;
* '''3.10.7 :''' Focused on robustness improvements, particularly in Intersection calculations &lt;br /&gt;
using DoubleDouble computation, and fixes for various crash scenarios.&lt;br /&gt;
* '''3.9.6 :''' Bug fixes / improvements:&lt;br /&gt;
  Intersection: change to using DoubleDouble computation to improve robustness (GH-937, Martin Davis)&lt;br /&gt;
  Centroid: Fix crash on polygons with empty holes (GH-1075, Dan Baston)&lt;br /&gt;
  GEOSRelatePatternMatch: Fix crash on invalid DE-9IM pattern (GH-1089, Dan Baston)&lt;br /&gt;
&lt;br /&gt;
'''Version 3.14:'''&lt;br /&gt;
&lt;br /&gt;
* '''3.14.0 (August 21, 2025):''' Introduced significant new features and changes:&lt;br /&gt;
    * Added clustering functions to the C API.&lt;br /&gt;
    * Ported LineDissolver and CoverageCleaner.&lt;br /&gt;
    * Added GEOSGridIntersectionFractions to the C API.&lt;br /&gt;
    * Added functions to interrupt processing in a specific thread/context.&lt;br /&gt;
    * Added &amp;quot;geos-targets.cmake&amp;quot; to the build tree for easier integration with other software.&lt;br /&gt;
    * Added GEOSCoordSeq_hasZ, GEOSCoordSeq_hasM, GEOSCoordSeq_createWithDimensions, GEOSCoordSeq_setM, and  GEOSCoordSeq_getM functions.&lt;br /&gt;
    * Added GEOSGeoJSONWriter_setOutputDimension and GEOSGeom_transformXYZ functions.&lt;br /&gt;
    * Added GEOSisSimpleDetail function.&lt;br /&gt;
&lt;br /&gt;
    '''Breaking Changes:''' Required C++17, implemented stricter WKT parsing, and modified GEOSCoordSeq_setOrdinate behavior.&lt;br /&gt;
* '''3.14.1 (October 27, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Fixed floating-point exception handling for geosop.&lt;br /&gt;
    * Fixed undefined behavior in CoordinateSequence::closeRing.&lt;br /&gt;
    * Fixed crashes in GridIntersection for certain polygons outside the grid extent.&lt;br /&gt;
    * Fixed incorrect envelope calculation for arcs.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135401</id>
		<title>GEOS Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=GEOS_Report_2025&amp;diff=135401"/>
		<updated>2026-02-27T01:49:04Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;= General information =  * Project officer: Paul Ramsey * Project page information: https://github.com/geosproject/geos  = Key Accomplishments =  In the spring of 2025, update...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Paul Ramsey&lt;br /&gt;
* Project page information: https://github.com/geosproject/geos&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
In the spring of 2025, update releases for versions 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x were made available. In August of 2025 3.14 was released, updated by 3.14.1 two months afterward.&lt;br /&gt;
&lt;br /&gt;
'''Update Releases:''' (March 3, 2025)&lt;br /&gt;
* '''3.13.1 :''' Primarily focused on bug fixes, including improvements to &lt;br /&gt;
ConcaveHullOfPolygons, RelateNG, and LineString handling.&lt;br /&gt;
* '''3.12.3 :''' Addressed several crashes and stability issues, including fixes related to &lt;br /&gt;
TopologyPreservingSimplifier, Centroid calculations, and handling of NaN inputs.&lt;br /&gt;
* '''3.11.5 :''' Included fixes to the TopologyPreservingSimplifier and improvements to &lt;br /&gt;
ConcaveHullOfPolygons and handling of NaN values.&lt;br /&gt;
* '''3.10.7 :''' Focused on robustness improvements, particularly in Intersection calculations &lt;br /&gt;
using DoubleDouble computation, and fixes for various crash scenarios.&lt;br /&gt;
* '''3.9.6 :''' Bug fixes / improvements:&lt;br /&gt;
  Intersection: change to using DoubleDouble computation to improve robustness (GH-937, Martin Davis)&lt;br /&gt;
  Centroid: Fix crash on polygons with empty holes (GH-1075, Dan Baston)&lt;br /&gt;
  GEOSRelatePatternMatch: Fix crash on invalid DE-9IM pattern (GH-1089, Dan Baston)&lt;br /&gt;
&lt;br /&gt;
'''Version 3.14:'''&lt;br /&gt;
&lt;br /&gt;
* '''3.14.0 (August 21, 2025):''' Introduced significant new features and changes:&lt;br /&gt;
    * Added clustering functions to the C API.&lt;br /&gt;
    * Ported LineDissolver and CoverageCleaner.&lt;br /&gt;
    * Added GEOSGridIntersectionFractions to the C API.&lt;br /&gt;
    * Added functions to interrupt processing in a specific thread/context.&lt;br /&gt;
    * Added &amp;quot;geos-targets.cmake&amp;quot; to the build tree for easier integration with other software.&lt;br /&gt;
    * Added GEOSCoordSeq_hasZ, GEOSCoordSeq_hasM, GEOSCoordSeq_createWithDimensions, GEOSCoordSeq_setM, and  GEOSCoordSeq_getM functions.&lt;br /&gt;
    * Added GEOSGeoJSONWriter_setOutputDimension and GEOSGeom_transformXYZ functions.&lt;br /&gt;
    * Added GEOSisSimpleDetail function.&lt;br /&gt;
&lt;br /&gt;
    '''Breaking Changes:''' Required C++17, implemented stricter WKT parsing, and modified GEOSCoordSeq_setOrdinate behavior.&lt;br /&gt;
* '''3.14.1 (October 27, 2025):''' Focused on bug fixes and minor improvements:&lt;br /&gt;
    * Fixed floating-point exception handling for geosop.&lt;br /&gt;
    * Fixed undefined behavior in CoordinateSequence::closeRing.&lt;br /&gt;
    * Fixed crashes in GridIntersection for certain polygons outside the grid extent.&lt;br /&gt;
    * Fixed incorrect envelope calculation for arcs.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135400</id>
		<title>Marble Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135400"/>
		<updated>2026-02-27T00:34:37Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: KDE-Marble from Github info using gemma3:12b locally and edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Dennis Nienhüser  (Earthwings)&lt;br /&gt;
* Project page information: https://apps.kde.org/marble/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The KDE-Marble project released a dozen updates to the stable version 24 series, also the final iterations of version 23.  KDE has ported many applications to Qt6, including Marble versions. &lt;br /&gt;
&lt;br /&gt;
'''Version 24 Development and Releases:''' (Throughout 2025)&lt;br /&gt;
* About 15 releases of version 24 were made throughout the year.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
  https://github.com/sponsors/KDE&lt;br /&gt;
  https://kde.org/community/donations/&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 24 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 24 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135399</id>
		<title>Marble Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Marble_Report_2025&amp;diff=135399"/>
		<updated>2026-02-27T00:12:05Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;= General information =  * Project officer: (To be filled in - no project officer specified in input) * Project page information: https://kde.org/applications/gnome-integratio...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: (To be filled in - no project officer specified in input)&lt;br /&gt;
* Project page information: https://kde.org/applications/gnome-integration/marble/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The KDE-Marble project in 2025 releases a dozen updates to the version 24 series, and the final iterations of version 23.&lt;br /&gt;
&lt;br /&gt;
'''Version 23 Final Releases:''' (Early 2025)&lt;br /&gt;
* (Space for details of the final version 23 releases - e.g., 23.x.x, 23.y.y, 23.z.z)&lt;br /&gt;
* (Brief description of changes/fixes in these releases)&lt;br /&gt;
&lt;br /&gt;
'''Version 24 Development and Releases:''' (Throughout 2025)&lt;br /&gt;
* Numerous releases of version 24 were made throughout the year.&lt;br /&gt;
* (Space for listing the major releases within version 24 - e.g., 24.1.0, 24.2.0, etc.)&lt;br /&gt;
* (Summarize key improvements and bug fixes across the version 24 releases.  Focus on significant changes.)&lt;br /&gt;
* (Example: &amp;quot;Fixed a crash related to...&amp;quot;)&lt;br /&gt;
* (Example: &amp;quot;Improved rendering of...&amp;quot;)&lt;br /&gt;
* (Example: &amp;quot;Added support for...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and releases within the version 24 series.&lt;br /&gt;
* Addressing feedback and bug fixes for the ongoing version 24 releases.&lt;br /&gt;
* Potential exploration of new features and improvements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=GeoNode_Report_2025&amp;diff=135398</id>
		<title>GeoNode Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=GeoNode_Report_2025&amp;diff=135398"/>
		<updated>2026-02-26T23:51:15Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: geonode using gemma3:12B local on Github Release Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer: Giovanni Allegri (giohappy)&lt;br /&gt;
* Project page information: https://www.osgeo.org/projects/geonode/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The GeoNode project in 2025 focused on improvements to version 4 series and culminating in a major release of version 5.0.&lt;br /&gt;
&lt;br /&gt;
'''Version 4.x Improvements:'''  Numerous bug fixes and enhancements were implemented across the 4.x series:&lt;br /&gt;
* '''4.4.4 (December 4, 2025):''' Upgraded dependencies including Django 4.2.24, PostGIS 3.5, and Nginx &lt;br /&gt;
1.26.3.  Security upgrades to base Docker image.&lt;br /&gt;
* '''4.4.3 (May 14, 2025):''' Fixed regression in 4.4.2 related to GetLegendGraphic requests and issues with remote WMS dataset stores. Upgraded to Django 4.2.17 and security upgrades to base Docker image.&lt;br /&gt;
* '''4.4.2 (March 17, 2025):''' Introduced improvements to the client interface, including:&lt;br /&gt;
 * Info panel for datasets accessible from the map's table of contents.&lt;br /&gt;
 * Backport of MapStore WMS adaptive legends.&lt;br /&gt;
 * Improved Entra ID configurations.&lt;br /&gt;
 * Recaptcha support for Sign-In Form.&lt;br /&gt;
 * Improved handling of 3D Tiles index file names.&lt;br /&gt;
 * Improved handling of remote service URLs.&lt;br /&gt;
 * Allow editing Documents advertised flag in the Django admin.&lt;br /&gt;
 * Other fixes included improvements to 3DTiles asset downloads, metadata parser handling, custom map layer settings, and Geoserver layer styling.  Bumped geoserver-restoconfig to 2.0.13.&lt;br /&gt;
&lt;br /&gt;
* '''Version 5.0 Release (December 16, 2025):''' A major release introducing significant architectural changes and new features.&lt;br /&gt;
  '''Redesigned Layout:''' A completely redesigned user interface focused on usability, clarity, and customization.&lt;br /&gt;
  '''Rewritten Metadata Engine and Editor:'''  A new, configurable metadata framework based on JSON Schemas, allowing for full customization of metadata schemas and validation rules.  Supports standards like INSPIRE (RNDT).&lt;br /&gt;
  '''Dataset Replacement and Update:''' Reintroduced the ability to replace datasets with newer versions, including an experimental &amp;quot;Update&amp;quot; mode for vector datasets.&lt;br /&gt;
  '''Validation and Constraints:'''  Integration of GeoServer constraints for dataset fields, enabling validation during updates and creation.&lt;br /&gt;
  '''Dynamic Rule-Based Permissions:''' A new permission system allowing for flexible and customizable access control.&lt;br /&gt;
  '''New Download Formats:''' Added support for Excel and CSV download formats.&lt;br /&gt;
  '''MapStore Integration:''' Improved synchronization with MapStore, incorporating recent enhancements.&lt;br /&gt;
  '''Asynchronous Engine Upgrade:''' Migrated to Redis for Celery's result backend and message handling, improving performance and scalability. (Breaking change requiring configuration updates).&lt;br /&gt;
  '''Enhanced Harvesting System:''' Improvements to the harvesting subsystem including dynamic task expiration and a new monitoring layer.&lt;br /&gt;
  '''QGIS Plugin Update:''' Updated the QGIS plugin to version 2.1.0 (support for GeoNode 3 deprecated).&lt;br /&gt;
  '''Software Updates:''' Upgraded Geoserver to 2.27.3, Ubuntu base image to 24.04, Python to 3.12, and Django to version 5.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* (No specific conference participation details were provided in the input.)&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: (TBD)&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* Continued development and stabilization of GeoNode 5.&lt;br /&gt;
* Further enhancements to the metadata engine and editor.&lt;br /&gt;
* Addressing feedback and bug fixes for the new version 5.0 release.&lt;br /&gt;
* Potential exploration of new features based on community input.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=OSGeoLive_Report_2025&amp;diff=135394</id>
		<title>OSGeoLive Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=OSGeoLive_Report_2025&amp;diff=135394"/>
		<updated>2026-02-26T06:01:18Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;OSGeoLive did not make a release in 2025.       $ gdalinfo --formats|sort ;echo '#ogr';  ogrinfo --formats|sort      user@osgeolive:~ PARQUET not-found  = Key Accomplishments...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeoLive did not make a release in 2025. &lt;br /&gt;
&lt;br /&gt;
    $ gdalinfo --formats|sort ;echo '#ogr';  ogrinfo --formats|sort &lt;br /&gt;
    user@osgeolive:~ PARQUET not-found&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments &amp;amp; Activities (2025) =&lt;br /&gt;
&lt;br /&gt;
Debian GIS saw ongoing maintenance and development activity throughout 2025, primarily focused on package  updates, dependency management, and addressing technical challenges.&lt;br /&gt;
&lt;br /&gt;
* '''Package Maintenance:''' Several key packages received updates. Bas Couwenberg actively removed outdated or  unused packages from various task definitions, including:&lt;br /&gt;
    * Dropping `libhdf4-alt-dev` from the devel task.&lt;br /&gt;
    * Removing `python3-mapnik` from the workstation task.&lt;br /&gt;
    * Eliminating `googleearth-package` from the remotesensing task.&lt;br /&gt;
* '''Technical Challenges - python-mapnik:''' A significant issue arose with the `python-mapnik` package due to the upstream project's lack of tagged releases, absence from PyPI, and unresponsiveness to issues (particularly  after pybind11 changes broke imports). This impacted the ability to transfer maintenance of mapproxy.&lt;br /&gt;
* '''Project Status:'''&lt;br /&gt;
    * Git repositories were maintained (migrated from Alioth to Salsa).&lt;br /&gt;
    * Focus remained on core GIS tools: GRASS, GDAL, PostGIS, and QGIS.&lt;br /&gt;
    * While the project wiki and documentation haven't been updated since 2018, active development and package  tracking (via the Debian Package Tracker) confirm ongoing work.&lt;br /&gt;
* '''Community &amp;amp; Coordination:'''&lt;br /&gt;
    * Active discussions on the debian-gis mailing list and IRC channel (#debian-gis on OFTC) regarding package transitions, sponsorship, and new contributions.&lt;br /&gt;
    * The Debian GIS Policy document remains a central reference.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135393</id>
		<title>MapServer Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135393"/>
		<updated>2026-02-26T05:42:30Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Outlook for 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer:  Steve Lime (Chair) @sdlime&lt;br /&gt;
&lt;br /&gt;
* Project page information: https://www.osgeo.org/projects/mapserver/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The MapServer project has released two major versions in 2025: 8.4.0 (January) and 8.6.0 (December). These  releases include significant new features and improvements to enhance functionality and performance.&lt;br /&gt;
&lt;br /&gt;
* '''MapServer 8.4.0 (January 2025):''' Introduced support for PCRE2 library, a new CONNECTIONTYPE RASTERLABEL, increased LEGEND_KEYSIZE_MAX, four new COMPOSITE blending operations, and improved encryption key file handling.  Also enabled use_default_extent_for_getfeature for OGC Features API and PostGIS.&lt;br /&gt;
* '''MapServer 8.6.0 (December 2025):''' Added support for appending additional query parameters for OGCAPI:  Features, a new MapServer index page, enhanced WMS GetFeatureInfo functionality for precise point  identification, a FALLBACK parameter for CLASS objects, and vendorSpecificParameters in the OpenAPI document.&lt;br /&gt;
* '''Demo Server Maintenance:''' The demo server ([https://demo.mapserver.org MAPSERVER])  continues to be updated and maintained, providing a valuable resource for the community.&lt;br /&gt;
* '''Binary Distributions:'''  Debian binaries are readily available, and OSGeoLive and UbuntuGIS releases are  incorporating the new versions. MS4W users have access to updated builds.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* No specific conference participation details were provided in the release announcements.&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: TBD&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* '''PostGIS Day 2026:''' Planned event.&lt;br /&gt;
* '''Conference Attendance:''' MapServer developers anticipate attending FOSS4G, FOSS4G EU, FOSS4G NA, and code sprints.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135392</id>
		<title>MapServer Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135392"/>
		<updated>2026-02-26T05:42:12Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Key Accomplishments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer:  Steve Lime (Chair) @sdlime&lt;br /&gt;
&lt;br /&gt;
* Project page information: https://www.osgeo.org/projects/mapserver/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The MapServer project has released two major versions in 2025: 8.4.0 (January) and 8.6.0 (December). These  releases include significant new features and improvements to enhance functionality and performance.&lt;br /&gt;
&lt;br /&gt;
* '''MapServer 8.4.0 (January 2025):''' Introduced support for PCRE2 library, a new CONNECTIONTYPE RASTERLABEL, increased LEGEND_KEYSIZE_MAX, four new COMPOSITE blending operations, and improved encryption key file handling.  Also enabled use_default_extent_for_getfeature for OGC Features API and PostGIS.&lt;br /&gt;
* '''MapServer 8.6.0 (December 2025):''' Added support for appending additional query parameters for OGCAPI:  Features, a new MapServer index page, enhanced WMS GetFeatureInfo functionality for precise point  identification, a FALLBACK parameter for CLASS objects, and vendorSpecificParameters in the OpenAPI document.&lt;br /&gt;
* '''Demo Server Maintenance:''' The demo server ([https://demo.mapserver.org MAPSERVER])  continues to be updated and maintained, providing a valuable resource for the community.&lt;br /&gt;
* '''Binary Distributions:'''  Debian binaries are readily available, and OSGeoLive and UbuntuGIS releases are  incorporating the new versions. MS4W users have access to updated builds.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* No specific conference participation details were provided in the release announcements.&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: TBD&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* '''PostGIS Day 2027:''' Planned event.&lt;br /&gt;
* '''Conference Attendance:''' MapServer developers anticipate attending FOSS4G, FOSS4G EU, FOSS4G NA, and code sprints.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135391</id>
		<title>MapServer Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135391"/>
		<updated>2026-02-26T05:41:00Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Key Accomplishments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer:  Steve Lime (Chair) @sdlime&lt;br /&gt;
&lt;br /&gt;
* Project page information: https://www.osgeo.org/projects/mapserver/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The MapServer project has released two major versions in 2025: 8.4.0 (January) and 8.6.0 (December). These  releases include significant new features and improvements to enhance functionality and performance.&lt;br /&gt;
&lt;br /&gt;
* '''MapServer 8.4.0 (January 2025):''' Introduced support for PCRE2 library, a new CONNECTIONTYPE RASTERLABEL, increased LEGEND_KEYSIZE_MAX, four new COMPOSITE blending operations, and improved encryption key file handling.  Also enabled use_default_extent_for_getfeature for OGC Features API and PostGIS.&lt;br /&gt;
* '''MapServer 8.6.0 (December 2025):''' Added support for appending additional query parameters for OGCAPI:  Features, a new MapServer index page, enhanced WMS GetFeatureInfo functionality for precise point  identification, a FALLBACK parameter for CLASS objects, and vendorSpecificParameters in the OpenAPI document.&lt;br /&gt;
* '''Demo Server Maintenance:''' The demo server ([https://demo.mapserver.org](https://demo.mapserver.org))  continues to be updated and maintained, providing a valuable resource for the community.&lt;br /&gt;
* '''Binary Distributions:'''  Debian binaries are readily available, and OSGeoLive and UbuntuGIS releases are  incorporating the new versions. MS4W users have access to updated builds.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* No specific conference participation details were provided in the release announcements.&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: TBD&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* '''PostGIS Day 2027:''' Planned event.&lt;br /&gt;
* '''Conference Attendance:''' MapServer developers anticipate attending FOSS4G, FOSS4G EU, FOSS4G NA, and code sprints.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135390</id>
		<title>MapServer Report 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=MapServer_Report_2025&amp;diff=135390"/>
		<updated>2026-02-26T05:40:35Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;= General information =  * Project officer:  Steve Lime (Chair) @sdlime  * Project page information: https://www.osgeo.org/projects/mapserver/  = Key Accomplishments =  The Ma...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General information =&lt;br /&gt;
&lt;br /&gt;
* Project officer:  Steve Lime (Chair) @sdlime&lt;br /&gt;
&lt;br /&gt;
* Project page information: https://www.osgeo.org/projects/mapserver/&lt;br /&gt;
&lt;br /&gt;
= Key Accomplishments =&lt;br /&gt;
&lt;br /&gt;
The MapServer project has released two major versions in 2025: 8.4.0 (January) and 8.6.0 (December). These  releases include significant new features and improvements to enhance functionality and performance.&lt;br /&gt;
&lt;br /&gt;
* '''MapServer 8.4.0 (January 2025):''' Introduced support for PCRE2 library, a new CONNECTIONTYPE RASTERLABEL, increased LEGEND_KEYSIZE_MAX, four new COMPOSITE blending operations, and improved encryption key file &lt;br /&gt;
handling.  Also enabled use_default_extent_for_getfeature for OGC Features API and PostGIS.&lt;br /&gt;
* '''MapServer 8.6.0 (December 2025):''' Added support for appending additional query parameters for OGCAPI:  Features, a new MapServer index page, enhanced WMS GetFeatureInfo functionality for precise point  identification, a FALLBACK parameter for CLASS objects, and vendorSpecificParameters in the OpenAPI document.&lt;br /&gt;
* '''Demo Server Maintenance:''' The demo server ([https://demo.mapserver.org](https://demo.mapserver.org))  continues to be updated and maintained, providing a valuable resource for the community.&lt;br /&gt;
* '''Binary Distributions:'''  Debian binaries are readily available, and OSGeoLive and UbuntuGIS releases are  incorporating the new versions. MS4W users have access to updated builds.&lt;br /&gt;
&lt;br /&gt;
= Participation in Conferences =&lt;br /&gt;
&lt;br /&gt;
* No specific conference participation details were provided in the release announcements.&lt;br /&gt;
&lt;br /&gt;
= Budget =&lt;br /&gt;
&lt;br /&gt;
* Budget from OSGeo: TBD&lt;br /&gt;
&lt;br /&gt;
= Outlook for 2026 =&lt;br /&gt;
&lt;br /&gt;
* '''PostGIS Day 2027:''' Planned event.&lt;br /&gt;
* '''Conference Attendance:''' MapServer developers anticipate attending FOSS4G, FOSS4G EU, FOSS4G NA, and code sprints.&lt;br /&gt;
&lt;br /&gt;
[[Category:Annual Reports]]&lt;br /&gt;
[[Category: Reports 2025]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135389</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135389"/>
		<updated>2026-02-26T01:53:30Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* 7. Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (TSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a TSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for TSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the TSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135388</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135388"/>
		<updated>2026-02-26T01:53:21Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* 6. Outstanding Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (TSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a TSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for TSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the PSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135387</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135387"/>
		<updated>2026-02-26T01:53:04Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: TSC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (TSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a TSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for PSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the PSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135386</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135386"/>
		<updated>2026-02-26T01:52:30Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: TSC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (TSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a PSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for PSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the PSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135385</id>
		<title>Talk:TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135385"/>
		<updated>2026-02-26T00:04:07Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: record the final vote&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
On Mon, Feb 2, 2026 at 8:08 AM Brian M Hamlin via Incubator &amp;lt;incubator@lists.osgeo.org&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
    Hello All -&lt;br /&gt;
&lt;br /&gt;
      With this email, I am pleased to present to the OSGeo Incubation Committee an OSGeo Project Candidate :  TorchGeo [0].  As Project Mentor I have worked closely with the TorchGeo PSC and code base.  In my best judgement, I find that TorchGeo is not only a suitable candidate, but in fact a substantial addition to a large set of consequential and significant geospatial software projects of our current era, represented by OSGeo. &lt;br /&gt;
&lt;br /&gt;
    The Program Steering Committee (PSC) of TorchGeo is composed of a small but diverse group of committers; the PSC has defined clear standards for code contributions, bugs, features and additions. Due to the unique character of this training and benchmarking environment, many complete teams from more than a hundred institutions worldwide are contributing and active in the project.  As a Machine Learning and Artificial Intelligence environment itself, new data LICENSE challenges are present as well.&lt;br /&gt;
&lt;br /&gt;
    You will find abundant links and details in the project Application [1] and Code Review [2].  The TorchGeo project release cycle is integrated with OSGeo Planet and news -- special thanks to JSanz.&lt;br /&gt;
&lt;br /&gt;
    Please review and cast your vote at your earliest convenience. Questions and other inquiries will be handled on an OSGeo TRAC instance ticket [3].   The voting period shall begin with the date of this email, and scheduled to conclude in 14 days hence.&lt;br /&gt;
&lt;br /&gt;
    Special gratitude on this important day goes out to the OSGeo Systems Administration Team for TRAC, MediaWiki, email and support infrastructure&lt;br /&gt;
&lt;br /&gt;
      signed --Brian M Hamlin    /  MAPLABS  /  TorchGeo Project Mentor on behalf of #osgeo&lt;br /&gt;
&lt;br /&gt;
    ##-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    [0] https://www.osgeo.org/projects/torchgeo/&lt;br /&gt;
&lt;br /&gt;
    [1] https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
    [2] https://wiki.osgeo.org/wiki/TorchGeo_Code_Provenance&lt;br /&gt;
&lt;br /&gt;
    [3] https://trac.osgeo.org/osgeo/ticket/3519&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congrats to team, and thanks for mentoring. I will review this weekend. &lt;br /&gt;
&lt;br /&gt;
- -&lt;br /&gt;
Jody Garnett&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    _______________________________________________&lt;br /&gt;
    Incubator mailing list&lt;br /&gt;
    Incubator@lists.osgeo.org&lt;br /&gt;
    https://lists.osgeo.org/mailman/listinfo/incubator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Board Meeting 2026-02-24&lt;br /&gt;
&lt;br /&gt;
=== Recognize TorchGeo as OSGeo Project via recent Incubation Committee vote ===&lt;br /&gt;
&lt;br /&gt;
* Brian Hamlin reporting as mentor of the TorchGeo project&lt;br /&gt;
* MOTION: Motion to recognize TorchGeo as OSGeo Project&lt;br /&gt;
* Motion passed during the meeting: +1 by: Mike, Jeroen, Vicky, Tim, Codrina, Angelos, Joana, Tom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;OSGeo Board Members and Guests&lt;br /&gt;
On behalf of the TorchGeo Project technical-steering-committee , authors, testers, academics and users of all kinds, I want to emphasize implementation of the newest additions to computer science and remote sensing theory and practice, in a community setting, evolving quickly and with results.&lt;br /&gt;
&lt;br /&gt;
With #torchgeo, the OSGeo ecosystem will grow, strengthen and extend into rapidly evolving new discoveries and applications.  It will be a wild ride. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note''': AI LLM assistance was employed in the production of this document.&lt;br /&gt;
&lt;br /&gt;
  {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  |+ LLM Engine contributions by operator&lt;br /&gt;
  |-&lt;br /&gt;
  ! Operator !! Tool !! Model 1 !! Model 2&lt;br /&gt;
  |-&lt;br /&gt;
  | '''omniverdi''' || opencode || claude-opus || devstral2-2512&lt;br /&gt;
  |-&lt;br /&gt;
  | '''darkblueb''' || ollama local-only || gemma3:12b || qwen3-coder &lt;br /&gt;
  |}&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Board_Meeting_2026-02-24&amp;diff=135365</id>
		<title>Board Meeting 2026-02-24</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Board_Meeting_2026-02-24&amp;diff=135365"/>
		<updated>2026-02-20T15:21:15Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: TorchGeo award&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This board meeting is '''scheduled Tuesday 24 February 2026''' at [https://www.timeanddate.com/worldclock/meetingdetails.html?year=2026&amp;amp;month=02&amp;amp;day=24&amp;amp;hour=17&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=250&amp;amp;p2=26&amp;amp;p3=49&amp;amp;p4=155&amp;amp;p5=16&amp;amp;p6=133 '''17:00''' UTC] through [https://meet.jit.si/OsgeoBoard Jitsi], a record of motions is preserved on [https://www.loomio.org/g/kdSmIwxu/osgeo-board Loomio] and actions on the [https://git.osgeo.org/gitea/osgeo/todo/issues OSGeo todo] issue tracker.&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
=== Current items ===&lt;br /&gt;
&lt;br /&gt;
# ''roll call'' &lt;br /&gt;
# ''appoint meeting chair, meeting scribe/secretary''&lt;br /&gt;
# ''Review and approve past minutes''&lt;br /&gt;
#* [[Board_Meeting_2026-01-26]]&lt;br /&gt;
# Finalize [https://www.loomio.com/d/5jiKNtgb/executive-positions-2026 board executive positions]&lt;br /&gt;
# Recognize [https://www.osgeo.org/projects/torchgeo/ TorchGeo] as OSGeo Project via recent Incubation Committee vote [https://lists.osgeo.org/pipermail/incubator/2026-February/005161.html LINK]&lt;br /&gt;
# Funding ideas for 2026&lt;br /&gt;
# Update on Pretalx (Jeroen)&lt;br /&gt;
# Update on OSGeo legal entity in Europe (The Netherlands) (Jeroen)&lt;br /&gt;
# Update on [https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/horizon-cl6-2026-03-governance-06 Horizon Europe call HORIZON-CL6-2026-03-GOVERNANCE-06] - A services and business incubator for geospatial open-source developments (Jeroen)&lt;br /&gt;
# Conference Committee (LoI FOSS4G 2027)&lt;br /&gt;
# Cyber Resilience Act&lt;br /&gt;
# New membership process&lt;br /&gt;
# Respond to [https://gitea.osgeo.org/Lads/llm-survey ''OSGeo member survey on the impact of LLMs on open-source projects''] proposal&lt;br /&gt;
# Email from The FOSS Club at Delhi Technical Campus - Manya Yadav (4 February 2026)&lt;br /&gt;
# ''Add your topic here''&lt;br /&gt;
&lt;br /&gt;
== Minutes ==&lt;br /&gt;
&lt;br /&gt;
* Presiding: &lt;br /&gt;
* Scribing: &lt;br /&gt;
* Attending: &lt;br /&gt;
* Guests: &lt;br /&gt;
&lt;br /&gt;
=== Actions ===&lt;br /&gt;
&lt;br /&gt;
* See https://git.osgeo.org/gitea/osgeo/todo/issues&lt;br /&gt;
&lt;br /&gt;
== IRC Log ==&lt;br /&gt;
* no log, Jitsi meeting&lt;br /&gt;
&lt;br /&gt;
== Next meeting ==&lt;br /&gt;
*[[Board Meeting 2026-03-31]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Board]]&lt;br /&gt;
[[Category:Board Meetings 2026]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Incubation_Committee&amp;diff=135352</id>
		<title>Incubation Committee</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Incubation_Committee&amp;diff=135352"/>
		<updated>2026-02-13T23:43:58Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* TorchGeo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The project incubation committee is responsible for overseeing the incubation process for new projects entering the foundation. The incubation committee provides resources to assist new projects to reach full membership, and makes recommendations to the board when they feel projects have completed incubation.&lt;br /&gt;
&lt;br /&gt;
== About the Incubation Committee ==&lt;br /&gt;
&lt;br /&gt;
The OSGeo Incubation Committee is an open source advocacy and outreach activity welcoming projects and development teams to our foundation.&lt;br /&gt;
&lt;br /&gt;
The committee is responsible for:&lt;br /&gt;
&lt;br /&gt;
# [https://www.osgeo.org/projects/ OSGeo project website] review&lt;br /&gt;
#* Reviewing applications to list projects on the OSGeo website&lt;br /&gt;
#* Preparing and recommend criteria and review process for projects to be listed on the OSGeo website&lt;br /&gt;
# [https://www.osgeo.org/projects/#community Community project program]&lt;br /&gt;
#* Reviewing community project applications and recommending projects to the board to be accepted as community projects&lt;br /&gt;
#* Reporting on the status of projects in the community project program to the board periodically (via Chair)&lt;br /&gt;
#* Preparing and recommending community project process and criteria to the board.&lt;br /&gt;
#* See [[OSGeo_Community_Projects]] for more information&lt;br /&gt;
# [https://www.osgeo.org/about/committees/incubation/incubation-process/ OSGeo Incubation process]&lt;br /&gt;
#* Reviewing applications for incubation and making recommendations to the board on projects that should be admitted into incubation.&lt;br /&gt;
#* Appointing [https://www.osgeo.org/about/committees/incubation/mentor/ mentors] for incubation projects.&lt;br /&gt;
#* Reviewing progress of projects against incubation requirements, and recommending projects for full project status to the board, when deemed appropriate.&lt;br /&gt;
#* Reporting on the status of projects in incubation and the incubation process to the board periodically (via Chair).&lt;br /&gt;
#* Preparing and recommending incubation process and criteria to the board.&lt;br /&gt;
&lt;br /&gt;
The OSGeo incubation committee is not responsible for graduated OSGeo Projects. Graduated OSGeo projects are recognized as a committee who report directly to the board via their project officer.&lt;br /&gt;
&lt;br /&gt;
== Supporting project teams ==&lt;br /&gt;
&lt;br /&gt;
If you would like your software project to listed on the website, or apply to become an OSGeo Community project, please send a description of your project to the OSGeo Incubation Committee Mailing List. &lt;br /&gt;
&lt;br /&gt;
We look forward to helping you!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Responsibility&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Website Listing&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot;  style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Project&lt;br /&gt;
|-&lt;br /&gt;
| Geospatial &amp;lt;br /&amp;gt;&lt;br /&gt;
- README or project description&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Geospatial &amp;lt;br /&amp;gt;&lt;br /&gt;
- User guide or quickstart&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- See LICENSE.md&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- Check headers&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- Providence Review&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- See CONTRIBUTING.md&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- History of pull requests or patches&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- CODE_OF_CONDUCT.md&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Open Community&amp;lt;br /&amp;gt;&lt;br /&gt;
- communication channel&amp;lt;br /&amp;gt;&lt;br /&gt;
- decision making process&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Active Healthy Community&amp;lt;br /&amp;gt;&lt;br /&gt;
- user and developer collaboration&amp;lt;br /&amp;gt;&lt;br /&gt;
- long term viability&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Development Process&amp;lt;br /&amp;gt;&lt;br /&gt;
- version control&amp;lt;br /&amp;gt;&lt;br /&gt;
- issue tracker&amp;lt;br /&amp;gt;&lt;br /&gt;
- leadership open to new members&amp;lt;br /&amp;gt;&lt;br /&gt;
- transparent decision making&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&amp;lt;br /&amp;gt;&lt;br /&gt;
- user documentation&amp;lt;br /&amp;gt;&lt;br /&gt;
- developer documentation&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Release Procedure&amp;lt;br /&amp;gt;&lt;br /&gt;
- release process&amp;lt;br /&amp;gt;&lt;br /&gt;
- documented testing process&amp;lt;br /&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-weight: bold;&amp;quot; | Foundation Resources&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Website Listing&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot;  style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Project&lt;br /&gt;
|-&lt;br /&gt;
| website project list&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| website choose-a-project&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| OSGeo Live&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Marketing Collateral&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Representation&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| project officer&lt;br /&gt;
|-&lt;br /&gt;
| infrastructure and facilities&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| promotion &amp;amp; marketing&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| budget&lt;br /&gt;
|&lt;br /&gt;
| osgeo board&lt;br /&gt;
| project budget&lt;br /&gt;
|-&lt;br /&gt;
| fundraising&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Financial support ===&lt;br /&gt;
&lt;br /&gt;
The incubation process establishes a project as a full fledged OSGeo committee, with a project project officer, with direct access to OSGeo treasurer, and reporting to the board during annual general meeting.&lt;br /&gt;
&lt;br /&gt;
While Community projects are not recognized as an independent committee, the OSGeo board maintains an &amp;quot;OSGeo Community&amp;quot; initiative with budget to support your activities. Attend one of the OSGeo board monthly meetings, or ask on the board mailing list, if your project has an activity that can benefit from financial support.&lt;br /&gt;
&lt;br /&gt;
For more information see [https://github.com/OSGeo/osgeo/blob/master/board/documents/osgeo_financial_guidance.pdf osgeo_financial_guidence.pdf] &lt;br /&gt;
&lt;br /&gt;
=== Branding ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Project&lt;br /&gt;
|-&lt;br /&gt;
| [[File:OSGeo community.png|frameless|OSGeo Community Project]]&lt;br /&gt;
| [[File:OSGeo project.png|frameless|OSGeo Project]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 1: Add OSGeo Website Project Page ==&lt;br /&gt;
&lt;br /&gt;
To be listed on the OSGeo website:&lt;br /&gt;
&lt;br /&gt;
# Be geospatial&lt;br /&gt;
#* Confirm by checking README or project description&lt;br /&gt;
# Have a free license or open source license&lt;br /&gt;
#* The license must be OSI approved&lt;br /&gt;
# Welcome participation and new contributors.&lt;br /&gt;
#* We look for a clear contribution policy&lt;br /&gt;
&lt;br /&gt;
If you have questions about the above, or would like guidance on setting up your open source project, please reach out to us.&lt;br /&gt;
&lt;br /&gt;
Here is an example email request ([https://lists.osgeo.org/mailman/listinfo/incubator mailing list sign up required]):&lt;br /&gt;
&lt;br /&gt;
: '''to''': incubator@lists.osgeo.org&lt;br /&gt;
:&lt;br /&gt;
: '''subject''':  water topology api &lt;br /&gt;
: &lt;br /&gt;
: '''message''':&lt;br /&gt;
:&lt;br /&gt;
:: Incubation committee:&lt;br /&gt;
::&lt;br /&gt;
:: I would like to ask permission to to list my project &amp;quot;water topology api&amp;quot; on the OSGeo website in order to share my work with more people!&lt;br /&gt;
::&lt;br /&gt;
:: The project is built on PostGIS topology providing a REST API to help with watershed analysis and maintenance.&lt;br /&gt;
::&lt;br /&gt;
:: The repository is located here: https://gitlab.host.net/watertopo/ released using GPL license.&lt;br /&gt;
::&lt;br /&gt;
:: My OSGeo userid is &amp;quot;atlantis&amp;quot; and I will need permission to create a project page.&lt;br /&gt;
::&lt;br /&gt;
:: Thanks!&lt;br /&gt;
&lt;br /&gt;
== Step 2: Join OSGeo Community Projects Initiative ==&lt;br /&gt;
&lt;br /&gt;
Projects applying to the *OSGeo Community Projects* initiative are asked to:&lt;br /&gt;
&lt;br /&gt;
# Be geospatial &lt;br /&gt;
#* Confirm by checking README or project description&lt;br /&gt;
#* project page on the osgeo website&lt;br /&gt;
#* We ask projects have some user documentation, for example an OSGeo Live quickstart&lt;br /&gt;
# Have a free license or an open source license.&lt;br /&gt;
#* The license must be OSI approved&lt;br /&gt;
#* We ask that the project team check the file headers and double check the license has been appropriately applied&lt;br /&gt;
# Welcome participation and new contributors.&lt;br /&gt;
#* We look for a clear contribution policy&lt;br /&gt;
#* We ask that the project demonstrate collaboration, perhaps with a history of bug report or pull requests&lt;br /&gt;
#* Projects are required to have a code of conduct&lt;br /&gt;
&lt;br /&gt;
OSGeo provides [https://www.osgeo.org/code_of_conduct/ code of conduct guidance], many projects selecting [https://www.contributor-covenant.org/ contribution covenant]).&lt;br /&gt;
&lt;br /&gt;
OSGeo [[Community Projects]] can take part in the incubation committee for guidance on open source use, setting up project governance, promoting the project, and building the project community. We look forward to working with you. For sensitive topics (patents, copyright, trademarks, and license) you wish to attend a video meeting.&lt;br /&gt;
&lt;br /&gt;
Here is an example email request ([https://lists.osgeo.org/mailman/listinfo/incubator mailing list sign up required]):&lt;br /&gt;
&lt;br /&gt;
: '''to''': incubator@lists.osgeo.org&lt;br /&gt;
:&lt;br /&gt;
: '''subject''':  water topology community project application&lt;br /&gt;
: &lt;br /&gt;
: '''message''':&lt;br /&gt;
:&lt;br /&gt;
:: Incubation committee:&lt;br /&gt;
:: &lt;br /&gt;
:: The Water Topology project would like to apply to join the OSGeo community program. We recently re-branded to just &amp;quot;water topology&amp;quot; to reflect client libraries being include in our project. The project provides web services built on PostGIS topology to help with watershed analysis and maintenance.&lt;br /&gt;
::&lt;br /&gt;
:: The osgeo project page is available here: https://osgeo.org/projects/watertopology and our user guide is located at https://watertopo.gitlab.host.net/ .&lt;br /&gt;
::&lt;br /&gt;
:: The repository remains at https://gitlab.host.net/watertopo/ with GPL license, contribution policy and code of conduct. We have checked our source code to ensure GPL license has been correctly applied. Our issue tracker is active, and we have received a number of merge-requests.&lt;br /&gt;
:: &lt;br /&gt;
:: Thank you for your consideration and we look forward to your questions!&lt;br /&gt;
&lt;br /&gt;
== Step 3: Incubation process and Graduation ==&lt;br /&gt;
&lt;br /&gt;
The *OSGeo Project* designation is intended to recognize established projects with a diverse community of developers and users with a proven track record.&lt;br /&gt;
&lt;br /&gt;
To be recognized as an *OSGeo Project* a project team applies for the OSGeo incubation program. Successful projects are teamed up with an experienced open source mentor to help answer questions, obtain legal council, and help guide work on transparency and community development as required.&lt;br /&gt;
&lt;br /&gt;
Although incubation is a lot of work, this is opportunity for project teams to grow and improve and be publicly recognized for their accomplishment.&lt;br /&gt;
&lt;br /&gt;
To be recognized as an *OSGeo Project* we ask that project teams excel in each of areas mentioned above, see [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.pdf graduation checklist] ( [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.md markdown] ) or the comparison table on this page for more detail.&lt;br /&gt;
&lt;br /&gt;
The OSGeo incubation process takes place in three stages:&lt;br /&gt;
&lt;br /&gt;
# Initial Application&lt;br /&gt;
## Application request &lt;br /&gt;
## Mentor volunteer&lt;br /&gt;
# Incubator&lt;br /&gt;
## Project Status: project details, and a few resourcing questions for the system admin committee (see [[Project Status Template]]).&lt;br /&gt;
## Provenance Review: project team check to ensure the project is open source and has permission to distribute its source code.&lt;br /&gt;
## Project team and mentor work on [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.pdf graduation checklist] ( [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.md markdown] ) priorities&lt;br /&gt;
# Graduation&lt;br /&gt;
## Mentor recommends project for graduation with motion to the incubation committee&lt;br /&gt;
## Committee chair informs the OSGeo board, who appoints the project team as a newly formed OSGeo committee&lt;br /&gt;
&lt;br /&gt;
== Incubation ==&lt;br /&gt;
&lt;br /&gt;
The following projects are currently in OSGeo incubation. The links provided are used to track the progress of incubation projects and are used by the developer team (and OSGeo mentor). In many cases the links will take you to a project specific wiki or website in order to be closer to their target community.&lt;br /&gt;
&lt;br /&gt;
When projects have completed the graduation checklist their mentor will recommend them to the Incubation committee for graduation.&lt;br /&gt;
&lt;br /&gt;
=== IstSOS ===&lt;br /&gt;
&lt;br /&gt;
'''IstSOS''': http://wiki.osgeo.org/wiki/IstSOS&lt;br /&gt;
# [[IstSOS Provenance Review]]&lt;br /&gt;
# [[IstSOS Incubation Status]] &lt;br /&gt;
# ''Mentor'': [[User: Jeff_McKenna|Jeff McKenna]]&lt;br /&gt;
&lt;br /&gt;
=== Opticks ===&lt;br /&gt;
 &lt;br /&gt;
'''Opticks''': http://opticks.org&lt;br /&gt;
# [[Opticks Incubation Status]]&lt;br /&gt;
# no provenance review provided&lt;br /&gt;
# [[Opticks Incubation Checklist]]&lt;br /&gt;
# ''Mentor'': [[User: Mark_Lucas|Mark Lucas]]&lt;br /&gt;
&lt;br /&gt;
=== Oskari ===&lt;br /&gt;
&lt;br /&gt;
'''Oskari''': http://oskari.org/&lt;br /&gt;
# [[Oskari Incubation Application]]&lt;br /&gt;
# [[Oskari Incubation Status]] &lt;br /&gt;
# [https://github.com/oskariorg/oskari-docs/wiki/Oskari-Incubation-Checklist Oskari Graduation Checklist]&lt;br /&gt;
# ''Mentor'': [[Arnulf Christl]]&lt;br /&gt;
&lt;br /&gt;
=== TEAM Engine ===&lt;br /&gt;
&lt;br /&gt;
'''TEAM Engine''': http://teamengine.sourceforge.net&lt;br /&gt;
# [https://trac.osgeo.org/osgeo/ticket/1016 Incubation Application] from 2012&lt;br /&gt;
# [https://github.com/opengeospatial/teamengine/wiki/OSGEO-Graduation TEAM Engine Incubation Checklist]&lt;br /&gt;
# ''Mentor'': [[User: Jive|Jody Garnett]]&lt;br /&gt;
&lt;br /&gt;
=== TorchGeo ===&lt;br /&gt;
&lt;br /&gt;
'''TorchGeo''': https://www.osgeo.org/projects/torchgeo/&lt;br /&gt;
# [[TorchGeo_Code_Provenance|TorchGeo Provenance Review]] &lt;br /&gt;
# [https://trac.osgeo.org/osgeo/ticket/3519|TorchGeo Incubation Status] &lt;br /&gt;
# ''Mentor'': [[User:darkblueb|Brian M Hamlin]]&lt;br /&gt;
&lt;br /&gt;
== Graduated == &lt;br /&gt;
&lt;br /&gt;
The following status and provenance documents are for historical purposes, and are no longer actively maintained. &lt;br /&gt;
&lt;br /&gt;
* Community Mapbuilder: [[Community Mapbuilder Incubation Progress]] | [[Community Mapbuilder Provenance Review]] (Entered 2006-02-04, Graduated 2006-07-14, Mentor: Steve Lime)&lt;br /&gt;
* deegree: [[deegree Incubation Status]] | [[deegree Provenance Review]] (Entered: 2008-06-09, Graduated 2010-02-04, Mentor: Jody Garnett)&lt;br /&gt;
* FDO: [[FDO Incubation Status]] | [[FDO Provenance Review]] (Entered 2007-03-06, Graduated 2008-02-08, Mentor: Daniel Morissette)&lt;br /&gt;
* GEOS: [[GEOS Incubation Status]] | [[GEOS Provenance Review]] (Entered 2007-11-02, Graduated 2012-04-28, Mentor: Frank Warmerdam)&lt;br /&gt;
* GDAL/OGR: [[GDAL Incubation Progress]] | [[GDAL Provenance Review]] (Entered 2006-02-04, Graduated 2008-02-08, Mentor: Paul Spencer)&lt;br /&gt;
* Geomajas: [[GeoMajas Incubation Status]] | [[GeoMajas Provenance Review]] (Entered 2010-03-04, Graduated 2010-11-22, Mentor: Paul Spencer)&lt;br /&gt;
* GeoNetwork: [[GeoNetwork Incubation Status]] | [[GeoNetwork Provenance Review]] (Entered 2006-11-10, Graduated 2008-06-21, Mentor: Jody Garnett)&lt;br /&gt;
* GeoNode: [[GeoNode Incubation Status]] [[GeoNode Provenance Review]] [[GeoNode Incubation Checklist]] (Entered 2015-08-13, Graduated 2016-11-09, Mentor: David Bitner)&lt;br /&gt;
* GeoMOOSE: [[GeoMoose Incubation Status]] | [[GeoMoose Provenance Review]] | [[GeoMoose Incubation Checklist]] (Entered 2011-12-08, Graduated 2013-04-19, Mentor: Jody Garnett)&lt;br /&gt;
* GeoTools: [[GeoTools Incubation Progress]] | [[GeoTools Provenance Review]] (Entered 2006-02-27, Graduated 2008-07-18, Mentor: Cameron Shorter)&lt;br /&gt;
* GeoServer: [http://old.geoserver.org/OSGEO%20incubation%20questionnaire.html Incubation Questionnaire] | [http://old.geoserver.org/GeoServer%20Incubation%20Status.html Incubation Status] | [https://github.com/geoserver/geoserver/wiki/GeoServer-Provenance-Review Provenance Review] | [https://github.com/geoserver/geoserver/wiki/GeoServer-Incubation-Checklist Incubation Checklist] | [[Geoserver Mentor Notes]] (Entered 2009-11-05, Graduated 2013-03-15, Mentor: Landon Blake)&lt;br /&gt;
* gvSIG: [[gvSIG Incubation Status]] | [[gvSIG Provenance Review]] | [[gvSIG Incubation Checklist]] (Entered 2007-09-07, Graduated 2015-11-26, Mentor: Dimitris Kotzinos)&lt;br /&gt;
* GRASS: [[GRASS Incubation Progress]] | [[GRASS Provenance Review]] (Entered 2006-02-27, Graduated 2008-02-08, Mentor: Norman Vine and Arnulf Christl)&lt;br /&gt;
* Mapbender: [[Mapbender Incubation Progress]] | [[Mapbender Provenance Review]] (Entered 2006-02-04, Graduated 2006-07-15, Mentor: Paul Spencer)&lt;br /&gt;
* MapFish: [[MapFish Incubation Status]] | [[MapFish Provenance Review]] (Entered 2009-11-09, Graduated 2011-09-01, Mentor: Gary Sherman)&lt;br /&gt;
* MapGuide Open: [[MapGuide Incubation Status]] | [[MapGuide Provenance Review]] (Entered 2006-02-04, Graduated 2007-03-02, Mentor: Daniel Morissette)&lt;br /&gt;
* MapServer: [[MapServer incubation status]] | [[MapServer Provenance Review]] (Entered 2006-02-04, Graduated 2008-12-16, Mentor: Chris Holmes)&lt;br /&gt;
* Marble: [[Marble Incubation Status]] | [[Marble Code Provenance Review]] | [[Marble Graduation Checklist]] (Entered 2012-10-12, Graduated 2013-10-17, Mentor: Arnulf Christl)&lt;br /&gt;
* OpenLayers: [[OpenLayers Incubation Status]] | [[OpenLayers Provenance Review]] (Entered 2006-11-10, Graduated 2007-11-16, Mentor: Howard Butler)&lt;br /&gt;
* Orfeo ToolBox (OTB): [[OTB Project Incubation Status]] | [[OTB Code Provenance Review]] (Entered 2009-10-26, Graduated 2017-07-20, Mentor: Landon Blake)&lt;br /&gt;
* OSGeoLive:  [[Live_GIS_Incubation_Graduation_Checklist|Graduation Checklist]] (Entered 2017-10-05, Graduated 2018-04-14, Mentor: Jody Garnett)&lt;br /&gt;
* pgRouting: [https://github.com/pgRouting/pgrouting/wiki/Project-Graduation-Checklist Project Graduation Checklist] (Entered: 2022-07, Graduated 2024-11, Mentor: Angelos Tzotsos)&lt;br /&gt;
* PostGIS: [[PostGIS Incubation Status]] | [[PostGIS Provenance Review]] (Entered 2009-08-06, Graduated 2012-06-07, Mentor: Arnulf Christl)&lt;br /&gt;
* PROJ: [https://trac.osgeo.org/osgeo/ticket/2268 Incubation Application] | [https://github.com/OSGeo/PROJ/wiki/Incubation-checklist PROJ Graduation Checklist] (Entered 2019-05-04, Graduated 2019-11-26, Mentor: Michael Smith )&lt;br /&gt;
* pycsw: [https://github.com/geopython/pycsw/wiki/Project-Status Incubation Status] | [https://github.com/geopython/pycsw/wiki/Project-Graduation-Checklist Graduation Checklist] | [https://github.com/geopython/pycsw/wiki/pycsw-Provenance-Review Provenance Review] (Entered 2013-03-30, Graduated 2015-03-05, Mentor: Jeff McKenna)&lt;br /&gt;
* pygeoapi: [https://github.com/geopython/pygeoapi/wiki/OSGeoIncubation-ProjectStatus Incubation Status] | [https://github.com/geopython/pygeoapi/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/geopython/pygeoapi/wiki/ProjectProvenanceReview Provenance Review] (Entered 2021-11-03, Graduated 2022-08-21, Mentor: Michael Smith)&lt;br /&gt;
* PyWPS: [[PyWPS|Incubation Status]] | [https://github.com/geopython/pywps/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/geopython/pywps/wiki/ProjectProvenanceReview Provenance Review] (Entered 2009-02-27, Graduated 2018-04-11, Mentor: Tom Kralidis)&lt;br /&gt;
* OSSIM: [[OSSIM incubation status]] | [http://trac.osgeo.org/ossim/wiki/ossimprovenance OSSIM Provenance Review] (Entered 2006-02-27, Graduated 2009-06-02, Mentor: Richard Gould)&lt;br /&gt;
* QGIS: [[QGIS Incubation Status]] | [[QGIS Provenance Review]] (Entered 2007-03-02, Graduated 2008-03-14, Mentor: Bob Bray)&lt;br /&gt;
* ZOO-Project: [https://github.com/ZOO-Project/ZOO-Project/wiki/OSGeoIncubationStatus Incubation Status] | [https://github.com/ZOO-Project/ZOO-Project/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/ZOO-Project/ZOO-Project/wiki/ProvenanceReview Provenance Review] (Entered 2011-11-09, Graduated 2023-06-21, Mentors: Tom Kralidis, Dimitris Kotzinos, Frank Warmerdam)&lt;br /&gt;
&lt;br /&gt;
The initial projects to go through the incubation process helped define what is required. The above pages tracked the progress (and capture the experience) of these projects.&lt;br /&gt;
&lt;br /&gt;
== Withdrawn == &lt;br /&gt;
&lt;br /&gt;
The following projects did not complete incubation:&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.rasdaman.org rasdaman]''': :  [[ rasdaman Incubation Status ]] | [http://rasdaman.org/wiki/OSGeoCodeProvenance Code Provenance] | [http://www.rasdaman.org/wiki/OSGeoIncubationChecklist Incubation Checklist] (Mentor [[User: Bruce.bannerman|Bruce Bannerman]] )&lt;br /&gt;
* '''[http://trac.osgeo.org/metacrs/ MetaCRS]''':  ::  [[MetaCRS Incubation Status]] (Mentor: Daniel Morissette)&lt;br /&gt;
&lt;br /&gt;
== Committee Operation ==&lt;br /&gt;
&lt;br /&gt;
The incubation committee operates within the OSGeo committee guidelines, operating in a close working relationship with the OSGeo board as reflected in our responsibilities above.&lt;br /&gt;
&lt;br /&gt;
* Voting members: Voting members are maintained on this page as outlined below. This committee is volunteer based with committee member ship driven by email request to be added or removed. Inactive members (see below) are removed as needed to preserve committee function.&lt;br /&gt;
* Project mentors: Have volunteered to represent our organization at a personal level as a guest on the projects email list and meetings. Project mentors are responsible for recommending when a project is ready for graduation based on this first hand experience. For more information see mentor guidelines.&lt;br /&gt;
* Committee chair: Committee chair appointed by motion, result forward to the board for approval and recognition as an officer of the foundation. Committee chair is responsible for operation of the committee.&lt;br /&gt;
* Communication: This committee operates on the [https://lists.osgeo.org/mailman/listinfo/incubator incubator mailing list]. With the occasional breakout IRC meeting, hangout, or phone call to explore specific issues.&lt;br /&gt;
* Decision making: Decision making is performed by email motion. Motions are held open for a two week period. Each motion requires a 50% quorum within the two week period. Voting consists of +1 (approval), +0 (slight agreement), -0 (slight disagreement), -1 (against). The committee chair is responsible for replying to the email thread with voting results and motion resolution.&lt;br /&gt;
** Email motions should be clearly worded and have a subject line “Motion:”.&lt;br /&gt;
** Motions are held open for a two week period to give everyone a chance to respond, this accounts for volunteers that are only available on weekends.&lt;br /&gt;
** At discretion of the chair a motion may be held open longer than two weeks.&lt;br /&gt;
** If a motion does not gather a 50% response within a two week period we may need to revisit our active member list – removing members that have not voted within the last year.&lt;br /&gt;
** Voting +0 and -0 are a good way to reach quorum for volunteers that have not had a chance to follow the discussion, or to abstain if you feel uncomfortable voting on a topic.&lt;br /&gt;
** There is no veto in the incubation committee, but we tend to respect -1 votes and withdraw motions that are divisive. It is noted that when reviewing graduation checklists -1 votes tend to track outstanding issues that are then addressed within the voting period.&lt;br /&gt;
* Independence: Our mandate is focused on providing to the OSGeo board as outlined above.&lt;br /&gt;
&lt;br /&gt;
Example email:&lt;br /&gt;
  &lt;br /&gt;
  Subject: motion: accept project x as a community project&lt;br /&gt;
  &lt;br /&gt;
  The following motion has been made by Firstname Lastname:&lt;br /&gt;
  &lt;br /&gt;
    Motion to accept project x as an community project.&lt;br /&gt;
  &lt;br /&gt;
  This motion is held open for two weeks closing MONTH DAY, requiring 50% quorum,&lt;br /&gt;
  from the following incubation committee members:&lt;br /&gt;
  &lt;br /&gt;
  * LINE BY LINE BULLETED LIST OF CURRENT MEMBERS&lt;br /&gt;
&lt;br /&gt;
A subsequent email will be sent when the motion is completed, either by the elapsed time period, or by unanimous consent before the closing period.&lt;br /&gt;
&lt;br /&gt;
=== Committee Members ===&lt;br /&gt;
&lt;br /&gt;
'''Volunteers Welcome''' - if you would like to take part we are always looking for new members, sign up to the [https://lists.osgeo.org/mailman/listinfo/incubator email list], and introduce yourself to volunteer.&lt;br /&gt;
&lt;br /&gt;
Current members:&lt;br /&gt;
&lt;br /&gt;
* [[User:Kalxas|Angelos Tzotsos]]&lt;br /&gt;
* Arnulf Christl&lt;br /&gt;
* Bob (CI-StPaul) Basques&lt;br /&gt;
* [[User:darkblueb|Brian M Hamlin]] &lt;br /&gt;
* Daniel Morissette&lt;br /&gt;
* Dimitris Kotzinos&lt;br /&gt;
* Frank Warmerdam&lt;br /&gt;
* [[User:Jive|Jody Garnett]] (chair)&lt;br /&gt;
* Michael Smith&lt;br /&gt;
* [[User:Nickbearman|Nick Bearman]]&lt;br /&gt;
* [[User:Robe|Regina Obe]]&lt;br /&gt;
* Steve Lime&lt;br /&gt;
* Tom Kralidis&lt;br /&gt;
&lt;br /&gt;
'''Thank you''' -  we ask that volunteers remain active, joining the discussion and voting on the email list. If you are unable to take part please send us an email. As volunteers we understand that life can get in the way of advocacy – you are welcome to rejoin at any time. We will also retire inactive members as needed. Prior members:&lt;br /&gt;
&lt;br /&gt;
* Bruce Bannerman&lt;br /&gt;
* Landon Blake&lt;br /&gt;
* Robert Bray&lt;br /&gt;
* Howard Butler&lt;br /&gt;
* [[User:JoCook|Jo Cook]]&lt;br /&gt;
* Chris Holmes&lt;br /&gt;
* Julien-Samuel Lacroix&lt;br /&gt;
* Mark Lucas&lt;br /&gt;
* Judit Mays&lt;br /&gt;
* Jeff McKenna&lt;br /&gt;
* Markus Neteler&lt;br /&gt;
* Markus Schneider&lt;br /&gt;
* Cameron Shorter&lt;br /&gt;
* Paul Spencer&lt;br /&gt;
* Jeroen Ticheler&lt;br /&gt;
* Norman Vine&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
* Official incubator public web page is at: https://www.osgeo.org/about/committees/incubation/ (with members list).&lt;br /&gt;
* [[OSGeo_Community_Projects]]&lt;br /&gt;
* [[Incubation FAQ]]&lt;br /&gt;
* [[Official_IncCom_Documents]]&lt;br /&gt;
* Incubation process docs: https://www.osgeo.org/about/committees/incubation/incubation-process/ (original [[Official_IncCom_Documents|wiki draft documents]])&lt;br /&gt;
* [[Incubation Badges]]&lt;br /&gt;
&lt;br /&gt;
Draft or discussion documents&lt;br /&gt;
* Draft [[Commiter Responsibilities Guidelines]]&lt;br /&gt;
* Draft [[5-star-rating]] - discussion about more fine incubation procedure&lt;br /&gt;
* OSGeo Distribution and Committer [[http://www.osgeo.org/content/foundation/legal/licenses.html licenses] which can be used as is, or as an example for projects starting off with participatory open source.&lt;br /&gt;
** Geotools Copyright Assignment ([http://download.osgeo.org/osgeo/legal/GeotoolsAssignmentToOSGeo.pdf pdf], [http://download.osgeo.org/osgeo/legal/GeotoolsAssignmentToOSGeo.odt odt]) - previous example&lt;br /&gt;
** [[Project Copyright Assignment]] - previous example&lt;br /&gt;
* [[Contributor Agreement]] and FAQ &lt;br /&gt;
* [[Incubation Phases]] proposal&lt;br /&gt;
&lt;br /&gt;
Document Refresh 2014&lt;br /&gt;
* [[Project Graduation Checklist]]&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [[Project Infrastructure Migration]]&lt;br /&gt;
* [http://producingoss.com/html-chunk/index.html Producing OSS] - by Karl Fogel - an excellent primer on running an FOSS project.&lt;br /&gt;
&lt;br /&gt;
Reports:&lt;br /&gt;
* [[Incubation Committee Report 2012]]&lt;br /&gt;
* [[Incubation Committee Report 2011]]&lt;br /&gt;
&lt;br /&gt;
Trac:&lt;br /&gt;
* [http://trac.osgeo.org/osgeo/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;component=Incubator&amp;amp;order=priority Open Incubator Trac Issues]&lt;br /&gt;
* [http://trac.osgeo.org/osgeo/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;component=Incubator&amp;amp;keywords=%7Eapplication&amp;amp;order=priority Pending Incubation Applications]&lt;br /&gt;
&lt;br /&gt;
== Meetings and Reports ==&lt;br /&gt;
Meetings are scheduled via [http://lists.osgeo.org/mailman/listinfo/incubator Mailing List] and take place via [[Getting_Started#Jump_on_IRC | IRC]] at the times specified in the [[Foundation Calendar]].&lt;br /&gt;
* [[IncCom Meeting1|First Meeting]] - March 13th 2006&lt;br /&gt;
* [[IncCom Meeting2|Second Meeting]] - March 20th 2006&lt;br /&gt;
* [[IncCom Meeting3|Third Meeting]] - March 27th 2006&lt;br /&gt;
* [[IncCom Meeting4|Fourth Meeting]] - April 10th 2006&lt;br /&gt;
* [[IncCom Meeting5|Fifth Meeting]] - April 24th 2006&lt;br /&gt;
* [[IncCom Meeting6|Sixth Meeting]] - June 19th 2006&lt;br /&gt;
* [[IncCom Meeting7|Seventh Meeting]] - August 7th 2006&lt;br /&gt;
* [[IncCom Meeting8|Eighth Meeting]] - October 30th 2006&lt;br /&gt;
* [[IncCom Meeting9|Nineth Meeting]] - February 12th 2007&lt;br /&gt;
* [[IncCom Meeting10|Tenth Meeting]] - June 11th 2007&lt;br /&gt;
* [[IncCom Meeting11|Eleventh Meeting]] - October 29th 2007 &lt;br /&gt;
* [[IncCom Meeting12|Twelfth Meeting]] - September 8th 2008 &lt;br /&gt;
* [[IncCom Meeting13|Thirteenth Meeting]] - October 29th 2009&lt;br /&gt;
* [[IncCom Meeting14|Fourteenth Meeting]] - March 1th 2010&lt;br /&gt;
* [[IncCom Meeting15]] - Nov 21 2011&lt;br /&gt;
* [[IncCom Meeting16]] - Jan 17 2012&lt;br /&gt;
* [[IncCom Meeting17]] - March 19 2012&lt;br /&gt;
* [[IncCom Meeting18]] - May 21 2012&lt;br /&gt;
* [[IncCom Meeting19]] - July 23 2012&lt;br /&gt;
* [[IncCom Meeting20]] - Sep 24 2012&lt;br /&gt;
* [[IncCom Meeting21]] - Feb 18 2013&lt;br /&gt;
* [[IncCom Report22]] - 2013 Q2&lt;br /&gt;
* [[IncCom Report23]] - 2013 Q3&lt;br /&gt;
* [[IncCom Report24]] - 2014 Q1&lt;br /&gt;
* [[Fall 2014 Committee Report for OSGeo Journal]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Incubation]]&lt;br /&gt;
[[Category:Committees]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Incubation_Committee&amp;diff=135351</id>
		<title>Incubation Committee</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Incubation_Committee&amp;diff=135351"/>
		<updated>2026-02-13T23:41:44Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* TorchGeo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The project incubation committee is responsible for overseeing the incubation process for new projects entering the foundation. The incubation committee provides resources to assist new projects to reach full membership, and makes recommendations to the board when they feel projects have completed incubation.&lt;br /&gt;
&lt;br /&gt;
== About the Incubation Committee ==&lt;br /&gt;
&lt;br /&gt;
The OSGeo Incubation Committee is an open source advocacy and outreach activity welcoming projects and development teams to our foundation.&lt;br /&gt;
&lt;br /&gt;
The committee is responsible for:&lt;br /&gt;
&lt;br /&gt;
# [https://www.osgeo.org/projects/ OSGeo project website] review&lt;br /&gt;
#* Reviewing applications to list projects on the OSGeo website&lt;br /&gt;
#* Preparing and recommend criteria and review process for projects to be listed on the OSGeo website&lt;br /&gt;
# [https://www.osgeo.org/projects/#community Community project program]&lt;br /&gt;
#* Reviewing community project applications and recommending projects to the board to be accepted as community projects&lt;br /&gt;
#* Reporting on the status of projects in the community project program to the board periodically (via Chair)&lt;br /&gt;
#* Preparing and recommending community project process and criteria to the board.&lt;br /&gt;
#* See [[OSGeo_Community_Projects]] for more information&lt;br /&gt;
# [https://www.osgeo.org/about/committees/incubation/incubation-process/ OSGeo Incubation process]&lt;br /&gt;
#* Reviewing applications for incubation and making recommendations to the board on projects that should be admitted into incubation.&lt;br /&gt;
#* Appointing [https://www.osgeo.org/about/committees/incubation/mentor/ mentors] for incubation projects.&lt;br /&gt;
#* Reviewing progress of projects against incubation requirements, and recommending projects for full project status to the board, when deemed appropriate.&lt;br /&gt;
#* Reporting on the status of projects in incubation and the incubation process to the board periodically (via Chair).&lt;br /&gt;
#* Preparing and recommending incubation process and criteria to the board.&lt;br /&gt;
&lt;br /&gt;
The OSGeo incubation committee is not responsible for graduated OSGeo Projects. Graduated OSGeo projects are recognized as a committee who report directly to the board via their project officer.&lt;br /&gt;
&lt;br /&gt;
== Supporting project teams ==&lt;br /&gt;
&lt;br /&gt;
If you would like your software project to listed on the website, or apply to become an OSGeo Community project, please send a description of your project to the OSGeo Incubation Committee Mailing List. &lt;br /&gt;
&lt;br /&gt;
We look forward to helping you!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Responsibility&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Website Listing&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot;  style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Project&lt;br /&gt;
|-&lt;br /&gt;
| Geospatial &amp;lt;br /&amp;gt;&lt;br /&gt;
- README or project description&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Geospatial &amp;lt;br /&amp;gt;&lt;br /&gt;
- User guide or quickstart&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- See LICENSE.md&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- Check headers&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Free or Open Source License &amp;lt;br /&amp;gt;&lt;br /&gt;
- Providence Review&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- See CONTRIBUTING.md&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- History of pull requests or patches&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Participatory&amp;lt;br /&amp;gt;&lt;br /&gt;
- CODE_OF_CONDUCT.md&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Open Community&amp;lt;br /&amp;gt;&lt;br /&gt;
- communication channel&amp;lt;br /&amp;gt;&lt;br /&gt;
- decision making process&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Active Healthy Community&amp;lt;br /&amp;gt;&lt;br /&gt;
- user and developer collaboration&amp;lt;br /&amp;gt;&lt;br /&gt;
- long term viability&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Development Process&amp;lt;br /&amp;gt;&lt;br /&gt;
- version control&amp;lt;br /&amp;gt;&lt;br /&gt;
- issue tracker&amp;lt;br /&amp;gt;&lt;br /&gt;
- leadership open to new members&amp;lt;br /&amp;gt;&lt;br /&gt;
- transparent decision making&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Documentation&amp;lt;br /&amp;gt;&lt;br /&gt;
- user documentation&amp;lt;br /&amp;gt;&lt;br /&gt;
- developer documentation&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Release Procedure&amp;lt;br /&amp;gt;&lt;br /&gt;
- release process&amp;lt;br /&amp;gt;&lt;br /&gt;
- documented testing process&amp;lt;br /&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-weight: bold;&amp;quot; | Foundation Resources&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Website Listing&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;155&amp;quot;  style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | OSGeo Project&lt;br /&gt;
|-&lt;br /&gt;
| website project list&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| website choose-a-project&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| OSGeo Live&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Marketing Collateral&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| Representation&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| project officer&lt;br /&gt;
|-&lt;br /&gt;
| infrastructure and facilities&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| promotion &amp;amp; marketing&lt;br /&gt;
| &lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|-&lt;br /&gt;
| budget&lt;br /&gt;
|&lt;br /&gt;
| osgeo board&lt;br /&gt;
| project budget&lt;br /&gt;
|-&lt;br /&gt;
| fundraising&lt;br /&gt;
|&lt;br /&gt;
| X&lt;br /&gt;
| X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Financial support ===&lt;br /&gt;
&lt;br /&gt;
The incubation process establishes a project as a full fledged OSGeo committee, with a project project officer, with direct access to OSGeo treasurer, and reporting to the board during annual general meeting.&lt;br /&gt;
&lt;br /&gt;
While Community projects are not recognized as an independent committee, the OSGeo board maintains an &amp;quot;OSGeo Community&amp;quot; initiative with budget to support your activities. Attend one of the OSGeo board monthly meetings, or ask on the board mailing list, if your project has an activity that can benefit from financial support.&lt;br /&gt;
&lt;br /&gt;
For more information see [https://github.com/OSGeo/osgeo/blob/master/board/documents/osgeo_financial_guidance.pdf osgeo_financial_guidence.pdf] &lt;br /&gt;
&lt;br /&gt;
=== Branding ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Community&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;310&amp;quot; style=&amp;quot;text-align: center; font-weight: bold;&amp;quot; | Project&lt;br /&gt;
|-&lt;br /&gt;
| [[File:OSGeo community.png|frameless|OSGeo Community Project]]&lt;br /&gt;
| [[File:OSGeo project.png|frameless|OSGeo Project]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 1: Add OSGeo Website Project Page ==&lt;br /&gt;
&lt;br /&gt;
To be listed on the OSGeo website:&lt;br /&gt;
&lt;br /&gt;
# Be geospatial&lt;br /&gt;
#* Confirm by checking README or project description&lt;br /&gt;
# Have a free license or open source license&lt;br /&gt;
#* The license must be OSI approved&lt;br /&gt;
# Welcome participation and new contributors.&lt;br /&gt;
#* We look for a clear contribution policy&lt;br /&gt;
&lt;br /&gt;
If you have questions about the above, or would like guidance on setting up your open source project, please reach out to us.&lt;br /&gt;
&lt;br /&gt;
Here is an example email request ([https://lists.osgeo.org/mailman/listinfo/incubator mailing list sign up required]):&lt;br /&gt;
&lt;br /&gt;
: '''to''': incubator@lists.osgeo.org&lt;br /&gt;
:&lt;br /&gt;
: '''subject''':  water topology api &lt;br /&gt;
: &lt;br /&gt;
: '''message''':&lt;br /&gt;
:&lt;br /&gt;
:: Incubation committee:&lt;br /&gt;
::&lt;br /&gt;
:: I would like to ask permission to to list my project &amp;quot;water topology api&amp;quot; on the OSGeo website in order to share my work with more people!&lt;br /&gt;
::&lt;br /&gt;
:: The project is built on PostGIS topology providing a REST API to help with watershed analysis and maintenance.&lt;br /&gt;
::&lt;br /&gt;
:: The repository is located here: https://gitlab.host.net/watertopo/ released using GPL license.&lt;br /&gt;
::&lt;br /&gt;
:: My OSGeo userid is &amp;quot;atlantis&amp;quot; and I will need permission to create a project page.&lt;br /&gt;
::&lt;br /&gt;
:: Thanks!&lt;br /&gt;
&lt;br /&gt;
== Step 2: Join OSGeo Community Projects Initiative ==&lt;br /&gt;
&lt;br /&gt;
Projects applying to the *OSGeo Community Projects* initiative are asked to:&lt;br /&gt;
&lt;br /&gt;
# Be geospatial &lt;br /&gt;
#* Confirm by checking README or project description&lt;br /&gt;
#* project page on the osgeo website&lt;br /&gt;
#* We ask projects have some user documentation, for example an OSGeo Live quickstart&lt;br /&gt;
# Have a free license or an open source license.&lt;br /&gt;
#* The license must be OSI approved&lt;br /&gt;
#* We ask that the project team check the file headers and double check the license has been appropriately applied&lt;br /&gt;
# Welcome participation and new contributors.&lt;br /&gt;
#* We look for a clear contribution policy&lt;br /&gt;
#* We ask that the project demonstrate collaboration, perhaps with a history of bug report or pull requests&lt;br /&gt;
#* Projects are required to have a code of conduct&lt;br /&gt;
&lt;br /&gt;
OSGeo provides [https://www.osgeo.org/code_of_conduct/ code of conduct guidance], many projects selecting [https://www.contributor-covenant.org/ contribution covenant]).&lt;br /&gt;
&lt;br /&gt;
OSGeo [[Community Projects]] can take part in the incubation committee for guidance on open source use, setting up project governance, promoting the project, and building the project community. We look forward to working with you. For sensitive topics (patents, copyright, trademarks, and license) you wish to attend a video meeting.&lt;br /&gt;
&lt;br /&gt;
Here is an example email request ([https://lists.osgeo.org/mailman/listinfo/incubator mailing list sign up required]):&lt;br /&gt;
&lt;br /&gt;
: '''to''': incubator@lists.osgeo.org&lt;br /&gt;
:&lt;br /&gt;
: '''subject''':  water topology community project application&lt;br /&gt;
: &lt;br /&gt;
: '''message''':&lt;br /&gt;
:&lt;br /&gt;
:: Incubation committee:&lt;br /&gt;
:: &lt;br /&gt;
:: The Water Topology project would like to apply to join the OSGeo community program. We recently re-branded to just &amp;quot;water topology&amp;quot; to reflect client libraries being include in our project. The project provides web services built on PostGIS topology to help with watershed analysis and maintenance.&lt;br /&gt;
::&lt;br /&gt;
:: The osgeo project page is available here: https://osgeo.org/projects/watertopology and our user guide is located at https://watertopo.gitlab.host.net/ .&lt;br /&gt;
::&lt;br /&gt;
:: The repository remains at https://gitlab.host.net/watertopo/ with GPL license, contribution policy and code of conduct. We have checked our source code to ensure GPL license has been correctly applied. Our issue tracker is active, and we have received a number of merge-requests.&lt;br /&gt;
:: &lt;br /&gt;
:: Thank you for your consideration and we look forward to your questions!&lt;br /&gt;
&lt;br /&gt;
== Step 3: Incubation process and Graduation ==&lt;br /&gt;
&lt;br /&gt;
The *OSGeo Project* designation is intended to recognize established projects with a diverse community of developers and users with a proven track record.&lt;br /&gt;
&lt;br /&gt;
To be recognized as an *OSGeo Project* a project team applies for the OSGeo incubation program. Successful projects are teamed up with an experienced open source mentor to help answer questions, obtain legal council, and help guide work on transparency and community development as required.&lt;br /&gt;
&lt;br /&gt;
Although incubation is a lot of work, this is opportunity for project teams to grow and improve and be publicly recognized for their accomplishment.&lt;br /&gt;
&lt;br /&gt;
To be recognized as an *OSGeo Project* we ask that project teams excel in each of areas mentioned above, see [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.pdf graduation checklist] ( [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.md markdown] ) or the comparison table on this page for more detail.&lt;br /&gt;
&lt;br /&gt;
The OSGeo incubation process takes place in three stages:&lt;br /&gt;
&lt;br /&gt;
# Initial Application&lt;br /&gt;
## Application request &lt;br /&gt;
## Mentor volunteer&lt;br /&gt;
# Incubator&lt;br /&gt;
## Project Status: project details, and a few resourcing questions for the system admin committee (see [[Project Status Template]]).&lt;br /&gt;
## Provenance Review: project team check to ensure the project is open source and has permission to distribute its source code.&lt;br /&gt;
## Project team and mentor work on [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.pdf graduation checklist] ( [https://github.com/OSGeo/osgeo/blob/master/incubation/documents/graduation_checklist.md markdown] ) priorities&lt;br /&gt;
# Graduation&lt;br /&gt;
## Mentor recommends project for graduation with motion to the incubation committee&lt;br /&gt;
## Committee chair informs the OSGeo board, who appoints the project team as a newly formed OSGeo committee&lt;br /&gt;
&lt;br /&gt;
== Incubation ==&lt;br /&gt;
&lt;br /&gt;
The following projects are currently in OSGeo incubation. The links provided are used to track the progress of incubation projects and are used by the developer team (and OSGeo mentor). In many cases the links will take you to a project specific wiki or website in order to be closer to their target community.&lt;br /&gt;
&lt;br /&gt;
When projects have completed the graduation checklist their mentor will recommend them to the Incubation committee for graduation.&lt;br /&gt;
&lt;br /&gt;
=== IstSOS ===&lt;br /&gt;
&lt;br /&gt;
'''IstSOS''': http://wiki.osgeo.org/wiki/IstSOS&lt;br /&gt;
# [[IstSOS Provenance Review]]&lt;br /&gt;
# [[IstSOS Incubation Status]] &lt;br /&gt;
# ''Mentor'': [[User: Jeff_McKenna|Jeff McKenna]]&lt;br /&gt;
&lt;br /&gt;
=== Opticks ===&lt;br /&gt;
 &lt;br /&gt;
'''Opticks''': http://opticks.org&lt;br /&gt;
# [[Opticks Incubation Status]]&lt;br /&gt;
# no provenance review provided&lt;br /&gt;
# [[Opticks Incubation Checklist]]&lt;br /&gt;
# ''Mentor'': [[User: Mark_Lucas|Mark Lucas]]&lt;br /&gt;
&lt;br /&gt;
=== Oskari ===&lt;br /&gt;
&lt;br /&gt;
'''Oskari''': http://oskari.org/&lt;br /&gt;
# [[Oskari Incubation Application]]&lt;br /&gt;
# [[Oskari Incubation Status]] &lt;br /&gt;
# [https://github.com/oskariorg/oskari-docs/wiki/Oskari-Incubation-Checklist Oskari Graduation Checklist]&lt;br /&gt;
# ''Mentor'': [[Arnulf Christl]]&lt;br /&gt;
&lt;br /&gt;
=== TEAM Engine ===&lt;br /&gt;
&lt;br /&gt;
'''TEAM Engine''': http://teamengine.sourceforge.net&lt;br /&gt;
# [https://trac.osgeo.org/osgeo/ticket/1016 Incubation Application] from 2012&lt;br /&gt;
# [https://github.com/opengeospatial/teamengine/wiki/OSGEO-Graduation TEAM Engine Incubation Checklist]&lt;br /&gt;
# ''Mentor'': [[User: Jive|Jody Garnett]]&lt;br /&gt;
&lt;br /&gt;
=== TorchGeo ===&lt;br /&gt;
&lt;br /&gt;
'''TorchGeo''': https://www.osgeo.org/projects/torchgeo/&lt;br /&gt;
# [[TorchGeo Provenance Review]] https://wiki.osgeo.org/wiki/TorchGeo_Code_Provenance&lt;br /&gt;
# [[TorchGeo Incubation Status]] https://trac.osgeo.org/osgeo/ticket/3519&lt;br /&gt;
# ''Mentor'': [[User:darkblueb|Brian M Hamlin]]&lt;br /&gt;
&lt;br /&gt;
== Graduated == &lt;br /&gt;
&lt;br /&gt;
The following status and provenance documents are for historical purposes, and are no longer actively maintained. &lt;br /&gt;
&lt;br /&gt;
* Community Mapbuilder: [[Community Mapbuilder Incubation Progress]] | [[Community Mapbuilder Provenance Review]] (Entered 2006-02-04, Graduated 2006-07-14, Mentor: Steve Lime)&lt;br /&gt;
* deegree: [[deegree Incubation Status]] | [[deegree Provenance Review]] (Entered: 2008-06-09, Graduated 2010-02-04, Mentor: Jody Garnett)&lt;br /&gt;
* FDO: [[FDO Incubation Status]] | [[FDO Provenance Review]] (Entered 2007-03-06, Graduated 2008-02-08, Mentor: Daniel Morissette)&lt;br /&gt;
* GEOS: [[GEOS Incubation Status]] | [[GEOS Provenance Review]] (Entered 2007-11-02, Graduated 2012-04-28, Mentor: Frank Warmerdam)&lt;br /&gt;
* GDAL/OGR: [[GDAL Incubation Progress]] | [[GDAL Provenance Review]] (Entered 2006-02-04, Graduated 2008-02-08, Mentor: Paul Spencer)&lt;br /&gt;
* Geomajas: [[GeoMajas Incubation Status]] | [[GeoMajas Provenance Review]] (Entered 2010-03-04, Graduated 2010-11-22, Mentor: Paul Spencer)&lt;br /&gt;
* GeoNetwork: [[GeoNetwork Incubation Status]] | [[GeoNetwork Provenance Review]] (Entered 2006-11-10, Graduated 2008-06-21, Mentor: Jody Garnett)&lt;br /&gt;
* GeoNode: [[GeoNode Incubation Status]] [[GeoNode Provenance Review]] [[GeoNode Incubation Checklist]] (Entered 2015-08-13, Graduated 2016-11-09, Mentor: David Bitner)&lt;br /&gt;
* GeoMOOSE: [[GeoMoose Incubation Status]] | [[GeoMoose Provenance Review]] | [[GeoMoose Incubation Checklist]] (Entered 2011-12-08, Graduated 2013-04-19, Mentor: Jody Garnett)&lt;br /&gt;
* GeoTools: [[GeoTools Incubation Progress]] | [[GeoTools Provenance Review]] (Entered 2006-02-27, Graduated 2008-07-18, Mentor: Cameron Shorter)&lt;br /&gt;
* GeoServer: [http://old.geoserver.org/OSGEO%20incubation%20questionnaire.html Incubation Questionnaire] | [http://old.geoserver.org/GeoServer%20Incubation%20Status.html Incubation Status] | [https://github.com/geoserver/geoserver/wiki/GeoServer-Provenance-Review Provenance Review] | [https://github.com/geoserver/geoserver/wiki/GeoServer-Incubation-Checklist Incubation Checklist] | [[Geoserver Mentor Notes]] (Entered 2009-11-05, Graduated 2013-03-15, Mentor: Landon Blake)&lt;br /&gt;
* gvSIG: [[gvSIG Incubation Status]] | [[gvSIG Provenance Review]] | [[gvSIG Incubation Checklist]] (Entered 2007-09-07, Graduated 2015-11-26, Mentor: Dimitris Kotzinos)&lt;br /&gt;
* GRASS: [[GRASS Incubation Progress]] | [[GRASS Provenance Review]] (Entered 2006-02-27, Graduated 2008-02-08, Mentor: Norman Vine and Arnulf Christl)&lt;br /&gt;
* Mapbender: [[Mapbender Incubation Progress]] | [[Mapbender Provenance Review]] (Entered 2006-02-04, Graduated 2006-07-15, Mentor: Paul Spencer)&lt;br /&gt;
* MapFish: [[MapFish Incubation Status]] | [[MapFish Provenance Review]] (Entered 2009-11-09, Graduated 2011-09-01, Mentor: Gary Sherman)&lt;br /&gt;
* MapGuide Open: [[MapGuide Incubation Status]] | [[MapGuide Provenance Review]] (Entered 2006-02-04, Graduated 2007-03-02, Mentor: Daniel Morissette)&lt;br /&gt;
* MapServer: [[MapServer incubation status]] | [[MapServer Provenance Review]] (Entered 2006-02-04, Graduated 2008-12-16, Mentor: Chris Holmes)&lt;br /&gt;
* Marble: [[Marble Incubation Status]] | [[Marble Code Provenance Review]] | [[Marble Graduation Checklist]] (Entered 2012-10-12, Graduated 2013-10-17, Mentor: Arnulf Christl)&lt;br /&gt;
* OpenLayers: [[OpenLayers Incubation Status]] | [[OpenLayers Provenance Review]] (Entered 2006-11-10, Graduated 2007-11-16, Mentor: Howard Butler)&lt;br /&gt;
* Orfeo ToolBox (OTB): [[OTB Project Incubation Status]] | [[OTB Code Provenance Review]] (Entered 2009-10-26, Graduated 2017-07-20, Mentor: Landon Blake)&lt;br /&gt;
* OSGeoLive:  [[Live_GIS_Incubation_Graduation_Checklist|Graduation Checklist]] (Entered 2017-10-05, Graduated 2018-04-14, Mentor: Jody Garnett)&lt;br /&gt;
* pgRouting: [https://github.com/pgRouting/pgrouting/wiki/Project-Graduation-Checklist Project Graduation Checklist] (Entered: 2022-07, Graduated 2024-11, Mentor: Angelos Tzotsos)&lt;br /&gt;
* PostGIS: [[PostGIS Incubation Status]] | [[PostGIS Provenance Review]] (Entered 2009-08-06, Graduated 2012-06-07, Mentor: Arnulf Christl)&lt;br /&gt;
* PROJ: [https://trac.osgeo.org/osgeo/ticket/2268 Incubation Application] | [https://github.com/OSGeo/PROJ/wiki/Incubation-checklist PROJ Graduation Checklist] (Entered 2019-05-04, Graduated 2019-11-26, Mentor: Michael Smith )&lt;br /&gt;
* pycsw: [https://github.com/geopython/pycsw/wiki/Project-Status Incubation Status] | [https://github.com/geopython/pycsw/wiki/Project-Graduation-Checklist Graduation Checklist] | [https://github.com/geopython/pycsw/wiki/pycsw-Provenance-Review Provenance Review] (Entered 2013-03-30, Graduated 2015-03-05, Mentor: Jeff McKenna)&lt;br /&gt;
* pygeoapi: [https://github.com/geopython/pygeoapi/wiki/OSGeoIncubation-ProjectStatus Incubation Status] | [https://github.com/geopython/pygeoapi/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/geopython/pygeoapi/wiki/ProjectProvenanceReview Provenance Review] (Entered 2021-11-03, Graduated 2022-08-21, Mentor: Michael Smith)&lt;br /&gt;
* PyWPS: [[PyWPS|Incubation Status]] | [https://github.com/geopython/pywps/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/geopython/pywps/wiki/ProjectProvenanceReview Provenance Review] (Entered 2009-02-27, Graduated 2018-04-11, Mentor: Tom Kralidis)&lt;br /&gt;
* OSSIM: [[OSSIM incubation status]] | [http://trac.osgeo.org/ossim/wiki/ossimprovenance OSSIM Provenance Review] (Entered 2006-02-27, Graduated 2009-06-02, Mentor: Richard Gould)&lt;br /&gt;
* QGIS: [[QGIS Incubation Status]] | [[QGIS Provenance Review]] (Entered 2007-03-02, Graduated 2008-03-14, Mentor: Bob Bray)&lt;br /&gt;
* ZOO-Project: [https://github.com/ZOO-Project/ZOO-Project/wiki/OSGeoIncubationStatus Incubation Status] | [https://github.com/ZOO-Project/ZOO-Project/wiki/ProjectGraduationChecklist Graduation Checklist] | [https://github.com/ZOO-Project/ZOO-Project/wiki/ProvenanceReview Provenance Review] (Entered 2011-11-09, Graduated 2023-06-21, Mentors: Tom Kralidis, Dimitris Kotzinos, Frank Warmerdam)&lt;br /&gt;
&lt;br /&gt;
The initial projects to go through the incubation process helped define what is required. The above pages tracked the progress (and capture the experience) of these projects.&lt;br /&gt;
&lt;br /&gt;
== Withdrawn == &lt;br /&gt;
&lt;br /&gt;
The following projects did not complete incubation:&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.rasdaman.org rasdaman]''': :  [[ rasdaman Incubation Status ]] | [http://rasdaman.org/wiki/OSGeoCodeProvenance Code Provenance] | [http://www.rasdaman.org/wiki/OSGeoIncubationChecklist Incubation Checklist] (Mentor [[User: Bruce.bannerman|Bruce Bannerman]] )&lt;br /&gt;
* '''[http://trac.osgeo.org/metacrs/ MetaCRS]''':  ::  [[MetaCRS Incubation Status]] (Mentor: Daniel Morissette)&lt;br /&gt;
&lt;br /&gt;
== Committee Operation ==&lt;br /&gt;
&lt;br /&gt;
The incubation committee operates within the OSGeo committee guidelines, operating in a close working relationship with the OSGeo board as reflected in our responsibilities above.&lt;br /&gt;
&lt;br /&gt;
* Voting members: Voting members are maintained on this page as outlined below. This committee is volunteer based with committee member ship driven by email request to be added or removed. Inactive members (see below) are removed as needed to preserve committee function.&lt;br /&gt;
* Project mentors: Have volunteered to represent our organization at a personal level as a guest on the projects email list and meetings. Project mentors are responsible for recommending when a project is ready for graduation based on this first hand experience. For more information see mentor guidelines.&lt;br /&gt;
* Committee chair: Committee chair appointed by motion, result forward to the board for approval and recognition as an officer of the foundation. Committee chair is responsible for operation of the committee.&lt;br /&gt;
* Communication: This committee operates on the [https://lists.osgeo.org/mailman/listinfo/incubator incubator mailing list]. With the occasional breakout IRC meeting, hangout, or phone call to explore specific issues.&lt;br /&gt;
* Decision making: Decision making is performed by email motion. Motions are held open for a two week period. Each motion requires a 50% quorum within the two week period. Voting consists of +1 (approval), +0 (slight agreement), -0 (slight disagreement), -1 (against). The committee chair is responsible for replying to the email thread with voting results and motion resolution.&lt;br /&gt;
** Email motions should be clearly worded and have a subject line “Motion:”.&lt;br /&gt;
** Motions are held open for a two week period to give everyone a chance to respond, this accounts for volunteers that are only available on weekends.&lt;br /&gt;
** At discretion of the chair a motion may be held open longer than two weeks.&lt;br /&gt;
** If a motion does not gather a 50% response within a two week period we may need to revisit our active member list – removing members that have not voted within the last year.&lt;br /&gt;
** Voting +0 and -0 are a good way to reach quorum for volunteers that have not had a chance to follow the discussion, or to abstain if you feel uncomfortable voting on a topic.&lt;br /&gt;
** There is no veto in the incubation committee, but we tend to respect -1 votes and withdraw motions that are divisive. It is noted that when reviewing graduation checklists -1 votes tend to track outstanding issues that are then addressed within the voting period.&lt;br /&gt;
* Independence: Our mandate is focused on providing to the OSGeo board as outlined above.&lt;br /&gt;
&lt;br /&gt;
Example email:&lt;br /&gt;
  &lt;br /&gt;
  Subject: motion: accept project x as a community project&lt;br /&gt;
  &lt;br /&gt;
  The following motion has been made by Firstname Lastname:&lt;br /&gt;
  &lt;br /&gt;
    Motion to accept project x as an community project.&lt;br /&gt;
  &lt;br /&gt;
  This motion is held open for two weeks closing MONTH DAY, requiring 50% quorum,&lt;br /&gt;
  from the following incubation committee members:&lt;br /&gt;
  &lt;br /&gt;
  * LINE BY LINE BULLETED LIST OF CURRENT MEMBERS&lt;br /&gt;
&lt;br /&gt;
A subsequent email will be sent when the motion is completed, either by the elapsed time period, or by unanimous consent before the closing period.&lt;br /&gt;
&lt;br /&gt;
=== Committee Members ===&lt;br /&gt;
&lt;br /&gt;
'''Volunteers Welcome''' - if you would like to take part we are always looking for new members, sign up to the [https://lists.osgeo.org/mailman/listinfo/incubator email list], and introduce yourself to volunteer.&lt;br /&gt;
&lt;br /&gt;
Current members:&lt;br /&gt;
&lt;br /&gt;
* [[User:Kalxas|Angelos Tzotsos]]&lt;br /&gt;
* Arnulf Christl&lt;br /&gt;
* Bob (CI-StPaul) Basques&lt;br /&gt;
* [[User:darkblueb|Brian M Hamlin]] &lt;br /&gt;
* Daniel Morissette&lt;br /&gt;
* Dimitris Kotzinos&lt;br /&gt;
* Frank Warmerdam&lt;br /&gt;
* [[User:Jive|Jody Garnett]] (chair)&lt;br /&gt;
* Michael Smith&lt;br /&gt;
* [[User:Nickbearman|Nick Bearman]]&lt;br /&gt;
* [[User:Robe|Regina Obe]]&lt;br /&gt;
* Steve Lime&lt;br /&gt;
* Tom Kralidis&lt;br /&gt;
&lt;br /&gt;
'''Thank you''' -  we ask that volunteers remain active, joining the discussion and voting on the email list. If you are unable to take part please send us an email. As volunteers we understand that life can get in the way of advocacy – you are welcome to rejoin at any time. We will also retire inactive members as needed. Prior members:&lt;br /&gt;
&lt;br /&gt;
* Bruce Bannerman&lt;br /&gt;
* Landon Blake&lt;br /&gt;
* Robert Bray&lt;br /&gt;
* Howard Butler&lt;br /&gt;
* [[User:JoCook|Jo Cook]]&lt;br /&gt;
* Chris Holmes&lt;br /&gt;
* Julien-Samuel Lacroix&lt;br /&gt;
* Mark Lucas&lt;br /&gt;
* Judit Mays&lt;br /&gt;
* Jeff McKenna&lt;br /&gt;
* Markus Neteler&lt;br /&gt;
* Markus Schneider&lt;br /&gt;
* Cameron Shorter&lt;br /&gt;
* Paul Spencer&lt;br /&gt;
* Jeroen Ticheler&lt;br /&gt;
* Norman Vine&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
* Official incubator public web page is at: https://www.osgeo.org/about/committees/incubation/ (with members list).&lt;br /&gt;
* [[OSGeo_Community_Projects]]&lt;br /&gt;
* [[Incubation FAQ]]&lt;br /&gt;
* [[Official_IncCom_Documents]]&lt;br /&gt;
* Incubation process docs: https://www.osgeo.org/about/committees/incubation/incubation-process/ (original [[Official_IncCom_Documents|wiki draft documents]])&lt;br /&gt;
* [[Incubation Badges]]&lt;br /&gt;
&lt;br /&gt;
Draft or discussion documents&lt;br /&gt;
* Draft [[Commiter Responsibilities Guidelines]]&lt;br /&gt;
* Draft [[5-star-rating]] - discussion about more fine incubation procedure&lt;br /&gt;
* OSGeo Distribution and Committer [[http://www.osgeo.org/content/foundation/legal/licenses.html licenses] which can be used as is, or as an example for projects starting off with participatory open source.&lt;br /&gt;
** Geotools Copyright Assignment ([http://download.osgeo.org/osgeo/legal/GeotoolsAssignmentToOSGeo.pdf pdf], [http://download.osgeo.org/osgeo/legal/GeotoolsAssignmentToOSGeo.odt odt]) - previous example&lt;br /&gt;
** [[Project Copyright Assignment]] - previous example&lt;br /&gt;
* [[Contributor Agreement]] and FAQ &lt;br /&gt;
* [[Incubation Phases]] proposal&lt;br /&gt;
&lt;br /&gt;
Document Refresh 2014&lt;br /&gt;
* [[Project Graduation Checklist]]&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [[Project Infrastructure Migration]]&lt;br /&gt;
* [http://producingoss.com/html-chunk/index.html Producing OSS] - by Karl Fogel - an excellent primer on running an FOSS project.&lt;br /&gt;
&lt;br /&gt;
Reports:&lt;br /&gt;
* [[Incubation Committee Report 2012]]&lt;br /&gt;
* [[Incubation Committee Report 2011]]&lt;br /&gt;
&lt;br /&gt;
Trac:&lt;br /&gt;
* [http://trac.osgeo.org/osgeo/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;component=Incubator&amp;amp;order=priority Open Incubator Trac Issues]&lt;br /&gt;
* [http://trac.osgeo.org/osgeo/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;component=Incubator&amp;amp;keywords=%7Eapplication&amp;amp;order=priority Pending Incubation Applications]&lt;br /&gt;
&lt;br /&gt;
== Meetings and Reports ==&lt;br /&gt;
Meetings are scheduled via [http://lists.osgeo.org/mailman/listinfo/incubator Mailing List] and take place via [[Getting_Started#Jump_on_IRC | IRC]] at the times specified in the [[Foundation Calendar]].&lt;br /&gt;
* [[IncCom Meeting1|First Meeting]] - March 13th 2006&lt;br /&gt;
* [[IncCom Meeting2|Second Meeting]] - March 20th 2006&lt;br /&gt;
* [[IncCom Meeting3|Third Meeting]] - March 27th 2006&lt;br /&gt;
* [[IncCom Meeting4|Fourth Meeting]] - April 10th 2006&lt;br /&gt;
* [[IncCom Meeting5|Fifth Meeting]] - April 24th 2006&lt;br /&gt;
* [[IncCom Meeting6|Sixth Meeting]] - June 19th 2006&lt;br /&gt;
* [[IncCom Meeting7|Seventh Meeting]] - August 7th 2006&lt;br /&gt;
* [[IncCom Meeting8|Eighth Meeting]] - October 30th 2006&lt;br /&gt;
* [[IncCom Meeting9|Nineth Meeting]] - February 12th 2007&lt;br /&gt;
* [[IncCom Meeting10|Tenth Meeting]] - June 11th 2007&lt;br /&gt;
* [[IncCom Meeting11|Eleventh Meeting]] - October 29th 2007 &lt;br /&gt;
* [[IncCom Meeting12|Twelfth Meeting]] - September 8th 2008 &lt;br /&gt;
* [[IncCom Meeting13|Thirteenth Meeting]] - October 29th 2009&lt;br /&gt;
* [[IncCom Meeting14|Fourteenth Meeting]] - March 1th 2010&lt;br /&gt;
* [[IncCom Meeting15]] - Nov 21 2011&lt;br /&gt;
* [[IncCom Meeting16]] - Jan 17 2012&lt;br /&gt;
* [[IncCom Meeting17]] - March 19 2012&lt;br /&gt;
* [[IncCom Meeting18]] - May 21 2012&lt;br /&gt;
* [[IncCom Meeting19]] - July 23 2012&lt;br /&gt;
* [[IncCom Meeting20]] - Sep 24 2012&lt;br /&gt;
* [[IncCom Meeting21]] - Feb 18 2013&lt;br /&gt;
* [[IncCom Report22]] - 2013 Q2&lt;br /&gt;
* [[IncCom Report23]] - 2013 Q3&lt;br /&gt;
* [[IncCom Report24]] - 2014 Q1&lt;br /&gt;
* [[Fall 2014 Committee Report for OSGeo Journal]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Incubation]]&lt;br /&gt;
[[Category:Committees]]&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135320</id>
		<title>Talk:TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135320"/>
		<updated>2026-02-03T05:02:55Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Note''': AI LLM assistance was employed in the production of this document.&lt;br /&gt;
&lt;br /&gt;
  {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  |+ LLM Engine contributions by operator&lt;br /&gt;
  |-&lt;br /&gt;
  ! Operator !! Tool !! Model 1 !! Model 2&lt;br /&gt;
  |-&lt;br /&gt;
  | '''omniverdi''' || opencode || claude-opus || devstral2-2512&lt;br /&gt;
  |-&lt;br /&gt;
  | '''darkblueb''' || ollama local-only || gemma3:12b || qwen3-coder &lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On Mon, Feb 2, 2026 at 8:08 AM Brian M Hamlin via Incubator &amp;lt;incubator@lists.osgeo.org&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
    Hello All -&lt;br /&gt;
&lt;br /&gt;
      With this email, I am pleased to present to the OSGeo Incubation Committee an OSGeo Project Candidate :  TorchGeo [0].  As Project Mentor I have worked closely with the TorchGeo PSC and code base.  In my best judgement, I find that TorchGeo is not only a suitable candidate, but in fact a substantial addition to a large set of consequential and significant geospatial software projects of our current era, represented by OSGeo. &lt;br /&gt;
&lt;br /&gt;
    The Program Steering Committee (PSC) of TorchGeo is composed of a small but diverse group of committers; the PSC has defined clear standards for code contributions, bugs, features and additions. Due to the unique character of this training and benchmarking environment, many complete teams from more than a hundred institutions worldwide are contributing and active in the project.  As a Machine Learning and Artificial Intelligence environment itself, new data LICENSE challenges are present as well.&lt;br /&gt;
&lt;br /&gt;
    You will find abundant links and details in the project Application [1] and Code Review [2].  The TorchGeo project release cycle is integrated with OSGeo Planet and news -- special thanks to JSanz.&lt;br /&gt;
&lt;br /&gt;
    Please review and cast your vote at your earliest convenience. Questions and other inquiries will be handled on an OSGeo TRAC instance ticket [3].   The voting period shall begin with the date of this email, and scheduled to conclude in 14 days hence.&lt;br /&gt;
&lt;br /&gt;
    Special gratitude on this important day goes out to the OSGeo Systems Administration Team for TRAC, MediaWiki, email and support infrastructure&lt;br /&gt;
&lt;br /&gt;
      signed --Brian M Hamlin    /  MAPLABS  /  TorchGeo Project Mentor on behalf of #osgeo&lt;br /&gt;
&lt;br /&gt;
    ##-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    [0] https://www.osgeo.org/projects/torchgeo/&lt;br /&gt;
&lt;br /&gt;
    [1] https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
    [2] https://wiki.osgeo.org/wiki/TorchGeo_Code_Provenance&lt;br /&gt;
&lt;br /&gt;
    [3] https://trac.osgeo.org/osgeo/ticket/3519&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congrats to team, and thanks for mentoring. I will review this weekend. &lt;br /&gt;
&lt;br /&gt;
- -&lt;br /&gt;
Jody Garnett&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    _______________________________________________&lt;br /&gt;
    Incubator mailing list&lt;br /&gt;
    Incubator@lists.osgeo.org&lt;br /&gt;
    https://lists.osgeo.org/mailman/listinfo/incubator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135319</id>
		<title>Talk:TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_Code_Provenance&amp;diff=135319"/>
		<updated>2026-02-03T05:01:51Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Note''': AI LLM assistance was employed in the production of this document.&lt;br /&gt;
&lt;br /&gt;
  {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  |+ LLM Engine contributions by operator&lt;br /&gt;
  |-&lt;br /&gt;
  ! Operator !! Tool !! Model 1 !! Model 2&lt;br /&gt;
  |-&lt;br /&gt;
  | '''omniverdi''' || opencode || claude-opus || devstral2-2512&lt;br /&gt;
  |-&lt;br /&gt;
  | '''darkblueb''' || ollama local-only || gemma3:12b || qwen3-coder &lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Congrats to team, and thanks for mentoring. I will review this weekend. &lt;br /&gt;
&lt;br /&gt;
- -&lt;br /&gt;
Jody Garnett&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Mon, Feb 2, 2026 at 8:08 AM Brian M Hamlin via Incubator &amp;lt;incubator@lists.osgeo.org&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
    Hello All -&lt;br /&gt;
&lt;br /&gt;
      With this email, I am pleased to present to the OSGeo Incubation Committee an OSGeo Project Candidate :  TorchGeo [0].  As Project Mentor I have worked closely with the TorchGeo PSC and code base.  In my best judgement, I find that TorchGeo is not only a suitable candidate, but in fact a substantial addition to a large set of consequential and significant geospatial software projects of our current era, represented by OSGeo. &lt;br /&gt;
&lt;br /&gt;
    The Program Steering Committee (PSC) of TorchGeo is composed of a small but diverse group of committers; the PSC has defined clear standards for code contributions, bugs, features and additions. Due to the unique character of this training and benchmarking environment, many complete teams from more than a hundred institutions worldwide are contributing and active in the project.  As a Machine Learning and Artificial Intelligence environment itself, new data LICENSE challenges are present as well.&lt;br /&gt;
&lt;br /&gt;
    You will find abundant links and details in the project Application [1] and Code Review [2].  The TorchGeo project release cycle is integrated with OSGeo Planet and news -- special thanks to JSanz.&lt;br /&gt;
&lt;br /&gt;
    Please review and cast your vote at your earliest convenience. Questions and other inquiries will be handled on an OSGeo TRAC instance ticket [3].   The voting period shall begin with the date of this email, and scheduled to conclude in 14 days hence.&lt;br /&gt;
&lt;br /&gt;
    Special gratitude on this important day goes out to the OSGeo Systems Administration Team for TRAC, MediaWiki, email and support infrastructure&lt;br /&gt;
&lt;br /&gt;
      signed --Brian M Hamlin    /  MAPLABS  /  TorchGeo Project Mentor on behalf of #osgeo&lt;br /&gt;
&lt;br /&gt;
    ##-----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    [0] https://www.osgeo.org/projects/torchgeo/&lt;br /&gt;
&lt;br /&gt;
    [1] https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
    [2] https://wiki.osgeo.org/wiki/TorchGeo_Code_Provenance&lt;br /&gt;
&lt;br /&gt;
    [3] https://trac.osgeo.org/osgeo/ticket/3519&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    _______________________________________________&lt;br /&gt;
    Incubator mailing list&lt;br /&gt;
    Incubator@lists.osgeo.org&lt;br /&gt;
    https://lists.osgeo.org/mailman/listinfo/incubator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135261</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135261"/>
		<updated>2026-01-21T04:02:38Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Code Provenance Review Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (PSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a PSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for PSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the PSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135259</id>
		<title>TorchGeo Code Provenance</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_Code_Provenance&amp;diff=135259"/>
		<updated>2026-01-20T23:49:28Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Code Provenance Review Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Provenance Review Process=&lt;br /&gt;
&lt;br /&gt;
TorchGeo project &lt;br /&gt;
'''refer : https://www.osgeo.org/about/committees/incubation/graduation/'''&lt;br /&gt;
&lt;br /&gt;
'''Incubation application questionnaire link : https://trac.osgeo.org/osgeo/wiki/TorchGeo'''&lt;br /&gt;
&lt;br /&gt;
==Document Status==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Version:''' || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| '''Status:''' || Updated&lt;br /&gt;
|-&lt;br /&gt;
| '''Last Edited:''' || 15 Jan 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
Show to &amp;quot;reasonable comfort level&amp;quot; that TorchGeo &lt;br /&gt;
does not have improperly contributed code, and that the code is all under the Project license.&lt;br /&gt;
&lt;br /&gt;
Notice: ''It is not the goal to be able to prove that every source file, and every contribution to those files, was contributed properly. The onus is not on the OSGeo Incubation Committee to prove there are no problems. However, OSGeo Incubation Committee does need to ensure that OSGeo does not officially endorse code with provenance issues that could have identified and corrected with a reasonable effort.''&lt;br /&gt;
&lt;br /&gt;
=TorchGeo Provenance Review=&lt;br /&gt;
&lt;br /&gt;
== Project History ==&lt;br /&gt;
&lt;br /&gt;
TorchGeo started as an internship project at Microsoft's AI for Good Lab in 2021, with continued support and funding from the University of Illinois Urbana-Champaign and the National Center for Supercomputing Applications. Since then, TorchGeo has been adopted by a diverse community of researchers from academia, industry, and government research institutions who have contributed to the success of the library. In 2025, we founded a new TorchGeo Organization to manage the TorchGeo Project, with the support of members from the above organizations.&lt;br /&gt;
&lt;br /&gt;
'''Key milestones''':&lt;br /&gt;
&lt;br /&gt;
- '''2021-05-11''': Initial commit (2330aad) by Adam J. Stewart&lt;br /&gt;
&lt;br /&gt;
- '''2021-2024''': Organic growth to 120+ contributors&lt;br /&gt;
&lt;br /&gt;
- '''2025''': Formation of TorchGeo Organization with formal governance structure&lt;br /&gt;
&lt;br /&gt;
- '''2026''': OSGeo incubation application submitted&lt;br /&gt;
&lt;br /&gt;
==Libraries==&lt;br /&gt;
&lt;br /&gt;
All dependencies are external (not bundled in source tree). All licenses are OSI-approved and compatible with MIT.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Library !! License !! Compatible? !! In Core? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || External || - || Yes || Tensor operations&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || External || - || Yes || Geospatial dataframes&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || External || - || Yes || CLI argument parsing&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || External || - || Yes || Self-supervised learning&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || External || - || Yes || Training framework&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF || Yes || External || - || Yes || Plotting&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || External || - || Yes || Numerical computing&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || External || - || Yes || Data manipulation&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND [https://github.com/python-pillow/Pillow/issues/1507 *] /  MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || External || - || Yes || Image I/O&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || External || - || Yes || Cartographic projections&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || External || - || Yes || Geospatial raster I/O&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || External || - || Yes || Segmentation architectures&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || External || - || Yes || Geometric operations&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || External || - || Yes || Vision model zoo&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || External || - || Yes || PyTorch core&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || External || - || Yes || Metrics computation&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || External || - || Yes || Vision utilities&lt;br /&gt;
|-&lt;br /&gt;
| *kornia || Apache-2.0 || Yes || External || - || Yes || Computer vision ops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Copyright Holders==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Contact !! Issues !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || N/A (collective) || None || Per LICENSE file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The MIT License file states: &amp;quot;Copyright (c) TorchGeo Contributors.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is a collective copyright model - individual contributors retain copyright but license under MIT.  Historical other markings include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git gr Copyright | grep -v TorchGeo&lt;br /&gt;
torchgeo/models/convlstm.py:# Copyright (c) 2017 Andrea Palazzi&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Adapted from https://github.com/bwconrad/flexivit. Copyright (c) 2023 Ben Conrad.&lt;br /&gt;
torchgeo/models/copernicusfm.py:    Copyright (c) Microsoft Corporation.&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/earthloc.py:    Adapted from https://github.com/gmberton/EarthLoc. Copyright (c) 2024 Gabriele Berton&lt;br /&gt;
torchgeo/models/ltae.py:# Copyright (c) 2020 VSainteuf (Vivien Sainte Fare Garnot)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committers ==&lt;br /&gt;
'''Total human contributors:''' 122&lt;br /&gt;
&lt;br /&gt;
'''Total commits:''' 2778 (excluding bots)&lt;br /&gt;
&lt;br /&gt;
'''Top contributors''' (PSC members marked with *):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Committer !! Email !! Affiliation&lt;br /&gt;
|-&lt;br /&gt;
| Adam J. Stewart * || ajstewart426@gmail.com || TUM / UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Caleb Robinson * || calebrob6@gmail.com || AI for Good Msft &lt;br /&gt;
|-&lt;br /&gt;
| Isaac Corley * || isaac.corley@proton.me || Wherobots &lt;br /&gt;
|-&lt;br /&gt;
| Nils Lehmann * || nils.lehmann24@gmail.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Ashwin Nair * || ashnair0007@gmail.com || Space42 &lt;br /&gt;
|-&lt;br /&gt;
| Anthony Ortiz * || Anthony.Ortiz@microsoft.com || Microsoft &lt;br /&gt;
|-&lt;br /&gt;
| Robin Cole || robmarkcole@gmail.com || EarthDaily&lt;br /&gt;
|-&lt;br /&gt;
| Yi Wang || wangyi111@users.noreply.github.com || TUM &lt;br /&gt;
|-&lt;br /&gt;
| Yi-Chia Chang || yichiac@users.noreply.github.com || UIUC &lt;br /&gt;
|-&lt;br /&gt;
| Burak Ekim || burakekim@users.noreply.github.com || Bundeswehr Munich &lt;br /&gt;
|-&lt;br /&gt;
| Blaz Rolih || blaz-r@users.noreply.github.com || ULjubljana, Slovenia&lt;br /&gt;
|-&lt;br /&gt;
| Maciej Kilian || iejMac@users.noreply.github.com || Stability AI &lt;br /&gt;
|-&lt;br /&gt;
| Qiusheng Wu || giswqs@gmail.com || UTenn Knoxville &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' 122 total contributors. Full list available via &amp;lt;code&amp;gt;git shortlog -sne --all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Source Files==&lt;br /&gt;
'''Total Python files:''' 557&lt;br /&gt;
&lt;br /&gt;
'''Files with copyright header:''' 557 (100%) - ''after PR #3262 merged''&lt;br /&gt;
&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! License !! Copyright Holder !! Header? !! Issues? !! Ok? !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| docs/user/metrics/update_timeline.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|-&lt;br /&gt;
| tests/data/landcoverai/split.py || MIT || TorchGeo Contributors || Yes || None || Yes || Fixed in PR #3262&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' PR https://github.com/torchgeo/torchgeo/pull/3262 adds copyright headers to the 2 files that were missing them.&lt;br /&gt;
&lt;br /&gt;
==Further Issues ==&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files via PR #3262: https://github.com/torchgeo/torchgeo/pull/3262&lt;br /&gt;
&lt;br /&gt;
* OSGeo does not require a CLA. We ask projects to think about what they want during incubation.&lt;br /&gt;
&lt;br /&gt;
* Contributor agreement confirmed&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
== TorchGeo Application Questionnaire ==&lt;br /&gt;
See the main application questionnaire for additional project details:&lt;br /&gt;
https://trac.osgeo.org/osgeo/wiki/TorchGeo&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
&lt;br /&gt;
'''This Code Provenance Review followed the OSGeo Incubation process:'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step !! Status !! Date !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1. Create Provenance Review Document || Complete || 06 Jan 2026 || Document created from [https://wiki.osgeo.org/wiki/Provenance_Review_Template Provenance Review Template]&lt;br /&gt;
|-&lt;br /&gt;
| 2. Library/Component Review || Complete || 08 Jan 2026 || 18 dependencies reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 3. Code Copyright Review || Complete || 08 Jan 2026 || 557 files reviewed, no issues found&lt;br /&gt;
|-&lt;br /&gt;
| 4. Submit to Project Mentor || Complete || 08 Jan 2026 || Brian M Hamlin (Mentor)&lt;br /&gt;
|}&lt;br /&gt;
=== Review Summary ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Components in source tree:''' || None (all external dependencies)&lt;br /&gt;
|-&lt;br /&gt;
| '''Problematic licenses:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''License conflicts:''' || None identified&lt;br /&gt;
|-&lt;br /&gt;
| '''Files reviewed:''' || 557 Python files&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with headers:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''External code derivations:''' || 2 files (both MIT licensed, properly attributed)&lt;br /&gt;
|-&lt;br /&gt;
| '''Copyright model:''' || Collective (&amp;quot;TorchGeo Contributors&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
=== Outstanding Items ===&lt;br /&gt;
* '''Pending merge:''' [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262] - adds copyright headers to 2 files&lt;br /&gt;
* '''Resolved:''' CLA/DCO status confirmation. OSGeo does not require a CLA. OSGeo asks projects to think about what they want during incubation.&lt;br /&gt;
''ajstewart'' -- We used to have a CLA when we were under MSFT. We no longer have any CLA or DCO. We currently have no plans to add one. I know the Linux Foundation requires DCO. Does OSGeo have any requirements?&lt;br /&gt;
* '''Resolved:''' a PSC Members Agreement is not required by OSGeo&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
'''The TorchGeo codebase passes the Code Provenance Review''' with no blocking issues identified. The project demonstrates good license hygiene and is ready for OSGeo incubation from a code provenance perspective.&lt;br /&gt;
&lt;br /&gt;
==Library/Component Review Process==&lt;br /&gt;
&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
=== 1. Components in Source Tree ===&lt;br /&gt;
'''Finding:''' '''None'''&lt;br /&gt;
TorchGeo does '''not''' bundle any third-party libraries in its source tree. Unlike projects like GDAL (which includes copies of libtiff, libjpeg, etc.), TorchGeo treats all dependencies as external packages installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt; directory  &lt;br /&gt;
* No &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* No embedded library copies&lt;br /&gt;
This is the recommended approach and simplifies license management.&lt;br /&gt;
=== 2. External Dependencies ===&lt;br /&gt;
'''Total required dependencies:''' 18&lt;br /&gt;
'''All licenses are OSI-approved and compatible with MIT.'''&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License !! Compatible? !! Potentially Problematic?&lt;br /&gt;
|-&lt;br /&gt;
| einops || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| geopandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| jsonargparse || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| kornia || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightly || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| lightning || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| matplotlib || PSF (BSD-style) || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| numpy || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pandas || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pillow || HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| pyproj || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| rasterio || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| segmentation-models-pytorch || MIT || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| shapely || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| timm || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torch || BSD-3-Clause || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchmetrics || Apache-2.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| torchvision || BSD-3-Clause || Yes || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3. License Distribution ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! License Type !! Count !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| MIT || 6 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| BSD-3-Clause || 7 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| Apache-2.0 || 4 || Permissive, fully compatible&lt;br /&gt;
|-&lt;br /&gt;
| PSF || 1 || Python Software Foundation, BSD-style&lt;br /&gt;
|-&lt;br /&gt;
| HPND / MIT-CMU[https://github.com/python-pillow/Pillow/pull/8460 *] || 1 || Historical Permission Notice and Disclaimer, permissive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4. Potentially Problematic Licenses ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
* No GPL or LGPL dependencies (no copyleft)&lt;br /&gt;
* No AGPL dependencies&lt;br /&gt;
* No proprietary or non-free dependencies&lt;br /&gt;
* No &amp;quot;viral&amp;quot; license concerns&lt;br /&gt;
=== 5. License Conflicts ===&lt;br /&gt;
'''Finding:''' '''None identified'''&lt;br /&gt;
All dependency licenses are permissive and compatible with each other and with TorchGeo's MIT license. There are no conflicts analogous to GDAL's use of GPL'ed GRASS libraries.&lt;br /&gt;
=== 6. Optional Dependencies ===&lt;br /&gt;
TorchGeo has optional dependencies for the &amp;lt;code&amp;gt;datasets&amp;lt;/code&amp;gt; extra. All use permissive licenses:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! License&lt;br /&gt;
|-&lt;br /&gt;
| h5py || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| laspy || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| netcdf4 || MIT&lt;br /&gt;
|-&lt;br /&gt;
| opencv-python || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| pycocotools || BSD-2-Clause&lt;br /&gt;
|-&lt;br /&gt;
| rioxarray || Apache-2.0&lt;br /&gt;
|-&lt;br /&gt;
| scikit-image || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| scipy || BSD-3-Clause&lt;br /&gt;
|-&lt;br /&gt;
| xarray || Apache-2.0&lt;br /&gt;
|}&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No library/component issues identified&lt;br /&gt;
* No bundled code in source tree&lt;br /&gt;
* All 18 required dependencies use permissive OSI-approved licenses&lt;br /&gt;
* No GPL/copyleft dependencies&lt;br /&gt;
* No license conflicts&lt;br /&gt;
* Clean dependency model suitable for OSGeo incubation&lt;br /&gt;
&lt;br /&gt;
== Code Copyright Review ==&lt;br /&gt;
'''Review completed:''' 08 Jan 2026&lt;br /&gt;
'''Reviewer:''' Brian M Hamlin (Mentor), with assistance from automated tooling&lt;br /&gt;
'''Scope:''' All 557 Python source files in the TorchGeo repository&lt;br /&gt;
=== 1. License Headers ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Total Python files:''' || 557&lt;br /&gt;
|-&lt;br /&gt;
| '''Files with standard header:''' || 557 (100%)&lt;br /&gt;
|-&lt;br /&gt;
| '''Files missing header:''' || 0 (after [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262])&lt;br /&gt;
|}&lt;br /&gt;
'''Standard header format:'''&lt;br /&gt;
 # Copyright (c) TorchGeo Contributors. All rights reserved.&lt;br /&gt;
 # Licensed under the MIT License.&lt;br /&gt;
'''Finding:''' All source files include the standard license header. Two utility scripts (&amp;lt;code&amp;gt;docs/user/metrics/update_timeline.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tests/data/landcoverai/split.py&amp;lt;/code&amp;gt;) were identified as missing headers during this review and fixed via [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262].&lt;br /&gt;
=== 2. License Consistency ===&lt;br /&gt;
'''Finding:''' All files are under the '''MIT License'''. No files use a different or conflicting license.&lt;br /&gt;
* No GPL, LGPL, or copyleft licenses found&lt;br /&gt;
* No Apache-only or BSD-only files found&lt;br /&gt;
* All code consistently uses MIT&lt;br /&gt;
=== 3. Code Origins ===&lt;br /&gt;
Two files contain code derived from external sources. Both are properly attributed and both original sources use MIT License (compatible):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Source !! Source License !! Compatible? !! Attribution in File?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/btc.py&amp;lt;/code&amp;gt; || [https://github.com/blaz-r/BTC-change-detection blaz-r/BTC-change-detection] || MIT || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;torchgeo/models/croma.py&amp;lt;/code&amp;gt; || [https://github.com/antofuller/CROMA antofuller/CROMA] || MIT || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' Both external code sources are MIT licensed, which is fully compatible with TorchGeo's MIT license. Attribution is properly documented in the source file headers.&lt;br /&gt;
=== 4. Vendored/Bundled Code ===&lt;br /&gt;
'''Finding:''' No vendored or bundled third-party code exists in the source tree. All dependencies are external and installed via pip/conda.&lt;br /&gt;
* No &amp;lt;code&amp;gt;vendor/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;third_party/&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;external/&amp;lt;/code&amp;gt; directories&lt;br /&gt;
* No embedded copies of libraries (unlike GDAL which bundles libtiff, libjpeg, etc.)&lt;br /&gt;
* All 18 dependencies are fetched externally at install time&lt;br /&gt;
=== 5. Copyright Holders ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Copyright Holder !! Type !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TorchGeo Contributors || Collective || Single copyright holder for all files&lt;br /&gt;
|}&lt;br /&gt;
'''Finding:''' The project uses a '''collective copyright model'''. All files use &amp;quot;Copyright (c) TorchGeo Contributors&amp;quot; rather than individual contributor names.&lt;br /&gt;
'''Implications for relicensing:'''&lt;br /&gt;
* Simplified model - no need to contact 122 individual contributors&lt;br /&gt;
* Contributors implicitly agree to collective copyright by submitting PRs&lt;br /&gt;
* '''Resolved:''' Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO) satisfactory and/or not required for incubation.&lt;br /&gt;
&lt;br /&gt;
=== 6. Outstanding Issues ===&lt;br /&gt;
'''Resolved:'''&lt;br /&gt;
* Copyright headers added to 2 missing files: [https://github.com/torchgeo/torchgeo/pull/3262 PR #3262]&lt;br /&gt;
* Confirm whether a CLA/DCO is in place or planned&lt;br /&gt;
* Contributor agreement status for PSC members&lt;br /&gt;
&lt;br /&gt;
'''Pending:'''&lt;br /&gt;
&lt;br /&gt;
=== 7. Conclusion ===&lt;br /&gt;
'''Overall assessment:''' No provenance issues identified. &lt;br /&gt;
The TorchGeo codebase demonstrates good copyright hygiene:&lt;br /&gt;
* 100% of source files have proper license headers&lt;br /&gt;
* All code is consistently MIT licensed&lt;br /&gt;
* External code derivations are properly attributed and license-compatible&lt;br /&gt;
* No vendored code complicates the license picture&lt;br /&gt;
* Collective copyright model simplifies governance&lt;br /&gt;
The codebase is ready for OSGeo incubation from a code provenance perspective, pending confirmation of contributor agreement procedures from the PSC.&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135238</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135238"/>
		<updated>2026-01-18T16:15:50Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* More Architectural Contrasts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN][https://arxiv.org/pdf/2512.05025 pdf] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Overview&lt;br /&gt;
|-&lt;br /&gt;
! Topic&lt;br /&gt;
! DOFA&lt;br /&gt;
! RAMEN&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Design Philosophy&lt;br /&gt;
| Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
| Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Flexibility Mechanism&lt;br /&gt;
| Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
| Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Adaptation Strategy&lt;br /&gt;
| Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
| Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
| Masked autoencoding with random resolution selection&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Code Implementation&lt;br /&gt;
| More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
| Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Resolution Handling&lt;br /&gt;
| No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
| Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, &lt;br /&gt;
and resolution-aware positional embeddings&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Architecture Modularity&lt;br /&gt;
| Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
| Separate encoder/decoder components with clear division of labor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Flexibility&lt;br /&gt;
| Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
| Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data Handling&lt;br /&gt;
| Simpler data handling focused on channel count variations&lt;br /&gt;
| Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Input Handling&lt;br /&gt;
| Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: &lt;br /&gt;
2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
| Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input &lt;br /&gt;
requirements&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
| Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Evaluation Focus&lt;br /&gt;
| Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
| Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== Encoder Architectures ===&lt;br /&gt;
&lt;br /&gt;
==== DOFA: Neuroplasticity-Inspired Multi-Modal Encoder ====&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN: Resolution-Adjustable Multi-Modal Encoder ====&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135237</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135237"/>
		<updated>2026-01-18T02:04:47Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN][https://arxiv.org/pdf/2512.05025 pdf] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Overview&lt;br /&gt;
|-&lt;br /&gt;
! Topic&lt;br /&gt;
! DOFA&lt;br /&gt;
! RAMEN&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Design Philosophy&lt;br /&gt;
| Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
| Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Flexibility Mechanism&lt;br /&gt;
| Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
| Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Adaptation Strategy&lt;br /&gt;
| Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
| Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
| Masked autoencoding with random resolution selection&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Code Implementation&lt;br /&gt;
| More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
| Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Resolution Handling&lt;br /&gt;
| No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
| Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, &lt;br /&gt;
and resolution-aware positional embeddings&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Architecture Modularity&lt;br /&gt;
| Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
| Separate encoder/decoder components with clear division of labor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Flexibility&lt;br /&gt;
| Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
| Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data Handling&lt;br /&gt;
| Simpler data handling focused on channel count variations&lt;br /&gt;
| Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Input Handling&lt;br /&gt;
| Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: &lt;br /&gt;
2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
| Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input &lt;br /&gt;
requirements&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
| Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Evaluation Focus&lt;br /&gt;
| Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
| Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135236</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135236"/>
		<updated>2026-01-17T23:15:42Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Comprehensive Architectural Comparison' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Overview&lt;br /&gt;
|-&lt;br /&gt;
! Topic&lt;br /&gt;
! DOFA&lt;br /&gt;
! RAMEN&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Design Philosophy&lt;br /&gt;
| Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
| Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Flexibility Mechanism&lt;br /&gt;
| Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
| Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Adaptation Strategy&lt;br /&gt;
| Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
| Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
| Masked autoencoding with random resolution selection&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Code Implementation&lt;br /&gt;
| More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
| Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Resolution Handling&lt;br /&gt;
| No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
| Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, &lt;br /&gt;
and resolution-aware positional embeddings&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Architecture Modularity&lt;br /&gt;
| Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
| Separate encoder/decoder components with clear division of labor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Flexibility&lt;br /&gt;
| Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
| Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Data Handling&lt;br /&gt;
| Simpler data handling focused on channel count variations&lt;br /&gt;
| Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Input Handling&lt;br /&gt;
| Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: &lt;br /&gt;
2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
| Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input &lt;br /&gt;
requirements&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Training Approach&lt;br /&gt;
| Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
| Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Evaluation Focus&lt;br /&gt;
| Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
| Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135235</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135235"/>
		<updated>2026-01-17T23:05:39Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* More Architectural Contrasts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135234</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135234"/>
		<updated>2026-01-17T23:05:16Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* More Architectural Contrasts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_DOFA&amp;diff=135233</id>
		<title>Talk:TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Talk:TorchGeo_DOFA&amp;diff=135233"/>
		<updated>2026-01-17T22:22:34Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: Created page with &amp;quot;'''Note''': AI LLM assistance was employed in the production of this document.    {| class=&amp;quot;wikitable&amp;quot;   |+ LLM Engine contributions by operator   |-   ! Operator !! Tool !! M...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Note''': AI LLM assistance was employed in the production of this document.&lt;br /&gt;
&lt;br /&gt;
  {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  |+ LLM Engine contributions by operator&lt;br /&gt;
  |-&lt;br /&gt;
  ! Operator !! Tool !! Model 1 !! Model 2&lt;br /&gt;
&lt;br /&gt;
  |-&lt;br /&gt;
  | '''darkblueb''' || ollama local-only ||  Qwen3-Coder-30B-A3B-Instruct&lt;br /&gt;
  |}&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135232</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135232"/>
		<updated>2026-01-17T19:47:47Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Comprehensive Architectural Comparison' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135231</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135231"/>
		<updated>2026-01-17T19:46:42Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP layers allow DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135230</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135230"/>
		<updated>2026-01-17T19:41:18Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP layer acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135229</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135229"/>
		<updated>2026-01-17T19:40:44Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
*&amp;lt;code&amp;gt; TransformerWeightGenerator&amp;lt;/code&amp;gt;: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* '''Hypernetwork''' concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135227</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135227"/>
		<updated>2026-01-17T04:36:40Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135226</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135226"/>
		<updated>2026-01-17T04:35:39Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Core Architectural Differences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135225</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135225"/>
		<updated>2026-01-17T04:33:49Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* 5. Code Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
A fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
== Core Architectural Differences ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic adaptation capabilities&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization&lt;br /&gt;
&lt;br /&gt;
=== 2. Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count&lt;br /&gt;
* RAMEN: Explicit resolution-aware design with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; &lt;br /&gt;
parameters&lt;br /&gt;
&lt;br /&gt;
=== 3. Modularity ===&lt;br /&gt;
* DOFA: Single model architecture with dynamic components&lt;br /&gt;
* RAMEN: Separate encoder/decoder with specialized projection modules&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
* DOFA: Wavelength-specific processing through &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt;&lt;br /&gt;
* RAMEN: Resolution-randomized training with explicit masking strategies&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Structure ===&lt;br /&gt;
* DOFA: More compact, single-file approach to channel adaptation&lt;br /&gt;
* RAMEN: More complex, multi-file modular design with specialized utilities&lt;br /&gt;
&lt;br /&gt;
Both use PyTorch's standard Vision Transformer components but implement them differently based on their core design goals - DOFA focuses on adaptability through dynamic layers, while RAMEN focuses on resolution  controllability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135224</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135224"/>
		<updated>2026-01-17T04:32:20Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Dynamic MLP Layers in DOFA: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
The fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters. Both are sophisticated solutions to the multi-modal EO challenge but address different aspects of the problem space.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
== Core Architectural Differences ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic adaptation capabilities&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization&lt;br /&gt;
&lt;br /&gt;
=== 2. Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count&lt;br /&gt;
* RAMEN: Explicit resolution-aware design with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; &lt;br /&gt;
parameters&lt;br /&gt;
&lt;br /&gt;
=== 3. Modularity ===&lt;br /&gt;
* DOFA: Single model architecture with dynamic components&lt;br /&gt;
* RAMEN: Separate encoder/decoder with specialized projection modules&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
* DOFA: Wavelength-specific processing through &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt;&lt;br /&gt;
* RAMEN: Resolution-randomized training with explicit masking strategies&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Structure ===&lt;br /&gt;
* DOFA: More compact, single-file approach to channel adaptation&lt;br /&gt;
* RAMEN: More complex, multi-file modular design with specialized utilities&lt;br /&gt;
&lt;br /&gt;
Both use PyTorch's standard Vision Transformer components but implement them differently based on their core design goals - DOFA focuses on adaptability through dynamic layers, while RAMEN focuses on resolution  controllability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135223</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135223"/>
		<updated>2026-01-17T04:31:46Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* MLP Layers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, ''dynamic MLP layers'' refers to a specific architectural component that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its &lt;br /&gt;
weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
The fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters. Both are sophisticated solutions to the multi-modal EO challenge but address different aspects of the problem space.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
== Core Architectural Differences ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic adaptation capabilities&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization&lt;br /&gt;
&lt;br /&gt;
=== 2. Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count&lt;br /&gt;
* RAMEN: Explicit resolution-aware design with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; &lt;br /&gt;
parameters&lt;br /&gt;
&lt;br /&gt;
=== 3. Modularity ===&lt;br /&gt;
* DOFA: Single model architecture with dynamic components&lt;br /&gt;
* RAMEN: Separate encoder/decoder with specialized projection modules&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
* DOFA: Wavelength-specific processing through &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt;&lt;br /&gt;
* RAMEN: Resolution-randomized training with explicit masking strategies&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Structure ===&lt;br /&gt;
* DOFA: More compact, single-file approach to channel adaptation&lt;br /&gt;
* RAMEN: More complex, multi-file modular design with specialized utilities&lt;br /&gt;
&lt;br /&gt;
Both use PyTorch's standard Vision Transformer components but implement them differently based on their core design goals - DOFA focuses on adaptability through dynamic layers, while RAMEN focuses on resolution  controllability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135222</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135222"/>
		<updated>2026-01-17T04:31:01Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, 'dynamic MLP layers' refers to a specific architectural component &lt;br /&gt;
that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its &lt;br /&gt;
weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
==== Purpose ====&lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
The fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters. Both are sophisticated solutions to the multi-modal EO challenge but address different aspects of the problem space.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
== Core Architectural Differences ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic adaptation capabilities&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization&lt;br /&gt;
&lt;br /&gt;
=== 2. Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count&lt;br /&gt;
* RAMEN: Explicit resolution-aware design with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; &lt;br /&gt;
parameters&lt;br /&gt;
&lt;br /&gt;
=== 3. Modularity ===&lt;br /&gt;
* DOFA: Single model architecture with dynamic components&lt;br /&gt;
* RAMEN: Separate encoder/decoder with specialized projection modules&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
* DOFA: Wavelength-specific processing through &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt;&lt;br /&gt;
* RAMEN: Resolution-randomized training with explicit masking strategies&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Structure ===&lt;br /&gt;
* DOFA: More compact, single-file approach to channel adaptation&lt;br /&gt;
* RAMEN: More complex, multi-file modular design with specialized utilities&lt;br /&gt;
&lt;br /&gt;
Both use PyTorch's standard Vision Transformer components but implement them differently based on their core design goals - DOFA focuses on adaptability through dynamic layers, while RAMEN focuses on resolution  controllability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135221</id>
		<title>TorchGeo DOFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=TorchGeo_DOFA&amp;diff=135221"/>
		<updated>2026-01-17T04:30:39Z</updated>

		<summary type="html">&lt;p&gt;Darkblueb: /* Dynamic MLP Layers in DOFA: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contrast and compare [https://github.com/nicolashoudre/RAMEN RAMEN] and [https://github.com/zhu-xlab/DOFA DOFA] based on README and python :&lt;br /&gt;
&lt;br /&gt;
== DOFA Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Neuroplasticity-inspired: Based on brain's dynamic reorganization capacity in response to novel stimuli&lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork: Uses wavelength as unifying parameter across EO modalities&lt;br /&gt;
* Unified Transformer framework: Single architecture that handles diverse spectral bands and sensor modalities&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. '''Dynamic Hypernetwork''': Generates network weights based on central wavelengths of each spectral band&lt;br /&gt;
2. '''Shared Vision Backbone''': Universal feature learning module for all heterogeneous data modalities&lt;br /&gt;
3. Wavelength-aware Masked Image Modeling ('''MIM'''): Pretraining strategy that interpolates in weight space according to wavelength configurations&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - Dynamic MLP layer for channel adaptation&lt;br /&gt;
3. &amp;lt;code&amp;gt;TransformerWeightGenerator&amp;lt;/code&amp;gt; - For neuroplasticity-inspired weight generation&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Single unified ViT: Uses standard Vision Transformer backbone with modifications&lt;br /&gt;
* Dynamic MLP layers: &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; that adapts based on input channels&lt;br /&gt;
* Wavelength-aware processing: Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for different spectral band handling&lt;br /&gt;
* Neuroplasticity-inspired: Weight generation through transformer-based mechanism&lt;br /&gt;
* Channel-flexible design: Works with 2-202+ channels through dynamic layer adaptation&lt;br /&gt;
&lt;br /&gt;
=== DOFA+ Enhancement ===&lt;br /&gt;
* Hierarchical Distillation Strategy: Preserves semantic priors from source model while guiding EO-specific pattern learning&lt;br /&gt;
* Dual Training Strategy: &lt;br /&gt;
** Wavelength-aware MIM for EO-specific spatial patterns&lt;br /&gt;
** Hierarchical feature distillation for refining inherited semantic representations&lt;br /&gt;
&lt;br /&gt;
=== MLP Layers ===&lt;br /&gt;
Looking at the DOFA code structure, 'dynamic MLP layers' refers to a specific architectural component &lt;br /&gt;
that adapts its parameters based on input characteristics:&lt;br /&gt;
&lt;br /&gt;
==== Dynamic MLP Layers in DOFA: ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; - A specialized MLP (Multi-Layer Perceptron) layer that dynamically adjusts its &lt;br /&gt;
weights and structure&lt;br /&gt;
* Unlike standard fixed MLPs, these layers can modify their internal parameters based on input features&lt;br /&gt;
&lt;br /&gt;
How MLP Layers work:&lt;br /&gt;
1. Channel-adaptive processing': The MLP adapts to different input channel counts (2-202+ channels)&lt;br /&gt;
2. Wavelength-conditioned': Uses wavelength information to determine the appropriate weight &lt;br /&gt;
configuration&lt;br /&gt;
3. Dynamic weight generation: Instead of fixed weights, the layer generates weights based &lt;br /&gt;
on input characteristics&lt;br /&gt;
&lt;br /&gt;
==== Implementation approach ====&lt;br /&gt;
* TransformerWeightGenerator: A component that dynamically generates network weights based on central wavelengths&lt;br /&gt;
* Hypernetwork concept: The dynamic MLP acts as a hypernetwork that produces weights for other layers&lt;br /&gt;
* Spectral band awareness: The layer structure changes to accommodate different spectral configurations&lt;br /&gt;
&lt;br /&gt;
Purpose: &lt;br /&gt;
The dynamic MLP allows DOFA to handle varying sensor specifications without requiring multiple fixed architectures. When input data has 2 channels (SAR), 3 channels (RGB), or 202 channels (hyperspectral), the same model architecture can adapt through these dynamic layers rather than needing separate models for each modality.&lt;br /&gt;
&lt;br /&gt;
== RAMEN Theory and Architecture Analysis ==&lt;br /&gt;
&lt;br /&gt;
=== Core Design Principles ===&lt;br /&gt;
* Resolution-adjustable: Treats spatial resolution as a controllable output parameter&lt;br /&gt;
* Sensor-agnostic but resolution-aware: Supports any modality with explicit resolution handling&lt;br /&gt;
* Multi-modal fusion: Combines data from multiple modalities into unified representation&lt;br /&gt;
&lt;br /&gt;
=== Key Technical Components ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions dynamically&lt;br /&gt;
2. Modality-specific Projectors: &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt; for different data types&lt;br /&gt;
3. Resolution-aware Positional Embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
4. Feature Map Resolution Control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
=== Key Classes: ===&lt;br /&gt;
1. &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; - Main encoder class&lt;br /&gt;
2. &amp;lt;code&amp;gt;RamenDecoderViT&amp;lt;/code&amp;gt; - Decoder component&lt;br /&gt;
3. &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; - Resolution handling module  &lt;br /&gt;
4. &amp;lt;code&amp;gt;SpectralProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RadarProjector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DemProjector&amp;lt;/code&amp;gt;- Modality-specific projectors&lt;br /&gt;
5. &amp;lt;code&amp;gt;AttentionPoolLatent&amp;lt;/code&amp;gt; - Attention-based pooling&lt;br /&gt;
&lt;br /&gt;
=== Architectural Features: ===&lt;br /&gt;
* Modular encoder/decoder: Separate components with clear division of labor&lt;br /&gt;
* Multi-resolution support: &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; handles different spatial resolutions&lt;br /&gt;
* Modality-specific projections: Different projectors for spectral, radar, and DEM data&lt;br /&gt;
* Resolution-aware positional embeddings: Uses &amp;lt;code&amp;gt;get_2d_sincos_pos_embed_with_resolution&amp;lt;/code&amp;gt;&lt;br /&gt;
* Feature map resolution control: Explicit parameterization of output resolution&lt;br /&gt;
&lt;br /&gt;
== Comprehensive Architectural Comparison' ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Neuroplasticity-inspired approach with dynamic weight generation based on wavelength&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization and multi-resolution support&lt;br /&gt;
&lt;br /&gt;
=== 2. Flexibility Mechanism ===&lt;br /&gt;
* DOFA: Dynamic hypernetwork that adapts weights based on spectral characteristics (wavelengths)&lt;br /&gt;
* RAMEN: Explicit resolution control with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and configurable feature map resolutions&lt;br /&gt;
&lt;br /&gt;
=== 3. Adaptation Strategy ===&lt;br /&gt;
* DOFA: Continuous pretraining via MIM + knowledge distillation, with wavelength-aware adaptation&lt;br /&gt;
* RAMEN: Resolution-randomized training, explicit multi-resolution handling during both pretraining and inference&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
==== DOFA: ==== &lt;br /&gt;
* Wavelength-conditioned dynamic hypernetwork&lt;br /&gt;
* MIM with wavelength interpolation in weight space&lt;br /&gt;
* Hierarchical feature distillation&lt;br /&gt;
==== RAMEN: ==== &lt;br /&gt;
* Masked autoencoding with random resolution selection&lt;br /&gt;
* Resolution-specific masking strategies&lt;br /&gt;
* Multi-dataset training with different resolutions&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Implementation ===&lt;br /&gt;
* DOFA: More compact, single-file approach with specialized dynamic components. Uses one model that can handle any number of input channels from different modalities (SAR, optical, hyperspectral)&lt;br /&gt;
* RAMEN: Complex, multi-file modular design with dedicated utilities for each component type. Multimodal fusion approach: Combines data from multiple modalities into unified representation. Users can customize the resolution of feature maps for downstream tasks.&lt;br /&gt;
&lt;br /&gt;
The fundamental difference is that DOFA focuses on spectral band adaptability through dynamic weight generation, while RAMEN focuses on spatial resolution adaptability through explicit architectural parameters. Both are sophisticated solutions to the multi-modal EO challenge but address different aspects of the problem space.&lt;br /&gt;
&lt;br /&gt;
=== Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count flexibility&lt;br /&gt;
* RAMEN: Explicit resolution parameterization with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; parameters, and resolution-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
=== Architecture Modularity ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic MLP layers for adaptability&lt;br /&gt;
* RAMEN: Separate encoder/decoder components with clear division of labor&lt;br /&gt;
&lt;br /&gt;
=== Training Flexibility ===&lt;br /&gt;
* DOFA: Channel count varies, wavelength-specific processing, neuroplasticity-inspired adaptation&lt;br /&gt;
* RAMEN: Resolution varies during training (random selection), explicit feature map control&lt;br /&gt;
&lt;br /&gt;
=== Data Handling ===&lt;br /&gt;
* DOFA: Simpler data handling focused on channel count variations&lt;br /&gt;
* RAMEN: Complex &amp;lt;code&amp;gt;MultiDataset&amp;lt;/code&amp;gt; with time-series handling for different modalities&lt;br /&gt;
&lt;br /&gt;
=== Input Handling: ===&lt;br /&gt;
* DOFA: Takes any number of channels as input, with preprocessing handling different sensor specifications (SAR: 2 channels, S2: 9 channels, RGB: 3 channels)&lt;br /&gt;
* RAMEN: Requires specifying input shape, channels, and original spatial resolution (GSD) - more structured input requirements&lt;br /&gt;
&lt;br /&gt;
=== Training Approach: ===&lt;br /&gt;
* DOFA: Pre-trained using five different data modalities in remote sensing&lt;br /&gt;
* RAMEN: Uses masked autoencoding strategy on multimodal datasets (FLAIR-HUB, WorldStrat, MMEarth)&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Focus: ===&lt;br /&gt;
* DOFA: Demonstrates capability across various tasks but doesn't emphasize resolution control&lt;br /&gt;
* RAMEN: Explicitly emphasizes adjustable feature map resolution as a key contribution&lt;br /&gt;
&lt;br /&gt;
== Significant Contrasts ==&lt;br /&gt;
&lt;br /&gt;
1. Design Philosophy: DOFA focuses on neuroplasticity and adaptability to new sensors; RAMEN focuses on &lt;br /&gt;
resolution adjustability and computational efficiency&lt;br /&gt;
&lt;br /&gt;
2. Flexibility Mechanism: DOFA's flexibility comes from channel count handling; RAMEN's comes from &lt;br /&gt;
resolution parameterization&lt;br /&gt;
&lt;br /&gt;
3. Use Case Emphasis: DOFA emphasizes multimodal representation learning across different sensor types; &lt;br /&gt;
RAMEN emphasizes efficient processing with controllable detail levels&lt;br /&gt;
&lt;br /&gt;
4. Architecture Approach: DOFA uses a unified ViT architecture; RAMEN implements separate encoder/decoder architectures.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth observation but solve different aspects of the multi-modal, multi-resolution challenge in EO data.  DOFA is fundamentally different from RAMEN's approach where resolution is handled through explicit architectural parameters and resampling mechanisms rather than dynamic layer adaptation.&lt;br /&gt;
&lt;br /&gt;
== More Architectural Contrasts ==&lt;br /&gt;
&lt;br /&gt;
=== RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder ===&lt;br /&gt;
1. Multi-resolution Framework: Explicitly designed to handle different spatial resolutions as a &lt;br /&gt;
controllable parameter&lt;br /&gt;
2. Modular Components: &lt;br /&gt;
* &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; for resolution handling&lt;br /&gt;
* &amp;lt;code&amp;gt;RamenViT&amp;lt;/code&amp;gt; with resolution-aware positional embeddings&lt;br /&gt;
* Separate encoder/decoder architecture&lt;br /&gt;
* Resolution-specific masking during training&lt;br /&gt;
&lt;br /&gt;
3. Training Strategy: &lt;br /&gt;
* Masked autoencoding with random resolution selection during training&lt;br /&gt;
* Feature map resolution customization for downstream tasks&lt;br /&gt;
* Support for multiple datasets with different resolutions&lt;br /&gt;
&lt;br /&gt;
4. Key Innovation: Treats spatial resolution as a tunable hyperparameter rather than fixed&lt;br /&gt;
&lt;br /&gt;
=== DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder ===&lt;br /&gt;
1. Modality-Flexible Architecture:&lt;br /&gt;
* Single unified ViT that works across 2,3,4,6,9,12,13,202+ channels&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;Dynamic_MLP_OFA&amp;lt;/code&amp;gt; for channel-adaptive processing&lt;br /&gt;
* Spectral/Channel-aware positional embeddings&lt;br /&gt;
&lt;br /&gt;
2. Training Strategy:&lt;br /&gt;
* Masked autoencoding with wavelength-specific processing&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; to handle different spectral bands per modality&lt;br /&gt;
* Channel count as the primary adaptation mechanism&lt;br /&gt;
&lt;br /&gt;
3. Key Innovation: Neuroplasticity-inspired adaptability to new sensor experiences through dynamic weight generation&lt;br /&gt;
&lt;br /&gt;
=== MAE Applications ===&lt;br /&gt;
both DOFA and RAMEN use Masked Autoencoding (MAE) &lt;br /&gt;
techniques, but in different ways:&lt;br /&gt;
&lt;br /&gt;
==== DOFA MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskedAutoencoderViT&amp;lt;/code&amp;gt; class&lt;br /&gt;
* Implements masked image modeling (MIM) for pretraining&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt; for wavelength-specific processing&lt;br /&gt;
* Employs dynamic MLP layers that adapt to spectral bands&lt;br /&gt;
* Uses continuous pretraining via MIM and knowledge distillation&lt;br /&gt;
&lt;br /&gt;
==== RAMEN MAE Implementation: ====&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;RAMENMAE&amp;lt;/code&amp;gt; class that combines encoder/decoder&lt;br /&gt;
* Implements masked autoencoding with random resolution selection during training&lt;br /&gt;
* Uses &amp;lt;code&amp;gt;MaskCollator&amp;lt;/code&amp;gt; for multi-resolution masking strategies&lt;br /&gt;
* Employs resolution-aware training where effective resolution is chosen randomly&lt;br /&gt;
* Has separate encoder and decoder components&lt;br /&gt;
&lt;br /&gt;
Both models implement MAE techniques, but:&lt;br /&gt;
* DOFA focuses on wavelength-aware MAE with dynamic weight generation&lt;br /&gt;
* RAMEN focuses on resolution-aware MAE with multi-resolution masking&lt;br /&gt;
&lt;br /&gt;
The key difference is that RAMEN explicitly makes resolution a controllable parameter in their MAE approach, while DOFA makes spectral bands the primary adaptation mechanism in theirs.&lt;br /&gt;
&lt;br /&gt;
== Key Technical Differences ==&lt;br /&gt;
&lt;br /&gt;
== Design Philosophy ==&lt;br /&gt;
&lt;br /&gt;
RAMEN: Systematic approach to resolution control - treats resolution as a first-class citizen in the &lt;br /&gt;
architecture and training process.&lt;br /&gt;
&lt;br /&gt;
DOFA: Adaptive approach to modality diversity - uses neuroplasticity concepts to adapt to different sensor &lt;br /&gt;
characteristics through dynamic weight generation.&lt;br /&gt;
&lt;br /&gt;
Both are foundation models for Earth Observation but RAMEN specifically addresses the multi-resolution &lt;br /&gt;
challenge while DOFA focuses on multi-modality with neuroplasticity-inspired adaptability. The RAMEN &lt;br /&gt;
approach appears more systematic in its resolution handling, while DOFA's approach is more about adaptive &lt;br /&gt;
learning across different sensor specifications.&lt;br /&gt;
&lt;br /&gt;
== Core Architectural Differences ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Design Philosophy ===&lt;br /&gt;
* DOFA: Unified architecture with dynamic adaptation capabilities&lt;br /&gt;
* RAMEN: Modular approach with explicit resolution parameterization&lt;br /&gt;
&lt;br /&gt;
=== 2. Resolution Handling ===&lt;br /&gt;
* DOFA: No explicit resolution handling; adapts through channel count&lt;br /&gt;
* RAMEN: Explicit resolution-aware design with &amp;lt;code&amp;gt;ScaleResampler&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;all_res&amp;lt;/code&amp;gt; &lt;br /&gt;
parameters&lt;br /&gt;
&lt;br /&gt;
=== 3. Modularity ===&lt;br /&gt;
* DOFA: Single model architecture with dynamic components&lt;br /&gt;
* RAMEN: Separate encoder/decoder with specialized projection modules&lt;br /&gt;
&lt;br /&gt;
=== 4. Training Approach ===&lt;br /&gt;
* DOFA: Wavelength-specific processing through &amp;lt;code&amp;gt;wave_lists&amp;lt;/code&amp;gt;&lt;br /&gt;
* RAMEN: Resolution-randomized training with explicit masking strategies&lt;br /&gt;
&lt;br /&gt;
=== 5. Code Structure ===&lt;br /&gt;
* DOFA: More compact, single-file approach to channel adaptation&lt;br /&gt;
* RAMEN: More complex, multi-file modular design with specialized utilities&lt;br /&gt;
&lt;br /&gt;
Both use PyTorch's standard Vision Transformer components but implement them differently based on their core design goals - DOFA focuses on adaptability through dynamic layers, while RAMEN focuses on resolution  controllability through explicit architectural parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= scratch  =&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. DOFA Theory and Architecture Analysis&lt;br /&gt;
1.1 Core Design Principles&lt;br /&gt;
1.2 Key Technical Components&lt;br /&gt;
1.3 DOFA+ Enhancement&lt;br /&gt;
2. RAMEN Theory and Architecture Analysis&lt;br /&gt;
2.1 Core Design Principles&lt;br /&gt;
2.2 Key Technical Components&lt;br /&gt;
3. Comprehensive Architectural Comparison&lt;br /&gt;
3.1 Design Philosophy&lt;br /&gt;
3.2 Flexibility Mechanism&lt;br /&gt;
3.3 Adaptation Strategy&lt;br /&gt;
3.4 Training Approach&lt;br /&gt;
3.4.1 DOFA&lt;br /&gt;
3.4.2 RAMEN&lt;br /&gt;
3.5 Code Implementation&lt;br /&gt;
4. Core Architectural Differences&lt;br /&gt;
4.1 DOFA&lt;br /&gt;
4.2 RAMEN&lt;br /&gt;
5. Key Technical Differences&lt;br /&gt;
5.1 Input Handling&lt;br /&gt;
5.2 Training Approach&lt;br /&gt;
5.3 Evaluation Focus&lt;br /&gt;
6. Primary Contrasts&lt;br /&gt;
7. Core Architectural Contrasts&lt;br /&gt;
7.1 RAMEN's Approach: Resolution-Adjustable Multi-Modal Encoder&lt;br /&gt;
7.2 DOFA's Approach: Neuroplasticity-Inspired Multi-Modal Encoder&lt;br /&gt;
8. Key Technical Differences&lt;br /&gt;
8.1 Resolution Handling&lt;br /&gt;
8.2 Architecture Modularity&lt;br /&gt;
8.3 Training Flexibility&lt;br /&gt;
8.4 Data Handling&lt;br /&gt;
9. Design Philosophy&lt;br /&gt;
10. DOFA Encoder Architecture&lt;br /&gt;
10.1 Key Classes&lt;br /&gt;
10.2 Architectural Features&lt;br /&gt;
11. RAMEN Encoder Architecture&lt;br /&gt;
11.1 Key Classes&lt;br /&gt;
11.2 Architectural Features&lt;br /&gt;
12. Core Architectural Differences&lt;br /&gt;
12.1 1. Design Philosophy&lt;br /&gt;
12.2 2. Resolution Handling&lt;br /&gt;
12.3 3. Modularity&lt;br /&gt;
12.4 4. Training Approach&lt;br /&gt;
12.5 5. Code Structure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkblueb</name></author>
	</entry>
</feed>