Detyra MediaPipe Object Detector ju lejon të zbuloni praninë dhe vendndodhjen e klasave të shumta të objekteve. Kjo detyrë merr të dhëna të imazhit dhe nxjerr një listë të rezultateve të zbulimit, secila prej të cilave përfaqëson një objekt të identifikuar në imazh. Mund ta shikoni, ekzekutoni dhe modifikoni shembullin e Object Detector duke përdorur vetëm shfletuesin tuaj të internetit.
Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Konfigurimi
Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit posaçërisht për të përdorur Object Detector. 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 . Mund t'i gjeni dhe shkarkoni këto biblioteka duke ndjekur udhëzimet në udhëzuesin e Konfigurimit të platformës.
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 doni 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.mjs"
crossorigin="anonymous"></script>
</head>
Model
Detyra MediaPipe Object Detector 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 Object Detector, shihni përmbledhjen e detyrës në seksionin Modele .
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 Object Detector ObjectDetector.createFrom...() 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() , i cili ju lejon të vendosni më shumë opsione konfigurimi. Për më shumë informacion mbi opsionet e konfigurimit të disponueshme, shihni seksionin Opsionet e 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ë implementim 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 Web:
| Emri i opsionit | Përshkrimi | Diapazoni i Vlerave | Vlera e parazgjedhur |
|---|---|---|---|
runningMode | Cakton modalitetin e ekzekutimit për detyrën. Ekzistojnë dy mënyra: IMAZH: Modaliteti për futjen e një imazhi të vetëm. VIDEO: Modaliteti për kuadrot e dekoduara të një videoje ose në një transmetim të drejtpërdrejtë të të dhënave hyrëse, si p.sh. nga një kamera. | { IMAGE, VIDEO } | IMAGE |
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 |
maxResults | Cakton numrin maksimal opsional të rezultateve të zbulimit me rezultatet më të larta që duhen kthyer. | Çdo numër pozitiv | -1 (të gjitha rezultatet kthehen) |
scoreThreshold | Cakton pragun e rezultatit të parashikimit që mbivendos 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 | Cakton listën opsionale të emrave të lejuar të kategorive. Nëse nuk është bosh, rezultatet e zbulimit, emri i kategorisë së të cilave nuk është në këtë grup, do të filtrohen. Emrat e kategorive të dyfishta ose të panjohura injorohen. Ky opsion është reciprokisht ekskluziv me categoryDenylist dhe përdorimin e të dy rezultateve në një gabim. | Çdo varg | Nuk është vendosur |
categoryDenylist | Cakton listën opsionale të emrave të kategorive që nuk lejohen. Nëse nuk është bosh, rezultatet e zbulimit emri i kategorisë së të cilave është në këtë grup do të filtrohen. Emrat e kategorive të dyfishta ose të panjohura injorohen. Ky opsion është reciprokisht ekskluziv me categoryAllowlist dhe përdorimin e të dy rezultateve në një gabim. | Çdo varg | Nuk është vendosur |
Përgatitni të dhënat
Detektori i Objekteve mund të zbulojë objekte 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 vlerës. Për të zbuluar objektet në video, mund të përdorni API-n për të përpunuar shpejt një kuadër 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.
Ekzekuto detyrën
Detektori i Objekteve përdor detect() për të punuar me imazhe të vetme dhe detectForVideo() punon për të zbuluar objekte në kuadro video. Detyra përpunon të dhënat, përpiqet të njohë objektet dhe më pas raporton rezultatet.
Thirrjet në metodat detect() dhe detectForVideo() ekzekutohen në mënyrë sinkrone dhe bllokojnë fijen e ndërfaqes së përdoruesit. Nëse i njihni objektet në kuadro video nga kamera e një pajisjeje, çdo klasifikim bllokon fijen kryesore. Mund ta parandaloni këtë duke zbatuar punëtorë web për të ekzekutuar zbulimin në një fije tjetër.
Kodi i mëposhtëm tregon se si ekzekutohet përpunimi me modelin e detyrës:
Imazh
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ë implementim 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 rezultatesh zbulimi për çdo ekzekutim zbulimi. Objekti i rezultateve përmban një listë zbulimesh, ku çdo zbulim përfshin një kuti kufizuese dhe informacion kategorie rreth objektit të zbuluar, duke përfshirë emrin e objektit dhe një rezultat besimi.
Më poshtë tregohet një shembull i të dhënave të daljes 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ë rezultatit të detyrës:

Kodi shembullor i Detektorit të Objekteve tregon se si të shfaqen rezultatet e zbulimit të kthyera nga detyra, shihni shembullin e kodit për detaje.