Video sınıflandırma , bir videonun neyi temsil ettiğini belirlemeye yönelik makine öğrenimi görevidir. Bir video sınıflandırma modeli, farklı eylemler veya hareketler gibi bir dizi benzersiz sınıf içeren bir video veri kümesi üzerinde eğitilir. Model, video karelerini girdi olarak alır ve videoda temsil edilen her sınıfın olasılığını verir.
Video sınıflandırma ve görüntü sınıflandırma modellerinin her ikisi de görüntüleri, önceden tanımlanmış sınıflara ait bu görüntülerin olasılıklarını tahmin etmek için girdi olarak kullanır. Bununla birlikte, bir video sınıflandırma modeli, bir videodaki eylemleri tanımak için bitişik kareler arasındaki uzamsal-zamansal ilişkileri de işler.
Örneğin, bir video eylemi tanıma modeli, koşma, alkışlama ve el sallama gibi insan eylemlerini tanımlamak için eğitilebilir. Aşağıdaki görüntü, Android'de bir video sınıflandırma modelinin çıktısını göstermektedir.
Başlamak
Android veya Raspberry Pi dışında bir platform kullanıyorsanız veya TensorFlow Lite API'lerini zaten biliyorsanız, başlangıç video sınıflandırma modelini ve destekleyici dosyaları indirin. Ayrıca TensorFlow Lite Destek Kitaplığını kullanarak kendi özel çıkarım işlem hattınızı da oluşturabilirsiniz.
Meta veri içeren başlangıç modelini indirin
TensorFlow Lite'ta yeniyseniz ve Android veya Raspberry Pi ile çalışıyorsanız, başlamanıza yardımcı olacak aşağıdaki örnek uygulamaları keşfedin.
Android
Android uygulaması, sürekli video sınıflandırması için cihazın arka kamerasını kullanır. Çıkarım, TensorFlow Lite Java API kullanılarak gerçekleştirilir. Demo uygulaması, çerçeveleri sınıflandırır ve öngörülen sınıflandırmaları gerçek zamanlı olarak görüntüler.
Ahududu Pi
Raspberry Pi örneği, sürekli video sınıflandırması gerçekleştirmek için Python ile TensorFlow Lite'ı kullanır. Gerçek zamanlı video sınıflandırması gerçekleştirmek için Raspberry Pi'yi Pi Camera gibi bir kameraya bağlayın. Kameradan sonuçları görüntülemek için Raspberry Pi'ye bir monitör bağlayın ve Pi kabuğuna erişmek için SSH'yi kullanın (Pi'ye bir klavye bağlamaktan kaçınmak için).
Başlamadan önce Raspberry Pi'nizi Raspberry Pi OS ile kurun (tercihen Buster'a güncellenmiştir).
Model Açıklaması
Mobil Video Ağları ( MoViNets ), mobil cihazlar için optimize edilmiş verimli video sınıflandırma modelleri ailesidir. MoViNet'ler, birkaç büyük ölçekli video eylemi tanıma veri setinde son teknoloji doğruluk ve verimlilik göstererek onları video eylemi tanıma görevleri için çok uygun hale getirir.
TensorFlow Lite için MoviNet modelinin üç çeşidi vardır: MoviNet-A0 , MoviNet-A1 ve MoviNet-A2 . Bu varyantlar, 600 farklı insan eylemini tanımak için Kinetics-600 veri seti ile eğitildi. MoviNet-A0 en küçük, en hızlı ve en az doğru olanıdır. MoviNet-A2 en büyük, en yavaş ve en doğru olanıdır. MoviNet-A1 , A0 ve A2 arasında bir uzlaşmadır.
Nasıl çalışır
Eğitim sırasında, videolar ve bunlarla ilişkili etiketler bir video sınıflandırma modeli sağlanır. Her etiket, modelin tanımayı öğreneceği farklı bir kavramın veya sınıfın adıdır. Video eylemi tanıma için, videolar insan eylemlerine ait olacak ve etiketler ilişkili eylem olacaktır.
Video sınıflandırma modeli, yeni videoların eğitim sırasında verilen sınıflardan herhangi birine ait olup olmadığını tahmin etmeyi öğrenebilir. Bu işleme çıkarım denir. Önceden var olan bir modeli kullanarak yeni video sınıflarını belirlemek için aktarım öğrenimini de kullanabilirsiniz.
Model, sürekli video alan ve gerçek zamanlı olarak yanıt veren bir akış modelidir. Model bir video akışı aldığında, eğitim veri kümesindeki sınıflardan herhangi birinin videoda temsil edilip edilmediğini belirler. Model, her kare için, videonun sınıfı temsil etme olasılığıyla birlikte bu sınıfları döndürür. Belirli bir zamanda örnek bir çıktı aşağıdaki gibi görünebilir:
Eylem | olasılık |
---|---|
meydan dansı | 0.02 |
iplik geçirme iğnesi | 0.08 |
dönen parmaklar | 0.23 |
el sallamak | 0.67 |
Çıktıdaki her eylem, eğitim verilerindeki bir etikete karşılık gelir. Olasılık, eylemin videoda görüntülenme olasılığını belirtir.
Model girişleri
Model, girdi olarak RGB video karelerinin akışını kabul eder. Giriş videosunun boyutu esnektir, ancak ideal olarak model eğitim çözünürlüğü ve kare hızıyla eşleşir:
- MoviNet-A0 : 5 fps'de 172 x 172
- MoviNet-A1 : 5 fps'de 172 x 172
- MoviNet-A1 : 5 fps'de 224 x 224
Giriş videolarının, ortak görüntü giriş kuralları izlenerek 0 ve 1 aralığında renk değerlerine sahip olması beklenir.
Model, dahili olarak, önceki çerçevelerde toplanan bilgileri kullanarak her çerçevenin bağlamını da analiz eder. Bu, model çıktısından dahili durumları alarak ve gelecek çerçeveler için modele geri besleyerek gerçekleştirilir.
Model çıktıları
Model, bir dizi etiket ve bunlara karşılık gelen puanları döndürür. Skorlar, her sınıf için tahmini temsil eden logit değerleridir. Bu puanlar, softmax işlevi ( tf.nn.softmax
) kullanılarak olasılıklara dönüştürülebilir.
exp_logits = np.exp(np.squeeze(logits, axis=0))
probabilities = exp_logits / np.sum(exp_logits)
Dahili olarak, model çıktısı modelden dahili durumları da içerir ve gelecek çerçeveler için modele geri besler.
Performans karşılaştırmaları
Performans kıyaslama numaraları, kıyaslama aracıyla oluşturulur. MoviNets yalnızca CPU'yu destekler.
Model performansı, bir modelin belirli bir donanım parçası üzerinde çıkarım yapması için geçen süre ile ölçülür. Daha düşük bir zaman, daha hızlı bir model anlamına gelir. Doğruluk, modelin bir videodaki bir sınıfı ne sıklıkla doğru bir şekilde sınıflandırdığıyla ölçülür.
Model adı | Boyut | Kesinlik * | Cihaz | İŞLEMCİ ** |
---|---|---|---|---|
MoviNet-A0 (Tamsayı nicelleştirilmiş) | 3,1 MB | %65 | piksel 4 | 5 ms |
Piksel 3 | 11 ms | |||
MoviNet-A1 (Tamsayı nicelleştirilmiş) | 4,5 MB | %70 | piksel 4 | 8 ms |
Piksel 3 | 19 ms | |||
MoviNet-A2 (Tamsayı nicelleştirilmiş) | 5.1 MB | %72 | piksel 4 | 15 ms |
Piksel 3 | 36 ms |
* Kinetics-600 veri setinde ölçülen ilk 1 doğruluk.
** 1 iş parçacıklı CPU üzerinde çalışırken ölçülen gecikme.
Model özelleştirme
Önceden eğitilmiş modeller, Kinetics-600 veri setinden 600 insan eylemini tanımak üzere eğitilmiştir. Orijinal sette olmayan insan eylemlerini tanımak için bir modeli yeniden eğitmek için transfer öğrenimini de kullanabilirsiniz. Bunu yapmak için, modele dahil etmek istediğiniz yeni eylemlerin her biri için bir dizi eğitim videosuna ihtiyacınız var.
Özel veriler üzerinde modellerin ince ayarı hakkında daha fazla bilgi için MoViNets deposuna ve MoViNets öğreticisine bakın.
Daha fazla okuma ve kaynaklar
Bu sayfada tartışılan kavramlar hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları kullanın: