Geçmişten Günümüze Kısaca Computer Vision

Original article can be found here (source): Deep Learning on Medium

Geçmişten Günümüze Kısaca Computer Vision

Terminoloji ve Kısaltmalar

Artificial Intelligence (AI): Yapay Zeka
Traditional AI: Geleneksel Yapay Zeka
Image Process: Resim İşleme
Computer Vision (CV): Bilgisayar Görüşü
Machine Learning (ML): Makine Öğrenimi
Deep Learning (DL): Derin Öğrenme
Artificial Neural Network (ANN): Yapay Sinir Ağı
Classification: Sınıflandırma
Clustering: Kümeleme
AFİN: Temel geometrik dönüşümler
Preprocess: Önişleme
Dataset: Veri kümesi
Good Old Fashioned AI (GOFAI): Eski Tip Yapay Zeka
Convolutional Neural Network (CNN): Evrişimli Sinir Ağı
Natural Language Processing (NLP): Doğal Dil İşleme
Enterprise Resource Planning (ERP): Kurumsal Kaynak Planlama
Customer Relation Management (CRM): Müşteri İlişkileri Yönetimi
Computer Aided Design (CAD): Bilgisayar Destekli Tasarım
Virtual Augmentation: Artırılmış Gerçeklik
Red-Green-Blue (RGB): Kırmızı-Yeşil-Mavi
Optical Character Recognition (OCR): Optik Karakter Tanıma
Forward/Backward Propagation: İler/Geri Yayılma
Blackbox: Karakutu

AI ve Computer Vision Tarihi

Bugünkü anlamıyla bilgisayar sistemleri, çıkışından itibaren hızla gelişen teknoloji ve hesaplama gücü sayesinde geçmişten günümüze hayatımızın her alanına zamanla daha da girmiş durumda. Artan teknolojik ihtiyaçlar ve bununla beraber gelişip, yaygınlaşan modern bilgisayar sistemleri sayesinde endüstri, medikal, güvenlik, iletişim, eğitim, sosyal hayat gibi birçok farklı alanda bilgisayar teknolojileri entegre edilip işlemlerin daha hızlı ve daha az hata payıyla gerçekleştirmesi sağlanmaya çalışılıyor ve günümüze kadar hızla gelişmeye devam ediyor.

Tüm bu gelişmeler ve ilerlemeler kaydedilirken; günümüze kadar ERP, CRM, CAD, web siteleri gibi bir çok farklı sektöre hizmet etmek üzere geliştirilen, süregelen klasik yazılım çözümleri dışında 1950’lerin son çeyreğinde daha farklı ihtiyaçlar için ilk AI algoritmaları bilgisayar sistemlerde uygulanmaya başlamıştır.

AI alanında artan araştırmalar ve oluşan talepler doğrultusunda yavaş yavaş AI konsepti de oluşup şekillenmeye başlamış ve yıllar içinde son kullanıcı dünyasında yer almaya başladı. Ve günümüze kadar gelişmeye devam eden AI alanı NLP, CV vb. birçok konuda çalışma alanı yaratarak farklı tekniklerle beraber alt dallara ayrıldı.

AI alt problemleri

Bu makalede AI alt dallarından biri olan CV konusunu kısaca ele alacağız. Bildiğimiz üzere somut kavramları algılarken en çok destek aldığımız duyulardan biri görsel duyumuzdur. Işık farklılıkları, renkler, şekiller, nesneler, derinlik vb. kavramları görsel duyumuzla algılarız. Ve günlük hayatımızın devamına dair çoğu işlemimizi görsel duyularımızdan elde ettiğimiz veriler yardımıyla gerçekleştiririz.

Teknolojinin hayatımızı farklı alanlarda farklı amaçlarla kolaylaştırma çabası, görsel algılama yeteneğimizin de sentetik uyarlamasıyla CV alanını doğurdu ve zamanla karşımıza obje tanıma, yüz tanıma, virtual augmentation vb. CV uygulamalarıyla da çıkmaya başlayarak farklı AI algoritma ve dallarıyla günümüze kadar geliştirilip uygulandı.

