TensorFlow Object Detection API ile Özgül Nesne Tanıma

Çağımızın en sık kullanılan alanlarından biri olan Yapay Zeka teknolojilerinin geliştirilmesinde ilk aşama olarak Görüntü İşleme aşamalarının yer aldığı Bilgisayarlı Görü (Computer Vision) olarak da bilinen bilimsel alan yer almaktadır  🌎 . Bir verinin işlenebilmesi için öncelikli olarak anlamlandırılması gerekmektedir. Ancak anlamlandırılan veri, yapay öğrenme aşamasına geçebilmektedir. Verinin anlamlandırılması için belirli ön işleme aşamalarından geçirilmesi gerekmektedir. Verinin ön işlenmesi ise istenilen hedefe yönelik olarak uygun adımlar olarak belirlenmelidir. Veri madenciliğindeki bu aşamaları temel olarak bilmeniz sizler için yeterli olacaktır. Bu sebeple kısaca bilgilendirme yaparak makalenin asıl konusu olan nesne tanıma bölümüne geçmeyi hedeflemekteyim. Aşağıda belirtilen şekilde ise girdi olarak bir görüntünün işlenmesi ve anlamlandırılması gösterilmektedir.

[gdlr_core_space height=”30px”]

page1image45181504

[gdlr_core_space height=”30px”]

Nesne ve yüz tanıma artık hayatımızın neredeyse her yerinde! Günlük hayatta cep telefonları, bilgisayarlar, özel nesne tanıma algılayıcıları ile çalışan güvenlik kameraları gibi birçok örnek ile karşı karşıya kalmaktayız 📱🖥️ . Bunların hepsi temel olarak altyapısında görüntü işleme adımlarını çalıştırmaktadır. Nesne tanıma algoritmaları, belirli kategorileri temel alınarak veri üzerinde (görüntü, vb.) nesne belirleme işlemini gerçekleştirmektedir. Birçok nesne tanıma algoritması, görüntü üzerinde bir frame (çerçeve) oluşturarak görüntüde bu çerçeveyi kaydırma yöntemi ile tüm pikselleri gezer ve kaydedilen görüntü bölütlerini sinir ağlarından geçirerek sınıflandırma yapılmasını sağlamaktadır [1]. Literatürde CNN, RCNN, Faster RCNN, YOLO, VGG16 gibi birçok nesne tanıma modelleri yer almaktadır [2]. Bu modeller görüntüde bölge tabanlı çerçeveler (frame) belirlenerek ROI (Region of Interest- İlgili Bölge) bölgeleri oluşturulur [3]. Belirlenen ROI bölgeleri Evrişimsel Sinir Ağı’ndan (CNN) geçirilerek öğrenme gerçekleştirilir. Tespit edilecek nesneler ve üzende çalışılacak görüntülere bağlı olarak farklı sinir ağı modelleri seçilerek eğitim gerçekleştirilebilmektedir. Var olan nesne tanıma modellerinden kısaca bahsedildiğine göre Google tarafından sunulmuş Tensorflow Nesne Algılama API kullanımı ile nesne tespitinin incelenmesine geçebiliriz. Tensorflow, makine öğrenimi için Google’ ın kullanıma sunduğu açık kaynaklı bir platformdur [4]. İçerisinde bulunan modeller sayesinde veri bilimi alanında birçok çalışma gerçekleştirilerek makine öğrenimi sırasında karşılaşılan sorunlar giderilmiş olup veri bilimciler ve yapay zeka alanında çalışanlar için adeta bir hazinedir 💰 . Tensorflow’un sunduğu modelleri ve nesne tespiti için kullanacağımız Object Detection API dosyalarını aşağıdaki linkten temin edebilirsiniz ⬇️ .

🛎️ https://github.com/tensorflow/models [5]

[gdlr_core_space height=”30px”]

page2image45136096

Tensorflow API modellerinin kullanımı için Github sayfasında oldukça kullanışlı bir anlatım bulunmaktadır. Şekil 2’ de görüldüğü üzere Table of contents başlığı altında bulunan Installation bölümüne tıklayarak sırası ile kurulumu gerçekleştirebilirsiniz 📝.

page2image45124448

⚡ Bu sayfada yalnızca Linux OS için kullanım talimatları bulunmaktadır. Windows OS kullananlar için kurulumu sırası ile anlatacağım.

[gdlr_core_space height=”30px”]

Sayfada bulunan Dependencies bölümünde belirtilen kütüphaneler Tensorflow API alt yapısında var olan modellerin çalışabilmesi için gereklidir. Kütüphanelerin her birinin eksiksiz bir şekilde yüklenmesi gerekmektedir. Lütfen hepsinin çalıştığına emin olarak yolumuza devam edelim.

📌 Eğer Anaconda kullanıyorsanız Şekil 3’de görüldüğü gibi paket dosyalarından Tensorflow yüklediğinizde bu kütüphaneler varsayılan olarak yüklenmiş olacaktır. Kontrolünü sağlayabilirsiniz.

page2image45118672

[gdlr_core_space height=”30px”]

🧷 Kurulum için gerekli kütüphaneler [6]

  • Protobuf 3.0.0
  • Python-tk
  • Pillow 1.0
  • lxml
  • tf Slim (which is included in the “tensorflow/models/research/” checkout)
  • Jupyter notebook
  • Matplotlib
  • Tensorflow (>=1.12.0)
  • Cython
  • contextlib2
  • cocoapi

[gdlr_core_space height=”30px”]

📌 Tensorflow’ u bilgisayara kurmak için aşağıdaki komutlardan birisini seçerek ilerleyelim [6].

 # For CPU
pip install tensorflow
# For GPU
pip install tensorflow-gpu

[gdlr_core_space height=”30px”]

Model dosyasını bilgisayarımıza kurmak için Şekil 4’ de gösterildiği gibi indirerek Tensorflow Object Detection modellerinin yüklenmesini sağlayalım.

[gdlr_core_space height=”30px”]

Model indirilirken bir yandan da verilerin iletilmesinde görev alacak Protobuf’ ı da indirerek bilgisayarda kayıtlı olan Python yollarına link vererek ekleyelim.

Diğer versiyonlarla uyumlu çalıştığı için Şekil 5’ de görüldüğü gibi Protoc v3.4.0’ ı tercih ediyorum, dilerseniz siz başka bir versiyon da seçebilirsiniz.

[gdlr_core_space height=”30px”]

İndirilen modeller içerisinde research klasörüne girildiğinde birçok farklı modeli barındırdığını fark edeceksiniz. Nesne tespiti ile ilgili olan dosyalar object_detection klasöründe olduğu için bu klasör içerisinde bulunan Python dosyalarını irdeleyebilirsiniz. Şekil 6’ da görüldüğü üzere gözlemlemeniz adına modellerin bir arada bulunduğu ufak bir görüntü bırakıyorum 📌

[gdlr_core_space height=”30px”]

Model Dosyalarının Önizlenmesi
Şekil 6. Model Dosyalarının Önizlenmesi

[gdlr_core_space height=”30px”]

Ardından Proto dosyalarının yüklenebilmesi için komut ekranında (cmd) öncelikle indirilen protoc dosyasının yolunu daha sonra installation sayfasında bulunan protoc komutunun kopyalarak Şekil 7’de görüldüğü gibi yazın ve derleyin.

[gdlr_core_space height=”30px”]

page3image45346800

[gdlr_core_space height=”30px”]

💡 Programlamanın yazılacağı platform isteğe göre seçilebilir. İşlemlerin sunucuda (localhost) daha hızlı çalışması ve dosyaların saklanabilmesi adına ben Jupyter platformundan devam edeceğim.

🔗 Platform ismi : Jupyter Notebook

Model klasörü içerisinde indirilmiş olan object_detection klasörü içerisinde çalışılacağı için Jupyter projeleri içerisine kopyaladım. Şekil 8’ de görüldüğü üzere Localhost’ ta çalışmakta olan nesne tespit modeli üzerinde işlemleri devam ettireceğiz. Sırası ile yaptığım tüm adımları sizler de uygulayarak nesne tespit modülünü çalıştırabilirsiniz  📂

[gdlr_core_space height=”30px”]

page4image45504816

Nesne Tespit Modülünün Görünümü

Nesne Tespit Tutorial

Nesne Tespit Tutorial Dosyası

Modül Kodların Derlenmesi

[gdlr_core_space height=”30px”]

page4image45505856

⏳ Kodlar derlenirken kısa bir mola verelim, dilerseniz içeriği inceleyerek hangi modellerin çalıştırıldığını inceleyebilirsiniz 🔍

[gdlr_core_space height=”30px”]

Nesne tanımada çok sık kullanılan bir görüntü üzerinde nesne tanıma modeli çalıştırıldığında aşağıdaki sonuçlara ulaşılmaktadır. Tensorflow’un sunduğu bu açık kaynak kodlu model ile istenilen her görüntüde nesne tanıma yapılabilmesi mümkündür.

[gdlr_core_space height=”30px”]

page4image45506272
Şekil 12. Nesne Tanıma Modelinin Çalıştırılması [6].

[gdlr_core_space height=”60px”]

REFERANSLAR
[1] 
Software Development, “Bilgisayar Görüşü ile Yüz ve Nesne Tanıma R-CNN, SSD, GANs”, Udemy, https://www.udemy.com/course/bilgisayar-gorusu/#instructor-1.

[2] Ross Girshick, “The IEEE International Conference on Computer Vision (ICCV) FAST R- CNN”, 2015, pp. 1440-1448, IEEE, https://ieeexplore.ieee.org/document/7410526.

[3] From Wikipedia, Özgür Ansiklopedi, “Region of interest”, Eylül 2012, https://en.wikipedia.org/wiki/Region_of_interest.

[4] Tensorflow Official (Resmi) Website, “Tensorflow”, https://www.tensorflow.org/. [5] Tensorflow, “Tensorflow Models”, Github, https://github.com/tensorflow/models.

[6] Tensorflow, “Tensorflow Installation”, Github, https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md .

Leave a Reply

Your email address will not be published. Required fields are marked *