Udhëzues për klasifikimin e imazheve për ueb

Detyra e Klasifikuesit të Imazheve MediaPipe ju lejon të kryeni klasifikimin e imazheve. Mund ta përdorni këtë detyrë për të identifikuar se çfarë përfaqëson një imazh midis një grupi kategorish të përcaktuara në kohën e trajnimit. Këto udhëzime ju tregojnë se si të përdorni Klasifikuesin e Imazheve për aplikacionet Node dhe web.

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

Kodi shembull për Klasifikuesin e Imazheve 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ë klasifikimit të imazheve. Mund ta shikoni, ekzekutoni dhe modifikoni shembullin e Klasifikuesit të Imazheve 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 Classifier. 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 Web .

Paketat JavaScript

Kodi i Klasifikuesit 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 @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:

<!-- 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 e Klasifikuesit të Imazheve MediaPipe 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 Klasifikuesin e Imazheve, shihni seksionin Modele të 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ë Klasifikuesit të Imazheve 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 Klasifikuesin e Imazheve me opsione konfigurimi. Për më shumë informacion mbi opsionet e konfigurimit, shihni Opsionet e konfigurimit .

Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet detyra me opsione të personalizuara:

async function createImageClassifier {
  const vision = await FilesetResolver.forVisionTasks(
    "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm"
  );
  imageClassifier = await ImageClassifier.createFromOptions(vision, {
    baseOptions: {
      modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.tflite`
    },
  });
}

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ë klasifikimit me rezultatet më të larta që duhen kthyer. Nëse < 0, do të kthehen të gjitha rezultatet e disponueshme. Çdo numër pozitiv -1
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 klasifikimit 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 klasifikimit 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
resultListener Cakton dëgjuesin e rezultateve që të marrë rezultatet e klasifikimit në mënyrë asinkrone kur Klasifikuesi i Imazheve është në modalitetin e transmetimit të drejtpërdrejtë. Mund të përdoret vetëm kur modaliteti i ekzekutimit është vendosur në LIVE_STREAM N/A Nuk është vendosur

Përgatitni të dhënat

Klasifikuesi i Imazheve mund të klasifikojë 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 classifier Image Classifier classify() dhe classifyForVideo() ekzekutohen në mënyrë sinkrone dhe bllokojnë fijen e ndërfaqes së përdoruesit. Nëse klasifikoni objektet në kuadro video nga kamera e një pajisjeje, çdo klasifikim do të bllokojë fijen kryesore. Mund ta parandaloni këtë duke zbatuar punëtorët e uebit për të ekzekutuar classify() dhe classifyForVideo() në një fije tjetër.

Ekzekuto detyrën

Klasifikuesi i Imazheve përdor metodën classify() me modalitetin e imazhit dhe metodën classifyForVideo() me modalitetin video për të shkaktuar përfundime. API-ja e Klasifikuesit të Imazheve do të kthejë kategoritë e mundshme për objektet brenda imazhit të futur.

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 imageClassifierResult = imageClassifier.classify(image);

Video

const video = document.getElementById("video");
await imageClassifier.setOptions({ runningMode: "VIDEO" });

const timestamp = performance.now();
const classificationResult = await imageClassifier.classifyForVideo(
    video,
    timestamp
  );

Për një implementim më të plotë të ekzekutimit të një detyre të Klasifikuesit të Imazheve, shihni shembullin .

Trajtoni dhe shfaqni rezultatet

Pas ekzekutimit të inferencës, detyra Image Classifier kthen një objekt ImageClassifierResult i cili përmban listën e kategorive të mundshme për objektet brenda imazhit ose kornizës së hyrjes.

Më poshtë tregohet një shembull i të dhënave të nxjerra nga kjo detyrë:

ImageClassifierResult:
 Classifications #0 (single classification head):
  head index: 0
  category #0:
   category name: "/m/01bwb9"
   display name: "Passer domesticus"
   score: 0.91406
   index: 671
  category #1:
   category name: "/m/01bwbt"
   display name: "Passer montanus"
   score: 0.00391
   index: 670

Ky rezultat është marrë duke ekzekutuar Klasifikuesin e Zogjve në:

Fotografi nga afër e një harabeli shtëpiak

Kodi shembullor i Klasifikuesit të Imazheve tregon se si të shfaqen rezultatet e klasifikimit të kthyera nga detyra, shihni shembullin për detaje.