MediaPipe Object Detector görevi, birden fazla öğenin mevcut düşünme egzersizlerini teşvik edersiniz. Bu talimatlarda, Nesne Algılayıcı'nın nasıl kullanılacağı gösterilmektedir görevi görür. Bu talimatlarda açıklanan kod örneğini şu adreste bulabilirsiniz: GitHub'a gidin.
Web demosunu görüntüleyerek bu görevin nasıl yerine getirildiğini öğrenebilirsiniz. Modeller ve özellikler, yapılandırma seçeneklerini görmek için Genel Bakış'ı inceleyin.
Kod örneği
Nesne Dedektörü örnek kodu, bu yapılandırmanın tam olarak görevi görebilir. Bu kod, görevi test etmenize ve kendi metin sınıflandırma uygulamanızı geliştirmeye başladınız. Bu dosyaları görüntüleyebilir, çalıştırabilir Nesne Dedektörü örnek kodunu düzenleyin. yalnızca web tarayıcınızı kullanarak.
Raspberry Pi için Nesne Dedektörü'nü 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 Nesne Dedektörü'nü kullanmak için özel olarak kod projelerini kodlayın. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı daha fazla bilgi için Python kurulum kılavuzu.
Paketler
Nesne Algılayıcı görevi, mediapipe pip paketini gerektirir. Google Etiket Yöneticisi'ni kullanarak aşağıdaki komutları kullanın:
$ python -m pip install mediapipe
İçe aktarılanlar
Nesne Algılayıcı görev işlevlerine erişmek için aşağıdaki sınıfları içe aktarın:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Model
MediaPipe Nesne Dedektörü görevi bu görevi görebilir. Nesne Algılayıcı için eğitilen modeller hakkında daha fazla bilgi için göreve genel bakış Modeller bölümü.
Bir model seçip indirin, ardından bu modeli yerel bir dizinde depolayın:
model_path = '/absolute/path/to/lite-model_efficientdet_lite0_detection_metadata_1.tflite'
Yolu belirtmek için BaseOptions
nesnesi model_asset_path
parametresini kullanın
modelin tüm özellikleridir. Kod örneği için sonraki bölüme bakın.
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. Bir yapılandırma seçeneği ayarlamazsanız
görev varsayılan değeri kullanır. Yapılandırma seçenekleri hakkında daha fazla bilgi için
Yapılandırma seçenekleri bölümüne bakın.
Nesne Algılayıcı görevi birkaç giriş verisi türünü destekler: hareketsiz görüntüler, video dosyaları ve canlı video akışları kullanılabilir. Giriş verilerinize karşılık gelen sekmeyi seçin yazın.
Resim
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions ObjectDetector = mp.tasks.vision.ObjectDetector ObjectDetectorOptions = mp.tasks.vision.ObjectDetectorOptions VisionRunningMode = mp.tasks.vision.RunningMode options = ObjectDetectorOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=VisionRunningMode.IMAGE) with ObjectDetector.create_from_options(options) as detector: # The detector is initialized. Use it here. # ...
Video
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions ObjectDetector = mp.tasks.vision.ObjectDetector ObjectDetectorOptions = mp.tasks.vision.ObjectDetectorOptions VisionRunningMode = mp.tasks.vision.RunningMode options = ObjectDetectorOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=VisionRunningMode.VIDEO) with ObjectDetector.create_from_options(options) as detector: # The detector is initialized. Use it here. # ...
Canlı yayın
import mediapipe as mp BaseOptions = mp.tasks.BaseOptions DetectionResult = mp.tasks.components.containers.detections.DetectionResult ObjectDetector = mp.tasks.vision.ObjectDetector ObjectDetectorOptions = mp.tasks.vision.ObjectDetectorOptions VisionRunningMode = mp.tasks.vision.RunningMode def print_result(result: DetectionResult, output_image: mp.Image, timestamp_ms: int): print('detection result: {}'.format(result)) options = ObjectDetectorOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), running_mode=VisionRunningMode.LIVE_STREAM, max_results=5, result_callback=print_result) with ObjectDetector.create_from_options(options) as detector: # The detector is initialized. Use it here. # ...
Bir resimle kullanmak üzere Nesne Dedektörü oluşturmayla ilgili kapsamlı bir örnek için kod örneği hakkında daha fazla bilgi edinin.
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 |
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 üst puanlı algılama sonucu sayısını şu değere ayarlar: dön. | Pozitif sayılar | -1 (tüm sonuçlar döndürülür) |
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 algılama 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 algılama 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ı |
Verileri hazırlama
Girişinizi bir görüntü dosyası veya Numpy dizisi olarak hazırlayın ve
daha sonra bunu bir mediapipe.Image
nesnesine dönüştürün. Girişiniz bir video dosyasıysa
bir web kamerasından canlı yayın yapmak için
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çıklanmakta ve gösterilmektedir tıklayın:
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
Çıkarımları tetiklemek için algılama işlevlerinden birini çağırabilirsiniz. Nesne Algılayıcı görevi, giriş görüntüsünde veya çerçevede algılanan nesneleri döndürür.
Resim
# Perform object detection on the provided single image. detection_result = detector.detect(mp_image)
Video
# Calculate the timestamp of the current frame frame_timestamp_ms = 1000 * frame_index / video_file_fps # Perform object detection on the video frame. detection_result = detector.detect_for_video(mp_image, frame_timestamp_ms)
Canlı yayın
# Send the latest frame to perform object detection. # Results are sent to the `result_callback` provided in the `ObjectDetectorOptions`. detector.detect_async(mp_image, frame_timestamp_ms)
Bir resimde Nesne Dedektörü çalıştırmanın tam bir örneği için kod örneğini inceleyin.
Aşağıdakileri göz önünde bulundurun:
- Video modunda veya canlı yayın modunda çalışırken şunları da yapmanız gerekir: Nesne Dedektörü görevine giriş çerçevesinin zaman damgasını sağlar.
- Görüntü veya video modelinde çalışırken Nesne Algılayı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 Nesne Algılayıcı görevi, devam eder, ancak hemen geri döner. Sonucunu çağırır algılama sonucuyla birlikte gelen bir hata dinleyicisidir. giriş çerçevesine sahip. Nesne Dedektörü görevi başka bir kareyi işlemekle meşgulse yeni giriş çerçevesi yoksayılacak.
Sonuçları işleme ve görüntüleme
Çıkarım çalıştırıldığında, Nesne Algılayıcı görevi bir
Bulunduğu nesneleri açıklayan ObjectDetectionResult
nesnesi
giriş resmine bakalım.
Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:
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
Aşağıdaki resimde, görev çıkışının görselleştirmesi gösterilmektedir:
Nesne Algılayıcısı örnek kodu, algılamanın nasıl görüntüleneceğini daha fazla bilgi edinmek için kod örneği inceleyebilirsiniz.