İçindekiler:

Bilgisayarla Görme Kullanarak Gerçekte Çalışan Harry Potter Değneği: 8 Adım (Resimlerle)
Bilgisayarla Görme Kullanarak Gerçekte Çalışan Harry Potter Değneği: 8 Adım (Resimlerle)

Video: Bilgisayarla Görme Kullanarak Gerçekte Çalışan Harry Potter Değneği: 8 Adım (Resimlerle)

Video: Bilgisayarla Görme Kullanarak Gerçekte Çalışan Harry Potter Değneği: 8 Adım (Resimlerle)
Video: Tek bacakla en iyi kostümleri yapan adam - #shorts 2024, Kasım
Anonim
Image
Image
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği
Bilgisayarla Görme Kullanan Gerçek Çalışan Harry Potter Değneği

"Yeterince Gelişmiş Herhangi Bir Teknoloji, Sihirden Ayırt Edilemez" - Arthur C. Clarke

Birkaç ay önce ağabeyim Japonya'yı ziyaret etti ve Universal Studios'taki Harry Potter'ın Büyücülük Dünyasında Bilgisayarla Görme teknolojisi sayesinde gerçek bir büyücülük deneyimi yaşadı.

Universal Studios'taki Harry Potter Büyücülük Dünyasında turistler, uçlarında retro-yansıtıcı boncuklar bulunan özel olarak yapılmış asalar kullanarak belirli yerlerde (hareket yakalama sisteminin kurulu olduğu) "gerçek sihir" yapabilirler. Asalar, tam olarak Harry Potter Filmlerinde gösterilenlere benzeyen gerçek bir Ollivander's Shop'tan satın alınabilir, ancak şunu unutmayın: "Büyücüyü seçen asadır":P

Bu belirli konumlarda, kişi değnek ile belirli bir hareketi yaparsa, hareket yakalama sistemi hareketi tanır ve tüm hareketler, çevrede çeşmeyi açmak gibi belirli faaliyetlere neden olan belirli bir büyüye karşılık gelir.

Bu nedenle, bu Eğitilebilir Kitapta, yalnızca normal bir Gece Görüş Kamerası, bazı elektronik cihazlar kullanarak, asanızı hafifçe vurarak bir kutu açarak "gerçek sihir" gerçekleştirmek için evde nasıl ucuz ve etkili bir hareket yakalama sistemi oluşturabileceğinizi göstereceğim. ve OpenCV Computer Vision kütüphanesini ve Machine Learning kullanarak bazı python kodları !!!

Adım 1: Temel Fikir ve Gerekli Parçalar

Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar
Temel Fikir ve Gerekli Parçalar

Universal Studios'taki Wizarding World of Harry Potter'dan satın alınan asaların uçlarında retroreflektif boncuk var. Bu retroreflektif boncuklar, hareket yakalama sisteminde kamera tarafından verilen büyük miktarda kızılötesi ışığı yansıtır. Dolayısıyla, biz insanların, havada hareket eden asanın pek de belirgin olmayan bir ucu olarak algıladığımız şeyi, hareket yakalama sistemi algılar. video akışında kolayca izole edilebilen ve kişi tarafından çizilen modeli tanımak ve gerekli eylemi gerçekleştirmek için izlenebilen parlak bir blob olarak. Tüm bu işlemler gerçek zamanlı olarak gerçekleşir ve Computer Vision ve Machine Learning'den yararlanır.

İnsanlar tarafından görülemeyen ancak Kızılötesi Filtresi olmayan bir kamerayla net bir şekilde görülebilen kızılötesi ışığı da patlattıkları için hareket yakalama için kameramız olarak basit bir Gece Görüş kamerası kullanılabilir. Böylece, kameradan gelen video akışı, değnek ucunu algılamak, izole etmek ve izlemek için kullanılan OpenCV çalıştıran bir python programı olan bir ahududu pi'ye beslenir. Daha sonra çizilen deseni tanımak ve buna göre bazı aktiviteleri gerçekleştirmek için ahududu pi'nin GPIO'larını kontrol etmek için Machine Learning'in SVM (Basit Vektör Makinesi) algoritmasını kullanırız.

