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 -