Web için görüntü sınıflandırma kılavuzu

MediaPipe Image Classifier görevi, resimlerde sınıflandırma yapmanıza olanak tanır. Bu görevi kullanarak, eğitim sırasında tanımlanan bir dizi kategori arasından bir resmin neyi temsil ettiğini belirleyebilirsiniz. Bu talimatlarda, Node ve web uygulamaları için Image Classifier'ın nasıl kullanılacağı gösterilmektedir.

Bu görevin nasıl çalıştığını görmek için demoyu inceleyebilirsiniz. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış bölümüne bakın.

Kod örneği

Resim sınıflandırıcı için örnek kod, bu görevin JavaScript'te eksiksiz bir uygulamasını referansınız için sağlar. Bu kod, görevi test etmenize ve kendi görüntü sınıflandırma uygulamanızı oluşturmaya başlamanıza yardımcı olur. Görüntü sınıflandırıcı örneğini yalnızca web tarayıcınızı kullanarak görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.

Kurulum

Bu bölümde, geliştirme ortamınızı ve kod projelerinizi özellikle Image Classifier'ı kullanacak şekilde ayarlamayla ilgili temel adımlar açıklanmaktadır. Platform sürümü gereksinimleri de dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı ayarlama hakkında genel bilgi edinmek istiyorsanız Web için kurulum kılavuzu başlıklı makaleyi inceleyin.

JavaScript paketleri

Image Classifier kodu, MediaPipe @mediapipe/tasks-vision NPM paketi aracılığıyla kullanılabilir. Bu kitaplıkları, platform Kurulum Kılavuzu'nda verilen bağlantılardan bulup indirebilirsiniz.

Aşağıdaki komutu kullanarak yerel hazırlama için gerekli paketleri aşağıdaki kodla yükleyebilirsiniz:

npm install @mediapipe/tasks-vision

Görev kodunu bir içerik yayınlama ağı (CDN) hizmeti üzerinden içe aktarmak istiyorsanız HTML dosyanızdaki etiketine aşağıdaki kodu ekleyin:

<!-- 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

MediaPipe Image Classifier görevi, bu görevle uyumlu eğitilmiş bir model gerektirir. Resim sınıflandırıcı için kullanılabilen eğitilmiş modeller hakkında daha fazla bilgi edinmek için görev genel bakışındaki Modeller bölümüne bakın.

Bir model seçip indirin ve proje dizininizde saklayın:

<dev-project-root>/app/shared/models/

Görevi oluşturma

Görevi çıkarım çalıştırmaya hazırlamak için Image Classifier createFrom...() işlevlerinden birini kullanın. createFromModelPath() işlevini, eğitilmiş model dosyasına ait göreli veya mutlak bir yolla kullanın. Modeliniz zaten belleğe yüklendiyse createFromModelBuffer() yöntemini kullanabilirsiniz.

Aşağıdaki kod örneğinde, görevi ayarlamak için createFromOptions() işlevinin nasıl kullanılacağı gösterilmektedir. createFromOptions işlevi, yapılandırma seçenekleriyle Görüntü Sınıflandırıcı'yı özelleştirmenize olanak tanır. Yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırma seçenekleri başlıklı makaleyi inceleyin.

Aşağıdaki kodda, görevin özel seçeneklerle nasıl oluşturulacağı ve yapılandırılacağı gösterilmektedir:

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`
    },
  });
}

Yapılandırma seçenekleri

Bu görev, web uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:

Seçenek Adı Açıklama Değer aralığı Varsayılan değer
runningMode Görevin çalışma modunu ayarlar. İki mod vardır:

RESİM: Tek resim girişleri için mod.

VIDEO: Bir videonun veya bir kameradan gelen giriş verilerinin canlı yayınındaki kod çözülmüş kareler için mod.
{IMAGE, VIDEO} IMAGE
displayNamesLocale Görev modelinin meta verilerinde varsa görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en'dir. TensorFlow Lite Metadata Writer API'yi kullanarak özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz. Yer kodu en
maxResults Döndürülecek isteğe bağlı maksimum en yüksek puanlı sınıflandırma sonucu sayısını ayarlar. Sayı < 0 ise mevcut tüm sonuçlar döndürülür. Pozitif sayılar -1
scoreThreshold Model meta verilerinde (varsa) sağlanan tahmini puan eşiğini geçersiz kılan eşiği ayarlar. Bu değerin altındaki sonuçlar reddedilir. Herhangi bir kayan öğe Ayarlanmadı
categoryAllowlist İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede olmayan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek, categoryDenylist ile birlikte kullanılamaz ve ikisinin birlikte kullanılması hataya neden olur. Tüm dizeler Ayarlanmadı
categoryDenylist İzin verilmeyen isteğe bağlı kategori adları listesini ayarlar. Boş değilse kategori adı bu kümede olan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek categoryAllowlist ile birlikte kullanılamaz ve ikisinin birlikte kullanılması hataya neden olur. Tüm dizeler Ayarlanmadı
resultListener Görüntü sınıflandırıcı canlı yayın modundayken sınıflandırma sonuçlarını eşzamansız olarak almak için sonuç dinleyicisini ayarlar. Yalnızca çalışma modu LIVE_STREAM olarak ayarlandığında kullanılabilir. Yok Ayarlanmadı

Verileri hazırlama

Görüntü Sınıflandırıcı, resimlerdeki nesneleri ana makine tarayıcısı tarafından desteklenen herhangi bir biçimde sınıflandırabilir. Görev, yeniden boyutlandırma, döndürme ve değer normalleştirme dahil olmak üzere veri girişi ön işlemesini de gerçekleştirir.

classify() ve classifyForVideo() yöntemlerine yapılan çağrılar eşzamanlı olarak çalışır ve kullanıcı arayüzü iş parçacığını engeller. Bir cihazın kamerasından alınan video karelerindeki nesneleri sınıflandırırsanız her sınıflandırma ana iş parçacığını engeller. classify() ve classifyForVideo() öğelerini başka bir iş parçacığında çalıştıracak web işçileri uygulayarak bunu önleyebilirsiniz.

Görevi çalıştırma

Görüntü sınıflandırıcı, çıkarımları tetiklemek için görüntü modunda classify() yöntemini, video modunda ise classifyForVideo() yöntemini kullanır. Görüntü Sınıflandırıcı API, giriş görüntüsündeki nesneler için olası kategorileri döndürür.

Aşağıdaki kodda, görevi işleme modelini kullanarak işlemenin nasıl yürütüleceği gösterilmektedir:

Resim

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
  );

Görüntü sınıflandırıcı görevini çalıştırmanın daha eksiksiz bir uygulaması için örneğe bakın.

Sonuçları işleme ve görüntüleme

Çıkarım çalıştırıldıktan sonra, Görüntü Sınıflandırıcı görevi, giriş görüntüsündeki veya karesindeki nesneler için olası kategorilerin listesini içeren bir ImageClassifierResult nesnesi döndürür.

Aşağıda bu görevden elde edilen çıkış verilerine bir örnek verilmiştir:

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

Bu sonuç, Kuş Sınıflandırıcı'nın aşağıdaki öğeler üzerinde çalıştırılmasıyla elde edilmiştir:

Serçenin yakın çekim fotoğrafı

Image Classifier örnek kodu, görevden döndürülen sınıflandırma sonuçlarının nasıl görüntüleneceğini gösterir. Ayrıntılar için örneğe bakın.