Gerekli Malzemeler:

1) A Raspberry Pi 3 model B ve klavye ve fare gibi gerekli aksesuarlar

2) Raspberry Pi NoIR (Kızılötesi Yok) Kamera Modülü

3) Ucunda retroreflektörlü Harry Potter Değnek: Eğer yoksa endişelenmeyin. Retroreflektörlü her şey kullanılabilir. Yani, herhangi bir değnek benzeri çubuk kullanabilir ve ucuna retroreflektör bant, boya veya boncuk uygulayabilirsiniz ve William Osman'ın videosunda gösterildiği gibi çalışmalıdır: Videoyu İzle

4) 10 Kızılötesi LED

5) Seçtiğiniz bir 3D yazıcı ve PLA filamenti

6) 12V - 1A Duvar Adaptörü ve DC jakı

7) Bir servo motor

8) Döngünün çarkından Eski Bir Kutu ve Bir Spoke

9) Sıcak tutkal tabancası

10) Harry Potter ile ilgili bazı logoların ve resimlerin Parlak Kağıt üzerine çıktıları

11) Yeşil ve sarı kadife çarşaflar.

NOT: Kızılötesi Filtresini çıkararak gece görüşü için eski bir normal web kamerasını kullanmayı da denedim ama sonunda lensine zarar verdim/yerini değiştirdi, bu da video kalitesini büyük ölçüde etkiledi ve kullanamadım. Ama bir şans vermek istiyorsanız, bu harika talimattan geçebilirsiniz Buraya Tıklayın

Adım 2: OpenCV Modülünü kurun!

Şimdi tüm bu projenin ilk ve muhtemelen en uzun adımının zamanı geldi: Raspberry Pi'nize OpenCV modülünün kurulumu ve inşası.

OpenCV modülü için bağımlılıkların kurulumu fazla zaman almaz ancak oluşturma süreci 2 ila 3 saate kadar sürebilir! Öyleyse, Kemerlerinizi Bağlayın!!:P

OpenCV 4.1.0 modülünü kurmak için takip edebileceğiniz birçok çevrimiçi eğitim bulunmaktadır. İşte takip ettiğimin bağlantısı: Buraya Tıkla

NOT: OpenCV modülünü öğreticide gösterildiği gibi sanal ortamda kurmanızı şiddetle tavsiye ederim, çünkü farklı modüllerin bağımlılıkları nedeniyle veya farklı python sürümleriyle çalışırken oluşabilecek çeşitli çakışmaları önleyecektir.

Adım 3: Kamera Bağlantısını Yazdırma

Kamera Bağlantısını Yazdırma
Kamera Bağlantısını Yazdırma
Kamera Bağlantısını Yazdırma
Kamera Bağlantısını Yazdırma
Kamera Bağlantısını Yazdırma
Kamera Bağlantısını Yazdırma

NoIR picamera'nın kızılötesi filtresi yoktur, bu nedenle gece görüş kamerası olarak kullanılabilir ancak yine de kızılötesi ışık kaynağından yoksundur. Tüm gece görüş kameraları, karanlıkta çıplak gözle görülemeyen ancak herhangi bir nesneden yansıdıktan sonra kızılötesi filtresiz kamera tarafından görülebilen IR ışınlarını patlatan kendi kızılötesi ışık kaynaklarına sahiptir.

Yani, temelde bir Kızılötesi Işık Kaynağına ve kamerayı monte edecek bir şeye ihtiyacımız var. Bunun için bir daire içinde 10 adet IR led ile çevreleyeceğimiz kamerayı üzerine monte edebileceğimiz bir nesnenin basit bir 3D modelini tasarladım. Model SketchUp ile oluşturuldu ve Black PLA ile yaklaşık 40 dakikada basıldı.

Adım 4: Kamera Montajını Bitirme

Kamera Montajını Bitirme
Kamera Montajını Bitirme
Kamera Montajını Bitirme
Kamera Montajını Bitirme
Kamera Montajını Bitirme
Kamera Montajını Bitirme