Yüz tanıma sistemi

Peki görsel algımız bilgisayar dünyasında nasıl karşılık buldu?

Dijital Görsel Veriler

Bilgisayar sistemleri insanlardan farklı olarak tamamiyle sayısal sistemler üzerine inşa edilmiştir ve günümüz modern son kullanıcı bilgisayarlar ikilik sayı sistemleri üzerinde işlem gerçekleştirirler.

Sayısal sistemlerde, görseller diziler ile hafızalanır ve temsil edilirler. Kullanılan renk uzayı ve çözünürlüğe göre dizi boyutları farklılık gösterebilir. Görsel veriler birçok farklı renk uzayıyla tanımlanabilir fakat biz en yaygın olarak kullanılan RGB renk uzayını temel alacağız.

RGB uzayı, renkli görseller için kullanılır ve her piksel için üç temel renk verisi içerir. Ve hafızalanacak olan görsel; çok boyutlu dizide görselin her bir pikseli için kırmızı, yeşil, mavi yoğunluk değerlerini içerecek şekilde haritalanır. Daha sonra gerçekleştirilmesi planlanan tüm matematiksel işlemler bu tensör(ler) üzerinde gerçekleştirilir.

Peki ama AI konsepti nedir? Hangi sistemler AI olarak adlandırlır? Computer vision nedir?

AI Konsepti ve Alt Dalları

Basit bir dille, AI bir bilgisayar algoritmasının CAD, CRM, ERP vb. klasik yazılım çözümleri dışında insansı görevleri taklit edebilme ve/veya geçmiş görevlerden elde edilen tecrübeyi kullanabilme yeteneğine sahip olması denebilir. Örneğin yüz tanıma sistemleri, obje takip sistemleri, şerit takip sistemleri, kelime işleme, sesli asistan vb. daha bir çok uygulama AI uygulamalarına örnek verilebilir.

En basit haliyle AI konsepti geliştirilmeye başlandığı ilk yıllarda, ele alınacak olan farklı problemler için farklı yaklaşımlarla matematiksel modelin oluşturulması ve oluşturulan modelin algoritmasının programlanıp işlenmesinden oluşan bir iş bütünüydü. Günümüzde GOFAI olarak adlandırılan bu model odaklı AI yaklaşımının en büyük dezavantajı her problemin farklı bir kompleks model gerektirmesi ve bu modellerin geliştirilmesi için gereken zaman maliyetidir.

Yakın geçmiş ve günümüzde ise artan hesaplama gücü ve yaygınlaşan internetle beraber biriken devasa veriler sayesinde daha farklı bir yaklaşım olan ML teknikleri uygulanmaktadır. Bu yaklaşım AI konseptinin ilk yıllarından itibaren ortaya atılmasına rağmen çok fazla veri ve işlem gücü gerektirmesinden dolayı uzun yıllar ana akım olarak kullanıl(a)madı, ta ki günümüze kadar.

ML teknikleri en basit haliyle temel olarak problemin doğasını anlayıp modelleyerek değil, elimizdeki probleme dair veriler üzerinde matematiksel istatistik prensiplerinden yararlanarak classification, clustering vb. gibi işlemlerle probleme dair çıkarım yapmamıza olanak sağlar denebilir. Bu yaklaşımın en büyük dezavantajı ise yaygınlaşmasının gecikmesinde de rol alan işlem gücü için gerekli kaynak maliyeti ve gerekli olan fazla miktarlarda verilerdir.

Yapay zeka alt dalları

Günümüzde AI problemleri çözümünde gücü ve doğruluk oranları nedeniyle en çok tercih edilen teknik olan Deep Learning ise ANN yapısıyla oluşturulan mekanizmalardır ve bir ML alt dalıdır. Bu metot insan beynindeki en küçük yapı taşı olan sinir ağları model alınarak geliştirilmiş bir tekniktir ve çalışma prensibi olarak insan beyni sinir yapısına benzerlik gösterir. Deep Learning için bir çok farklı mimari oluşturulmuştur fakat CV alanında en yaygın olarak CNN mimarisi kullanılır. Tabi ki bu tekniğinde büyük boyutlarda dataset ihtiyacı, optimizasyon zorluğu, blackbox olmaları gibi dezavantajları bulunmaktadır.

