Detyra MediaPipe Image Segmenter ju lejon të ndani imazhet në rajone bazuar në kategori të paracaktuara për aplikimin e efekteve vizuale, siç është turbullimi i sfondit. Këto udhëzime ju tregojnë se si të përdorni Image Segmenter për aplikacionet Node dhe web. Për më shumë informacion në lidhje me aftësitë, modelet dhe opsionet e konfigurimit të kësaj detyre, shihni Përmbledhjen .
Shembull kodi
Kodi shembull për Image Segmenter ofron një implementim të plotë të kësaj detyre në JavaScript për referencën tuaj. Ky kod ju ndihmon të testoni këtë detyrë dhe të filloni ndërtimin e aplikacionit tuaj të segmentimit të imazheve. Mund ta shikoni, ekzekutoni dhe modifikoni shembullin e Image Segmenter duke përdorur vetëm shfletuesin tuaj të internetit.
Konfigurimi
Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit posaçërisht për të përdorur Image Segmenter. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit për përdorimin e detyrave MediaPipe, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për ueb .
Paketat JavaScript
Kodi i Segmentuesit të Imazheve është i disponueshëm përmes paketës MediaPipe @mediapipe/tasks-vision NPM . Mund t'i gjeni dhe shkarkoni këto biblioteka nga lidhjet e dhëna në udhëzuesin e Konfigurimit të platformës.
Mund të instaloni paketat e kërkuara me kodin e mëposhtëm për konfigurimin lokal duke përdorur komandën e mëposhtme:
npm install --save @mediapipe/tasks-vision
Nëse doni të importoni kodin e detyrës nëpërmjet një shërbimi të rrjetit të ofrimit të përmbajtjes (CDN), shtoni kodin e mëposhtëm në
etiketë në skedarin tuaj HTML:<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.mjs"
crossorigin="anonymous"></script>
</head>
Model
Detyra MediaPipe Image Segmenter kërkon një model të trajnuar që është i pajtueshëm me këtë detyrë. Për më shumë informacion mbi modelet e trajnuara të disponueshme për Image Segmenter, shihni seksionin Modelet e përmbledhjes së detyrës.
Zgjidhni dhe shkarkoni një model dhe më pas ruajeni atë brenda direktorisë së projektit tuaj:
<dev-project-root>/app/shared/models/
Krijo detyrën
Përdorni një nga funksionet createFrom...() të Image Segmenter për të përgatitur detyrën për ekzekutimin e inferencave. Përdorni funksionin createFromModelPath() me një shteg relativ ose absolut për në skedarin e modelit të trajnuar. Nëse modeli juaj është ngarkuar tashmë në memorie, mund të përdorni metodën createFromModelBuffer() .
Shembulli i kodit më poshtë demonstron përdorimin e funksionit createFromOptions() për të konfiguruar detyrën. Funksioni createFromOptions ju lejon të personalizoni Segmentuesin e Imazhit me opsione konfigurimi. Për më shumë informacion mbi konfigurimin e detyrës, shihni Opsionet e Konfigurimit .
Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet detyra me opsione të personalizuara:
runningMode = "IMAGE";
async function createImageSegmenter() {
const vision = await FilesetResolver.forVisionTasks(
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
imageSegmenter = await ImageSegmenter.createFromOptions(vision, {
baseOptions: {
modelAssetPath:
"https://storage.googleapis.com/mediapipe-assets/deeplabv3.tflite?generation=1661875711618421",
},
outputCategoryMask: true,
outputConfidenceMasks: false
runningMode: runningMode
});
}
createImageSegmenter();
Për një implementim më të plotë të krijimit të një detyre të Segmentuesit të Imazheve, shihni shembullin e kodit .
Opsionet e konfigurimit
Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet Web:
| Emri i opsionit | Përshkrimi | Diapazoni i Vlerave | Vlera e parazgjedhur |
|---|---|---|---|
outputCategoryMask | Nëse vendoset në True , rezultati përfshin një maskë segmentimi si një imazh uint8, ku çdo vlerë pikseli tregon vlerën e kategorisë fituese. | { True, False } | False | outputConfidenceMasks | Nëse vendoset në True , rezultati përfshin një maskë segmentimi si një imazh me vlerë lundruese, ku çdo vlerë lundruese përfaqëson hartën e rezultateve të besimit të kategorisë. | { True, False } | True |
displayNamesLocale | Cakton gjuhën e etiketave që do të përdoren për emrat e shfaqur të dhënë në metadatat e modelit të detyrës, nëse është e disponueshme. Vlera e parazgjedhur është en për anglishten. Mund të shtoni etiketa të lokalizuara në metadatat e një modeli të personalizuar duke përdorur API-në e Shkruesit të Metadatave TensorFlow Lite. | Kodi lokal | en |
resultListener | Cakton dëgjuesin e rezultateve që të marrë rezultatet e segmentimit në mënyrë asinkrone kur segmentuesi i imazhit është në modalitetin LIVE_STREAM . Mund të përdoret vetëm kur modaliteti i ekzekutimit është vendosur në LIVE_STREAM | N/A | N/A |
Përgatitni të dhënat
Segmentuesi i Imazheve mund të segmentojë objektet në imazhe në çdo format të mbështetur nga shfletuesi pritës. Detyra gjithashtu trajton përpunimin paraprak të të dhënave të futura, duke përfshirë ndryshimin e madhësisë, rrotullimin dhe normalizimin e vlerave.
Thirrjet në metodat Image Segmenter segment() dhe segmentForVideo() ekzekutohen në mënyrë sinkrone dhe bllokojnë fijen e ndërfaqes së përdoruesit. Nëse segmentoni objekte në kuadro video nga kamera e një pajisjeje, çdo detyrë segmentimi bllokon fijen kryesore. Mund ta parandaloni këtë duke zbatuar punëtorët e uebit për të ekzekutuar segment() dhe segmentForVideo() në një fije tjetër.
Ekzekuto detyrën
Segmentuesi i Imazhit përdor metodën segment() me modalitetin e imazhit dhe metodën segmentForVideo() me modalitetin video për të shkaktuar përfundime. Segmentuesi i Imazhit i kthen segmentet e zbuluara si të dhëna imazhi në një funksion rikthimi që ju e vendosni kur ekzekutoni një përfundim për detyrën.
Kodi i mëposhtëm tregon se si të ekzekutohet përpunimi me modelin e detyrës:
Imazh
const image = document.getElementById("image") as HTMLImageElement; imageSegmenter.segment(image, callback);
Video
async function renderLoop(): void { const video = document.getElementById("video"); let startTimeMs = performance.now(); imageSegmenter.segmentForVideo(video, startTimeMs, callbackForVideo); requestAnimationFrame(() => { renderLoop(); }); }
Për një implementim më të plotë të ekzekutimit të një detyre të Segmentuesit të Imazheve, shihni shembullin .
Trajtoni dhe shfaqni rezultatet
Pas ekzekutimit të inferencës, detyra Image Segmenter kthen të dhënat e imazhit të segmentit në një funksion rikthimi. Përmbajtja e rezultatit varet nga outputType që keni vendosur kur keni konfiguruar detyrën.
Seksionet e mëposhtme tregojnë shembuj të të dhënave të dala nga kjo detyrë:
Besimi i kategorisë
Imazhet e mëposhtme tregojnë një vizualizim të rezultatit të detyrës për një maskë besimi të kategorisë. Rezultati i maskës së besimit përmban vlera lundruese midis [0, 1] .


Imazhi origjinal dhe dalja e maskës së besimit të kategorisë. Imazhi burimor nga të dhënat Pascal VOC 2012 .
Vlera e kategorisë
Imazhet e mëposhtme tregojnë një vizualizim të rezultatit të detyrës për një maskë me vlerë kategorie. Diapazoni i maskës së kategorisë është [0, 255] dhe çdo vlerë pikseli përfaqëson indeksin e kategorisë fituese të rezultatit të modelit. Indeksi i kategorisë fituese ka rezultatin më të lartë midis kategorive që modeli mund të njohë.


Imazhi origjinal dhe dalja e maskës së kategorisë. Imazhi burimor nga të dhënat Pascal VOC 2012 .
Kodi shembullor i Image Segmenter demonstron se si të shfaqen rezultatet e segmentimit të kthyera nga detyra, shihni shembullin për detaje.