MediaPipe Gesture Recognizer görevi, elle yapılan hareketleri gerçek zamanlı olarak tanımanıza olanak tanır ve tanınan elle yapılan hareket sonuçlarını, algılanan ellerin işaret noktalarıyla birlikte sağlar. Bu görevi kullanarak kullanıcının belirli el hareketlerini tanıyabilir ve bu hareketlere karşılık gelen uygulama özelliklerini çağırabilirsiniz.
Bu görev, makine öğrenimi (ML) modeliyle görüntü verileri üzerinde çalışır ve statik verileri ya da sürekli akışı kabul eder. Görev, görüntü koordinatlarında el belirgin işaretlerini, dünya koordinatlarında el belirgin işaretlerini, el tercihi (sol/sağ el) ve birden fazla elin elle yapılan hareket kategorilerini çıkarır.
Başlayın
Hedef platformunuz için bu uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın. Platforma özel bu kılavuzlar, önerilen bir modeli kullanarak bu görevin temel bir uygulamasını adım adım açıklarken önerilen yapılandırma seçenekleriyle ilgili kod örnekleri de sunar:
- Android - Kod örneği
- Python - Kod örneği
- Web - [Code example](https://github.com/google-ai-edge/mediapipe-samples-web/blob/main/src/tasks/gesture-recognizer.ts - Guide
Görev ayrıntıları
Bu bölümde, bu görevin özellikleri, girişleri, çıkışları ve yapılandırma seçenekleri açıklanmaktadır.
Özellikler
- Giriş görüntüsü işleme: İşleme; görüntü döndürme, yeniden boyutlandırma, normalleştirme ve renk alanı dönüştürme işlemlerini içerir.
- Puan eşiği: Sonuçları tahmin puanlarına göre filtreleyin.
- İzin verilenler ve reddedilenler etiket listesi: Model tarafından tanınan hareket kategorilerini belirtin.
| Görev girişleri | Görev çıktıları |
|---|---|
Hareket Tanıyıcı, aşağıdaki veri türlerinden birinin girişini kabul eder:
|
Hareket Tanıyıcı aşağıdaki sonuçları verir:
|
Yapılandırma seçenekleri
Bu görev için aşağıdaki yapılandırma seçenekleri mevcuttur:
| Seçenek Adı | Açıklama | Değer aralığı | Varsayılan değer | |
|---|---|---|---|---|
running_mode |
Görevin çalışma modunu ayarlar. Üç mod vardır: RESİM: Tek resim girişleri için mod. VIDEO: Bir videonun kodu çözülmüş karelerinin modu. LIVE_STREAM: Giriş verilerinin (ör. kameradan alınan veriler) canlı yayını için kullanılan mod. Bu modda, sonuçları eşzamansız olarak almak için bir dinleyici ayarlamak üzere resultListener çağrılmalıdır. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
|
num_hands |
GestureRecognizer ile en fazla sayıda el algılanabilir.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
El algılamanın avuç içi algılama modelinde başarılı olarak kabul edilmesi için gereken minimum güven puanı. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
El işareti algılama modelinde el varlığı puanının minimum güven puanı. Hareket Tanıma Aracı'nın Video modunda ve Canlı yayın modunda, el belirgin işaret modelinden alınan el varlığı güven puanı bu eşiğin altındaysa avuç içi algılama modeli tetiklenir. Aksi takdirde, sonraki işaret noktası algılama için ellerin konumunu belirlemek üzere basit bir el takibi algoritması kullanılır. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
El takibinin başarılı kabul edilmesi için gereken minimum güven puanı. Bu, geçerli kare ile son karedeki eller arasındaki sınırlayıcı kutu IoU eşiğidir. Hareket Tanıyıcı'nın Video modunda ve Yayın modunda izleme başarısız olursa Hareket Tanıyıcı, el algılamayı tetikler. Aksi takdirde el algılama atlanır. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Hazır hareket sınıflandırıcı davranışını yapılandırma seçenekleri. Hazır hareketler ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Özel hareket sınıflandırıcı davranışını yapılandırma seçenekleri. |
|
|
|
result_callback |
Hareket tanıyıcı canlı yayın modundayken sınıflandırma sonuçlarını eşzamansız olarak almak için sonuç dinleyiciyi ayarlar.
Yalnızca çalışma modu LIVE_STREAM olarak ayarlandığında kullanılabilir. |
ResultListener |
Yok | Yok |
Modeller
Hareket tanıma aracı, iki önceden paketlenmiş model paketi içeren bir model paketi kullanır: el işareti model paketi ve hareket sınıflandırma model paketi. Önemli nokta modeli, ellerin ve el geometrisinin varlığını algılar. Hareket tanıma modeli ise el geometrisine göre hareketleri tanır.
| Model adı | Giriş şekli | Kuantizasyon türü | Model Kartı | Sürümler |
|---|---|---|---|---|
| HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | En yeni |
Bu görev, Model Oluşturucu kullanılarak model paketinin değiştirilmesini de destekler. Model Maker'ı kullanarak bu görev için modelleri özelleştirme hakkında daha fazla bilgi edinmek için Hareket Tanıma için modelleri özelleştirme sayfasını inceleyin.
El işareti modeli paketi
El belirgin nokta modeli paketi, algılanan el bölgelerindeki 21 el eklemi koordinatının anahtar nokta yerelleştirmesini algılar. Model, yaklaşık 30.000 gerçek dünya görüntüsünün yanı sıra çeşitli arka planlar üzerine yerleştirilmiş, oluşturulmuş sentetik el modelleriyle eğitildi. 21 anıtın tanımını aşağıda bulabilirsiniz:

El önemli nokta belirleme modeli paketi, avuç içi algılama modeli ve el önemli nokta algılama modelini içerir. Avuç içi algılama modeli, ellerin bölgesini tüm giriş görüntüsünden yerelleştirir. El işaret noktası algılama modeli ise avuç içi algılama modeli tarafından tanımlanan kırpılmış el görüntüsündeki işaret noktalarını bulur.
Avuç içi algılama modeli çok daha fazla zaman aldığından, Video modunda veya Canlı Yayın modunda Hareket Tanıyıcı, ellerin bir sonraki karedeki bölgesini yerelleştirmek için geçerli karede algılanan el işaretleriyle tanımlanan sınırlayıcı kutuyu kullanır. Bu, Hareket Tanıma modelinin avuç içi algılama modelini tetikleme sayısını azaltır. Yalnızca el işaretleri modeli, yeterli sayıda el varlığını artık tanımlayamadığında veya el takibi başarısız olduğunda elleri yeniden yerelleştirmek için avuç içi algılama modeli çağrılır.
Hareket sınıflandırma modeli paketi
Hareket sınıflandırma modeli paketi, aşağıdaki yaygın el hareketlerini tanıyabilir:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
Model elleri algılamasına rağmen hareketi tanımıyorsa hareket tanıyıcı "Yok" sonucunu döndürür. Model elleri algılamazsa hareket tanıyıcı boş değer döndürür.
Hareket sınıflandırma modeli paketi, hareket yerleştirme modelini ve ardından hareket sınıflandırma modelini içeren iki adımlı nöral ağ ardışık düzeni içerir. Daha fazla bilgiyi Hareket sınıflandırma modeli kartında bulabilirsiniz.
Hareket yerleştirme modeli, görüntü özelliklerini bir özellik vektörüne kodlar. Sınıflandırma modeli ise özellik vektörünü giriş olarak alan basit bir hareket sınıflandırıcısıdır. Sağlanan hareket sınıflandırma modeli paketi, yukarıda belirtilen 7 yaygın el hareketini algılayan hazır hareket sınıflandırıcısını içerir. Kendi özel hareket sınıflandırıcınızı eğiterek model paketini daha fazla hareketi tanıyacak şekilde genişletebilirsiniz. Daha fazla bilgiyi aşağıdaki Özel modeller bölümünde bulabilirsiniz.
Hem hazır hareket sınıflandırıcısı hem de özel hareket sınıflandırıcısı olan Gesture Recognizer, her iki sınıflandırıcı da kategorilerinde aynı hareketi tanırsa özel hareketi tercih eder. Hareketi yalnızca bir hareket sınıflandırıcı tanırsa Hareket Tanıyıcı, tanınan hareketi doğrudan çıkarır.
Görev karşılaştırmaları
Aşağıda, yukarıdaki önceden eğitilmiş modellere dayalı olarak tüm işlem hattı için görev karşılaştırmaları verilmiştir. Gecikme sonucu, CPU / GPU kullanılarak Pixel 6'daki ortalama gecikmedir.
| Model Adı | CPU Gecikmesi | GPU Gecikmesi |
|---|---|---|
| GestureRecognizer | 16,76 ms | 20,87 ms |
Özel modeller
Bu görevde sağlanan modellerin özelliklerini iyileştirmek veya değiştirmek istiyorsanız mevcut modelleri değiştirmek için Model Oluşturucu'yu kullanabilirsiniz. MediaPipe ile kullanılan özel modeller, model paketi dosyası olan .task biçiminde olmalıdır. Kendi modelinizi oluşturmadan önce, bu görev için sağlanan modelleri değiştirmek üzere Model Oluşturucu'yu kullanmayı düşünebilirsiniz.
Bu görev için modeli özelleştirme hakkında daha fazla bilgi edinmek istiyorsanız Hareket Tanıma için modelleri özelleştirme başlıklı makaleyi inceleyin.