Hur xarvio Digital Farming Solutions accelererar sin utveckling med Amazon SageMaker geospatiala möjligheter

Källnod: 1766079

Detta är ett gästinlägg skrivet av Julian Blau, Data Scientist på xarvio Digital Farming Solutions; BASF Digital Farming GmbH och Antonio Rodriguez, AI/ML Specialist Solutions Architect på AWS

xarvio Digital Farming Solutions är ett varumärke från BASF Digital Farming GmbH, som är en del av BASF Agricultural Solutions division. xarvio Digital Farming Solutions erbjuder digitala precisionsodlingsprodukter för att hjälpa bönder att optimera växtproduktionen. Tillgängliga globalt, xarvio-produkter använder maskininlärning (ML), bildigenkänningsteknik och avancerade grödor och sjukdomsmodeller, i kombination med data från satelliter och väderstationsenheter, för att leverera korrekta och aktuella agronomiska rekommendationer för att hantera behoven på enskilda fält. xarvios produkter är skräddarsydda för lokala jordbruksförhållanden, kan övervaka tillväxtstadier och känna igen sjukdomar och skadedjur. De ökar effektiviteten, sparar tid, minskar risker och ger högre tillförlitlighet för planering och beslutsfattande – allt samtidigt som de bidrar till ett hållbart jordbruk.

Vi arbetar med olika geospatiala data, inklusive satellitbilder av de områden där våra användares fält finns, för några av våra användningsfall. Därför använder och bearbetar vi hundratals stora bildfiler dagligen. Inledningsvis var vi tvungna att investera mycket manuellt arbete och ansträngning för att ta in, bearbeta och analysera denna data med hjälp av tredjepartsverktyg, bibliotek med öppen källkod eller allmänna molntjänster. I vissa fall kan det ta upp till två månader för oss att bygga pipelines för varje specifikt projekt. Nu, genom att utnyttja de geospatiala kapaciteterna hos Amazon SageMaker, har vi minskat denna tid till bara 1–2 veckor.

Denna tidsbesparing är resultatet av att automatisera de geospatiala datapipelines för att leverera våra användningsfall mer effektivt, tillsammans med att använda inbyggda återanvändbara komponenter för att påskynda och förbättra liknande projekt i andra geografiska områden, samtidigt som man tillämpar samma beprövade steg för annan användning fall baserat på liknande uppgifter.

I det här inlägget går vi igenom ett exempel på användningsfall för att beskriva några av de tekniker vi vanligtvis använder, och visar hur implementering av dessa med SageMakers geospatiala funktioner i kombination med andra SageMaker-funktioner ger mätbara fördelar. Vi inkluderar även kodexempel så att du kan anpassa dessa till dina egna specifika användningsfall.

Översikt över lösningen

Ett typiskt fjärranalysprojekt för att utveckla nya lösningar kräver en steg-för-steg-analys av bilder tagna av optiska satelliter som t.ex. Vakt or landat, i kombination med annan data, inklusive väderprognoser eller specifika fältegenskaper. Satellitbilderna ger oss värdefull information som används i våra digitala jordbrukslösningar för att hjälpa våra användare att utföra olika uppgifter:

  • Att upptäcka sjukdomar tidigt inom sina områden
  • Planera rätt näring och behandlingar som ska tillämpas
  • Få insikter om väder och vatten för planering av bevattning
  • Förutsäga skörden
  • Utföra andra odlingsuppgifter

För att uppnå dessa mål kräver våra analyser vanligtvis förbearbetning av satellitbilderna med olika tekniker som är vanliga i den geospatiala domänen.

För att demonstrera förmågan hos SageMaker geospatial, experimenterade vi med att identifiera jordbruksfält genom ML-segmenteringsmodeller. Dessutom utforskade vi de redan existerande geospatiala SageMaker-modellerna och BYOM-funktionen (kom med din egen modell) för geospatiala uppgifter som markanvändning och klassificering av marktäcke, eller klassificering av grödor, som ofta kräver panoptiska eller semantiska segmenteringstekniker som ytterligare steg i processen.

