MediaPipe Görüntü Sınıflandırıcı görevi, görüntüler üzerinde sınıflandırma yapmanıza olanak tanır. Bu görevi, eğitim sırasında tanımlanan bir dizi kategori arasından bir resmin neyi temsil ettiğini belirlemek için kullanabilirsiniz. Bu talimatlarda, Düğüm ve web uygulamaları için Resim Sınıflandırıcı'nın nasıl kullanılacağı gösterilmektedir.
Demoyu görüntüleyerek bu görevin nasıl yerine getirildiğini öğrenebilirsiniz. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış bölümünü inceleyin.
Kod örneği
Resim Sınıflandırıcı örnek kodu, referans olması için bu görevin JavaScript'te eksiksiz bir şekilde uygulanmasını sağlar. Bu kod, bu görevi test etmenize ve kendi görüntü sınıflandırma uygulamanızı oluşturmaya başlamanıza yardımcı olur. Yalnızca web tarayıcınızı kullanarak Resim Sınıflandırıcı örnek kodunu görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.
Kurulum
Bu bölümde, geliştirme ortamınızı oluşturmaya yönelik temel adımlar ve özellikle Görüntü Sınıflandırıcı'yı kullanmak için proje kodlama açıklanmaktadır. Platform sürümü gereksinimleri de dahil olmak üzere MediaPipe görevlerini kullanmak üzere geliştirme ortamınızı ayarlama hakkında genel bilgiler için Web için kurulum kılavuzuna bakın.
JavaScript paketleri
Resim Sınıflandırıcı kodu, MediaPipe @mediapipe/tasks-vision
NPM paketi aracılığıyla kullanılabilir. Bu kitaplıkları, platform Kurulum kılavuzunda sağlanan bağlantılardan bulup indirebilirsiniz.
Aşağıdaki komutu kullanarak, yerel hazırlık 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 aracılığıyla içe aktarmak istiyorsanız aşağıdaki kodu HTML dosyanızdaki etikete 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.js"
crossorigin="anonymous"></script>
</head>
Model
MediaPipe Görüntü Sınıflandırıcı görevi, bu görevle uyumlu olan eğitilmiş bir model gerektirir. Resim Sınıflandırıcı için eğitilmiş modeller hakkında daha fazla bilgi için göreve genel bakış Modeller bölümüne bakın.
Bir model seçip indirin ve ardından bu modeli proje dizininizde depolayın:
<dev-project-root>/app/shared/models/
Görevi oluşturma
Çıkarımları çalıştırmak üzere görevi hazırlamak için createFrom...()
Resim Sınıflandırıcı işlevlerinden birini kullanın. createFromModelPath()
işlevini, eğitilen model dosyasının göreli veya mutlak yoluyla kullanın.
Modeliniz belleğe zaten yüklüyse createFromModelBuffer()
yöntemini kullanabilirsiniz.
Aşağıdaki kod örneğinde, görevi ayarlamak için createFromOptions()
işlevinin nasıl kullanıldığı gösterilmektedir. createFromOptions
işlevi, Resim Sınıflandırıcı'yı yapılandırma seçenekleriyle özelleştirmenize olanak tanır. Yapılandırma seçenekleri hakkında daha fazla bilgi edinmek için Yapılandırma seçenekleri bölümüne bakın.
Aşağıdaki kod, görevin özel seçeneklerle nasıl oluşturulacağını ve yapılandırılacağını gösterir:
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çeneklerini içerir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
runningMode |
Görev için çalışma modunu ayarlar. İki mod vardır: IMAGE: Tek resimli girişlerin modu. VİDEO: Bir videonun kodu çözülmüş kareleri veya giriş verilerinin canlı akışı (ör. kameradan) için kullanılan mod. |
{IMAGE, VIDEO } |
IMAGE |
displayNamesLocale |
Varsa görev modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan dil en şeklindedir. TensorFlow Lite Metadata Writer API'yi kullanarak özel modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz. |
Yerel ayar kodu | en |
maxResults |
Döndürülecek isteğe bağlı maksimum puanlı sınıflandırma sonucu sayısını ayarlar. 0'dan küçükse tüm mevcut sonuçlar döndürülür. | Pozitif sayılar | -1 |
scoreThreshold |
Model meta verilerinde (varsa) belirtilen eşiği geçersiz kılan tahmin puanı eşiğini belirler. Bu değerin altındaki sonuçlar reddedilir. | Herhangi bir kayan nokta | Belirlenmedi |
categoryAllowlist |
İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede bulunmayan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek, categoryDenylist ile birlikte kullanılamaz ve her iki sonucun da kullanılmasında hatayla sonuçlanır. |
Tüm dizeler | Belirlenmedi |
categoryDenylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede bulunan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek categoryAllowlist ile karşılıklı olarak hariç tutulup her iki sonucun da hatalı olarak kullanılmasıdır. |
Tüm dizeler | Belirlenmedi |
resultListener |
Sonuç işleyiciyi, Görüntü Sınıflandırıcı canlı yayın modundayken sınıflandırma sonuçlarını eşzamansız olarak alacak şekilde ayarlar. Yalnızca koşu modu LIVE_STREAM olarak ayarlandığında kullanılabilir |
Yok | Belirlenmedi |
Verileri hazırlama
Resim 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 ayrıca yeniden boyutlandırma, döndürme ve değer normalleştirmesi dahil veri girişi ön işlemesini de gerçekleştirir.
Görüntü Sınıflandırıcı classify()
ve classifyForVideo()
yöntemlerine yapılan çağrılar eşzamanlı olarak çalışır ve kullanıcı arayüzü ileti dizisini engeller. Bir cihazın kamerasından video karelerindeki nesneleri sınıflandırırsanız her sınıflandırma ana iş parçacığını engeller. Web çalışanlarını başka bir iş parçacığında classify()
ve classifyForVideo()
çalıştıracak şekilde uygulayarak bunu önleyebilirsiniz.
Görevi çalıştırma
Resim Sınıflandırıcı, çıkarımları tetiklemek için görüntü moduyla classify()
yöntemini ve video
moduyla classifyForVideo()
yöntemini kullanır. Image Classifier API, giriş görüntüsündeki nesneler için olası kategorileri döndürür.
Aşağıdaki kod, işlemin görev modeliyle nasıl yürütüldüğünü gösterir:
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 );
Resim Sınıflandırıcı görevi çalıştırmanın daha kapsamlı bir uygulaması için kod örneğine 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ü veya çerçevesindeki nesneler için olası kategorilerin listesini içeren bir ImageClassifierResult
nesnesi döndürür.
Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:
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ç, aşağıdaki cihazda Bird Classifier çalıştırılarak elde edilmiştir:
Görüntü Sınıflandırıcı ö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 kod örneğine bakın.