Crea un modello di apprendimento automatico per la segmentazione delle colture con i dati di Planet e le capacità geospaziali di Amazon SageMaker.

Crea un modello di machine learning per la segmentazione dei campi coltivati con i dati di Planet e le funzionalità geospaziali di Amazon SageMaker.

Questo post degli ospiti è scritto in collaborazione da Lydia Lihui Zhang, specialista in sviluppo aziendale, e Mansi Shah, ingegnere software/scientista dei dati presso Planet Labs. L’analisi che ha ispirato questo post è stata originariamente scritta da Jennifer Reiber Kyle.

Le capacità geospaziali di Amazon SageMaker combinate con i dati satellitari di Planet possono essere utilizzate per la segmentazione delle colture, e ci sono numerose applicazioni e benefici potenziali di quest’analisi nei campi dell’agricoltura e della sostenibilità. Alla fine del 2023, Planet ha annunciato una partnership con AWS per rendere i suoi dati geospaziali disponibili tramite Amazon SageMaker.

La segmentazione delle colture è il processo di suddivisione di un’immagine satellitare in regioni di pixel, o segmenti, che presentano caratteristiche simili alle colture. In questo post, illustreremo come utilizzare un modello di apprendimento automatico di segmentazione per identificare le regioni di coltivazioni e non coltivazioni in un’immagine.

L’identificazione delle regioni di coltivazioni è un passaggio fondamentale per ottenere informazioni sull’agricoltura e la combinazione di ricchi dati geospaziali e apprendimento automatico può portare a risultati che guidano decisioni ed azioni. Ad esempio:

  • Prender decisioni agricole basate sui dati – Acquisendo una migliore comprensione spaziale delle colture, gli agricoltori e altri attori nel settore agricolo possono ottimizzare l’uso delle risorse, dall’acqua ai fertilizzanti e ad altre sostanze chimiche durante la stagione. Ciò crea le basi per ridurre gli sprechi, migliorare le pratiche agricole sostenibili quando possibile e aumentare la produttività riducendo l’impatto ambientale.
  • Identificare stress e tendenze legate al clima – Con il continuo cambiamento climatico che influisce sulla temperatura globale e sui modelli di precipitazioni, la segmentazione delle colture può essere utilizzata per identificare le aree vulnerabili a stress legati al clima, per strategie di adattamento al clima. Ad esempio, gli archivi di immagini satellitari possono essere utilizzati per monitorare i cambiamenti in una regione di coltivazioni nel corso del tempo. Questi possono essere modifiche fisiche nella dimensione e distribuzione dei terreni coltivati. Possono anche essere i cambiamenti nella quantità di umidità nel suolo, nella temperatura del suolo e nella biomassa, derivati dal differente indice spettrale dei dati satellitari, per un’analisi più approfondita della salute delle colture.
  • Valutare e mitigare i danni – Infine, la segmentazione delle colture può essere utilizzata per identificare rapidamente e accuratamente le aree di danni alle coltivazioni in caso di calamità naturali, per prioritizzare gli sforzi di soccorso. Ad esempio, dopo un’alluvione, le immagini satellitari ad alta frequenza possono essere utilizzate per identificare le aree dove le colture sono state sommerse o distrutte, consentendo alle organizzazioni di soccorso di aiutare gli agricoltori colpiti più rapidamente.

In questa analisi, utilizziamo un modello di classificazione K-nearest neighbors (KNN) per condurre la segmentazione delle colture, e confrontiamo questi risultati con l’immagine “ground truth” di una regione agricola. I nostri risultati rivelano che la classificazione del modello KNN rappresenta in modo più accurato lo stato attuale dei campi coltivati nel 2017 rispetto ai dati di classificazione “ground truth” del 2015. Questi risultati testimoniano il potere delle immagini geospaziali ad alta frequenza di Planet. I campi agricoli cambiano spesso, talvolta più volte in una stagione, e avere immagini satellitari ad alta frequenza disponibili per osservare ed analizzare queste terre può fornire un immenso valore alla nostra comprensione delle terre agricole e degli ambienti in continua evoluzione.