I följande avsnitt går vi igenom några exempel på hur man utför dessa steg med SageMakers geospatiala funktioner. Du kan också följa dessa i anteckningsboken från slut-till-ände som finns tillgänglig i följande GitHub repository.

Som tidigare nämnts valde vi användningsfallet för klassificering av marktäcke, som består av att identifiera vilken typ av fysisk täckning som vi har på ett givet geografiskt område på jordens yta, organiserat på en uppsättning klasser inklusive vegetation, vatten eller snö. Denna högupplösta klassificering gör att vi kan upptäcka detaljerna för fältens läge och dess omgivning med hög noggrannhet, vilket senare kan kopplas ihop med andra analyser såsom förändringsdetektering i grödaklassificering.

Klientinställningar

Låt oss först anta att vi har användare med grödor som odlas i ett givet geografiskt område som vi kan identifiera inom en polygon av geospatiala koordinater. För det här inlägget definierar vi ett exempelområde över Tyskland. Vi kan också definiera ett givet tidsintervall, till exempel under de första månaderna 2022. Se följande kod:

### Coordinates for the polygon of your area of interest...
coordinates = [
    [9.181602157004177, 53.14038825707946],
    [9.181602157004177, 52.30629767547948],
    [10.587520893823973, 52.30629767547948],
    [10.587520893823973, 53.14038825707946],
    [9.181602157004177, 53.14038825707946],
]
### Time-range of interest...
time_start = "2022-01-01T12:00:00Z"
time_end = "2022-05-01T12:00:00Z"

I vårt exempel arbetar vi med SageMaker geospatiala SDK genom programmatisk eller kodinteraktion, eftersom vi är intresserade av att bygga kodpipelines som kan automatiseras med de olika steg som krävs i vår process. Observera att du också kan arbeta med ett användargränssnitt genom de grafiska tilläggen som tillhandahålls med SageMaker geospatial in Amazon SageMaker Studio om du föredrar detta tillvägagångssätt, som visas i följande skärmdumpar. För att komma åt Geospatial Studio UI, öppna SageMaker Studio Launcher och välj Hantera geospatiala resurser. Du kan kontrollera mer information i dokumentationen till Kom igång med Amazon SageMaker Geospatial Capabilities.

Geospatial UI main

Geospatial UI lista över jobb

Här kan du grafiskt skapa, övervaka och visualisera resultaten av de jordobservationsjobb (EOJs) som du kör med SageMakers geospatiala funktioner.

Tillbaka till vårt exempel, det första steget för att interagera med SageMakers geospatiala SDK är att konfigurera klienten. Vi kan göra detta genom att upprätta en session med botocore bibliotek:

import boto3
gsClient = boto3.client('sagemaker-geospatial')

Från och med denna tidpunkt kan vi använda klienten för att köra alla EOJs av intresse.

Skaffa data

För detta användningsfall börjar vi med att samla in satellitbilder för vårt givna geografiska område. Beroende på platsen av intresse kan det finnas mer eller mindre frekvent täckning av tillgängliga satelliter, som har sina bilder organiserade i vad som vanligtvis kallas rastersamlingar.

Med SageMakers geospatiala funktioner har du direkt tillgång till högkvalitativa datakällor för att erhålla geospatiala data direkt, inklusive de från AWS datautbyte och Register över öppna data på AWS, bland andra. Vi kan köra följande kommando för att lista rastersamlingarna som redan tillhandahålls av SageMaker:

list_raster_data_collections_resp = gsClient.list_raster_data_collections()

Detta returnerar detaljerna för de olika rastersamlingarna som finns tillgängliga, inklusive Landsat C2L2 ytreflektans (SR), Landsat C2L2 yttemperatur (ST) eller Sentinel 2A & 2B. Bekvämt är nivå 2A-bilder redan optimerade till Cloud-Optimized GeoTIFFs (COGs). Se följande kod:

