OpenCV veya Open Source Computer Vision, sahip olduğumuz resim ve videolarla çalışırken büyük katkıda destek sağlayacak bir kütüphanedir. Görüntü işleme, bilgisayar görüşü ve makine öğrenimi için geniş bir işlevsellik yelpazesi sağlayan açık kaynaklı kodlardır. OpenCV ilk olarak 1999 da intel tarafından kullanıma açıldı.
Bilgisayarlı görünün artık hayatımızın her noktasına girmiş bulunmaktadır örnek olarak yüz algılama teknolojisi, kişinin yüzünü algılar ve bu yüzleri sınıflandırmaya çalışır.
Kullanılan diğer alanlardan biri de gözetim alanındadır, kullanılış amacı güvenlik kısmı için daha çok kullanılır kişinin hareketlerini incelenir ve olası tahminleri bilgisayar ortamında tahmin edilir.
OpenCV (Open Source Computer Vision) açık kaynaklı bir kod kütüphanesidir ve herkese açık olarak kullanılabilmektedir. Algılama ve tanıma olarak ikiye ayıralım bu ikisi birbirine karıştırılan terimler, algılama dışarıdan veya resimdeki kişinin ne olduğunu anlamaktır algılamak ise resimde gördüğü bu kişinin kim olduğunu anlama kısmıdır.
C++ dili kullanılarak geliştirilmiş bir kütüphanedir ama istenilen diller ile de kullanılabilir ama son yıllarda yoğun olarak kullanılmaya başlayan python ile devam ediyorum.
Bilgisayarlı görüdeki temel olarak kullanılan kavramlar;
- Cihazın dışarıda gördüğü şeylerin gördüğü nesnelerin ne olduğunu anlamaya çalışması yani aldığı görsel verileri işlemesidir.
- Görüntü işleme bir matematiksel işlemdir, bilgisayarda görüntüler bir matris olarak algılanır nxn boyutunda bir matris şeklinde algılanır. Resmin derinliği varsa daha da farklı matematiksel yöntemlere gidilir.
- Yukarıda gördüğünüz resimdeki kedi felix 35x35 matris (pixel) kullanılarak ortaya çıkarılmıştır, ekrandaki siyah noktalar 1’i beyaz noktalar da 0’ı ifade ederler.
- Figure 4’te saat yönünde x derece döndürdüğümüzde bize basit bir eylem gibi gelsede bilgisayarda bir matrisi döndürmemiz gerekir, bu işlemi yapmak içinde matrisin transpozu alınır veya gerekli yöntemler ile istenilen şekle gelene kadar işlem devam eder.
Figure 2: The matrix corresponding to Felix The Cat
Figure 4: Matrix transformations
- Görüntüsünü aldığımız bir nesnenin ne olduğunu anlamaya veya sınıflandırmaya çalışılacak olan kısımdır.
- Aldığımız görüntüler de Input ile Output kısımlarının arıasındaki işleme noktası ANN (Artificial Neurol Network) yapay sinir ağları kullanılarak işlem gerçekleştirilir. Arada kalan kısmın diğer adıda hidden layer olarakta adlandırabiliriz.
- Herşey den önce ANN kısmını eğitmemiz gerekmektedir ve bu eğitimi yaparken sınırları çizmeliyiz, yani verilen resimlerin önceden ne olduğunu öğretmeliyiz, bunun için bir veri kümesi oluşturuyoruz öğrenmseini istediğimiz veriler ile beraber.
- Örnek olarak yukarıdaki gibi köpek türleri ve onlara air fotoğrafları ANN e vererek eğitmemiz gereklidir bunun içinde ciddi bir veri kümesine ihtiyaç duyarız.
- Görüntü sınıflandırma çalışmalarında da görüntüyü tek bir sınıf olarak atamamız olmasıdır, modelimizi eğitme şeklimizde tek bir çıktı üzerine de eğitebiliriz veya modelin bilgisi olan veriler görselde varsa onlarında çıktılarını isteyebiliriz.
- Yukarıdaki görselde ki sayılar da modelin tahmin oranıdır 1’e ne kadar yakınsa o kadar güvenlirdir (confidence scor).
Classification: Cat&Dog
Top 100 Dogs
image classification
- Nesne tanıma ise görseldeki varlığın ne olduğunu algılar ve aynı zamanda o varlığın görselin ne tarafında olduğunu da algılamasıdır. Görüntünün içindeki nesnenin konumunu tahmin etme çalışması.
- Yukarıda da gördüğünüz gibi görselin içinde 3 adet nesne tanınmış bunu yapabilmesi için önce bir ANN geliştiriyoruz yani bir model bunun içinde bir veri seti oluşturmamız ve bu veiler ile de modelimizi istediğimiz görsel veya hedefe yönelik eğitmiş olammız gerekir. (yolo, rcnn, fasrtcnn)
An example image with 3 bounding boxes from the COCO dataset
- Modelimiz ile eğitmeye çalıştığımız makineye belirli nesnelerin keypointlerini vererek daha sağlıklı bir veri sonucu elde edilir. Yüz, vücut hatları, kemik yapısı, hayvan türleri ve bir çok dahası gibi.
- Key point kullanılmasının amaçları haraket takibi özellikle olsun daha çok o alanlarda kullanılır istenilen hareketin merkezi seçildikten sonra o alanın nasıkl bir şekilde haraket ettiğinin takip edilmsei gibi.
Keypoints annotations along with visualized edges between keypoints. Images are from the COCO dataset.
An example image with five keypoints from the COCO dataset
- Hastalıkların eğitilmiş modellerce hızlı ve yüksek doğruluk oranı ile hesaplanması veya takip edilmesi olanağı sağlar.
- Yukarıda da görüdğünüz gibi bir röntgende ki kişinin omurgasının duruş bozukluğunu hesaplar ve hangi noktada nasıl bir sıkıntısı olduğunu analiz eder.
- Bir üretim hattında üretimi tamamlanmış ürünlerin kalite kontrol kısmında da yer alarak daha işlevsel ve hız bakımından da daha hızlı bir sistem kurulabilir.
- Belli seviyelerde geliştirilmiş olan cihazların otomatikleştirilmesi ve bu sayede zaman, sağlık, maliyet ve bunun gibi bir çok alanda tasarruf sağlanmasını sağlamaktır.
- Örnek olarak arabalarda son yıllarda geliştirilmiş olan oto sürüş gibi ya da oto park sistemleridir.
- Şerit takip sistemleri bunun için arabanın hızını tekerleklerin dönüş yönünü ve bunun gibi bir çok dış etkenlerin hesaplamalarını öğretilmiş olan modeller ile otonom hale getirir.