La partnership tra Planet e AWS su geospaziale ML

Le capacità geospaziali di SageMaker consentono a scienziati dei dati ed ingegneri di ML di costruire, addestrare e distribuire modelli utilizzando dati geospaziali. Le capacità geospaziali di SageMaker ti permettono di trasformare o arricchire in modo efficiente set di dati geospaziali su larga scala, accelerare la creazione di modelli con modelli di ML pre-addestrati e esplorare previsioni di modelli e dati geospaziali su una mappa interattiva utilizzando grafica 3D accelerata e strumenti di visualizzazione integrati. Con le capacità geospaziali di SageMaker, puoi elaborare grandi set di dati di immagini satellitari e altri dati geospaziali per creare modelli di ML accurati per varie applicazioni, compresa la segmentazione delle colture, di cui discutiamo in questo post.

Planet Labs PBC è una nota azienda di imaging della Terra che utilizza la sua vasta flotta di satelliti per catturare immagini della superficie terrestre su base giornaliera. I dati di Planet sono quindi una risorsa preziosa per la geospaziale ML. Le sue immagini satellitari ad alta risoluzione possono essere utilizzate per identificare varie caratteristiche delle colture e la loro salute nel corso del tempo, ovunque sulla Terra.

La partnership tra Planet e SageMaker consente ai clienti di accedere e analizzare facilmente i dati satellitari ad alta frequenza di Planet utilizzando gli strumenti di intelligenza artificiale potenti di AWS. Gli scienziati dei dati possono portare i propri dati o trovare e sottoscrivere comodamente i dati di Planet senza dover cambiare ambiente.

Segmentazione delle colture in un notebook di Amazon SageMaker Studio con un’immagine geospaziale

In questo workflow di intelligenza artificiale geospaziale, vedremo come portare i dati di Planet insieme alla fonte di dati veri e propri in SageMaker, e come addestrare, inferire e implementare un modello di segmentazione delle colture con un classificatore KNN. Infine, valuteremo l’accuratezza dei nostri risultati e li confronteremo con la nostra classificazione basata sui dati veri e propri.

Il classificatore KNN utilizzato è stato addestrato in un notebook di Amazon SageMaker Studio con un’immagine geospaziale, e fornisce un kernel di notebook flessibile ed estendibile per lavorare con dati geospaziali.

Il notebook di Amazon SageMaker Studio con immagine geospaziale è pre-installato con librerie geospaziali comunemente utilizzate come GDAL, Fiona, GeoPandas, Shapely e Rasterio, che consentono la visualizzazione e l’elaborazione di dati geospaziali direttamente in un ambiente di notebook Python. Vengono inoltre utilizzate librerie di intelligenza artificiale comuni come OpenCV o scikit-learn per eseguire la segmentazione delle colture tramite classificazione KNN, ed anche queste vengono installate nel kernel geospaziale.

Selezione dei dati

Il campo agricolo su cui ci concentriamo si trova nella soleggiata contea di Sacramento in California.

Perché Sacramento? La selezione dell’area e del periodo per questo tipo di problema è principalmente definita dalla disponibilità di dati veri e propri, e tali dati, come il tipo di coltura e i dati sui confini, non sono facili da ottenere. Il dataset 2015 del DWR Survey sulla destinazione d’uso dei terreni della contea di Sacramento è un dataset pubblicamente disponibile che copre la contea di Sacramento in quell’anno e fornisce confini regolati a mano.

L’immagine satellitare principale che utilizziamo è il prodotto PSScene di Planet, che contiene bande Blu, Verde, Rossa e Near-IR ed è corretto radiometricamente per la radianza al sensore. I coefficienti per la correzione alla riflettanza al sensore sono forniti nei metadati della scena, il che migliora ulteriormente la coerenza tra le immagini scattate in diversi momenti.

