Connect with us

Düşünce Liderleri

Gerçek Zamanlı Video İşleme için AI Uygulama: Temeller ve Daha Fazlası

mm

By Maksym Tatariants, Data Science Engineer at MobiDev.

Yapay zeka (AI) kullanmanın video işlemede yeni bir şey olmadığını bilmelisiniz. Eğer görüntü işlemeden ötesine bakarsanız – AI için en yaygın kullanım örneklerinden biridir. Ve tıpkı görüntü işlemede olduğu gibi, video işlemede de kurulan teknikler gibi bilgisayarlı görü, nesne tanıma, makine öğrenimi ve derin öğrenimi bu süreci geliştirmek için kullanılır. 

Bilgisayarlı görü ve NLP’yi video düzenlemede ve oluşturmada, video içeriği otomatik etiketleme görevlerinde nesne tanıma, AI video analizi için makine öğrenimini kullanma, veya geri plan kaldırma için derin öğrenimi kullanma gibi, kullanım örnekleri gün geçtikçe artmaya devam ediyor.

Video işlemede AI kullanırken hangi yaklaşımı takip edebileceğinizi öğrenmek için okumaya devam edin.

Gerçek Zamanlı Video İşlemenin Temelleri

Temellerle başlayalım. Gerçek zamanlı video işleme, nesne ve yüz tanıma kullanan gözetim sistemlerinde temel bir teknolojidir.

Peki, video işleme nasıl çalışır? Video işleme, bir dizi adımdan oluşur; bunlar, çözme, hesaplanma ve kodlama içerir. İşte bilmeniz gerekenler:

  • Çözme: Bir videoyu sıkıştırılmış bir dosyadan geri orijinal ham formatına dönüştürmek için gereken işlem.
  • Hesaplanma: Ham video karesi üzerinde gerçekleştirilen belirli bir işlem.
  • Kodlama: İşlenen karesi orijinal sıkıştırılmış durumuna geri dönüştürme işlemi.

Şimdi, herhangi bir video işleme görevinin amacı, bu adımları mümkün olduğunca hızlı ve doğru bir şekilde tamamlamaktır. Bunları başarmak için en kolay yollar, paralel çalışmak ve algoritmayı hız için optimize etmektir. Basitçe söylemek gerekirse; dosya bölme ve boru hattı mimarisini kullanmanız gerekir.

Video Dosyası Bölme Nedir?

Video dosyası bölme, algoritmaların aynı anda çalışmasına olanak tanır, bu da daha yavaş, daha doğru modellerin kullanılmasına izin verir. Bu, videonun aynı anda işlenen ayrı parçalara bölünmesiyle gerçekleştirilir.

Video bölme, alt dosya oluşturmadan ziyade sanal dosya oluşturmanın bir biçimi olarak düşünülebilir. 

Bununla birlikte, video dosyası bölme, gerçek zamanlı video işlemede en iyi seçenek değildir. Nedeni precis? Bu işlem, bir dosyayı işlenirken duraklatma, devam ettirme ve geri sarma işlemlerini zorlaştırır.

Boru Hattı Mimarisi Nedir?

Diğer seçenek ise boru hattı mimarisidir. Bu işlem, videoyu bölme yerine, işleme sırasında gerçekleştirilen görevleri bölme ve paralelleştirme işine yarar.

Gerçek zamanlı olarak yüzleri bulma ve bulanıklaştırma işlemlerini gerçekleştiren bir video gözetim sisteminde boru hattı mimarisinin nasıl çalıştığını gösteren bir örnek:

Bu örnekte, boru hattı, görevleri çözme, yüz bulma, yüz bulanıklaştırma ve kodlama olarak ayırmıştır. Ve eğer boru hattının hızını artırmak istiyorsanız, derin öğrenme tekniklerini kullanabilirsiniz.

Çözme ve Kodlama Açıklaması

Çözme ve kodlama nedir? Bu işlemleri tamamlamak için iki yolunuz vardır: yazılım ve donanım.

Donanım hızlandırmasının kavramıyla zaten aşina olabilirsiniz. Bu işlem, en yeni NVIDIA grafik kartlarında bulunan kodlayıcılar ve CUDA çekirdekleri sayesinde mümkündür.

