
İçindekiler:
- 1. Adım: Video
- 2. Adım: Donanım
- Adım 3: Kod Parçası
- 4. Adım: Görüntü Alma
- Adım 5: Kullanılan Araçlar ve Dil
- Adım 6: Veri Kümesini Eğitim İçin Hazırlama
- Adım 7: Sinir Ağı
- Adım 8: Sinir Ağı Eğitimi
- 9. Adım: Sinir Ağının Test Edilmesi
- Adım 10: Sonuç ve Sonraki Bölüm…
- Adım 11: Nesne Algılama
- Adım 12: Video
- Adım 13: Etiketleme
- Adım 14: GUI'yi Etiketleme
- Adım 15: Gerekli Kitaplıklar
- Adım 16: Kalan Hücreler
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13



Birkaç gün önce spor salonunda sağ bileğimi incittim. Daha sonra bilgisayar faremi her kullandığımda, dik bilek açısı nedeniyle çok fazla acıya neden oldu.
İşte o zaman "Herhangi bir yüzeyi trackpad'e çevirebilsek harika olmaz mıydı" diye vurdu ve nedenini bilmiyorum ama nedense onu düşündüm, HER filmi, sizin anlamanıza izin vereceğim. dışarı. Heyecan verici bir düşünceydi ama yapabilir miydim bilmiyordum, denemeye karar verdim.
Bu makale, ondan çıkanları yakalar.
Başlamadan önce bir sorumluluk reddi beyanım var-
Bu makalenin sonunda, herhangi bir yüzeyi trackpad'e dönüştüremedim ama pek bir şey öğrenemedim ve cephaneliğime büyük araçlar ekledim. Umarım sana da olur'
Başlayalım.
1. Adım: Video


İşte tüm adımları kapsayan 5 dakikalık küçük bir video. Bir göz at.
2. Adım: Donanım

Ahududu pi ile birlikte yaklaşık 45 cm yüksekliğe bir ahududu pi kurdum. Bu bize kameranın altında yaklaşık 25x25 cm'lik bir izleme alanı sağlıyor.
Ahududu pi ve ahududu pi kamera kolayca bulunabilir, sadece google'a gidin ve yerel bir mağaza bulabilmelisiniz.
Başsız pi'nizi çalıştırmak ve çalıştırmak için bu Bağlantıya veya Raspberry pi çalma listemden birine bir göz atın.
Bu kurulumun ardından, kameranın izlediği alanda bir el olup olmadığına ve varsa nerede olduğuna karar veren bir kod parçasına ihtiyacımız var.
Adım 3: Kod Parçası


İlgilenilen alanda bir el olup olmadığına karar vermemizi sağlayan kod parçası, Sinir Ağı denen bir şey kullanır. Karar vermek için kurallar tanımlamadığımız, ancak sinir ağına kuralları kendi başına çözecek kadar veri gösterdiğimiz programlama kategorisine girerler.
Bizim durumumuzda, elin nasıl göründüğünü kodlamak yerine, ahududu pi'den elde edilen el içeren ve el içermeyen sinir ağı görüntülerini gösteriyoruz. Bu aşamaya sinir ağının eğitimi, kullanılan görüntülere eğitim veri seti adı verilir.
4. Adım: Görüntü Alma

Ahududu pi'me uzaktan giriş yaptım ve aşağıdaki komutu kullanarak bir sürü görüntü yakaladım.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame%04d.jpg
Elle 80, el içermeyen 80 resim çektim. 160 görüntü, bir sinir ağını düzgün bir şekilde eğitmek için yeterli değildir, ancak kavramın kanıtı için yeterli olmalıdır.
160 görüntünün yanı sıra, ağımızı eğittikten sonra test etmek için 20 görüntü daha yakaladım.
Veri seti hazır olduğunda sinir ağı için kod yazmaya başladım.
Adım 5: Kullanılan Araçlar ve Dil


Sinir ağımı Keras adlı python derin öğrenme kitaplığında yazdım ve anaconda navigator'dan jupyter notebook'a kod yazıldı.
Adım 6: Veri Kümesini Eğitim İçin Hazırlama