I satelliti Dove di Planet che hanno prodotto queste immagini sono stati lanciati il 14 febbraio 2017 (comunicato stampa), quindi non hanno acquistato immagini della contea di Sacramento nel 2015. Tuttavia, hanno acquisito immagini giornaliere dell’area dal lancio. In questo esempio, ci accontentiamo dello scarto di 2 anni tra i dati veri e propri e le immagini satellitari. Tuttavia, avremmo potuto utilizzare immagini a risoluzione inferiore del Landsat 8 come collegamento tra il 2015 e il 2017.

Accesso ai dati di Planet

Per aiutare gli utenti a ottenere dati accurati e azionabili più velocemente, Planet ha sviluppato il Planet Software Development Kit (SDK) per Python. Questo è uno strumento potente per scienziati dei dati e sviluppatori che vogliono lavorare con immagini satellitari e altri dati geospaziali. Con questo SDK, è possibile cercare e accedere alla vasta collezione di immagini satellitari ad alta risoluzione di Planet, così come ai dati provenienti da altre fonti come OpenStreetMap. Lo SDK fornisce un client Python per le API di Planet, oltre a una soluzione di interfaccia a riga di comando (CLI) senza codice, facilitando l’incorporazione di immagini satellitari e dati geospaziali in workflow Python. In questo esempio, utilizziamo il client Python per identificare e scaricare le immagini necessarie per l’analisi.

Puoi installare il client Python di Planet nel notebook di SageMaker Studio con immagine geospaziale tramite un semplice comando:

%pip install planet

Puoi utilizzare il client per interrogare le immagini satellitari pertinenti e ottenere un elenco dei risultati disponibili in base all’area di interesse, all’intervallo di tempo e ad altri criteri di ricerca. Nell’esempio seguente, iniziamo chiedendo quanti scene PlanetScope (immagini giornaliere di Planet) coprono la stessa area di interesse (AOI) che abbiamo definito in precedenza attraverso i dati veri e propri a Sacramento, con un certo intervallo di tempo tra il 1° giugno e il 1° ottobre 2017; così come un certo intervallo desiderato di copertura nuvolosa massima del 10%:

# crea una richiesta utilizzando l'SDK dalle specifiche di ricerca del tipo di datiitem_type = ['PSScene']geom_filter_train = data_filter.geometry_filter(aoi_train)date_range_filter = data_filter.date_range_filter("acquired", gt=datetime(month=6, day=1, year=2017), lt=datetime(month=10, day=1, year=2017))cloud_cover_filter = data_filter.range_filter('cloud_cover', lt=0.10)combined_filter_test = data_filter.and_filter([geom_filter_test, date_range_filter, cloud_cover_filter])    # Esegui una ricerca rapida per i nostri dati di TRAINasync with Session() as sess:    cl = sess.client('data')    results = cl.search(name='temp_search_train',search_filter=combined_filter_train, item_types=item_type)    train_result_list = [i async for i in results]print("Numero di risultati della scena di train: ", len(train_result_list))

I risultati restituiti mostrano il numero di scene corrispondenti che si sovrappongono alla nostra area di interesse. Contengono anche i metadati di ogni scena, il suo ID dell’immagine e un riferimento a un’anteprima dell’immagine.

Dopo che una particolare scena è stata selezionata, con specifica sull’ID della scena, il tipo di elemento e i pacchetti di prodotto (documentazione di riferimento), è possibile utilizzare il seguente codice per scaricare l’immagine e i relativi metadati:

train_scene_id = '20170601_180425_0f35'item_type = 'PSScene'bundle_type = 'analytic_sr_udm2'# definisci la richiesta dell'ordineproducts = [order_request.product([train_scene_id], bundle_type, item_type)]request = order_request.build_request('train_dataset', products=products)# scarica i dati di trainingasync with Session() as sess:    cl = sess.client('orders')    # utilizza "reporting" per gestire il polling dello stato dell'ordine    with reporting.StateBar(state='creating') as bar:        # esegui l'ordine con la richiesta dell'ordine creata precedentemente        order = await cl.create_order(request)        bar.update(state='created', order_id=train_order['id'])        # attendi tramite il polling fino a quando l'ordine viene processato        await cl.wait(train_order['id'], callback=bar.update_state)    # scarica l'asset effettivo    await cl.download_order(order_id=order['id'], directory=download_directory, progress_bar=True, overwrite=True)

Questo codice scarica l’immagine satellitare corrispondente nel volume del Amazon Elastic File System (Amazon EFS) per SageMaker Studio.

Addestramento del modello

Dopo che i dati sono stati scaricati con il client Planet Python, è possibile addestrare il modello di segmentazione. In questo esempio, si utilizza una combinazione di classificazione KNN e tecniche di segmentazione delle immagini per identificare l’area coltivata e creare le caratteristiche georeferenziate in formato geojson.

I dati di Planet vengono caricati e preelaborati utilizzando le librerie e gli strumenti geospaziali incorporati in SageMaker per prepararli per l’addestramento del classificatore KNN. I dati di verità del terreno per l’addestramento sono il dataset della survey DWR dell’uso del suolo della contea di Sacramento del 2015, mentre i dati di Planet del 2017 vengono utilizzati per testare il modello.

Converti le caratteristiche del terreno in contorni

Per addestrare il classificatore KNN, la classe di ciascun pixel come coltura o non coltura deve essere identificata. La classe è determinata dal fatto che il pixel sia associato o meno a una caratteristica di coltura nei dati di verità del terreno. Per fare questa determinazione, i dati di verità del terreno vengono prima convertiti in contorni OpenCV, che vengono poi utilizzati per separare i pixel di coltura dai pixel di non coltura. I valori dei pixel e la loro classificazione vengono quindi utilizzati per addestrare il classificatore KNN.

Per convertire le caratteristiche del terreno in contorni, le caratteristiche devono prima essere proiettate nel sistema di riferimento delle coordinate dell’immagine. Successivamente, le caratteristiche vengono trasformate nello spazio dell’immagine e infine convertite in contorni. Per garantire l’accuratezza dei contorni, vengono visualizzati sovrapposti all’immagine di input, come mostrato nell’esempio seguente.

Per addestrare il classificatore KNN, i pixel di coltura e non coltura vengono separati utilizzando i contorni delle caratteristiche di coltura come maschera.

L’input del classificatore KNN è costituito da due set di dati: X, una matrice 2D che fornisce le caratteristiche da classificare; e y, un array 1D che fornisce le classi (esempio). Qui viene creato un’unica banda classificata dai set di dati di colture e non colture, dove i valori della banda indicano la classe del pixel. La banda e i valori della banda di pixel sottostanti dell’immagine vengono poi convertiti negli input X e y per la funzione di adattamento del classificatore.

Addestra il classificatore sui pixel di colture e non colture

La classificazione KNN viene eseguita con il classificatore KNeighborsClassifier di scikit-learn. Il numero di vicini, un parametro che influisce notevolmente sulle prestazioni dell’estimatore, viene regolato utilizzando la validazione incrociata in KNN. Il classificatore viene quindi addestrato utilizzando i set di dati preparati e il numero regolato di parametri vicini. Vedi il codice seguente:

def fit_classifier(pl_filename, ground_truth_filename, metadata_filename, n_neighbors):    weights = 'uniform'    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)    train_class_band = create_contour_classified_band(pl_filename, ground_truth_filename)    X = to_X(load_refl_bands(pl_filename, metadata_filename))    y = to_y(train_class_band)    clf.fit(X, y)    return clfclf = fit_classifier(train_scene_filename,                     train_ground_truth_filename,                     train_metadata_filename,                     n_neighbors)

Per valutare le prestazioni del classificatore sui suoi dati di input, viene prevista la classe del pixel utilizzando i valori della banda del pixel. Le prestazioni del classificatore si basano principalmente sulla precisione dei dati di addestramento e sulla chiara separazione delle classi di pixel in base ai dati di input (valori della banda del pixel). I parametri del classificatore, come il numero di vicini e la funzione di pesatura della distanza, possono essere regolati per compensare eventuali inesattezze nell’input. Vedi il codice seguente:

def predict(pl_filename, metadata_filename, clf):    bands = load_refl_bands(pl_filename, metadata_filename)    X = to_X(bands)    y = clf.predict(X)    return classified_band_from_y(bands[0].mask, y)train_predicted_class_band = predict(train_scene_filename, train_metadata_filename, clf)

Valuta le predizioni del modello

Il classificatore KNN addestrato viene utilizzato per prevedere le regioni di colture nei dati di test. Questi dati di test consistono in regioni che non sono state esposte al modello durante l’addestramento. In altre parole, il modello non ha conoscenza dell’area prima della sua analisi e quindi questi dati possono essere utilizzati per valutare oggettivamente le prestazioni del modello. Iniziamo ispezionando visivamente diverse regioni, a cominciare da una regione comparativamente più rumorosa.

L’ispezione visiva rivela che le classi previste sono per lo più coerenti con le classi del ground truth. Ci sono alcune regioni di deviazione, che ispezioniamo ulteriormente.

Dopo ulteriori indagini, abbiamo scoperto che parte del rumore in questa regione era dovuto al fatto che i dati del ground truth non avevano i dettagli presenti nell’immagine classificata (in alto a destra rispetto a in alto a sinistra e in basso a sinistra). Una scoperta particolarmente interessante è che il classificatore identifica gli alberi lungo il fiume come non colture, mentre i dati del ground truth li identificano erroneamente come colture. Questa differenza tra queste due segmentazioni potrebbe essere dovuta agli alberi che proiettano ombra sulla regione delle colture.

Seguendo questo, ispezioniamo un’altra regione che è stata classificata in modo diverso tra i due metodi. Queste regioni evidenziate erano precedentemente segnate come regioni non coltivate nei dati di verità sul terreno nel 2015 (in alto a destra) ma sono cambiate e mostrate chiaramente come terreni coltivati nel 2017 attraverso le scene di Planetscope (in alto a sinistra e in basso a sinistra). Sono state anche classificate principalmente come terreni coltivati tramite il classificatore (in basso a destra).

Di nuovo, vediamo che il classificatore KNN presenta un risultato più dettagliato rispetto alla classe di verità sul terreno, e cattura anche con successo il cambiamento che avviene nei terreni coltivati. Questo esempio dimostra anche il valore dei dati satellitari aggiornati giornalmente perché il mondo spesso cambia molto più velocemente rispetto a rapporti annuali, e un metodo combinato con ML come questo può aiutarci a cogliere i cambiamenti mentre accadono. La possibilità di monitorare e scoprire tali cambiamenti tramite dati satellitari, specialmente nei campi agricoli in evoluzione, fornisce utili informazioni per ottimizzare il lavoro degli agricoltori e per ottenere una migliore comprensione della stagione per qualsiasi soggetto agricolo nella catena del valore.

Valutazione del modello

Il confronto visivo delle immagini delle classi previste rispetto alle classi di verità sul terreno può essere soggettivo e non può essere generalizzato per valutare l’accuratezza dei risultati della classificazione. Per ottenere una valutazione quantitativa, otteniamo metriche di classificazione utilizzando la funzione classification_report di scikit-learn:

# dataset di addestramentoprint(classification_report(to_y(create_contour_classified_band(train_scene_filename,                                          train_ground_truth_filename)),                            to_y(train_predicted_class_band),                            target_names=['coltura', 'non-coltura']))              precision    recall  f1-score   support      coltura       0.89      0.86      0.87   2641818    non-coltura       0.83      0.86      0.84   2093907    accuracy                           0.86   4735725   macro avg       0.86      0.86      0.86   4735725weighted avg       0.86      0.86      0.86   4735725# dataset di testprint(classification_report(to_y(create_contour_classified_band(test_scene_filename,                                       test_ground_truth_filename)),                            to_y(test_predicted_class_band),                            target_names=['coltura', 'non-coltura']))              precision    recall  f1-score   support      coltura       0.94      0.73      0.82   1959630    non-coltura       0.32      0.74      0.44    330938    accuracy                           0.73   2290568   macro avg       0.63      0.74      0.63   2290568weighted avg       0.85      0.73      0.77   2290568

La classificazione dei pixel viene utilizzata per creare una maschera di segmentazione delle regioni coltivate, quindi sia la precisione che il richiamo sono metriche importanti, e il punteggio F1 è una buona misura complessiva per la previsione dell’accuratezza. I nostri risultati ci forniscono metriche sia per le regioni coltivate che per le regioni non coltivate nei set di dati di addestramento e test. Tuttavia, per semplificare, analizziamo più da vicino queste metriche nel contesto delle regioni coltivate nel set di dati di test.

La precisione è una misura di quanto accurate sono le previsioni positive del nostro modello. In questo caso, una precisione del 0,94 per le regioni coltivate indica che il nostro modello ha molto successo nell’identificare correttamente le aree che sono effettivamente regioni coltivate, minimizzando i falsi positivi (regioni non coltivate effettive identificate erroneamente come regioni coltivate). Il richiamo, d’altra parte, misura la completezza delle previsioni positive. In altre parole, il richiamo misura la proporzione di positivi effettivi che sono stati identificati correttamente. Nel nostro caso, un valore di richiamo del 0,73 per le regioni coltivate significa che il 73% di tutti i pixel delle vere regioni coltivate è identificato correttamente, minimizzando il numero di falsi negativi.

Idealemente, si preferiscono valori elevati sia per la precisione che per il richiamo, anche se ciò può dipendere in larga misura dall’applicazione dello studio di caso. Ad esempio, se stessimo esaminando questi risultati per agricoltori che cercano di identificare regioni coltivate per l’agricoltura, vorremmo dare la priorità a un richiamo più elevato rispetto alla precisione, al fine di ridurre al minimo il numero di falsi negativi (aree identificate come regioni non coltivate che sono effettivamente regioni coltivate) per sfruttare al massimo il terreno. Il punteggio F1 serve come metrica complessiva di accuratezza che combina sia la precisione che il richiamo e misura l’equilibrio tra le due metriche. Un punteggio F1 elevato, come il nostro per le regioni coltivate (0,82), indica un buon equilibrio tra precisione e richiamo e un’alta accuratezza complessiva nella classificazione. Sebbene il punteggio F1 scenda tra i set di dati di addestramento e test, ciò è atteso perché il classificatore è stato addestrato sul set di dati di addestramento. Un punteggio F1 medio pesato complessivo del 0,77 è promettente e sufficientemente adeguato per provare schemi di segmentazione sui dati classificati.

Creare una maschera di segmentazione dal classificatore

La creazione di una maschera di segmentazione utilizzando le previsioni del classificatore KNN sul set di dati di prova comporta la pulizia dell’output previsto per evitare segmenti piccoli causati dal rumore dell’immagine. Per rimuovere il rumore dello speckle, utilizziamo il filtro di sfocatura mediana di OpenCV. Questo filtro preserva le delineazioni stradali tra le colture meglio dell’operazione morfologica di apertura.

Per applicare la segmentazione binaria all’output denoised, è necessario convertire i dati raster classificati in feature vettoriali utilizzando la funzione findContours di OpenCV.

Infine, le vere regioni coltivate segmentate possono essere calcolate utilizzando i contorni delle colture segmentate.

