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. Tekliflerinizi otomatikleştirmek ve optimize etmek için bu görev, bir resmin tanımlanan bir dizi kategori arasından neyi temsil çok önemlidir. Bu talimatlarda, Resim Sınıflandırıcı'nın nasıl kullanılacağı gösterilmektedir bazı ipuçları vereceğim.
Web sayfasını ziyaret ederek bu görevi demo'ya gidin. Örneğin, özellikleri, modelleri ve yapılandırma seçenekleri hakkında Bu görev için Genel Bakış'ı inceleyin.
Kod örneği
Resim Sınıflandırıcı için örnek kod, bu görevi görebilir. Bu kod, görevi test etmenize ve kendi resim sınıflandırıcınızı oluşturmaya başladınız. Verileri görüntüleyebilir, çalıştırabilir ve Resim Sınıflandırıcı örnek kod yalnızca web tarayıcınızı kullanarak.
Raspberry Pi için Resim Sınıflandırıcı'yı uyguluyorsanız Raspberry Pi örneği uygulamasında gösterilir.
Kurulum
Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili Resim Sınıflandırıcı'yı kullanmak için projeleri kodlayın. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı platform sürümü gereksinimleri hakkında daha fazla bilgi için Python'da kullanılabilir.
Paketler
Görüntü Sınıflandırıcı, mediapipe pip paketine görev yapar. Google Etiket Yöneticisi'ni kullanarak bağımlılığı olabilir:
$ python -m pip install mediapipe
``` ### Imports
Import the following classes to access the Image Classifier task functions:
```python
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Model
MediaPipe Görüntü Sınıflandırıcı görevi bu görevi görebilir. Resim Sınıflandırıcı için eğitilmiş modeller hakkında daha fazla bilgi için bkz. göreve genel bakış Modeller bölümü.
Bir model seçip indirin, ardından bu modeli yerel bir dizinde depolayın. Tekliflerinizi otomatikleştirmek ve optimize etmek için önerilen EfficientNet-Lite0 modeli.
model_path = '/absolute/path/to/efficientnet_lite0_int8_2.tflite'
Aşağıda gösterildiği gibi, Model Adı parametresi içinde modelin yolunu belirtin:
base_options = BaseOptions(model_asset_path=model_path)
Görevi oluşturma
Görevi oluşturmak için create_from_options
işlevini kullanın. İlgili içeriği oluşturmak için kullanılan
create_from_options
işlevi, çalıştırma da dahil olmak üzere yapılandırma seçeneklerini kabul eder
mod, görünen adlar yerel ayarı, maksimum sonuç sayısı, güven eşiği,
kategori izin verilenler listesi
ve ret listeleri de dahildir. Yapılandırma hakkında daha fazla bilgi için
Yapılandırmaya Genel Bakış bölümüne göz atın.
Resim Sınıflandırıcı görevi 3 giriş verisi türünü destekler: hareketsiz resimler, video dosyaları ve canlı video akışları kullanılabilir. Giriş verisi türünüze karşılık gelen sekmeyi ve çıkarımda bulunmayı öğreneceğiz.
Resim
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions ImageClassifier = mp.tasks.vision.ImageClassifier ImageClassifierOptions = mp.tasks.vision.ImageClassifierOptions VisionRunningMode = mp.tasks.vision.RunningMode options = ImageClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=VisionRunningMode.IMAGE) with ImageClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Video
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions ImageClassifier = mp.tasks.vision.ImageClassifier ImageClassifierOptions = mp.tasks.vision.ImageClassifierOptions VisionRunningMode = mp.tasks.vision.RunningMode options = ImageClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=VisionRunningMode.VIDEO) with ImageClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Canlı yayın
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions ImageClassifierResult = mp.tasks.vision.ImageClassifier.ImageClassifierResult ImageClassifier = mp.tasks.vision.ImageClassifier ImageClassifierOptions = mp.tasks.vision.ImageClassifierOptions VisionRunningMode = mp.tasks.vision.RunningMode def print_result(result: ImageClassifierResult, output_image: mp.Image, timestamp_ms: int): print('ImageClassifierResult result: {}'.format(result)) options = ImageClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), running_mode=VisionRunningMode.LIVE_STREAM, max_results=5, result_callback=print_result) with ImageClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Bir resimle kullanmak üzere Resim Sınıflandırıcı oluşturmaya ilişkin tam bir örnek için bkz. kod örnek bölümüne bakın.
Yapılandırma seçenekleri
Bu görev, Python 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 |
---|---|---|---|
running_mode |
Görev için çalışma modunu ayarlar. Üç tane var
modlar: . IMAGE: Tek resimli giriş modu. . . VIDEO: Bir videonun kodu çözülmüş karelerine yönelik mod. . . LIVE_STREAM: Giriş canlı yayını modu kameradan alınan veriler gibi. Bu modda, resultListener, sonuçları almak üzere bir dinleyici ayarlamak için çağrıldı eşzamansız olarak ayarlayabilirsiniz. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
görev modelinin meta verileri (varsa). Şunun için varsayılan: en
İngilizce. Özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
TensorFlow Lite Metadata Writer API'yi kullanarak |
Yerel ayar kodu | en |
max_results |
İsteğe bağlı maksimum puanlı sınıflandırma sonucu sayısını şu değere ayarlar: dön. < 0 ise tüm mevcut sonuçlar döndürülür. | Pozitif sayılar | -1 |
score_threshold |
Şu kriterde sağlanan tahmini geçersiz kılan bir tahmin puanı eşiğini belirler: model meta verileri (varsa). Bu değerin altındaki sonuçlar reddedilir. | Herhangi bir kayan nokta | Ayarlanmadı |
category_allowlist |
İ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ı
filtrelendi. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek category_denylist ile birlikte kullanılamaz ve
her ikisi de hataya neden olur. |
Tüm dizeler | Ayarlanmadı |
category_denylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Eğer
Boş olmayan, kategori adı bu kümede bulunan sınıflandırma sonuçları filtrelenir
çıkar. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek birlikte
hariç tutmanın yanı sıra her iki sonucun da hatalı olarak kullanılmasıdır.category_allowlist |
Tüm dizeler | Ayarlanmadı |
result_callback |
Sonuç işleyiciyi sınıflandırma sonuçlarını alacak şekilde ayarlar
Resim Sınıflandırıcı canlı yayındayken eşzamansız olarak
yatırım yapmanız önemlidir. Yalnızca koşu modu LIVE_STREAM olarak ayarlandığında kullanılabilir |
Yok | Ayarlanmadı |
Verileri hazırlama
Girişinizi bir görüntü dosyası veya Numpy dizisi olarak hazırlayın ve daha sonra
mediapipe.Image
nesne algılandı. Girişiniz bir video dosyası veya
şunun gibi harici bir kitaplık kullanabilirsiniz:
Giriş çerçevelerinizi numpy olarak yüklemek için OpenCV
dizi'dir.
Aşağıdaki örneklerde verilerin işlenmek üzere nasıl hazırlanacağı açıklanır mevcut veri türlerinin her biri
Resim
import mediapipe as mp # Load the input image from an image file. mp_image = mp.Image.create_from_file('/path/to/image') # Load the input image from a numpy array. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)
Video
import mediapipe as mp # Use OpenCV’s VideoCapture to load the input video. # Load the frame rate of the video using OpenCV’s CV_CAP_PROP_FPS # You’ll need it to calculate the timestamp for each frame. # Loop through each frame in the video using VideoCapture#read() # Convert the frame received from OpenCV to a MediaPipe’s Image object. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_frame_from_opencv)
Canlı yayın
import mediapipe as mp # Use OpenCV’s VideoCapture to start capturing from the webcam. # Create a loop to read the latest frame from the camera using VideoCapture#read() # Convert the frame received from OpenCV to a MediaPipe’s Image object. mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_frame_from_opencv)
Görevi çalıştırma
Tetikleyicinin etkinleşmesi için çalışma modunuza karşılık gelen sınıflandırma işlevini çıkarımlar. Görüntü Sınıflandırıcı API, nesnesini ifade eder.
Resim
# Perform image classification on the provided single image. classification_result = classifier.classify(mp_image)
Video
# Calculate the timestamp of the current frame frame_timestamp_ms = 1000 * frame_index / video_file_fps # Perform image classification on the video frame. classification_result = classifier.classify_for_video(mp_image, frame_timestamp_ms)
Canlı yayın
# Send the latest frame to perform image classification. # Results are sent to the `result_callback` provided in the `ImageClassifierOptions`. classifier.classify_async(mp_image, frame_timestamp_ms)
Aşağıdakileri göz önünde bulundurun:
- Video modunda veya canlı yayın modunda çalışırken şunları da yapmanız gerekir: Resim Sınıflandırıcı görevine giriş çerçevesinin zaman damgasını sağlar.
- Görüntü veya video modelinde çalışırken Resim Sınıflandırıcı görevi giriş resmini işlemeyi bitirene kadar geçerli iş parçacığını engeller veya çerçeve.
- Canlı yayın modunda çalışırken Resim Sınıflandırıcı görevi,
devam eder, ancak hemen geri döner. Sonucunu çağırır
dinleyiciyle birlikte sınıflandırma sonucunu
görmelerini sağlar.
bir giriş çerçevesi işleniyor.
classifyAsync
işlevi Resim Sınıflandırıcı görevi başka bir kareyi işlemekle meşgulse görev, yeni giriş çerçevesine dokunun.
Bir resimle kullanmak üzere Resim Sınıflandırıcı oluşturmaya ilişkin tam bir örnek için bkz. kod örnek bölümüne bakın.
Sonuçları işleme ve görüntüleme
Çıkarım çalıştırıldığında, Görüntü Sınıflandırıcı görevi bir
Olası kategorilerin listesini içeren ImageClassifierResult
nesnesi
giriş resmindeki veya çerçevesindeki nesneler için geçerlidir.
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ç, Bird Classifier (Bird Sınıflandırıcı) çalıştırılarak elde edilmiştir. tarih:
Resim Sınıflandırıcı örnek kodu, sınıflandırmanın nasıl görüntüleneceğini gösterir daha fazla bilgi için koda bakın örnek inceleyebilirsiniz.