Detyra MediaPipe Object Detector ju lejon të zbuloni praninë dhe vendndodhjen e klasave të shumta të objekteve. Kjo detyrë merr të dhënat e imazhit dhe nxjerr një listë të rezultateve të zbulimit, secila përfaqëson një objekt të identifikuar në imazh. Shembulli i kodit i përshkruar në këto udhëzime është i disponueshëm në CodePen .
Ju mund ta shihni këtë detyrë në veprim duke parë demonstrimin . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Shembull kodi
Shembulli i kodit për Detektorin e Objekteve ofron një zbatim 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ë klasifikimit të tekstit. Mund të shikoni, ekzekutoni dhe modifikoni kodin e shembullit të Detektorit të Objekteve duke përdorur vetëm shfletuesin tuaj të internetit.
Konfigurimi
Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit në mënyrë specifike për të përdorur Detektorin e Objekteve. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit të uebit dhe JavaScript, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për ueb .
Paketat JavaScript
Kodi i Detektorit të Objekteve është i disponueshëm përmes paketës MediaPipe @mediapipe/tasks-vision
NPM . Ju mund t'i gjeni dhe shkarkoni këto biblioteka duke ndjekur udhëzimet në udhëzuesin e konfigurimit të platformës.
Ju mund të instaloni paketat e kërkuara përmes NPM duke përdorur komandën e mëposhtme:
npm install @mediapipe/tasks-vision
Nëse dëshironi të importoni kodin e detyrës nëpërmjet një shërbimi të rrjetit të shpërndarjes së përmbajtjes (CDN), shtoni kodin e mëposhtëm në etiketën <head>
në skedarin tuaj HTML:
<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
crossorigin="anonymous"></script>
</head>
Model
Detyra MediaPipe Object Detector kërkon një model të trajnuar që është në përputhje me këtë detyrë. Për më shumë informacion mbi modelet e trajnuara të disponueshme për Detektorin e Objekteve, shihni përmbledhjen e detyrave në seksionin Modelet .
Zgjidhni dhe shkarkoni një model dhe më pas ruajeni në direktorinë e projektit tuaj:
<dev-project-root>/app/shared/models/
Krijo detyrën
Përdorni një nga funksionet Object Detector ObjectDetector.createFrom...()
për të përgatitur detyrën për ekzekutimin e konkluzioneve. Përdorni funksionin createFromModelPath()
me një shteg relative ose absolute drejt skedarit të modelit të trajnuar. Nëse modeli juaj tashmë është i ngarkuar në memorie, mund të përdorni metodën createFromModelBuffer()
. Shembulli i kodit më poshtë tregon përdorimin e funksionit createFromOptions()
, i cili ju lejon të vendosni më shumë opsione konfigurimi. Për më shumë informacion mbi opsionet e disponueshme të konfigurimit, shihni seksionin e opsioneve të konfigurimit .
Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet kjo detyrë:
const vision = await FilesetResolver.forVisionTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
objectDetector = await ObjectDetector.createFromOptions(vision, {
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/object_detector/efficientdet_lite0_uint8.tflite`
},
scoreThreshold: 0.5,
runningMode: runningMode
});
Për një zbatim më të plotë të krijimit të një detyre të Detektorit të Objekteve, shihni shembullin e kodit .
Opsionet e konfigurimit
Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet në ueb:
Emri i opsionit | Përshkrimi | Gama e vlerave | Vlera e paracaktuar |
---|---|---|---|
runningMode | Vendos modalitetin e ekzekutimit për detyrën. Ka dy mënyra: IMAGE: Modaliteti për hyrjet e një imazhi të vetëm. VIDEO: Modaliteti për kornizat e deshifruara të një videoje ose në një transmetim të drejtpërdrejtë të të dhënave hyrëse, si p.sh. nga një aparat fotografik. | { IMAGE, VIDEO } | IMAGE |
displayNamesLocale | Vendos gjuhën e etiketave për t'u përdorur për emrat e shfaqur të dhëna në meta të dhënat e modelit të detyrës, nëse disponohet. Parazgjedhja është en për anglisht. Ju mund të shtoni etiketa të lokalizuara në meta të dhënat e një modeli të personalizuar duke përdorur API-në e shkrimtarit metadata TensorFlow Lite | Kodi lokal | sq |
maxResults | Vendos numrin maksimal opsional të rezultateve të zbulimit me pikët më të larta për t'u kthyer. | Çdo numër pozitiv | -1 (të gjitha rezultatet kthehen) |
scoreThreshold | Vendos pragun e rezultatit të parashikimit që tejkalon atë të dhënë në meta të dhënat e modelit (nëse ka). Rezultatet nën këtë vlerë refuzohen. | Çdo noton | Nuk është vendosur |
categoryAllowlist | Vendos listën opsionale të emrave të kategorive të lejuara. Nëse nuk janë bosh, rezultatet e zbulimit, emri i kategorisë së të cilave nuk është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me categoryDenylist dhe duke përdorur të dyja rezulton në një gabim. | Çdo varg | Nuk është vendosur |
categoryDenylist | Vendos listën opsionale të emrave të kategorive që nuk lejohen. Nëse nuk janë bosh, rezultatet e zbulimit, emri i kategorisë së të cilave është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me categoryAllowlist dhe duke përdorur të dyja rezultatet në një gabim. | Çdo varg | Nuk është vendosur |
Përgatitni të dhënat
Detektor i objekteve mund të zbulojë objekte në imazhe në çdo format të mbështetur nga shfletuesi pritës. Detyra trajton gjithashtu parapërpunimin e hyrjes së të dhënave, duke përfshirë ndryshimin e madhësisë, rrotullimin dhe normalizimin e vlerës. Për të zbuluar objektet në video, mund të përdorni API-në për të përpunuar shpejt një kornizë në të njëjtën kohë, duke përdorur vulën kohore të kornizës për të përcaktuar se kur ndodhin gjestet në video.
Drejtoni detyrën
Detektori i objekteve përdor detect()
për të punuar në imazhe të vetme dhe detectForVideo()
punon për zbulimin e objekteve në korniza video. Detyra përpunon të dhënat, përpiqet të njohë objektet dhe më pas raporton rezultatet.
Thirrjet drejt metodave detect()
dhe detectForVideo()
ekzekutohen në mënyrë sinkronike dhe bllokojnë lidhjen e ndërfaqes së përdoruesit. Nëse dalloni objekte në kornizat video nga kamera e një pajisjeje, çdo klasifikim bllokon fillin kryesor. Ju mund ta parandaloni këtë duke zbatuar punëtorët e uebit për të ekzekutuar zbulimin në një fije tjetër.
Kodi i mëposhtëm tregon se si kryhet përpunimi me modelin e detyrës:
Imazhi
const image = document.getElementById("image") as HTMLImageElement; const detections = objectDetector.detect(image);
Video
await objectDetector.setOptions({ runningMode: "video" }); let lastVideoTime = -1; function renderLoop(): void { const video = document.getElementById("video"); if (video.currentTime !== lastVideoTime) { const detections = detector.detectForVideo(video); processResults(detections); lastVideoTime = video.currentTime; } requestAnimationFrame(() => { renderLoop(); }); }
Për një zbatim më të plotë të ekzekutimit të një detyre të Detektorit të Objekteve, shihni shembullin e kodit .
Trajtoni dhe shfaqni rezultatet
Detektori i objekteve gjeneron një objekt të rezultateve të zbulimit për çdo ekzekutim të zbulimit. Objekti i rezultateve përmban një listë zbulimesh, ku çdo zbulim përfshin një kuti kufizuese dhe informacion mbi kategorinë për objektin e zbuluar, duke përfshirë emrin e objektit dhe një pikë besimi.
Më poshtë tregon një shembull të të dhënave dalëse nga kjo detyrë:
ObjectDetectorResult:
Detection #0:
Box: (x: 355, y: 133, w: 190, h: 206)
Categories:
index : 17
score : 0.73828
class name : dog
Detection #1:
Box: (x: 103, y: 15, w: 138, h: 369)
Categories:
index : 17
score : 0.73047
class name : dog
Imazhi i mëposhtëm tregon një vizualizim të daljes së detyrës:
Shembulli i kodit të detektorit të objekteve tregon se si të shfaqen rezultatet e zbulimit të kthyera nga detyra, shikoni shembullin e kodit për detaje.