Le regioni coltivate segmentate prodotte dal classificatore KNN consentono di identificare con precisione le regioni di coltivazione nel set di dati di prova. Queste regioni segmentate possono essere utilizzate per vari scopi, come l’identificazione del confine del campo, il monitoraggio delle colture, la stima del rendimento e l’allocazione delle risorse. L’F1 score ottenuto di 0,77 è buono e fornisce evidenza che il classificatore KNN è uno strumento efficace per la segmentazione delle colture nelle immagini di telerilevamento. Questi risultati possono essere utilizzati per migliorare ulteriormente e perfezionare le tecniche di segmentazione delle colture, portando potenzialmente a un aumento dell’accuratezza e dell’efficienza nell’analisi delle colture.

Conclusioni

In questo post è stato dimostrato come è possibile utilizzare la combinazione di immagini satellitari ad alta cadenza e ad alta risoluzione di Planet e le capacità geospaziali di SageMaker per effettuare l’analisi della segmentazione delle colture, sbloccando preziose informazioni che possono migliorare l’efficienza agricola, la sostenibilità ambientale e la sicurezza alimentare. L’identificazione accurata delle regioni di coltivazione consente ulteriori analisi sulla crescita e la produttività delle colture, il monitoraggio dei cambiamenti nell’uso del suolo e la rilevazione dei potenziali rischi per la sicurezza alimentare.

Inoltre, la combinazione dei dati di Planet e di SageMaker offre una vasta gamma di casi d’uso oltre alla segmentazione delle colture. Le informazioni possono consentire decisioni basate sui dati sulla gestione delle colture, l’allocazione delle risorse e la pianificazione delle politiche nell’agricoltura da sola. Con dati e modelli di ML diversi, l’offerta combinata potrebbe espandersi anche in altri settori e casi d’uso verso la trasformazione digitale, la trasformazione della sostenibilità e la sicurezza.

Per iniziare a utilizzare le capacità geospaziali di SageMaker, vedi Inizia con le capacità geospaziali di Amazon SageMaker.

Per saperne di più sulle specifiche delle immagini di Planet e sui materiali di riferimento per gli sviluppatori, visita Planet Developer’s Center. Per la documentazione sullo SDK di Planet per Python, consulta Planet SDK for Python. Per ulteriori informazioni su Planet, inclusi i suoi prodotti dati esistenti e i prossimi lanci di prodotti, visita https://www.planet.com/.

Affermazioni prospective di Planet Labs PBC

Oltre alle informazioni storiche contenute nel presente articolo del blog, le questioni trattate sono affermazioni di previsione ai sensi delle disposizioni di “safe harbor” del Private Securities Litigation Reform Act del 1995, compresa, ma non limitata alla capacità di Planet Labs PBC di cogliere opportunità di mercato e realizzare eventuali vantaggi potenziali derivanti da miglioramenti attuali o futuri dei prodotti, nuovi prodotti o partnership strategiche e collaborazioni con i clienti. Le affermazioni prospective si basano sulle convinzioni della direzione di Planet Labs PBC, nonché sulle ipotesi formulate da loro e sulle informazioni attualmente a loro disposizione. Poiché tali affermazioni si basano su aspettative riguardo a eventi e risultati futuri e non sono dichiarazioni di fatto, i risultati effettivi possono differire materialmente da quelli proiettati. I fattori che possono causare differenze sostanziali tra i risultati effettivi e le aspettative attuali includono, ma non solo i fattori di rischio e altre informazioni sulle attività di Planet Labs PBC contenuti nei rapporti periodici, nelle dichiarazioni di voto e in altri materiali di divulgazione presentati di volta in volta alla Securities and Exchange Commission (SEC) disponibili online su www.sec.gov e sul sito web di Planet Labs PBC su www.planet.com. Tutte le dichiarazioni di previsione riflettono solo le convinzioni e le ipotesi di Planet Labs PBC alla data in cui tali dichiarazioni vengono rese. Planet Labs PBC non si assume alcun obbligo di aggiornare le dichiarazioni di previsione per riflettere eventi o circostanze future.