• Buradasın

    Google MediaPipe ile El Tespiti ve Hareket Algılama Eğitimi

    youtube.com/watch?v=W2984fUK2XQ

    Yapay zekadan makale özeti

    • Bu video, Konya Gıda ve Tarım Üniversitesi Elektrik ve Elektronik Mühendisliği öğrencisi Muhammed Hazat Kılıçarslan tarafından sunulan bir eğitim içeriğidir. Muhammed, DSC KGT-3 çekirdek takımı üyesi ve KGT-3 Cezeri takımında mekanizasyon, otonom sürüş ve sistemler arası iletişimler üzerinde çalışmaktadır.
    • Video, Google'ın açık kaynaklı MediaPipe teknolojisinin tracking bölümünde el tespiti projesi yapımını adım adım anlatmaktadır. İçerikte MediaPipe'in ne olduğu, özellikleri ve sunduğu çözümler tanıtılmakta, ardından OpenSea üzerinden MediaPipe'in nasıl yükleneceği, gerekli class yapılarının oluşturulması, parametrelerin ayarlanması ve "find hands" fonksiyonu yazarak el tespiti yapma süreci gösterilmektedir.
    • Eğitim, kameradan görüntü alma, el tespiti yapma, FPS hesaplama, LED marklarının pozisyonlarını öğrenme ve el hareketlerinin nasıl izleneceği gibi temel adımları içermektedir. Ayrıca, pencere oluşturma ve kapatma fonksiyonları, kameranın çözünürlük değerlerini öğrenme ve FPS değerini ekranda gösterme işlemleri de detaylı olarak anlatılmaktadır.
    00:09Sunum ve Medyappe Teknolojisi
    • Konuşmacı Muhammed Hazat Kılıçarslan, Konya Gıda ve Tarım Üniversitesi'nde 2. sınıf elektrik ve elektronik mühendisliği okuyor ve DSC KGT-3'te mekanizasyon, otonom sürüş ve sistemler arası iletişimler üzerinde çalışıyor.
    • Medyappe, Google tarafından yapılan açık kaynaklı bir yapı olup, multimedya içeriklerde (video, ses) çapraz platformlarda çalışan makine öğrenme hatları oluşturmak için kullanılıyor.
    • Medyappe, yeni olmasına rağmen kusursuza yakın sonuçlar veriyor ve bu teknolojiyi kullanarak küçük projeler yapmak kendini geliştirmeye yardımcı oluyor.
    02:12Medyappe'nin Özellikleri
    • Medyappe'nin çözümleri arasında face detection, hair segmentation, object detection and tracking, object thrown, auto focus ve multi-hand tracking bulunuyor.
    • Multi-hand tracking teknolojisi ile el tespiti yapılabilir ve bu teknoloji kullanılarak el hareketleri ile belirli fonksiyonlar elde edilebilir.
    • Landmark, elleri tanımlayan mevkilerdir ve parmaklar için numaralandırılmış indeksler kullanılır (örneğin yüzük parmağı 13-14-15-16 olarak tanımlanmış).
    05:01Medyappe Projesi Hazırlığı
    • Medyappe'i kullanmak için önce opensea yüklenir ve ardından medyappe yüklenir.
    • Bir projede görevleri klaslara ve fonksiyonlara ayırmak önemlidir, mümkünse bazı şeyleri classlara da ayırmak gerekir.
    • El tespiti için ayrı bir dosya ve klas oluşturulmalı, böylece import edildiğinde direkt el tespiti yapılabilecek ve koordinatlar elde edilebilecek.
    08:26Class ve Init Fonksiyonu
    • Class oluşturmak için "class" ifadesi kullanılır ve her class'da olması gereken bir ifade olan "def init" fonksiyonu bulunur.
    • Init fonksiyonu, class import edildiğinde içerisindeki işlemlerin otomatik olarak gerçekleşmesini sağlar.
    • Init fonksiyonunda tanımlanan değişkenler, klasör altındaki bütün fonksiyonlarda "self" ifadesi kullanılarak ulaşılabilir.
    11:34MediaPipe Hands Kütüphanesinin Parametreleri
    • MediaPipe Hands kütüphanesi import edildiğinde kendine özel parametreleri vardır ve bu parametreler default olarak belirlenmiştir.
    • Daha hassas ölçüm istenirse veya farklı bir ölçüm yapılmak istenirse, bu parametreleri değiştirmek mümkündür.
    • Parametreleri değiştirmek için, kütüphanenin fonksiyonuna tıklayarak orta fare tuşuna basarak fonksiyonun nerede olduğunu gösteren yere erişilir ve oradan parametreler kopyalanıp kullanılır.
    12:44Parametrelerin Tanımlanması
    • Parametreler tanımlanırken "self.mod = mod", "self.max_hands = max_hands", "self.detection_confidence = detection_confidence" ve "self.tracking_confidence = tracking_confidence" şeklinde belirlenir.
    • Parametrelerin default değerleri atanır: mod=False, max_hands=2, detection_confidence=0.5 ve tracking_confidence=0.5.
    • Default olarak ayarlanmamış parametreler, default olarak ayarlanmış parametrelerden önce yazılmalıdır, aksi takdirde sintaks hatası alınır.
    16:10Hands Class'ı ve Çizim Ekipmanları
    • MediaPipe kütüphanesinin içinde drawing utility'leri (çizim ekipmanları) bulunmaktadır.
    • Bu çizim ekipmanları "mp.solutions.drawing_utils" şeklinde import edilir.
    • Init fonksiyonunun içine kullanmak ve daha sonra kullanacağımız tüm fonksiyonlar yazılmıştır.
    16:39El Tespiti Fonksiyonu
    • El tespiti için "find_hands" fonksiyonu yazılır ve ilk parametre olarak resim alınır.
    • Fonksiyonun default olarak "draw=True" olarak ayarlanması, kameranın önünde elin otomatik olarak çizilmesini sağlar.
    • Resmin piksellerini anlayabilmek için BGR formatından RGB formatına çevirmek daha rahat olabilir.
    18:11El Tespiti İşlemi
    • El tespiti için "self.hands.process" fonksiyonu kullanılır ve içine RGB formatındaki resim gönderilir.
    • Elin mevcut konumunu öğrenmek için "results.multi_hand_landmarks" kullanılır.
    • Kameradan görüntü almak için "cv2.VideoCapture" kullanılır ve genellikle 0 değeri kullanılır çünkü bilgisayarın tek bir kamera bağlı ise.
    21:25FPS Hesaplama ve Kamera Görüntüsü
    • FPS hesaplaması için zaman değişkenleri belirlenir ve "cv2.getTickCount()" fonksiyonu kullanılır.
    • FPS değeri "fps = 1/(currentTime - previousTime)" formülüyle hesaplanır.
    • Kamera görüntüsü için "cv2.imshow" fonksiyonu kullanılır.
    22:22Python'da Class Oluşturma ve Fonksiyonlar
    • Window ismi belirlenerek image, key, cool, sweet to ve key bir gibi özellikleri tanımlanıyor.
    • Class ifadesi kullanılarak Youthals adında bir sınıf oluşturuluyor ve init fonksiyonu ile başlıyoruz.
    • Show fonksiyonu, win name ve image parametreleriyle birlikte tanımlanıyor ve key parametresi kapatma tuşu olarak kullanılıyor.
    24:02Class Kullanımı ve Optimizasyon
    • Class içine FPS ölçümü gibi ek özellikler de eklenebiliyor.
    • Utility sınıfı oluşturuluyor ve selfie ifadesi kullanılarak fonksiyonlar sınıf içinde kullanılabilir hale getiriliyor.
    • Dört satırı bir satıra düşürerek kod optimizasyonu yapılıyor.
    27:18El Tespiti ve MediaPipe Kullanımı
    • Kameranın önünde el olup olmadığını anlayabilmek için results multi-hand landbox kullanılıyor.
    • MediaPipe'nin drawing utilleri kullanılarak el markaları çiziliyor.
    • MP Hands ve MediaPipe'nin hand solution'un kendine özel mp-hands hand connections ifadesi kullanılıyor.
    30:22El Markalarının Pozisyonunu Bulma
    • El markalarının pozisyonlarını öğrenmek için find position fonksiyonu oluşturuluyor.
    • Find position fonksiyonu, im ve hand parametreleriyle kullanılıyor.
    • Self ifadesi kullanılarak init fonksiyonuna daha sonradan parametre eklemek mümkün hale getiriliyor.
    34:23LED Marklarının Tespiti ve İşlenmesi
    • LED marklarının mevkileri belirlenerek id olarak 1'den 20'ye kadar atanıyor.
    • Resmin boyutu (width ve height) belirlenerek LED marklarının piksel mevkileri hesaplanıyor.
    • Hesaplanan mevkiler (cx, cy) listeye atanarak LED marklarının konumları saklanıyor.
    38:35Eleman Listesi ve Kamera Özellikleri
    • Eleman listesinden kameranın önünde olup olmadığı kontrol ediliyor.
    • "if elem_list" ifadesi kullanılarak listenin uzunluğu (len) kontrol ediliyor.
    • Kameranın çözünürlüğü (480x640) ve FPS değeri ekrana yazdırılıyor.
    42:00Kamera Özelliklerinin Gösterilmesi
    • FPS değeri için OpenCV'nin putText komutu kullanılıyor.
    • Kameranın FPS değeri ekrana stabil bir şekilde gösteriliyor.
    • Video sonunda el hareketleriyle belirli fonksiyonlar yapılacağı belirtiliyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor