Poz İşaretçisi görevi, bir görüntüdeki insan vücuduna ait önemli noktaları tespit etmenizi ya da videosunu izleyin. Bu görevi vücutla ilgili önemli konumları belirlemek, duruşunuzu analiz etmek, ve hareketleri kategorilere ayırabilirsiniz. Bu görev, kullanılabilecek makine öğrenimi (ML) modellerini kullanır. tek resim veya video ile oluşturabilirsiniz. Görev, görüntüdeki vücut duruşunda önemli noktaları gösterir koordinatlarla ve 3 boyutlu dünya koordinatlarında gösterir.
Bu talimatlarda, Poz İşaretçisi'nin iOS uygulamalarıyla nasıl kullanılacağı gösterilmektedir. Kod bu talimatlarda açıklanan örnek şurada bulunabilir: GitHub'a gidin.
Bu Web sayfasını görüntüleyerek bu görevin nasıl yerine getirildiğini demo'ya gidin. Özellikler, modeller ve yapılandırma seçenekleri hakkında daha fazla bilgi daha fazla bilgi edinmek için Genel Bakış.
Kod örneği
MediaPipe Tasks örnek kodu, bir Poz İşaretçisi işlevinin temel uygulamasıdır uygulamasını indirin. Örnekte, cihazlarınızın algılanması için fiziksel bir iOS cihazındaki kamera kullanılmaktadır. pozları tespit edebilir. Uygulama aynı zamanda cihaz galerisinden resim ve videolar yükleyin.
Uygulamayı kendi iOS uygulamanız için bir başlangıç noktası olarak kullanabilir veya buna başvurabilirsiniz mevcut bir uygulamada değişiklik yaparken. Poz İşaretçisi örnek kodu, GitHub'a gidin.
Kodu indirme
Aşağıdaki talimatlarda, örneğin yerel bir kopyasını nasıl oluşturacağınız gösterilmektedir kodu oluşturmak için git komut satırı aracını kullanın.
Örnek kodu indirmek için:
Aşağıdaki komutu kullanarak git deposunu klonlayın:
git clone https://github.com/google-ai-edge/mediapipe-samples
İsteğe bağlı olarak, git örneğinizi seyrek ödeme yöntemini kullanacak şekilde yapılandırın. Böylece, yalnızca Poz İşaretçisi örnek uygulamasına ait dosyalar için:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/pose_landmarker/ios/
Örnek kodun yerel sürümünü oluşturduktan sonra, MediaPipe görev kitaplığı, Xcode kullanarak projeyi açın ve uygulamayı çalıştırın. Örneğin, iOS için Kurulum Kılavuzu'na bakın.
Temel bileşenler
Aşağıdaki dosyalarda Poz İşaretçisi örneği için önemli bir kod bulunuyor uygulama:
- PoseLandmarkerService.swift: İşaretçiyi başlatır, model seçimini işler ve çıkarımı çalıştırır olduğunu unutmayın.
- CameraViewController: Canlı kamera feed'i giriş modu için kullanıcı arayüzünü uygular ve önemli noktalardır.
- MediaLibraryViewController.swift: Hareketsiz resim ve video dosyası giriş modu için kullanıcı arayüzünü uygular ve önemli noktaları görselleştirir.
Kurulum
Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili Poz İşaretçisi'ni kullanmak için projeleri kodlayın. platform sürümü de dahil olmak üzere MediaPipe görevlerini kullanmaya yönelik geliştirme ortamı iOS için kurulum kılavuzuna bakın.
Bağımlılıklar
Poz İşaretçisi, yüklenmesi gereken MediaPipeTasksVision
kitaplığını kullanır
360 derece videolu düşünün. Kitaplık hem Swift hem de Objective-C uygulamalarıyla uyumludur.
ve dile özel ek kurulum gerektirmez.
CocoaPods'u macOS'e yükleme talimatları için bkz. CocoaPods
kurulum kılavuzuna başvurun.
Uygulamanız için gerekli kapsülleri içeren bir Podfile
oluşturma talimatlarına
için
CocoaPods'da bulabilirsiniz.
Aşağıdaki kodu kullanarak MediaPipeTasksVision kapsülünü Podfile
bölümüne ekleyin:
target 'MyPoseLandmarkerApp' do
use_frameworks!
pod 'MediaPipeTasksVision'
end
Uygulamanız birim test hedefleri içeriyorsa
iOS'i kurma hakkında daha fazla bilgi edinin.
Podfile
cihazınız.
Model
MediaPipe Pose İşaretçisi görevi, uyumlu ve eğitilmiş bir paket gerektiriyor. karar veriyorum. Mevcut eğitilmiş modeller hakkında daha fazla bilgi için Poz İşaretçisi, göreve genel bakışı görüntüleyin Modeller bölümünü inceleyin.
download_models.sh
komut dosyası
kullanarak modelleri indirin ve Xcode kullanarak proje dizininize ekleyin. Örneğin,
Xcode projenize dosya eklemeye ilişkin talimatlar için Dosyaları yönetme
Xcode'daki diğer klasörler
inceleyebilirsiniz.
Modelin yolunu belirtmek için BaseOptions.modelAssetPath
özelliğini kullanın
daha fazla bilgi edineceksiniz. Kod örneği için sonraki bölüme bakın.
Görevi oluşturma
Poz İşaretçisi görevini başlatıcılardan birini çağırarak oluşturabilirsiniz. İlgili içeriği oluşturmak için kullanılan
PoseLandmarker(options:)
başlatıcı, yapılandırma için değerleri kabul eder
seçenekleri vardır.
Özelleştirilmiş yapılandırma ile başlatılan bir Poz İşaretçisi simgesine ihtiyacınız yoksa
seçeneklerini görmek isterseniz PoseLandmarker(modelPath:)
başlatıcıyı kullanarak
Varsayılan seçeneklerle Poz İşaretçisi. Yapılandırma hakkında daha fazla bilgi için
Yapılandırmaya Genel Bakış bölümüne göz atın.
Poz İşaretçisi görevi 3 giriş verisi türünü destekler: hareketsiz resimler, video dosyaları
ve canlı video akışları kullanılabilir. PoseLandmarker(modelPath:)
varsayılan olarak
özel bir görevdir. Video işlemek için görevinizin başlatılmasını istiyorsanız
dosya veya canlı video akışı içeriyorsa videoyu belirtmek için PoseLandmarker(options:)
öğesini kullanın
modunu kullanabilirsiniz. Canlı yayın modu ayrıca
poseLandmarkerLiveStreamDelegate
yapılandırma seçeneği sunar. Bu seçenek
Poz belirten önemli nokta algılama sonuçlarını delegeye göndermek için Poz İşaretçisi
eşzamansız olarak ayarlayabilirsiniz.
Görevin nasıl oluşturulacağını görmek için koşu modunuza karşılık gelen sekmeyi seçin ve çıkarım yapın.
Swift
Resim
import MediaPipeTasksVision let modelPath = Bundle.main.path(forResource: "pose_landmarker", ofType: "task") let options = PoseLandmarkerOptions() options.baseOptions.modelAssetPath = modelPath options.runningMode = .image options.minPoseDetectionConfidence = minPoseDetectionConfidence options.minPosePresenceConfidence = minPosePresenceConfidence options.minTrackingConfidence = minTrackingConfidence options.numPoses = numPoses let poseLandmarker = try PoseLandmarker(options: options)
Video
import MediaPipeTasksVision let modelPath = Bundle.main.path(forResource: "pose_landmarker", ofType: "task") let options = PoseLandmarkerOptions() options.baseOptions.modelAssetPath = modelPath options.runningMode = .video options.minPoseDetectionConfidence = minPoseDetectionConfidence options.minPosePresenceConfidence = minPosePresenceConfidence options.minTrackingConfidence = minTrackingConfidence options.numPoses = numPoses let poseLandmarker = try PoseLandmarker(options: options)
Canlı yayın
import MediaPipeTasksVision // Class that conforms to the `PoseLandmarkerLiveStreamDelegate` protocol and // implements the method that the pose landmarker calls once it finishes // performing pose landmark detection in each input frame. class PoseLandmarkerResultProcessor: NSObject, PoseLandmarkerLiveStreamDelegate { func poseLandmarker( _ poseLandmarker: PoseLandmarker, didFinishDetection result: PoseLandmarkerResult?, timestampInMilliseconds: Int, error: Error?) { // Process the pose landmarker result or errors here. } } let modelPath = Bundle.main.path(forResource: "pose_landmarker", ofType: "task") let options = PoseLandmarkerOptions() options.baseOptions.modelAssetPath = modelPath options.runningMode = .liveStream options.minPoseDetectionConfidence = minPoseDetectionConfidence options.minPosePresenceConfidence = minPosePresenceConfidence options.minTrackingConfidence = minTrackingConfidence options.numPoses = numPoses // Assign an object of the class to the `poseLandmarkerLiveStreamDelegate` // property. let processor = PoseLandmarkerResultProcessor() options.poseLandmarkerLiveStreamDelegate = processor let poseLandmarker = try PoseLandmarker(options: options)
Objective-C
Resim
@import MediaPipeTasksVision; NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"pose_landmarker" ofType:@"task"]; MPPPoseLandmarkerOptions *options = [[MPPPoseLandmarkerOptions alloc] init]; options.baseOptions.modelAssetPath = modelPath; options.runningMode = MPPRunningModeImage; options.minPoseDetectionConfidence = minPoseDetectionConfidence; options.minPosePresenceConfidence = minPosePresenceConfidence; options.minTrackingConfidence = minTrackingConfidence; options.numPoses = numPoses; MPPPoseLandmarker *poseLandmarker = [[MPPPoseLandmarker alloc] initWithOptions:options error:nil];
Video
@import MediaPipeTasksVision; NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"pose_landmarker" ofType:@"task"]; MPPPoseLandmarkerOptions *options = [[MPPPoseLandmarkerOptions alloc] init]; options.baseOptions.modelAssetPath = modelPath; options.runningMode = MPPRunningModeVideo; options.minPoseDetectionConfidence = minPoseDetectionConfidence; options.minPosePresenceConfidence = minPosePresenceConfidence; options.minTrackingConfidence = minTrackingConfidence; options.numPoses = numPoses; MPPPoseLandmarker *poseLandmarker = [[MPPPoseLandmarker alloc] initWithOptions:options error:nil];
Canlı yayın
@import MediaPipeTasksVision; // Class that conforms to the `MPPPoseLandmarkerLiveStreamDelegate` protocol // and implements the method that the pose landmarker calls once it finishes // performing pose landmarks= detection in each input frame. @interface APPPoseLandmarkerResultProcessor : NSObject@end @implementation APPPoseLandmarkerResultProcessor - (void)poseLandmarker:(MPPPoseLandmarker *)poseLandmarker didFinishDetectionWithResult:(MPPPoseLandmarkerResult *)poseLandmarkerResult timestampInMilliseconds:(NSInteger)timestampInMilliseconds error:(NSError *)error { // Process the pose landmarker result or errors here. } @end NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"pose_landmarker" ofType:@"task"]; MPPPoseLandmarkerOptions *options = [[MPPPoseLandmarkerOptions alloc] init]; options.baseOptions.modelAssetPath = modelPath; options.runningMode = MPPRunningModeLiveStream; options.minPoseDetectionConfidence = minPoseDetectionConfidence; options.minPosePresenceConfidence = minPosePresenceConfidence; options.minTrackingConfidence = minTrackingConfidence; options.numPoses = numPoses; // Assign an object of the class to the `poseLandmarkerLiveStreamDelegate` // property. APPPoseLandmarkerResultProcessor *processor = [APPPoseLandmarkerResultProcessor new]; options.poseLandmarkerLiveStreamDelegate = processor; MPPPoseLandmarker *poseLandmarker = [[MPPPoseLandmarker alloc] initWithOptions:options error:nil];
Not: Video modunu veya canlı yayın modunu kullanırsanız Poz İşaretçisi özelliği her karede avuç içi algılama modelini tetiklemekten kaçınmak için izleme özelliğini kullanabilirsiniz. gecikmeyi azaltabilir.
Yapılandırma seçenekleri
Bu görev, iOS uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:
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, poseLandmarkerLiveStreamDelegate şuna ayarlanmalıdır:
öğesini uygulayan bir sınıf örneği
PoseLandmarkerLiveStreamDelegate
eşzamansız bir şekilde poz önemli nokta algılaması gerçekleştirme.
|
{RunningMode.image, RunningMode.video, RunningMode.liveStream } |
RunningMode.image |
num_poses |
tarafından algılanabilecek maksimum poz sayısı Poz İşaretçisi. | Integer > 0 |
1 |
min_pose_detection_confidence |
Poz algılamanın olması için gereken minimum güven puanı kabul edilir. | Float [0.0,1.0] |
0.5 |
min_pose_presence_confidence |
Pozlamanın minimum güven puanı puanının yüksek olması gerekir. | Float [0.0,1.0] |
0.5 |
min_tracking_confidence |
Poz izleme için minimum güven puanı kabul edilir. | Float [0.0,1.0] |
0.5 |
output_segmentation_masks |
Poz İşaretçisi'nin algılanan öğe için bir segmentasyon maskesi verip vermediği poz verin. | Boolean |
False |
result_callback |
Sonuç işleyiciyi işaretleyici sonuçlarını alacak şekilde ayarlar
otomatik olarak senkronize edilir.
Yalnızca koşu modu LIVE_STREAM olarak ayarlandığında kullanılabilir |
ResultListener |
N/A |
Canlı yayın yapılandırması
Koşu modu canlı yayın yapacak şekilde ayarlandığında, Poz İşaretçisi
ek poseLandmarkerLiveStreamDelegate
yapılandırma seçeneği sunar.
Poz İşaretçisinin poz önemli nokta algılama sonuçları vermesini sağlar
eşzamansız olarak ayarlayabilirsiniz. Yetki verilen kişi
poseLandmarker(_:didFinishDetection:timestampInMilliseconds:error:)
yöntem,
yapılan pozun sonuçlarını işledikten sonra Poz İşaretçisi tarafından çağrılan
her karede önemli nokta algılamasını sağlar.
Seçenek adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
poseLandmarkerLiveStreamDelegate |
Poz İşaretçisi'nin pozun sonuçlarını almasını sağlar
önemli nokta algılaması eşzamansız olarak
yapılabilir. İlgili sınıfa
için bir örnek değer bu mülke ayarlanması durumunda,
poseLandmarker(_:didFinishDetection:timestampInMilliseconds:error:)
yöntemidir. |
Geçerli değil | Ayarlanmadı |
Verileri hazırlama
Önce giriş resmini veya çerçeveyi bir MPImage
nesnesine dönüştürmeniz gerekiyor
Poz İşaretçisi'ne iletebilir. MPImage
, farklı iOS görsel türlerini destekler
ve çıkarım için bunları herhangi bir çalışma modunda kullanabilir. Daha fazla
MPImage
hakkında bilgi için
MPImage API
Kullanım alanınıza ve cihazınızın çalışma moduna göre bir iOS resim biçimi seçin.
gerektirir.MPImage
, UIImage
, CVPixelBuffer
ve
CMSampleBuffer
iOS resim biçimi.
UIImage
UIImage
biçimi, aşağıdaki koşu modları için çok uygundur:
Resimler: uygulama paketi, kullanıcı galerisi veya dosya sisteminden şu şekilde biçimlendirilmiş resimler:
UIImage
resim,MPImage
nesnesine dönüştürülebilir.Videolar: AVAssetImageGenerator yöntemini kullanın ve CGImage daha sonra bunları
UIImage
resme dönüştürün.
Swift
// Load an image on the user's device as an iOS `UIImage` object. // Convert the `UIImage` object to a MediaPipe's Image object having the default // orientation `UIImage.Orientation.up`. let image = try MPImage(uiImage: image)
Objective-C
// Load an image on the user's device as an iOS `UIImage` object. // Convert the `UIImage` object to a MediaPipe's Image object having the default // orientation `UIImageOrientationUp`. MPImage *image = [[MPPImage alloc] initWithUIImage:image error:nil];
Örnek, bir MPImage
öğesini varsayılan olarak başlatır
UIImage.Orientation.Up
Yön. MPImage
işlemini, desteklenen herhangi bir
UIImage.Orientation
değerler. Poz İşaretçisi, .upMirrored
gibi yansıyan yönleri desteklemez
.downMirrored
, .leftMirrored
, .rightMirrored
.
UIImage
hakkında daha fazla bilgi için UIImage Apple Developer uygulamasına bakın
Dokümanlar.
CVPixelBuffer
CVPixelBuffer
biçimi, çerçeve oluşturan uygulamalar için uygundur
ve iOS CoreImage'i kullanmanız gerekir
işleme çerçevesidir.
CVPixelBuffer
biçimi, aşağıdaki koşu modları için çok uygundur:
Resimler: Biraz işlemden sonra
CVPixelBuffer
resim oluşturan uygulamalar konum işaretçisi, iOS'inCoreImage
çerçevesi kullanılarak Poz İşaretçisi'ne gönderilebilir. resim çalıştırma moduna geçiyorum.Videolar: Video kareleri, video kareleri için
CVPixelBuffer
biçimine dönüştürülebilir. ve daha sonra video modunda Poz İşaretçisi'ne gönderilir.canlı yayın: Kare oluşturmak için iOS kamera kullanan uygulamalar dönüştürülebilir gönderilmeden önce işlenmek üzere
CVPixelBuffer
biçiminde Canlı yayın modunda Poz İşaretçisi.
Swift
// Obtain a CVPixelBuffer. // Convert the `CVPixelBuffer` object to a MediaPipe's Image object having the default // orientation `UIImage.Orientation.up`. let image = try MPImage(pixelBuffer: pixelBuffer)
Objective-C
// Obtain a CVPixelBuffer. // Convert the `CVPixelBuffer` object to a MediaPipe's Image object having the // default orientation `UIImageOrientationUp`. MPImage *image = [[MPPImage alloc] initWithUIImage:image error:nil];
CVPixelBuffer
hakkında daha fazla bilgi için CVPixelBuffer Apple'a bakın
Geliştirici
Dokümanlar.
CMSampleBuffer
CMSampleBuffer
biçimi, tek tip bir medya türünün medya örneklerini depolar ve
için son derece uygun. iOS kameralardaki canlı kareler
iOS tarafından CMSampleBuffer
biçiminde eşzamansız olarak yayınlanır
AVCaptureVideoDataOutput.
Swift
// Obtain a CMSampleBuffer. // Convert the `CMSampleBuffer` object to a MediaPipe's Image object having the default // orientation `UIImage.Orientation.up`. let image = try MPImage(sampleBuffer: sampleBuffer)
Objective-C
// Obtain a `CMSampleBuffer`. // Convert the `CMSampleBuffer` object to a MediaPipe's Image object having the // default orientation `UIImageOrientationUp`. MPImage *image = [[MPPImage alloc] initWithSampleBuffer:sampleBuffer error:nil];
CMSampleBuffer
hakkında daha fazla bilgi için CMSampleBuffer Apple'a bakın
Geliştirici
Dokümanlar.
Görevi çalıştırma
Poz İşaretçisi'ni çalıştırmak için, atanan seçeneğe özel detect()
yöntemini kullanın
çalışma modu:
- Hareketsiz resim:
detect(image:)
- Video:
detect(videoFrame:timestampInMilliseconds:)
- Canlı yayın:
detectAsync(image:timestampInMilliseconds:)
Aşağıdaki kod örnekleri, Pose İşaretleyici'nin nasıl çalıştırılacağına ilişkin şu farklı koşu modları var:
Swift
Resim
let result = try poseLandmarker.detect(image: image)
Video
let result = try poseLandmarker.detect( videoFrame: image, timestampInMilliseconds: timestamp)
Canlı yayın
try poseLandmarker.detectAsync( image: image, timestampInMilliseconds: timestamp)
Objective-C
Resim
MPPPoseLandmarkerResult *result = [poseLandmarker detectImage:image error:nil];
Video
MPPPoseLandmarkerResult *result = [poseLandmarker detectVideoFrame:image timestampInMilliseconds:timestamp error:nil];
Canlı yayın
BOOL success = [poseLandmarker detectAsyncImage:image timestampInMilliseconds:timestamp error:nil];
Poz İşaretçisi kod örneği, bu modlardan her birinin uygulamalarını göstermektedir.
ayrıntılı olarak detect(image:)
, detect(videoFrame:timestampInMilliseconds:)
,
ve detectAsync(image:timestampInMilliseconds:)
. Örnek kod,
işlem modları arasında geçiş yapmasını sağlar. Bu modlar, kullanımınız için gerekli olmayabilir.
dava açın.
Aşağıdakileri göz önünde bulundurun:
Video modunda veya canlı yayın modunda çalışırken ayrıca Poz İşaretçisi görevine giriş çerçevesinin zaman damgası.
Resim veya video modunda çalışırken, Poz İşaretçisi görevi öğesini, giriş resmini veya çerçevesini işlemeyi bitirene kadar devam ettirir. Alıcı: mevcut iş parçacığını engellemekten kaçının, işlemeyi arka planda yürütün iOS kullanan iş parçacığı Sevkiyat veya NSOperation çerçeveleri.
Canlı yayın modunda çalışırken Poz İşaretçisi görevi hemen geri dönüyor ve mevcut ileti dizisini engellemez. İçeriği
poseLandmarker(_:didFinishDetection:timestampInMilliseconds:error:)
yöntem her giriş çerçevesini işledikten sonra poz belirginleştirici sonucuyla değiştirirsiniz. İlgili içeriği oluşturmak için kullanılan Poz İşaretçisi, bu yöntemi özel bir seri üzerinde eşzamansız olarak çağırır sevk sırası oluşturun. Sonuçları kullanıcı arayüzünde görüntülemek için, ana sıraya eklenir.detectAsync
işlevi, Poz İşaretçisi görevi başka bir öğeyi işlemekle meşgulken çağrılır Poz İşaretçisi, yeni giriş çerçevesini yok sayar.
Sonuçları işleme ve görüntüleme
Çıkarım yapıldığında, Poz İşaretçisi görevi bir PoseLandmarkerResult
döndürür.
konumunu da ekleyebilirsiniz.
Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:
PoseLandmarkerResult:
Landmarks:
Landmark #0:
x : 0.638852
y : 0.671197
z : 0.129959
visibility : 0.9999997615814209
presence : 0.9999984502792358
Landmark #1:
x : 0.634599
y : 0.536441
z : -0.06984
visibility : 0.999909
presence : 0.999958
... (33 landmarks per pose)
WorldLandmarks:
Landmark #0:
x : 0.067485
y : 0.031084
z : 0.055223
visibility : 0.9999997615814209
presence : 0.9999984502792358
Landmark #1:
x : 0.063209
y : -0.00382
z : 0.020920
visibility : 0.999976
presence : 0.999998
... (33 world landmarks per pose)
SegmentationMasks:
... (pictured below)
Çıkış, hem normalleştirilmiş koordinatlar (Landmarks
) hem de dünya içeriyor
koordinatları (WorldLandmarks
) girin.
Çıkış şu normalleştirilmiş koordinatları içerir (Landmarks
):
x
vey
: Önemli nokta koordinatları: resim genişliği (x
) ve yüksekliği (y
).z
: Yer işareti derinliği; kalçaların orta noktasına kadar gelen derinliği kaynak. Değer ne kadar küçükse önemli nokta kameraya o kadar yakındır. İlgili içeriği oluşturmak için kullanılan z büyüklüğü,x
ile hemen hemen aynı ölçeği kullanır.visibility
: Önemli noktanın resimde görünür olma olasılığı.
Çıkış şu dünya koordinatlarını içerir (WorldLandmarks
):
x
,y
vez
: Metre cinsinden gerçek 3 boyutlu koordinatlar kalçanın orta noktasını bulun.visibility
: Önemli noktanın resimde görünür olma olasılığı.
Aşağıdaki resimde, görev çıkışının görselleştirmesi gösterilmektedir:
İsteğe bağlı segmentasyon maskesi, her bir pikselin ait olma olasılığını temsil eder. geri bildirim gönderebilirsiniz. Aşağıdaki resimde, Google Etiket Yöneticisi'nin görev çıkışı:
Poz İşaretçisi örnek kodu, Poz İşaretçisi'nin nasıl görüntüleneceğini gösterir. sonuç.