Modeli yazdırdıktan sonra önce 80 numara zımpara kağıdı ile zımparaladım ve ardından IR ledlerini yukarıdaki şemaya göre deliklerine yerleştirmeye başladım.

Ledleri sıcak tutkalla yerlerine sabitledim ve ardışık iki ledin pozitif ve negatif uçlarını birleştirdim ve sonra ledlerin seri bağlantısını oluşturmak için lehimledim.

Altta bir ledin artı ucu ve yanındaki ledin eksi ucu 12 voltluk duvar adaptöründen artı ve eksi uçları birbirine bağlamak için lehimsiz bırakılmıştır.

Adım 5: Eğitimli Makine Öğrenimi Modeli

Bir kişinin çizdiği mektubu tanımak amacıyla, burada bulduğum el yazısı İngilizce alfabelerden oluşan bir Veri Kümesini kullanarak Destek Vektör Makinesi (SVM) algoritmasına dayalı bir makine öğrenme modeli eğittim. SVM'ler, bu durumda yaklaşık %99,2 gibi yüksek bir doğruluk sağlayabilen çok verimli makine öğrenme algoritmalarıdır! SVM'ler hakkında daha fazla bilgi edinin

Veri Kümesi, 785 sütun ve 300.000'den fazla satır içeren.csv dosyası biçimindedir; burada her satır 28 x 28'lik bir görüntüyü temsil eder ve o satırdaki her sütun, içinde ek bir sütun bulunan o görüntü için o pikselin değerini içerir. Etiketi içeren başlangıç, her biri bir İngilizce harfe karşılık gelen 0 ila 25 arasında bir sayı. Basit bir python koduyla, tüm görüntüleri sadece istediğim 2 harf (A ve C) için elde etmek için verileri dilimledim ve onlar için bir model eğittim.

Eğitilmiş modeli (alphabet_classifier.pkl) ekledim ve ayrıca eğitim kodunu, üzerinden geçmekten veya modeli farklı harflerle eğitmek için herhangi bir değişiklik yapmaktan veya farklı algoritmalar denemekten çekinmeyin. Programı çalıştırdıktan sonra, eğitilen modeli otomatik olarak kodunuzun kaydedildiği dizine kaydeder.

Adım 6: Her Şeyi Gerçekleştiren Kod!

Her Şeyi Gerçekleştiren Kod!!
Her Şeyi Gerçekleştiren Kod!!

Eğitilmiş modeli oluşturduktan sonra son adım Raspberry Pi'miz için aşağıdakileri yapmamızı sağlayan bir python programı yazmaktır:

  • Gerçek zamanlı olarak pikameradan videoya erişin
  • Videodaki beyaz lekeleri (bu durumda asanın gece görüşünde yanan ucu) tespit edin ve izleyin
  • Bazı tetikleyici olaylardan sonra videodaki hareketli bloğun yolunu izlemeye başlayın (aşağıda açıklanmıştır)
  • Başka bir tetikleyici olaydan sonra izlemeyi durdur (aşağıda açıklanmıştır)
  • Kullanıcı tarafından çizilen desenle son kareyi döndür
  • Çerçeve üzerinde eşikleme, gürültü giderme, yeniden boyutlandırma vb. gibi ön işlemler gerçekleştirin.
  • Tahmin için işlenmiş son kareyi kullanın.
  • Raspberry Pi'nin GPIO'larını tahmine göre kontrol ederek bir tür sihir yapın

Bu proje için Raspberry Pi'nin GPIO'su tarafından kontrol edilen bir servo motor kullanarak açıp kapatabileceğim Harry Potter temalı bir kutu oluşturdum. 'A' harfi 'Alohamora' (bir büyücünün herhangi bir kilidi açmasına izin veren Harry Potter filmlerindeki en ünlü büyülerden biri!!) kutuyu aç. Kişi kapatma anlamına gelen 'C' harfini çizerse (kapatmak veya kilitlemek için kullanılan uygun bir büyü düşünemediğim için:P), pi servoya kutuyu kapatması için komut verir.