İlk olarak (Resim #1) PIL, matplotlib, numpy, os ve Keras'ı içeren bu proje için gereken tüm kütüphaneleri dahil ettim. Python notebook'un ikinci hücresinde (Resim #2) veri kümesine giden yolları tanımlıyorum ve örnek sayısını yazdırıyorum. Şimdi tüm görüntüleri bir numpy dizisine yüklememiz gerekiyor, bu nedenle üçüncü hücrede (Resim # 2) 82 (el örneği sayısı)+75 (el olmayan örnek sayısı) yani 157x100x100x3'lük bir sayısal dizi oluşturdum. 157 sahip olduğum toplam görüntü sayısı, 100x100 yeniden boyutlandırılmış görüntü boyutumuz ve 3 görüntüdeki kırmızı, yeşil ve mavi renk katmanları içindir.
Dördüncü ve beşinci hücrede, el içeren görüntüleri ve ardından numpy dizisinde el içermeyen görüntüleri yüklüyoruz. Altıncı hücrede, her değeri 255'e böleriz, bu nedenle değer aralığını 0'dan 1'e sınırlarız(Resim #3)
Ekli resimler yeterince iyi değilse özür dilerim. İşte koda bakmanız için GITHUB deposuna bağlantı. Dizin yolu adlarını yolunuzla değiştirmeyi unutmayın:).
Boyunca hareket.
Daha sonra, her bir görüntüyü etiketlememiz gerekiyor, bu nedenle, 157 uzunluğunda tek boyutlu bir numpy dizisi oluşturuyoruz. İlk 82 giriş 1'e ve kalan 75 giriş 0'a ayarlanarak ilk 82 görüntünün bir sınıftan ve kalanların diğerinden olduğu sinir ağını iletir.(Resim #4)
Şimdi bir sinir ağı oluşturalım.
Adım 7: Sinir Ağı


Dokuzuncu hücrede sinir ağımızı tanımlıyoruz. Evrişim katmanının üç tekrarını ve ardından sırasıyla 8, 12 ve 16 evrişim filtreli maxpool katmanlarını içerir. Bunu takiben iki yoğun sinir ağımız var. Bu adım için iki resim ekleme. Birincisi, sinir ağını oluşturan kod parçası ve ikincisi, sinir ağının çıktı boyutu ve açıklamalı işlemlerle resimli temsilidir.
Adım 8: Sinir Ağı Eğitimi

Onuncu hücrede, sinir ağı iyileştiricisini 'adam' ve kayıp işlevini 'binary_crossentropy' olarak yapılandırıyoruz. Ağ ağırlıklarının güncellenmesinde önemli rol oynarlar. Sonunda onbirinci hücreyi çalıştırdığımızda, sinir ağı eğitmeye başlar. Ağ antrenman yaparken kayıp fonksiyonuna bakın ve azaldığından emin olun.
9. Adım: Sinir Ağının Test Edilmesi

Sinir ağı eğitildikten sonra test veri setini hazırlamamız gerekiyor. Test seti oluşturmak için test verileri üzerinde 3., 4., 5. ve 6. hücrede eğitim seti hazırlamak için yapılan işlemi tekrarlıyoruz. Test seti için de etiket hazırlıyoruz ama bu sefer eğitim almak için değil tahmin almak için bu veri seti üzerinde model çalıştırıyoruz.
Adım 10: Sonuç ve Sonraki Bölüm…

%88 test doğruluğu elde ettim, ancak bu modeli eğitmek ve test etmek için kullanılan veri kümesi çok çok çok küçük ve bu modeli düzgün bir şekilde eğitmek için yetersiz olduğundan bunu bir tutam tuzla alıyorum.
Her neyse, umarım bu makaleyi beğenmişsinizdir. Bu alıştırmanın arkasındaki amacım henüz tamamlanmadı ve 2. bölüme dikkat edin. En kısa zamanda yükleyeceğim.
Bir sonraki bölümde, el algılanan bir görüntüde bize elin konumunu söyleyecek başka bir sinir ağını eğiteceğiz.
Tüm sorgular açıktır.
Herhangi biri benim küçük veri kümemi kullanmakla ilgileniyorsa, yorumlarda bana bildirin. kullanılabilir hale getireceğim.
Okuduğunuz için teşekkürler. O zamana kadar neden bir sinir ağı oluşturup eğitmiyorsunuz?
Düzenleme: - Sonraki adımlar ikinci kısım içindir.
Adım 11: Nesne Algılama

Önceki adımlarda, test görüntüsünün el içerip içermediğini bize söyleyen bir NN oluşturduk. Peki sonra ne olacak? NN, görüntüyü el içeren olarak sınıflandırırsa, elin yerini bilmek isteriz. Buna bilgisayarlı görü literatüründe nesne algılama denir. Öyleyse tamamen aynı şeyi yapan NN'yi eğitelim.
Adım 12: Video


Kalan tüm adımları açıklayan 3 dakikalık bir video. Bir göz at.
Adım 13: Etiketleme



Bir sinir ağının elin konumunu çıkarmasını istiyorsanız, bunu böyle bir şekilde eğitmemiz gerekir, yani önceki sinir ağlarının aksine, her bir görüntünün elle ve el olmadan etiketlendiği yer. Bu sefer elle yapılan tüm görüntüler, o görüntüdeki el etrafındaki sınırlayıcı kutunun diyagonal koordinatlarına karşılık gelen dört etikete sahip olacaktır.
Ekli csv dosyası resmi, her resim için etiket içerir. Koordinatların görüntü boyutuyla normalize edildiğini lütfen unutmayın, yani üst X koordinatı 640 piksel genişliğindeki görüntüde 320. pikseldeyse, onu 0,5 olarak etiketleyeceğiz.
Adım 14: GUI'yi Etiketleme




82 görüntünün tümünü nasıl etiketleyebildiğimi merak ediyor olabilirsiniz, bu görevde bana yardımcı olan python'da bir GUI yazdım. Görüntü GUI'ye yüklendikten sonra. Elin etrafındaki olası sınırlayıcı kutunun üst koordinatında sol ve alt koordinatında sağ tıklayın. Bu koordinatlar daha sonra bir sonraki resmi yüklemek için ileri düğmesine tıkladığımda bir dosyaya yazılır. Bu prosedürü 82 tren ve 4 test görüntüsünün tamamı için tekrarladım. Etiketler hazır olduğunda, eğitim zamanıydı.
Adım 15: Gerekli Kitaplıklar



Öncelikle gerekli tüm kütüphaneleri yüklememiz gerekiyor. İçerir
- Görüntü işleme için PIL,
- çizim için matplotlib,
- matris işlemi için numpy,
- işletim sistemine bağlı işlevsellik için işletim sistemi ve
- sinir ağı için keras.
Adım 16: Kalan Hücreler




2., 3., 4. ve 5. hücrede, görüntüleri numpy dizisine yüklüyoruz ve csv dosyasından etiket görevi görecek dört boyutlu bir dizi oluşturuyoruz. 6 numaralı hücrede sinir ağımızı oluşturuyoruz. Mimarisi, 1 değil 4 olan çıktı katmanı boyutu dışında, sınıflandırma için kullanılan sinir ağı ile aynıdır. 8 numaralı hücrede sinir ağımızın eğitimine başlıyoruz, eğitildikten sonra bu modeli test setinde çalıştırdım, sınırlayıcı kutunun üst üste bindirme koordinatlarında oldukça doğru görünüyorlardı.
Okuduğunuz için teşekkürler.
Önerilen:
Tasarımcılar için İlginç Programlama Rehberi--Resminizi Çalıştırın (İkinci Kısım): 8 Adım

Tasarımcılar için İlginç Programlama Rehberi - Resminizi Çalıştırın (İkinci Kısım): Matematik, çoğunuz için işe yaramaz görünüyor. Günlük hayatımızda en yaygın olarak kullanılan sadece toplama, çıkarma, çarpma ve bölmedir. Ancak, programla oluşturabiliyorsanız, oldukça farklıdır. Ne kadar çok bilirseniz, o kadar harika sonuç alırsınız
Python, Electron ve Keras Kullanan Sinir Ağı Destekli Planetaryum: 8 Adım

Python, Electron ve Keras Kullanan Sinir Ağı Destekli Planetaryum: Bu talimatta size Python ve Electron kullanarak otomatik bir 3D planetaryum üretecini nasıl yazdığımı göstereceğim. Yukarıdaki video, programın oluşturduğu rastgele planetaryumlardan birini gösteriyor.**Not: Bu program hiçbir şekilde mükemmel değil ve bir yerde
Mavi Işık Projesi 2. Kısım: 5 Adım

Blue Light Project Part2: Blue Light Project Part1'de akşam mavi ışığını azaltarak uykusuzluğu azaltmak için attığım bazı adımları açıkladım. Ne kadar iyi çalıştığını görmenin kolay bir yolu yoktu, bu yüzden ne kadar mavi ışık olduğumu ölçmek için bir Renk ölçer yapmaya karar verdim
Arduino Sesli Baston (Birinci Kısım): 6 Adım (Resimli)

Arduino Sesli Beyaz Baston (Birinci Bölüm): Yıllar önce, görme engelli bir aile üyesi olan bir öğrencimle birlikteydim, kaç adım olduğunu sesli hale getirebilecek küçük bir çözüme ulaşabileceğimizi fark ettim. arduino daha önce kaydedilmiş sayılara sahip olabilir
Arduino Sinir Ağı Robotu: 21 Adım (Resimlerle)

Arduino Sinir Ağı Robotu: Bu talimat, kendi Arduino sinir ağı robotunuzu tam olarak nasıl prototipleyeceğinizi, tasarlayacağınızı, birleştireceğinizi ve programlayacağınızı gösteren Make YouTube Kanalı için yaptığım 3 Bölümlük bir seriye dayanmaktadır. Tüm seriyi izledikten sonra, bir bahis almalısınız