{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/spectralearth-training-hyperspectral","title":"SpectralEarth: Training Hyperspectral Foundation Models at Scale","arxiv_id":"2408.08447","date":"2024-08-15","proceeding":null,"authors":["Nassim Ait Ali Braham","Conrad M Albrecht","Julien Mairal","Jocelyn Chanussot","Yi Wang","Xiao Xiang Zhu"],"abstract":"Foundation models have triggered a paradigm shift in computer vision and are increasingly being adopted in remote sensing, particularly for multispectral imagery. Yet, their potential in hyperspectral imaging (HSI) remains untapped due to the absence of comprehensive and globally representative hyperspectral datasets. To close this gap, we introduce SpectralEarth, a large-scale multi-temporal dataset designed to pretrain hyperspectral foundation models leveraging data from the Environmental Mapping and Analysis Program (EnMAP). SpectralEarth comprises 538,974 image patches covering 415,153 unique locations from more than 11,636 globally distributed EnMAP scenes spanning two years of archive. Additionally, 17.5% of these locations include multiple timestamps, enabling multi-temporal HSI analysis. Utilizing state-of-the-art self-supervised learning (SSL) algorithms, we pretrain a series of foundation models on SpectralEarth. We integrate a spectral adapter into classical vision backbones to accommodate the unique characteristics of HSI. In tandem, we construct four downstream datasets for land-cover and crop-type mapping, providing benchmarks for model evaluation. Experimental results support the versatility of our models, showcasing their generalizability across different tasks and sensors. We also highlight computational efficiency during model fine-tuning. The dataset, models, and source code will be made publicly available.","url_abs":"https://arxiv.org/abs/2408.08447v1","url_pdf":"https://arxiv.org/pdf/2408.08447v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"spectralearth-training-hyperspectral","repo_url":"https://github.com/panopticon-fm/panopticon","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"},{"task_slug":"crop-type-mapping","task_name":"Crop Type Mapping"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"adapter","method_name":"Adapter"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2408.08447","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.08447"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/panopticon-fm/panopticon","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":1,"ran":1,"ran_honours":1,"unverified":4},"by_repo_kind":{"listed":{"samples":7,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"c157f5b112b3a392","entry":"drop_path","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/layers/drop_path.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/layers/drop_path.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c157f5b112b3a392"}},{"code_sha256_prefix":"a1966f7ff23ec4ef","entry":"get_1d_sincos_pos_embed_from_grid_torch","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/models/panopticon.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/models/panopticon.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a1966f7ff23ec4ef"}},{"code_sha256_prefix":"3c04490a215299f2","entry":"make_2tuple","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/layers/patch_embed.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/layers/patch_embed.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3c04490a215299f2"}},{"code_sha256_prefix":"5d16d4d4fc573ac7","entry":"add_residual","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/layers/block.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/layers/block.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5d16d4d4fc573ac7"}},{"code_sha256_prefix":"4f9799b98aecb875","entry":"drop_add_residual_stochastic_depth","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/layers/block.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/layers/block.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4f9799b98aecb875"}},{"code_sha256_prefix":"76e95a0434a29808","entry":"get_1d_sincos_ipe_analytical","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/models/panopticon.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/models/panopticon.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"76e95a0434a29808"}},{"code_sha256_prefix":"5be3610fa1fee19e","entry":"get_branges_scales","repo":"panopticon-fm/panopticon","repo_kind":"listed","path":"dinov2/layers/block.py","file_url":"https://github.com/panopticon-fm/panopticon/blob/HEAD/dinov2/layers/block.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5be3610fa1fee19e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}