…
{'Name': 'Sentinel 2 L2A COGs',
  'Arn': 'arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8',
  'Type': 'PUBLIC',
  'Description': 'Sentinel-2a and Sentinel-2b imagery, processed to Level 2A (Surface Reflectance) and converted to Cloud-Optimized GeoTIFFs'
…

Låt oss ta det sista som exempel, genom att sätta vår data_collection_arn parameter till Sentinel 2 L2A COGs samling ARN.

Vi kan också söka efter tillgängliga bilder för en given geografisk plats genom att skicka koordinaterna för en polygon som vi definierat som vårt intresseområde (AOI). Detta låter dig visualisera de bildrutor som är tillgängliga som täcker polygonen du skickar in för den angivna AOI, inklusive Amazon enkel lagringstjänst (Amazon S3) URI:er för dessa bilder. Observera att satellitbilder vanligtvis tillhandahålls på olika sätt band enligt observationens våglängd; vi diskuterar detta mer senare i inlägget.

response = gsClient.search_raster_data_collection(**eoj_input_config, Arn=data_collection_arn)

Den föregående koden returnerar S3 URI:erna för de olika bildrutorna som är tillgängliga, som du direkt kan visualisera med vilket bibliotek som helst som är kompatibelt med GeoTIFFs som t.ex. rasterio. Låt oss till exempel visualisera två av True Color Image (TCI)-rutorna.

…
'visual': {'Href': 'https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/32/U/NC/2022/3/S2A_32UNC_20220325_0_L2A/TCI.tif'},
…

Äkta färgbild 1Äkta färgbild 2

Bearbetningstekniker

Några av de vanligaste förbearbetningsteknikerna som vi använder inkluderar molnborttagning, geomosaik, tidsstatistik, bandmatematik eller stapling. Alla dessa processer kan nu göras direkt genom användning av EOJs i SageMaker, utan att behöva utföra manuell kodning eller använda komplexa och dyra tredjepartsverktyg. Detta gör det 50 % snabbare att bygga våra pipelines för databehandling. Med SageMakers geospatiala möjligheter kan vi köra dessa processer över olika indatatyper. Till exempel:

  • Kör en fråga direkt för någon av rastersamlingarna som ingår i tjänsten via RasterDataCollectionQuery parameter
  • Skicka bilder lagrade i Amazon S3 som en ingång genom DataSourceConfig parameter
  • Kedja helt enkelt resultaten från en tidigare EOJ genom PreviousEarthObservationJobArn parameter

Denna flexibilitet gör att du kan bygga vilken typ av processpipeline du behöver.

Följande diagram illustrerar de processer vi tar upp i vårt exempel.

Geospatial bearbetningsuppgifter

I vårt exempel använder vi en rasterdatainsamlingsfråga som indata, för vilken vi skickar koordinaterna för vår AOI och tidsintervall av intresse. Vi anger också en procentandel av maximal molntäckning på 2 %, eftersom vi vill ha tydliga och brusfria observationer av vårt geografiska område. Se följande kod:

eoj_input_config = {
    "RasterDataCollectionQuery": {
        "RasterDataCollectionArn": data_collection_arn,
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {"PolygonGeometry": {"Coordinates": [coordinates]}}
        },
        "TimeRangeFilter": {"StartTime": time_start, "EndTime": time_end},
        "PropertyFilters": {
            "Properties": [
                {"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 2}}}
            ]
        },
    }
}

För mer information om stödd frågesyntax, se Skapa ett jordobservationsjobb.

Borttagning av molngap

Satellitobservationer är ofta mindre användbara på grund av hög molntäckning. Molngapfyllning eller molnborttagning är processen att ersätta de grumliga pixlarna från bilderna, vilket kan göras med olika metoder för att förbereda data för ytterligare bearbetningssteg.

Med SageMakers geospatiala funktioner kan vi uppnå detta genom att specificera en CloudRemovalConfig parameter i konfigurationen av vårt jobb.

eoj_config =  {
    'CloudRemovalConfig': {
        'AlgorithmName': 'INTERPOLATION',
        'InterpolationValue': '-9999'
    }
}

Observera att vi använder en interpolationsalgoritm med ett fast värde i vårt exempel, men det finns andra konfigurationer som stöds, som förklaras i Skapa ett jordobservationsjobb dokumentation. Interpolationen gör det möjligt att uppskatta ett värde för att ersätta de grumliga pixlarna, genom att beakta de omgivande pixlarna.

Vi kan nu köra vår EOJ med våra input och jobbkonfigurationer:

response = gsClient.start_earth_observation_job(
    Name =  'cloudremovaljob',
    ExecutionRoleArn = role,
    InputConfig = eoj_input_config,
    JobConfig = eoj_config,
)

Detta jobb tar några minuter att slutföra beroende på inmatningsområdet och bearbetningsparametrarna.

När det är klart lagras resultaten av EOJ på en tjänsteägd plats, varifrån vi antingen kan exportera resultaten till Amazon S3 eller kedja dessa som indata för en annan EOJ. I vårt exempel exporterar vi resultaten till Amazon S3 genom att köra följande kod:

response = gsClient.export_earth_observation_job(
    Arn = cr_eoj_arn,
    ExecutionRoleArn = role,
    OutputConfig = {
        'S3Data': {
            'S3Uri': f's3://{bucket}/{prefix}/cloud_removal/',
            'KmsKeyId': ''
        }
    }
)

Nu kan vi visualisera de resulterande bilderna lagrade på vår specificerade Amazon S3-plats för de individuella spektralbanden. Låt oss till exempel inspektera två av de blå bandbilderna som returneras.

Alternativt kan du också kontrollera resultaten av EOJ grafiskt genom att använda de geospatiala tilläggen som finns tillgängliga i Studio, som visas i följande skärmdumpar.

Cloud Removal UI 1   Cloud Removal UI 2

Tidsstatistik

Eftersom satelliterna kontinuerligt kretsar runt jorden, tas bilderna för ett givet geografiskt område av intresse vid specifika tidsramar med en specifik tidsfrekvens, till exempel dagligen, var 5:e dag eller varannan vecka, beroende på satellit. Den tidsmässiga statistikprocessen gör det möjligt för oss att kombinera olika observationer tagna vid olika tidpunkter för att producera en aggregerad vy, såsom ett årsmedelvärde, eller medelvärdet av alla observationer inom ett specifikt tidsintervall, för det givna området.

Med SageMakers geospatiala funktioner kan vi göra detta genom att ställa in TemporalStatisticsConfig parameter. I vårt exempel får vi den årliga medelaggregeringen för det nära infraröda (NIR) bandet, eftersom detta band kan avslöja skillnader i vegetationstäthet under toppen av baldakinerna:

eoj_config =  {
    'TemporalStatisticsConfig': {
        'GroupBy': 'YEARLY',
        'Statistics': ['MEAN'],
        'TargetBands': ['nir']
    }
}

Efter några minuter att köra en EOJ med den här konfigurationen kan vi exportera resultaten till Amazon S3 för att få bilder som följande exempel, där vi kan observera de olika vegetationstätheterna representerade med olika färgintensiteter. Observera att EOJ kan producera flera bilder som brickor, beroende på tillgängliga satellitdata för det angivna tidsintervallet och koordinaterna.

Tidsstatistik 1Tidsstatistik 2

Band matematik

Jordobservationssatelliter är designade för att upptäcka ljus i olika våglängder, varav några är osynliga för det mänskliga ögat. Varje intervall innehåller specifika band av ljusspektrumet vid olika våglängder, som i kombination med aritmetik kan producera bilder med rik information om fältets egenskaper såsom vegetationshälsa, temperatur eller närvaro av moln, bland många andra. Detta utförs i en process som vanligtvis kallas bandmatte eller bandaritmetik.

Med SageMaker geospatiala funktioner kan vi köra detta genom att ställa in BandMathConfig parameter. Låt oss till exempel få fram fuktindexbilderna genom att köra följande kod:

eoj_config =  {
    'BandMathConfig': {
        'CustomIndices': {
            'Operations': [
                {
                    'Name': 'moisture',
                    'Equation': '(nir08 - swir16) / (nir08 + swir16)'
                }
            ]
        }
    }
}

Efter några minuter att köra en EOJ med den här konfigurationen kan vi exportera resultaten och få bilder, till exempel följande två exempel.

Fuktindex 1Fuktindex 2Fuktindexförklaring

Stacking

I likhet med bandmatematik kallas processen att kombinera band för att producera sammansatta bilder från originalbanden stapling. Till exempel kan vi stapla de röda, blåa och gröna ljusbanden i en satellitbild för att producera den sanna färgbilden av AOI.

Med SageMakers geospatiala funktioner kan vi göra detta genom att ställa in StackConfig parameter. Låt oss stapla RGB-banden enligt föregående exempel med följande kommando:

eoj_config =  {
    'StackConfig': {
        'OutputResolution': {
            'Predefined': 'HIGHEST'
        },
        'TargetBands': ['red', 'green', 'blue']
    }
}

Efter några minuter att köra en EOJ med denna konfiguration kan vi exportera resultaten och få bilder.

Stapling TCI 1Stapling TCI 2

Semantiska segmenteringsmodeller

Som en del av vårt arbete använder vi vanligtvis ML-modeller för att köra slutsatser över de förbehandlade bilderna, som att upptäcka molniga områden eller klassificera typen av land i varje område av bilderna.

Med SageMakers geospatiala funktioner kan du göra detta genom att förlita dig på de inbyggda segmenteringsmodellerna.

För vårt exempel, låt oss använda marktäckessegmenteringsmodellen genom att specificera LandCoverSegmentationConfig parameter. Detta gör slutsatser om indata genom att använda den inbyggda modellen, utan att behöva träna eller vara värd för någon infrastruktur i SageMaker:

response = gsClient.start_earth_observation_job(
    Name =  'landcovermodeljob',
    ExecutionRoleArn = role,
    InputConfig = eoj_input_config,
    JobConfig = {
        'LandCoverSegmentationConfig': {},
    },
)

Efter några minuter att köra ett jobb med den här konfigurationen kan vi exportera resultaten och få bilder.

Marktäcke 1Marktäcke 2Marktäcke 3Marktäcke 4

I de föregående exemplen motsvarar varje pixel i bilderna en landtypsklass, som visas i följande förklaring.

Land Cover legend

Detta gör det möjligt för oss att direkt identifiera de specifika typerna av områden i scenen som växtlighet eller vatten, vilket ger värdefulla insikter för ytterligare analyser.

Ta med din egen modell med SageMaker

Om de toppmoderna geospatiala modellerna som tillhandahålls med SageMaker inte räcker för vårt användningsfall, kan vi också koppla ihop resultaten av något av de förbehandlingssteg som hittills har visat med valfri anpassad modell ombord på SageMaker för slutledning, som förklarats i denna SageMaker skriptläge exempel. Vi kan göra detta med alla inferenslägen som stöds i SageMaker, inklusive synkron med SageMaker-slutpunkter i realtid, asynkron med SageMaker asynkrona slutpunkter, batch eller offline med SageMaker-batchtransformationer och serverlös med SageMaker-serverlös slutledning. Du kan kontrollera ytterligare information om dessa lägen i Distribuera modeller för slutledning dokumentation. Följande diagram illustrerar arbetsflödet på hög nivå.

Alternativ för slutledningsflöde

För vårt exempel, låt oss anta att vi har ombord två modeller för att utföra en marktäckesklassificering och klassificering av grödor.

Vi måste bara peka på vår tränade modellartefakt, i vårt exempel en PyTorch-modell, liknande följande kod:

from sagemaker.pytorch import PyTorchModel
import datetime

model = PyTorchModel(
    name=model_name, ### Set a model name
    model_data=MODEL_S3_PATH, ### Location of the custom model in S3
    role=role,
    entry_point='inference.py', ### Your inference entry-point script
    source_dir='code', ### Folder with any dependencies
    image_uri=image_uri, ### URI for your AWS DLC or custom container
    env={
        'TS_MAX_REQUEST_SIZE': '100000000',
        'TS_MAX_RESPONSE_SIZE': '100000000',
        'TS_DEFAULT_RESPONSE_TIMEOUT': '1000',
    }, ### Optional – Set environment variables for max size and timeout
)

predictor = model.deploy(
    initial_instance_count = 1, ### Your number of instances
    instance_type = 'ml.g4dn.8xlarge', ### Your instance type
    async_inference_config=sagemaker.async_inference.AsyncInferenceConfig(
        output_path=f"s3://{bucket}/{prefix}/output",
        max_concurrent_invocations_per_instance=2,
    ), ### Optional – Async config if using SageMaker Async Endpoints
)

predictor.predict(data) ### Your images for inference

Detta gör att du kan få de resulterande bilderna efter slutledning, beroende på vilken modell du använder.

I vårt exempel, när du kör en anpassad marktäckessegmentering, producerar modellen bilder som liknar följande, där vi jämför ingångs- och förutsägelsebilderna med dess motsvarande förklaring.

Marktäckningssegmentering 1  Marktäckningssegmentering 2. Land Cover Segmentation legend

Följande är ett annat exempel på en klassificeringsmodell för grödor, där vi visar jämförelsen mellan de ursprungliga och resulterande panoptiska och semantiska segmenteringsresultaten, med dess motsvarande förklaring.

Grödklassificering

Automatisera geospatiala pipelines

Slutligen kan vi också automatisera de tidigare stegen genom att bygga geospatial databehandling och inferenspipelines med Amazon SageMaker-rörledningar. Vi kedjar helt enkelt varje förbearbetningssteg som krävs genom användning av Lambdasteg och Återuppringningssteg i rörledningar. Till exempel kan du också lägga till ett sista slutledningssteg med hjälp av ett Transform Step, eller direkt genom en annan kombination av Lambda Steps och Callback Steps, för att köra en EOJ med en av de inbyggda semantiska segmenteringsmodellerna i SageMakers geospatiala funktioner.

Observera att vi använder Lambda-steg och återuppringningssteg i pipelines eftersom EOJ:erna är asynkrona, så den här typen av steg tillåter oss att övervaka körningen av bearbetningsjobbet och återuppta pipelinen när den är klar genom meddelanden i en Amazon enkel kötjänst (Amazon SQS) kö.

Geospatial pipeline

Du kan kontrollera anteckningsboken i GitHub repository för ett detaljerat exempel på denna kod.

Nu kan vi visualisera diagrammet över vår geospatiala pipeline genom Studio och övervaka körningarna i Pipelines, som visas i följande skärmdump.

Geospatial Pipeline UI

Slutsats

I det här inlägget presenterade vi en sammanfattning av de processer vi implementerat med SageMakers geospatiala funktioner för att bygga geospatiala datapipelines för våra avancerade produkter från xarvio Digital Farming Solutions. Att använda SageMaker geospatial ökade effektiviteten i vårt geospatiala arbete med mer än 50 %, genom användningen av förbyggda API:er som accelererar och förenklar våra förbearbetnings- och modelleringssteg för ML.

Som ett nästa steg lägger vi in ​​fler modeller från vår katalog till SageMaker för att fortsätta automatiseringen av våra lösningspipelines, och vi kommer att fortsätta att använda mer geospatiala funktioner i SageMaker allt eftersom tjänsten utvecklas.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Vad är Amazon SageMaker Geospatial Capabilities?.


Om författarna

Julian BlauJulian Blau är en dataforskare vid BASF Digital Farming GmbH, beläget i Köln, Tyskland. Han utvecklar digitala lösningar för lantbruket och tillgodoser behoven hos BASF:s globala kundbas genom att använda geospatial data och maskininlärning. Utanför jobbet tycker han om att resa och vara utomhus med vänner och familj.

Anthony RodriguezAnthony Rodriguez är en lösningsarkitekt för artificiell intelligens och maskininlärning inom Amazon Web Services, baserad i Spanien. Han hjälper företag av alla storlekar att lösa sina utmaningar genom innovation, och skapar nya affärsmöjligheter med AWS Cloud och AI/ML-tjänster. Förutom jobbet älskar han att umgås med sin familj och sporta med sina vänner.

Tidsstämpel:

Mer från AWS maskininlärning