Yapay sinir örneği
Yapay sinir ağı örneği

Bir bilgisayar nasıl görür? Ve fark etmesini nasıl sağlarız?

Computer Vision

CV bir AI problemi olup, algoritma girdi olarak görsel veri ile beslenip, probleme dair uygun image process algoritmaları neticesinde sağlanan veriden çıkarım(lar) döndüren yazılımlardır. CV problemleri için geçmişte GOFAI günümüzde de ML yöntemleri özellikle de Deep Learning çözümleri üretilmektedir.

Image process işlemlerine örnek

GOFAI ile Computer Vision

Klasik yaklaşımda çeşitli filtreler, AFİN dönüşümleri vb. metotlar kullanılarak görsellerden beklenen özellikler çıkarılması amaçlanmaktadır. Ve kabaca bu özellik çıkarımlarından yararlanılarak tahmin yapılır.

Örneğin, klasik yöntemde plaka tanıma uygulaması geliştirirken en genel haliyle;

  • Uygulamaya sağlanan görsel gerekli preprocess işlemleri yapıldıktan sonra
  • Çeşitli image process algoritmaları ve kenar bulma algoritmaları ile plaka varlığı test edilir ve varsa konumu algılanmaya çalışılır
  • Eğer kenar bulma algoritması olumlu sonuçlanırsa bu bölgeye OCR işlemiyle görsel karakter tanıma algoritması uygulanarak araç plakası görselden okunmuş olur.

Yalnız bu tip modeller geliştirilirken gözden kaçırılmaması gereken çok fazla detay bulunur örneğin açı düzeltme algoritmaları, gölge ve ışık farklılıkları gibi etkenlerden kurtulmak için farklı renk uzaylarında çalışma vb. gibi daha çok fazla detay düşünülüp uygun bir model çıkarılması gerekir.

Tüm bunlar daha kompleks problemleri çözmek gerektiğinde daha da kompleks modeller ve geliştirmeler gerektirmektedir.

Sobel dikey-yatay kenar bulma filtreleri
Sobel kenar bulma algoritması etkisi

Deep Learning CNN ile Computer Vision

Bu yaklaşımda ise amaca uygun bir mimari seçilir/oluşturulur ve sadece modelin eğitileceği farklı varyasyonlarla hazırlanmış büyük datasetlere ihtiyaç duyulur. Mimariye model oluşturmak için besleme işlemi yapılır. Ve bir model çıktısı elde edilir.

Plaka tanıma örneğimiz için, genel hatlarıyla;

  • Farklı varyasyonlarla çekilmiş plakalı araç görselleri ve etiketleri hazırlanır ya da temin edilir.
  • Probleme uygun CNN mimarisi oluşturulur. Ve eğitime başlanır.
  • Convolution mimarisi klasik yöntemde kendi oluşturduğumuz filtreler yerine, sahip olduğu mekanizma sayesinde rassal olarak filtreler üretmeye başlar.
  • Daha sonra üretilen filtreler ile görsel üzerindeki plaka konum lokasyonlarının bulunduğu etiketleri doğru tahmin etmeye çalışır.
  • Her bir yanlış tahminde forward/backward propagation yaparak ağırlıklarını uygun şekilde optimize ederek yavaş yavaş görsel üzerinde plaka konumu bulmaya adapte olmaya başlar.
  • Eğitimimiz tamamlandıktan sonra artık eğitimin bizim için oluşturduğu bu modeli projelerimizde kullanmaya başlayabiliriz.
Yapay sinir ağı aktif nöron haritası

Sonuç olarak deep learning tekniği için kabaca, büyük datasetler ve matematiksel istatistik yardımıyla, “problemin modellenmesi” işlemini bizim yerimize yapan bir mekanizma olduğunu söyleyebiliriz.