Blob algılama, blobun yolunu izleme, son karenin ön işlemesi vb. gibi görüntü/video işleme ile ilgili tüm işler OpenCV modülü üzerinden yapılır.

Yukarıda bahsedilen tetikleyici olaylar için gerçek zamanlı videoda yeşil ve kırmızı olmak üzere iki daire oluşturulur. Blob yeşil daire içindeki bölgeye girdiğinde, program o andan sonra blobun izlediği yolu izlemeye başlar ve kişinin mektubu oluşturmaya başlamasına izin verir. Blob kırmızı daireye ulaştığında video durur ve son kare, kare üzerinde ön işleme yaparak onu tahmine hazır hale getiren bir fonksiyona iletilir.

Bu adımda kod dosyalarını ekledim. Üzerinden geçmekten ve istediğiniz değişiklikleri yapmaktan çekinmeyin.

NOT: Biri OpenCV modülünü (Python 2.7) içe aktaran ve diğeri eğitimli modeli yükledikten sonra tahmin için sklearn modülünü (Python 3.5) içe aktaran farklı python sürümleriyle çalışan iki ayrı python dosyası oluşturmak zorunda kaldım, çünkü OpenCV'm kurulu olduğu için Python 2.7 sürümü, sklearn python 3.5 için kuruluyken. Bu yüzden, HarryPotterWandsklearn.py (tahmin için) dosyasını HarryPotterWandcv.py'den (tüm opencv çalışmaları ve gerçek zamanlı video kaydı için) çalıştırmak ve çıktısını almak için alt işlem modülünü kullandım. Bu şekilde sadece HarryPotterWandcv.py dosyasını çalıştırmam gerekiyor.

Adım 7: Kutu Açma Mekanizması

Kutu Açma Mekanizması
Kutu Açma Mekanizması
Kutu Açma Mekanizması
Kutu Açma Mekanizması
Kutu Açma Mekanizması
Kutu Açma Mekanizması

Bu proje için kullandığım eski kırmızı renkli bir kutum vardı.

Kutu Açma mekanizması için:

  1. Kutunun arka ucuna yakın bir yerde bir servoyu kutunun kenarına yakın bir karton parçasına sıcak yapıştırdım.
  2. Sonra bir döngü çarkından bir jant teli aldım ve onu servonun koluna sıcak yapıştırdım.
  3. Telin diğer ucu bir parça tel kullanılarak kutunun kapağına tutturulmuştur.
  4. Raspberry Pi üzerinde +5V Pin 2'ye servo pozitif bağlandı.
  5. Negatif servo GND Pin 39'a bağlandı.
  6. Pin 12'ye servo sinyali bağlandı

Adım 8: Kutuyu Harry Potter Temalı Yapmak

Kutuyu Harry Potter Temalı Yapmak
Kutuyu Harry Potter Temalı Yapmak
Kutuyu Harry Potter Temalı Yapmak
Kutuyu Harry Potter Temalı Yapmak
Kutuyu Harry Potter Temalı Yapmak
Kutuyu Harry Potter Temalı Yapmak

Kutuyu Harry Potter temalı yapmak için, Harry Potter Logosu, Hogwarts Arması, Dört Evin Arması vb. çeşitli şeylerin renkli resimlerini parlak A4 boyutunda bir kağıda yazdırdım ve çeşitli şekillerde kutuya yapıştırdım. yer.

Ayrıca şeritleri kesmek için Sarı renkli kadife bir çarşaf kullandım ve kutuya Gryffindor Evi'ninkiyle aynı rengi vermek için kapağa yapıştırdım. Servo için kapağın ve kartonun içini yeşil kadife levha ile kapladım. Kapağın içine, Hogwarts Okulu'nun her evini temsil eden hayvanları gösteren daha fazla sembol ve bir amblem yapıştırdım.

Sonra nihayet Harry Potter ile ilgili tüm eşyalarımı, bir Gryffindor susturucu, Hogwarts üniformalı bir günlük ve bu projede kullanılan Mürver Asa içeren kutuya doldurdum:D

Önerilen: