Python ile AI - Bilgisayarla Görme
Bilgisayar görüşü, bilgisayar yazılımı ve donanımı kullanarak insan görüşünün modellenmesi ve kopyalanmasıyla ilgilidir. Bu bölümde, bunun hakkında detaylı bilgi edineceksiniz.
Bilgisayar görüşü
Bilgisayarla görme, sahnede bulunan yapının özellikleri açısından bir 3 boyutlu sahnenin 2 boyutlu görüntülerinden nasıl yeniden oluşturulacağını, kesileceğini ve anlaşılacağını inceleyen bir disiplindir.
Bilgisayarla Görme Hiyerarşisi
Bilgisayar görüşü aşağıdaki gibi üç temel kategoriye ayrılmıştır:
Low-level vision - Özellik çıkarma için işlem görüntüsü içerir.
Intermediate-level vision - Nesne tanıma ve 3B sahne yorumunu içerir
High-level vision - Etkinlik, niyet ve davranış gibi bir sahnenin kavramsal tanımını içerir.
Computer Vision Vs Görüntü İşleme
Görüntü işleme, görüntüden görüntüye dönüşümünü inceler. Görüntü işlemenin girişi ve çıkışı her iki görüntüdür.
Bilgisayar görüşü, fiziksel nesnelerin görüntülerinden açık, anlamlı tanımlarının oluşturulmasıdır. Bilgisayarla görmenin çıktısı, 3B sahnedeki yapıların açıklaması veya yorumudur.
Uygulamalar
Bilgisayar görüşü aşağıdaki alanlarda uygulama bulur -
Robotics
Yerelleştirme-robot konumunu otomatik olarak belirle
Navigation
Engellerden kaçınma
Montaj (delik içi, kaynak, boyama)
Manipülasyon (örneğin PUMA robot manipülatörü)
İnsan Robot Etkileşimi (HRI): İnsanlarla etkileşim kurmak ve insanlara hizmet etmek için akıllı robotik
Medicine
Sınıflandırma ve tespit (örn. Lezyon veya hücre sınıflandırması ve tümör tespiti)
2D / 3D segmentasyon
3D insan organı rekonstrüksiyonu (MRI veya ultrason)
Görme güdümlü robotik cerrahi
Security
- Biyometri (iris, parmak izi, yüz tanıma)
- Gözetim ile belirli şüpheli etkinlikleri veya davranışları tespit etme
Transportation
- Otonom araç
- Güvenlik, örneğin sürücü dikkat izleme
Industrial Automation Application
- Endüstriyel muayene (kusur tespiti)
- Assembly
- Barkod ve paket etiketi okuma
- Nesne sıralama
- Belgenin anlaşılması (örneğin OCR)
Yararlı Paketleri Kurmak
Python ile Bilgisayar görüşü için, adlı popüler bir kitaplığı kullanabilirsiniz. OpenCV(Açık Kaynak Bilgisayarla Görme). Esas olarak gerçek zamanlı bilgisayar görüşünü hedefleyen bir programlama işlevleri kütüphanesidir. C ++ ile yazılmıştır ve birincil arayüzü C ++ 'dadır. Bu paketi aşağıdaki komutun yardımıyla kurabilirsiniz -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
Burada X, makinenizde yüklü olan Python sürümünü ve sahip olduğunuz win32 veya 64 bit'i temsil eder.
Eğer kullanıyorsanız anaconda ortam, ardından OpenCV'yi yüklemek için aşağıdaki komutu kullanın -
conda install -c conda-forge opencv
Bir Resmi Okuma, Yazma ve Görüntüleme
CV uygulamalarının çoğu görüntüleri girdi olarak alıp çıktı olarak üretmelidir. Bu bölümde, OpenCV tarafından sağlanan işlevler yardımıyla görüntü dosyasını nasıl okuyup yazacağınızı öğreneceksiniz.
Bir Görüntü Dosyasını Okumak, Göstermek, Yazmak için OpenCV işlevleri
OpenCV, bu amaç için aşağıdaki işlevleri sağlar -
imread() function- Bu, bir görüntüyü okumak için kullanılan işlevdir. OpenCV imread (), PNG, JPEG, JPG, TIFF vb. Gibi çeşitli resim formatlarını destekler.
imshow() function- Bu, bir pencerede bir görüntüyü gösterme işlevidir. Pencere otomatik olarak görüntü boyutuna sığar. OpenCV imshow (), PNG, JPEG, JPG, TIFF vb. Gibi çeşitli görüntü formatlarını destekler.
imwrite() function- Bu, bir görüntü yazma işlevidir. OpenCV imwrite (), PNG, JPEG, JPG, TIFF vb. Gibi çeşitli görüntü formatlarını destekler.
Misal
Bu örnek, bir görüntüyü tek bir biçimde okumak için Python kodunu gösterir - onu bir pencerede göstermek ve aynı görüntüyü başka bir biçimde yazmak. Aşağıda gösterilen adımları düşünün -
OpenCV paketini gösterildiği gibi içe aktarın -
import cv2
Şimdi, belirli bir görüntüyü okumak için imread () işlevini kullanın -
image = cv2.imread('image_flower.jpg')
Resmi göstermek için şunu kullanın: imshow()işlevi. Görüntüyü görebileceğiniz pencerenin adı,image_flower.
cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
Şimdi, aynı görüntüyü diğer biçime, örneğin .png imwrite () işlevini kullanarak yazabiliriz -
cv2.imwrite('image_flower.png',image)
True çıktısı, görüntünün .png dosyası olarak aynı klasöre başarıyla yazıldığı anlamına gelir.
True
Not - destroyallWindows () işlevi basitçe oluşturduğumuz tüm pencereleri yok eder.
Renk Uzayı Dönüşümü
OpenCV'de, görüntüler geleneksel RGB rengi kullanılarak depolanmaz, bunun yerine ters sırada yani BGR düzeninde saklanırlar. Bu nedenle, bir görüntüyü okurken varsayılan renk kodu BGR'dir. cvtColor() Görüntüyü bir renk kodundan diğerine dönüştürmek için renk dönüştürme işlevi.
Misal
Görüntüyü BGR'den gri tonlamaya dönüştürmek için bu örneği düşünün.
İçe aktar OpenCV gösterildiği gibi paket -
import cv2
Şimdi, belirli bir görüntüyü okumak için imread () işlevini kullanın -
image = cv2.imread('image_flower.jpg')
Şimdi, bu resmi kullandığımızı görürsek imshow() fonksiyon, o zaman bu görüntünün BGR'de olduğunu görebiliriz.
cv2.imshow('BGR_Penguins',image)
Şimdi kullan cvtColor() bu görüntüyü gri tonlamaya dönüştürme işlevi.
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
Kenar algılama
İnsanlar kaba bir taslağı gördükten sonra birçok nesne türünü ve pozlarını kolaylıkla tanıyabilir. Bu nedenle kenarlar, insan yaşamında ve bilgisayarla görme uygulamalarında önemli bir rol oynamaktadır. OpenCV, çok basit ve kullanışlı bir işlev sağlar.Canny()kenarları tespit etmek için.
Misal
Aşağıdaki örnek, kenarların net bir şekilde tanımlanmasını göstermektedir.
OpenCV paketini gösterildiği gibi içe aktarın -
import cv2
import numpy as np
Şimdi, belirli bir resmi okumak için, imread() işlevi.
image = cv2.imread('Penguins.jpg')
Şimdi kullanın Canny () önceden okunan görüntünün kenarlarını algılama işlevi.
cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))
Şimdi, görüntüyü kenarlı göstermek için imshow () işlevini kullanın.
cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))
Bu Python programı adlı bir görüntü oluşturacak edges_penguins.jpg kenar algılama ile.
Yüz tanıma
Yüz algılama, bilgisayar görüşünün büyüleyici uygulamalarından biridir ve bu da onu daha gerçekçi ve fütüristik kılar. OpenCV, yüz algılama gerçekleştirmek için yerleşik bir tesise sahiptir. KullanacağızHaar yüz algılama için kademeli sınıflandırıcı.
Haar Basamaklama Verileri
Haar kademeli sınıflandırıcısını kullanmak için verilere ihtiyacımız var. Bu verileri OpenCV paketimizde bulabilirsiniz. OpenCv'yi kurduktan sonra klasör adını görebilirsiniz.haarcascades. Farklı uygulamalar için .xml dosyaları olacaktır. Şimdi, hepsini farklı kullanım için kopyalayın ve ardından mevcut projenin altındaki yeni bir klasöre yapıştırın.
Example
Aşağıdaki resimde gösterilen Amitabh Bachan'ın yüzünü algılamak için Haar Cascade kullanan Python kodu aşağıdadır -
İçe aktar OpenCV gösterildiği gibi paket -
import cv2
import numpy as np
Şimdi kullanın HaarCascadeClassifier yüzü tespit etmek için -
face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')
Şimdi, belirli bir resmi okumak için, imread() işlev -
img = cv2.imread('AB.jpg')
Şimdi, gri tonlamaya dönüştürün çünkü gri görüntüleri kabul eder -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Şimdi, kullanarak face_detection.detectMultiScale, gerçek yüz algılama gerçekleştir
faces = face_detection.detectMultiScale(gray, 1.3, 5)
Şimdi, tüm yüzün etrafına bir dikdörtgen çizin -
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)
Bu Python programı adlı bir görüntü oluşturacak Face_AB.jpg gösterildiği gibi yüz algılama ile
Göz Algılama
Göz algılama, bilgisayar görüşünün bir başka büyüleyici uygulamasıdır ve bu da onu daha gerçekçi ve fütüristik kılar. OpenCV, göz algılama gerçekleştirmek için yerleşik bir tesise sahiptir. KullanacağızHaar cascade göz algılama için sınıflandırıcı.
Misal
Aşağıdaki örnek, aşağıdaki resimde verilen Amitabh Bachan'ın yüzünü algılamak için Haar Cascade kullanan Python kodunu verir -
OpenCV paketini gösterildiği gibi içe aktarın -
import cv2
import numpy as np
Şimdi kullanın HaarCascadeClassifier yüzü tespit etmek için -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
Şimdi, belirli bir resmi okumak için, imread() işlevi
img = cv2.imread('AB_Eye.jpg')
Şimdi, gri tonlamaya dönüştürün çünkü gri görüntüleri kabul eder -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Şimdi yardımıyla eye_cascade.detectMultiScale, gerçek yüz algılama gerçekleştir
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
Şimdi, tüm yüzün etrafına bir dikdörtgen çizin -
for (ex,ey,ew,eh) in eyes:
img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)
Bu Python programı adlı bir görüntü oluşturacak Eye_AB.jpg gösterildiği gibi göz algılama ile -