Peki, kodlama ve çözme işlemleri için donanım hızlandırması konusunda hangi seçenekleriniz var? İşte bazı popüler seçenekler:

  • OpenCV’yi CUDA Desteği ile Derleme: OpenCV’yi CUDA ile derlemek, hem çözme hem de OpenCV kullanan boru hattı hesaplamalarını optimize eder. Ancak, bunu C++’da yazmanız gerekecektir, çünkü Python sarması bunu desteklemez. Ancak, CPU belleğinden kopyalamadan GPU’da hesaplamalar yapan durumlar için hala en iyi seçeneklerdendir.
  • FFmpeg veya GStreamer’ı NVDEC/NVENC Kodlayıcıları ile Derleme: Diğer bir seçenek, NVIDIA’nın yerleşik kodlayıcısını ve kodçözücünü kullanarak FFmpeg ve GStreamer’ın özel kurulumlarını kullanmaktır. Ancak, mümkün olduğunda FFmpeg kullanmanızı öneririz, çünkü daha az bakım gerektirir. Ayrıca, çoğu kütüphane FFmpeg tarafından güçlendirilir, bu nedenle FFmpeg’i değiştirmek, kütüphanenin performansını otomatik olarak artırır.
  • NVIDIA Video İşleme Çerçevesini Kullanma: Son seçenek, bir Python sarması kullanarak kareyi doğrudan GPU’da bir PyTorch tensörüne çözme işlemidir. Bu seçenek, CPU’dan GPU’ya ek kopyalamayı ortadan kaldırır.

Yüz Bulma ve Bulanıklaştırma

Nesne tanıma modelleri (SSD’ler veya RetinaFace), yüz bulma işlemlerini tamamlamak için popüler bir seçenektir. Bu çözümler, bir karedeki insan yüzünü bulmaya çalışır. Ve deneyimlerimize göre, Caffe Yüz İzleme ve TensorFlow nesne tanıma modellerini tercih ediyoruz, çünkü en iyi sonuçları verdi. Ayrıca, her ikisi de OpenCV kütüphanesinin dnn modülü ile kullanılabilir.

Peki, bir yüz bulunduktan sonra ne olur? Sonrasında, Python ve OpenCV-tabanlı sistem, sınırlayıcı kutuları ve tanıma güvenini gösterir. Son olarak, bir bulanıklaştırma algoritması, kırpılmış alanlara uygulanır.

Canlı Video İşleme Yazılımı Nasıl Geliştirilir?

Video işleme, güçlendirdiği kodlar ve gerekli donanım ve yazılımın oldukça teknik olduğu bir gerçektir.

Bununla birlikte, bu araçları kullanarak kendi canlı video işleme yazılımınızı oluşturamazsınız anlamına gelmez. 

İşte yapmanız gerekenlerin kısa bir özeti:

  1. Öncelikle, önceden eğitilmiş sinir ağını, gereken görevleri tamamlamak için ayarlayın.
  2. Bulut altyapınızı, video işleme için yapılandırın ve gerektiğinde ölçeklendirin.
  3. Belirli kullanım örneklerini entegre etmek ve mobil uygulamalar, yönetim panelleri veya web panelleri gibi yazılım katmanlarını yoğunlaştırmak için bir yazılım katmanı oluşturun.

Benzer video işleme yazılımları için bir MVP geliştirmek, önceden eğitilmiş bir sinir ağı ve basit uygulama katmanları kullanarak dört ay sürebilir. Ancak, kapsam ve zaman çizelgesi her projenin ayrıntılarına bağlıdır. Çoğu durumda, projenin özelliklerini keşfetmek ve optimal bir akışı bulmak için Proof of Concept geliştirmeye başlamak anlamında daha mantıklıdır.

Maksym yeni içgörüler ve deneyim kazanmak için Veri Bilimi ve Makine Öğrenimi alanında heyecan duyuyor. Derin Öğrenme tabanlı teknolojilere ve iş kullanım örneklerine uygulamalarına özellikle ilgi duyuyor.