10 KiB
Bilgisayarla Görme Giriş
Bilgisayarla Görme, bilgisayarların dijital görüntülerin yüksek seviyede anlaşılmasını sağlamayı amaçlayan bir disiplindir. Bu oldukça geniş bir tanımdır, çünkü anlamak birçok farklı anlam taşıyabilir; bir resimdeki bir nesneyi bulmak (nesne tespiti), ne olduğunu anlamak (olay tespiti), bir resmi metinle tanımlamak veya bir sahneyi 3D olarak yeniden oluşturmak gibi. Ayrıca insan görüntüleriyle ilgili özel görevler de vardır: yaş ve duygu tahmini, yüz tespiti ve kimlik doğrulama, ve 3D poz tahmini gibi birkaç örnek vermek gerekirse.
Ders Öncesi Sınav
Bilgisayarla görmenin en basit görevlerinden biri görüntü sınıflandırmasıdır.
Bilgisayarla görme genellikle AI'nın bir dalı olarak kabul edilir. Günümüzde, bilgisayarla görme görevlerinin çoğu, sinir ağları kullanılarak çözülmektedir. Bu bölüm boyunca, bilgisayarla görme için kullanılan özel bir sinir ağı türü olan konvolüsyonel sinir ağları hakkında daha fazla bilgi edineceğiz.
Ancak, bir görüntüyü bir sinir ağına göndermeden önce, birçok durumda görüntüyü geliştirmek için bazı algoritmik teknikler kullanmak mantıklıdır.
Görüntü işleme için mevcut olan birkaç Python kütüphanesi vardır:
- imageio farklı görüntü formatlarını okumak/yazmak için kullanılabilir. Ayrıca video karelerini görüntülere dönüştürmek için yararlı bir araç olan ffmpeg'i de destekler.
- Pillow (aynı zamanda PIL olarak da bilinir) biraz daha güçlüdür ve morfing, palet ayarlamaları gibi bazı görüntü manipülasyonlarını da destekler.
- OpenCV C++ ile yazılmış güçlü bir görüntü işleme kütüphanesidir ve görüntü işleme için de facto standart haline gelmiştir. Kullanışlı bir Python arayüzü vardır.
- dlib birçok makine öğrenimi algoritmasını, bazı Bilgisayarla Görme algoritmalarını da içeren, C++ kütüphanesidir. Ayrıca bir Python arayüzü vardır ve yüz ve yüz özellik tespiti gibi zorlu görevler için kullanılabilir.
OpenCV
OpenCV görüntü işleme için de facto standart olarak kabul edilir. C++ ile uygulanmış birçok yararlı algoritma içerir. OpenCV'yi Python'dan da çağırabilirsiniz.
OpenCV öğrenmek için iyi bir yer bu Learn OpenCV kursudır. Müfredatımızda amacımız OpenCV'yi öğrenmek değil, ne zaman ve nasıl kullanılabileceğine dair bazı örnekler göstermektir.
Görüntü Yükleme
Python'da görüntüler, NumPy dizileri ile rahatlıkla temsil edilebilir. Örneğin, 320x200 piksel boyutundaki gri tonlamalı görüntüler 200x320 boyutunda bir dizide saklanırken, aynı boyuttaki renkli görüntüler 200x320x3 şeklinde (3 renk kanalı için) saklanır. Bir görüntü yüklemek için aşağıdaki kodu kullanabilirsiniz:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
Geleneksel olarak, OpenCV renkli görüntüler için BGR (Mavi-Yeşil-Kırmızı) kodlamasını kullanırken, diğer Python araçları daha geleneksel olan RGB (Kırmızı-Yeşil-Mavi) kullanır. Görüntünün doğru görünmesi için, NumPy dizisindeki boyutları değiştirerek veya bir OpenCV fonksiyonunu çağırarak görüntüyü RGB renk alanına dönüştürmeniz gerekir:
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
Aynı cvtColor function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space.
You can also use OpenCV to load video frame-by-frame - an example is given in the exercise OpenCV Notebook.
Image Processing
Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including:
- Resizing the image using
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS) - Blurring the image using
im = cv2.medianBlur(im,3)orim = cv2.GaussianBlur(im, (3,3), 0) - Changing the brightness and contrast of the image can be done by NumPy array manipulations, as described in this Stackoverflow note.
- Using thresholding by calling
cv2.threshold/cv2.adaptiveThresholdfonksiyonları, genellikle parlaklık veya kontrast ayarlamaktan daha tercih edilir. - Görüntüye farklı dönüşümler uygulamak:
- Affine dönüşümler, görüntüdeki üç noktanın kaynak ve hedef konumlarını bildiğinizde döndürme, yeniden boyutlandırma ve eğme işlemlerini birleştirmeniz gerektiğinde yararlı olabilir. Affine dönüşümler, paralel çizgileri paralel tutar.
- Perspektif dönüşümler, görüntüdeki 4 noktanın kaynak ve hedef konumlarını bildiğinizde yararlı olabilir. Örneğin, bir akıllı telefon kamerasıyla bir dikdörtgen belgeyi bir açıdan çektiğinizde ve belgenin kendisinin dikdörtgen bir görüntüsünü oluşturmak istediğinizde.
- Görüntü içindeki hareketi anlamak için optik akış kullanmak.
Bilgisayarla Görme Kullanımına Dair Örnekler
OpenCV Notebook dosyamızda, bilgisayarla görmenin belirli görevleri yerine getirmek için nasıl kullanılabileceğine dair bazı örnekler veriyoruz:
- Bir Braille kitabının fotoğrafını ön işleme. Braille sembollerini ayrı sınıflandırma için bir sinir ağı tarafından kullanmak üzere ayırmak için eşikleme, özellik tespiti, perspektif dönüşüm ve NumPy manipülasyonlarını nasıl kullanabileceğimize odaklanıyoruz.
![]() |
![]() |
![]() |
|---|
Görüntü OpenCV.ipynb dosyasından alınmıştır.
- Kare farkı kullanarak videoda hareket tespiti. Kamera sabitse, kamera akışından gelen kareler birbirine oldukça benzer olmalıdır. Kareler diziler olarak temsil edildiğinden, iki ardışık kare için bu dizileri çıkartarak piksel farkını elde ederiz; bu, statik kareler için düşük olmalı ve görüntüde önemli bir hareket olduğunda artmalıdır.
Görüntü OpenCV.ipynb dosyasından alınmıştır.
-
Optik Akış kullanarak hareket tespiti. Optik akış, video karelerindeki bireysel piksellerin nasıl hareket ettiğini anlamamıza olanak tanır. İki tür optik akış vardır:
- Yoğun Optik Akış her piksel için hareket ettiği yeri gösteren vektör alanını hesaplar.
- Seyrek Optik Akış görüntüdeki bazı belirgin özellikleri (örneğin kenarlar) alarak ve bunların her karedeki yolunu oluşturarak çalışır.
Görüntü OpenCV.ipynb dosyasından alınmıştır.
✍️ Örnek Not Defterleri: OpenCV OpenCV'yi Eylemde Deneyin
OpenCV ile bazı deneyler yapmak için OpenCV Notebook dosyasını keşfedelim.
Sonuç
Bazen hareket tespiti veya parmak ucu tespiti gibi nispeten karmaşık görevler tamamen bilgisayarla görme ile çözülebilir. Bu nedenle, bilgisayarla görmenin temel tekniklerini bilmek ve OpenCV gibi kütüphanelerin neler yapabileceğini anlamak çok faydalıdır.
🚀 Meydan Okuma
Cortical Tigers projesini ve bir robot aracılığıyla bilgisayarla görme görevlerini demokratikleştirmek için nasıl blok tabanlı bir çözüm geliştirdiklerini öğrenmek için bu videoyu izleyin. Bu alanda yeni öğrenicilerin uyum sağlamalarına yardımcı olan diğer projeler hakkında araştırma yapın.
Ders Sonrası Sınav
Gözden Geçirme ve Kendi Kendine Çalışma
Optik akış hakkında daha fazla bilgi için bu harika öğreticide okuyun.
Görev
Bu laboratuvarda basit jestlerle bir video çekeceksiniz ve amacınız optik akış kullanarak yukarı/aşağı/sol/sağ hareketleri çıkarmaktır.
Açıklama:
Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz.




