OlmoEarth 임베딩 소개: OlmoEarth Studio에서 다운스트림 분석을 위한 맞춤형 임베딩 내보내기
지구 관측 모델 구축 플랫폼인 OlmoEarth Studio를 통해 이제 **임베딩 벡터(embedding vectors)**를 계산하고 내보낼 수 있습니다. 이 임베딩 벡터는 오픈 소스 OlmoEarth foundation model이 생성한 지구 관측 데이터의 압축된 수치적 표현입니다. 소스 코드와 모델 가중치는 연구 논문과 함께 공개되어 있어 커뮤니티가 이러한 임베딩이 정확히 어떻게 생성되는지 검사할 수 있습니다.
임베딩은 OlmoEarth를 활용하는 빠르고 비용 효율적인 진입점입니다. 유사성 검색(similarity search)부터 분할(segmentation), 비지도 탐색(unsupervised exploration)에 이르기까지 광범위한 다운스트림 작업을 지원합니다. 표면 특성이 유사한 위치는 유사한 벡터 값을 갖게 되고, 서로 다른 위치는 멀리 떨어진 곳에 배치됩니다. OlmoEarth 임베딩은 자체 벤치마킹과 독립적인 평가에서 강력한 성능을 보여주었습니다. 내보내진 Cloud-Optimized GeoTIFFs (COGs)는 가볍고 공유하기 쉽습니다. Studio UI 또는 API를 통해 관심 영역, 시간 범위, 인코더 변형(encoder variant), 해상도 및 이미지 소스를 선택하고 원하는 방식으로 사용할 수 있는 COG를 얻을 수 있습니다. 애플리케이션에서 더 높은 성능이 필요하다면, Studio는 지도 학습 미세 조정(supervised fine-tuning, SFT)도 지원합니다.
이제 OlmoEarth Studio 사용자들을 위해 맞춤형 임베딩 계산 기능이 제공됩니다. 관심이 있으시면 문의해 주십시오. 공개된 OlmoEarth 모델을 사용하여 자체 임베딩을 계산하는 방법에 대한 지침은 여기에서 확인할 수 있습니다.
110만 개 샘플에 걸친 계절별 Sentinel-2 이미지를 사용한 OlmoEarth 임베딩의 전역 구조. 색상은 PCA로 축소된 임베딩 공간 내 15개의 k-means 클러스터를 나타냅니다.
임베딩 계산은 Studio에서 다른 모든 예측과 동일한 워크플로우를 따릅니다. 먼저 모델을 구성하고 실행한 다음, 결과를 다운로드합니다. 여러 매개변수가 출력을 맞춤 설정합니다:
관심 영역(Area of interest): 폴리곤을 그리거나 업로드할 수 있으며, Studio가 이미지 획득 및 타일링을 처리합니다.시간 범위(Time span): 1~12개월 기간입니다.인코더 변형(Encoder variant): Nano (128차원, 1.4M 파라미터), Tiny (192차원, 6.2M 파라미터), 또는 Base (768차원, 89M 파라미터) 중 선택할 수 있습니다.공간 해상도(Spatial resolution): 픽셀당 10m, 20m, 40m, 또는 80m입니다.이미지 소스(Imagery sources): Sentinel-2 L2A, Sentinel-1 RTC, 또는 둘 다를 사용할 수 있습니다.
동일한 임베딩 래스터에 다양한 시각화 옵션이 적용됩니다.
Studio는 각 임베딩 차원별로 하나의 밴드를 가진 COG(Cloud Optimized GeoTIFF)를 제공합니다. 벡터는 부호 있는 8비트 정수(signed 8-bit integers, int8)로 저장됩니다. 값의 범위는 -127부터 +127까지이며, -128은 nodata로 예약되어 있습니다. 부동 소수점 벡터를 복구하려면 olmoearth_pretrain에서 dequantize_embeddings를 참조하십시오.
모든 것이 사전 계산된 글로벌 아카이브에서 가져오는 것이 아니라 필요할 때마다(on demand) 계산되기 때문에, 사용자의 임베딩은 정확히 관심 있는 조건을 반영합니다. 연간 스냅샷뿐만 아니라 계절적 변화 동향을 포착하기 위해 월별 임베딩을 생성할 수 있습니다.
아래 예시들은 모두 Sentinel-2 L2A 컴포지트를 사용하고 40m 해상도의 OlmoEarth-v1-Tiny (192차원) 임베딩(대부분의 예시는 연간, 변화 감지는 월별)을 사용합니다. Tiny는 가벼운 인코더이지만 여전히 성능이 매우 뛰어나며, 자체 애플리케이션에서는 더 높은 컴퓨팅 및 저장 공간 비용을 감수하고 더 큰 변형으로 교체할 수 있습니다.
쿼리 픽셀 하나를 선택하여 임베딩을 추출한 다음, 다른 모든 픽셀과 코사인 유사도(cosine similarity)를 계산합니다. 그 결과는 해당 지역의 지형이 쿼리 픽셀과 가장 비슷하고 가장 다른 곳을 보여주는 히트맵입니다.
이 쿼리는 캘리포니아 Merced 도심 근처에 위치합니다. 도시 구조와 도로 통로는 일관되게 밝게 빛나고 농경지는 어둡게 남아 있습니다. 이 모델은 레이블 없이도 개발된 표면(built-up surfaces)과 경작지(cropland)를 구별해냅니다.
쿼리를 작은 농업 지역으로 전환하여, 쿼리 벡터를 해당 영역에 걸친 임베딩 벡터들의 평균값으로 정의하고, 가장 유사도가 높고 낮은 위치에서 Sentinel-2 이미지를 추출하여 모델이 무엇을 유사하거나 비유사하다고 처리하는지 확인했습니다.
가장 유사한 패치(0.89 이상)는 모두 관개 시설이 갖춰진 농업 필지였습니다. 반면, 가장 유사하지 않은 곳(거의 0에 가까움)은 주변에 황무지가 있는 공항, 건조 지형을 가진 저수지, 그리고 건조 목초지였습니다. 학습 데이터도 없고 라벨링된 정보도 없으며, 오직 임베딩 공간에서의 내적 곱(dot product)만을 사용했습니다.
유사도 검색은 "어디가 이런 것과 비슷한가?"를 알려주지만, 때로는 지역 전체에 걸친 이산적인 라벨이 필요할 때가 있습니다. 표현 자체가 이미 풍부하기 때문에, 간단한 선형 분류기(linear classifier)만으로도 아주 적은 수의 라벨링된 픽셀로부터 벽면을 가득 채우는 토지 피복 지도(land-cover map)를 생성할 수 있습니다.
이를 테스트하기 위해 우리는 베트남 해안 습지 지역인 Ca Mau에서 단 60개의 픽셀(클래스당 20개)만 라벨링했습니다. ESA WorldCover 2021을 세 가지 클래스(맹그로브, 물, 기타)의 라벨 소스로 사용하여, 각 클래스별로 20개의 픽셀을 무작위 샘플링하고, 피처별 표준화(per-feature standardization)를 적용한 로지스틱 회귀(logistic regression) 모델을 학습시킨 후, 해당 지역의 모든 픽셀을 예측했습니다.
60개의 라벨링된 픽셀만으로 분류기는 가중 F1 점수 = 0.84인 일관성 있는 지도를 생성했습니다. 맹그로브 군락지, 조간대 수로, 그리고 개방수는 지역 전체에 걸쳐 구분되었습니다. 이 분류기는 빠르게 포화 상태에 도달합니다. 라벨을 30개에서 300개로 늘려도 정확도가 거의 변하지 않았는데, 이는 임베딩 자체가 대부분의 중적 작업을 수행했기 때문입니다.
분석의 핵심은 몇 줄의 Python 코드였습니다:
import rasterio
import numpy as np
from sklearn.pipeline import make_pipeline
...
이것은 *선형 탐지(linear probe)*이며, 이는 파운데이션 모델(foundation models)을 위한 표준 평가 방법입니다. 192차원 이상의 로지스틱 회귀가 그렇게 적은 수의 라벨만으로 토지 피복 경계를 복구했다는 사실은 Tiny 인코더가 사전 학습 과정 동안 이러한 생태학적 구분을 체계화했음을 의미합니다. 더 큰 변형 모델(Base, 768-dim)들은 훨씬 더 풍부한 표현을 인코딩합니다.
만약 Ground-truth 폴리곤, 현장 조사 지점(field survey points), 또는 대략적인 기존 지도(coarse existing map)를 가지고 있다면, 유사한 분류기(classifier)를 훈련하여 관심 지역(region of interest)에 대한 벽면 전체 지도(wall-to-wall map)를 만들 수 있습니다.
Studio는 모든 시간 해상도(월별부터 연간까지)에서 임베딩을 생성할 수 있으므로, 두 기간을 직접 비교하여 지표면 조건이 어디서 변했는지 파악할 수 있습니다. 아래에서는 2023년 9월과 2024년 9월의 동일 지역에 대한 월별 Sentinel-2 임베딩을 계산하고 픽셀당 코사인 거리(cosine distance)를 측정했습니다. 캘리포니아주 버트 카운티(Butte County, California)의 Park Fire(2024년 7월~9월) 연소 흔적(burn scar)이 즉시 눈에 띕니다.
라벨링이나 훈련이 필요 없습니다. 단지 두 개의 임베딩 COG와 몇 줄의 Python 코드만 있으면 됩니다.
때로는 질의 위치나 참조 라벨이 없는 경우도 있습니다. 단순히 임베딩 내에 어떤 구조가 존재하는지 이해하고 싶을 수 있습니다. 주성분 분석(Principal Component Analysis, PCA)은 이를 수행하는 깔끔한 방법입니다. 3차원으로 축소하여 R/G/B로 매핑하고 거짓색 이미지(false-color image)로 표시합니다. 유사한 임베딩은 자동으로 비슷한 색상을 얻게 됩니다.
네덜란드의 플레볼란드(Flevoland)는 농업 구획의 규칙적인 격자 구조를 가진 간척지 풍경입니다. PCA 거짓색 이미지는 이러한 경계를 높은 충실도로 재현합니다. 서로 다른 작물 유형, 수역, 도시 지역은 각각 고유한 색조를 갖게 됩니다. 임베딩은 자신이 어떤 구획이나 작물인지 알려주지 받았음에도 불구하고 지형 구조를 내재화했습니다.
이러한 비지도(unsupervised) 방식의 시각화는 관심 지역 전반에 걸쳐 모델이 포착한 구조가 무엇인지 빠르게 확인할 수 있는 방법입니다.
유사성 검색(Similarity search), 소수샷 분할(few-shot segmentation), 변화 탐지(change detection), 그리고 PCA 탐색은 표준 래스터 데이터에서 몇 초 만에 실행되는 간단한 연산입니다. 이 모든 것의 힘은 임베딩에서 나옵니다. 임베딩이란 지구 관측 데이터를 벡터로 압축하여 수많은 센서와 수백만 개의 훈련 예시로부터 각 위치에 대한 풍부한 정보를 포착하는 학습된 표현(learned representations)입니다.
맞춤형 임베딩 내보내기가 이제 가능합니다. 프로젝트를 생성하고, 임베딩 모델을 구성한 다음, 임베딩을 계산하세요. 내보내진 GeoTIFF는 QGIS, GDAL, rasterio 또는 자체 스크립트 등 모든 지리 공간 도구에서 작동합니다. 이 게시물의 예제를 엔드투엔드(end-to-end)로 재현하는 코드를 보려면 임베딩 튜토리얼을 참조하세요. 여기에는 유사성 검색(similarity search), 소수샷 분할(few-shot segmentation), 변화 탐지(change detection), PCA 시각화에 대한 작동 코드가 포함되어 있습니다. 로컬 설정 없이 실습해 보고 싶다면 Colab 노트북을 사용해 보세요.
이 게시물의 예제들은 모두 태스크별 훈련이 없는 고정 임베딩(frozen embeddings)을 사용합니다. 임베딩은 OlmoEarth를 활용하는 훌륭한 진입점입니다. 이는 빠르고 비용 효율적인 결과 생성을 가능하게 하며, 리소스가 제한된 환경에서도 잘 작동하고 공유하기 쉽습니다. 더 높은 성능이 필요한 애플리케이션의 경우, OlmoEarth Studio는 또한 SFT(Supervised Fine-Tuning)를 지원하여 사용자의 레이블을 기반으로 태스크별 모델 헤드(task-specific model head)를 훈련할 수 있으며, 이는 일반적으로 고정된 특징(frozen features)에 대한 선형 프로브(linear probes)보다 성능이 뛰어납니다.
저희는 항상 사전 훈련 접근 방식(pretraining approaches)을 개선하기 위해 노력하고 있지만, 위에서 설명한 기술 중 일부를 사용하여 사용 사례의 임베딩 품질을 확인하는 것이 중요합니다. 성능은 또한 입력 이미지의 품질에도 달려 있습니다. 지속적인 구름 덮개, 대기 아티팩트, 또는 합성 기간 동안 누락된 관측값 등이 결과 벡터에 영향을 미칠 수 있습니다.
유럽 우주국(European Space Agency)의 Sentinel-2 L2A 이미지는 Microsoft Planetary Computer를 통해 접근 가능합니다. 맹그로브 참고 자료는 ESA WorldCover 2021 v200을 사용했습니다. 전역 클러스터링 시각화는 OlmoEarth-v1-Base (768차원)와 패치 크기 8의 계절별 Sentinel-2 합성 이미지를 사용했으며, 110만 개 이상의 사전 훈련 샘플에 대한 인스턴스 레벨 임베딩을 사용했습니다.