Post

Vegetation Detection using Segment Anything Model

Exploration of Cutting-Edge Technology

Pendahuluan

Segment Anything Model (SAM) adalah salah satu teknologi yang dapat mensegmentasi citra satelit. Pada eksperimen ini, akan di coba dilakukan segmentasi pepohonan dengan menggunakan modul leafmap.

Metode

Proyek ini menggunakan google collab yang menyediakan GPU yang lebih handal. Adapun bahasa yang digunakan adalah python. Area yang akan digunakan berada di Mlati, Sleman, DIY. Prosedur analisis mengikuti SAMGeo.

Output

Segmentasi

install library yang dibutuhkan

1
%pip install segment-geospatial groundingdino-py leafmap localtileserver

import library yang dibutuhkan

1
2
3
4
import leafmap
from samgeo import tms_to_geotiff
from samgeo import SamGeo
from samgeo.text_sam import LangSAM

Tetapkan titik tengah area dan digunakan basemap google satellite

1
2
m = leafmap.Map(center=[-7.745009151693082, 110.38166526495895], zoom=18, height="800px")
m.add_basemap("SATELLITE")

Tetapkan batas area of interest

1
2
3
4
if m.user_roi_bounds() is not None:
    bbox = m.user_roi_bounds()
else:
  bbox = [110.38089461,-7.74598989,110.38279347,-7.74422623 ]

Unduh citra sesuai kriteria sebelumnya

1
2
image = "Image.tif"
tms_to_geotiff(output=image, bbox=bbox, zoom=19, source="Satellite", overwrite=True)

Tambahkan layer yang telah diunduh pada variabel peta sebelumnya

1
2
m.layers[-1].visible = False
m.add_raster(image, layer_name="Image")

Buat model SAM, kali ini akan dicoba mensegmentasi seluruh bagian peta.

1
2
3
4
5
6
sam = SamGeo(
    model_type="vit_h",
    sam_kwargs=None,
)
sam.generate(image, output="masks.tif", foreground=True, unique=True)
sam.show_masks(cmap="binary_r")

Segmentasi Apapun Segmentasi seluruh bagian peta.

Akan ditambahkan annotasi unik untuk setiap segmen

1
sam.show_anns(axis="off", alpha=1, output="annotations.tif")

Anotasi Segmentasi Apapun Annotasi unik pada segmentasi.

Bandingkan citra awal dengan segmentasi yang dibuat

1
2
3
4
5
6
leafmap.image_comparison(
    "Image.tif",
    "annotations.tif",
    label1="Satellite Image",
    label2="Image Segmentation",
)

Segmentasi Pepohonan

Tujuan kedua akan dicoba dicapai menggunakan prompt text dari SAMGeo. Proses ini mencari objek pepohonan yang dapat ditentukan dari prompt. Kemudian akan dilakukan prediksi segmen mana saja yang termasuk pepohonan

1
2
3
sam = LangSAM()
text_prompt = "tree"
sam.predict(image, text_prompt, box_threshold=0.24, text_threshold=0.24)

Hasil segmentasi yang diprediksi merupakan pepohonan

1
2
3
4
5
6
7
sam.show_anns(
    cmap='Greens',
    add_boxes=False,
    alpha=0.5,
    axis="off",
    output="Pohon.tif"
)

Segmentasi Pepohonan Segmentasi pepohonan.

This post is licensed under CC BY 4.0 by the author.