Tensorflow ile İtiraz Algılama nedir? ve Nasıl Çalışır [Örnekler]

Yayınlanan: 2021-06-18

İçindekiler

Nesne Algılama - Bu ne anlama geliyor?

Nesne algılama, bilgisayarla görme yardımıyla bir görüntü veya videoda bir nesnenin tanımlanabileceği veya yerleştirilebileceği bir işlemdir. Eğer elimizde kedi ve insan olan bir görüntü varsa ve bir görüntü içindeki nesneleri sınıflandırmamız gerekiyorsa, o zaman nesneleri algılama tekniği yani nesne algılama uygulanabilir ve gerekli nesneler yani kedi ve kişi bulunabilir. Bu, algılanan nesnelerin etrafına çizilen sınırlayıcı kutular aracılığıyla gerçekleştirilebilir. Böylece istenen nesnelerin konumu bilinir.

Çoğu insan hala nesne tanıma ve görüntü tanıma ile karıştırılıyor. İkisi arasındaki fark, görüntü tanıma durumunda tüm görüntünün etiketlenmesi, nesne tanımada ise görüntü içindeki nesnelerin etiketlenmesi gerçeğinde yatmaktadır.

Nesnenin kişi, tablo vb. gibi sınıfı ve belirli bir görüntüdeki nesnelerin konumunun koordinatları, nesneleri algılama tekniği ile tanımlanabilir. Bir nesne algılama algoritmasının performansı, bir görüntü içindeki nesneleri bulma yeteneğine bağlıdır. Nesneleri algılamanın böyle bir örneği yüz algılamadır.

Neden Nesne Algılama?

Nesne algılamaya ait benzersiz yetenekler nedeniyle süreç, aşağıdakiler gibi birçok önemli görevde uygulanabilir:

  • Kalabalıktaki insanların sayılması.
  • Kendi kendini süren arabalar durumunda sürüş.
  • Video izleme.
  • Yüzün tespiti.
  • Anomali tespiti

Nesne Algılama Yaklaşımları

Nesne algılama yöntemi için kullanılan algoritmalar, kullanılmadan önce eğitilmiş veya denetimsiz olabilir.

Nesnelerin tespiti için iki yaklaşım yani makine öğrenmesi tabanlı ve derin öğrenme tabanlı yaklaşımlar kullanılmaktadır.

  • ML tabanlı yaklaşımlar, bir görüntünün renk histogramı veya kenarları vb. gibi çeşitli özelliklerine bakmaktadır. Bu özelliklere dayalı regresyon modelleri daha sonra oluşturulur ve nesnenin konumu tahmin edilir.
  • Denetimsiz yöntemlerle bir nesneyi tespit etmek için derin öğrenmeye dayalı yaklaşımlarda evrişimli sinir ağları (CNN'ler) kullanılır.

Bir Nesne Algılama Yönteminin Çalışması

Nesne algılama görevi aşağıdaki adımlarla gerçekleştirilebilir:

  • Giriş görüntüsü birkaç küçük parçaya bölünür. Birbirine bağlı kutu setleri tüm görüntüyü kaplayarak oluşturulur.
  • Her bölümlenmiş alan, özellik çıkarma işlemine tabi tutulur. Ardından kutu içindeki geçerli nesnelerin varlığını tahmin eder. İşlem, kutuda herhangi bir görsel özellik olup olmadığını belirler.
  • Üst üste binen kutular için tek kutu yapılmıştır.

TensorFlow kullanarak nesne algılama

TensorFlow, makine öğrenimi için açık kaynaklı bir kitaplık olarak tanımlanabilir ve görüntü tanıma, sesli arama, nesne tanıma vb. gibi çeşitli uygulamalarda yaygın olarak kullanılır. Hem Python hem de C++ API'leri TensorFlow tarafından sağlanır.

  • TensorFlow'da hem derin öğrenme algoritmaları hem de makine öğrenimi algoritmaları bulunur.
  • Python, ön uç dil olarak kullanılır ve ayrıca C++'da verimli bir şekilde çalışır.
  • TensorFlow kullanan geliştiriciler tarafından bir hesaplama grafiği oluşturulur.
  • Matematiksel işlemler, bir grafikteki düğümler tarafından temsil edilir ve veriler, bağlantılar aracılığıyla temsil edilir.

TensorFlow, Google'ın Makine Zekası Araştırma organizasyonu içindeki Google Beyin ekibi tarafından makine öğrenimi ve derin sinir ağları üzerinde araştırma yapmak için geliştirildi.

Bir API (Uygulama Programlama Arayüzü), geliştiricilerin bir dizi ortak işlemin sağlanması yoluyla sıfırdan kod yazmasını engeller. Modelleri nesne algılama için eğitmek için TensorFlow nesne algılama API'si uygulanır. Çerçeve, TensorFlow üzerine inşa edilmiştir. TensorFlow nesne algılamasına ait özellikler şunlardır:

  • Halihazırda eğitilmiş modeller “Model Zoo” olarak adlandırılır ve çerçevede mevcuttur.
  • Çeşitli eğitilmiş modellerin eğitimi için kullanılan veri kümeleri şunlardır:
  • COCO veri seti.
  • KITTI veri seti.
  • Açık Görüntülerin Veri Kümesi

Nesne algılama TensorFlow çerçevesi, çeşitli mimariye ve dolayısıyla farklı tahmin doğruluklarına sahip çeşitli modellerden oluşur. Halihazırda eğitilmiş modellerin mimari türleri şunlardır:

1. MobileNet-SSD

Tek bir evrişim ağı, sınırlayıcı kutunun konumunu tek bir geçişte tanımlar. Mimari, birkaç kat evrişim içeren bir temel katmandan (MobileNet) oluşur. Sınırlayıcı kutuların konumları, özellik haritalarındaki işlem aracılığıyla tahmin edilir. Her sınırlayıcı kutuda bulunan bilgiler aşağıda listelenmiştir:

  • Dört köşedeki sınırlayıcı kutunun öteleme konumları (cx, cy, w, h).
  • C sınıfının olasılıkları (c1, c2, …cp)

Kutu şekli SSD tarafından tahmin edilmez, kutunun yerleri tahmin edilir. Her özellik haritası konumu için K sınırlayıcı kutu sayısı belirlenir. k sınırlayıcı kutunun şekli, gerçek eğitimden önce zaten ayarlanmıştır.

Aşağıdaki denklem kaybı hesaplar.

L=1/N (L sınıfı + L kutusu)

Nerede, N: eşleşen kutu sayısı, L sınıfı: softmax kaybı, L kutusu: eşleşen kutularla ilişkili hata.

2. MobilNet

Standartlaştırılmış bir evrişim, bir evrişim ve noktasal olan bir evrişim olarak çarpanlara ayrılır, yani 1*1 evrişimler. Hesaplama, çarpanlara ayırma yoluyla model boyutunun küçültülmesiyle azaltılır.

3. Başlangıç-SSD

Inception-SSD, MobileNet-SSD ile aynı mimariye sahiptir, ancak MobileNet-SSD durumunda mimarinin temeli MobileNet idi ve burada Inception modeli.

4. Daha Hızlı RCNN

Nesnenin konumunun tahmini, bölge önerisi algoritmalarına dayanır. Algılama ağları, SSPnet ve Fast R-CNN'deki gelişmeler sayesinde çalışma sürelerini azalttı. Daha Hızlı RCNN durumunda bir giriş görüntüsü sinir ağına beslendiğinde bir evrişimli özellik haritası oluşturulur.

Bölge önerisi daha sonra evrişimsel özellik haritası aracılığıyla tanımlanır ve karelere çarpıtılır. Kareler daha sonra bir ROL havuzlama katmanı (Region Of Interest Layer) aracılığıyla sabitlenen bir boyuta yeniden şekillendirilir. Daha sonra tamamen bağlı olan bir katmana girdi olarak kullanılır.

Softmax katmanı, ROL özellik vektöründen bölge teklif sınıfını tahmin etmek için kullanılır. Ayrıca sınırlayıcı kutu ofset değerleri de tahmin edilir.

Nesne Algılama TensorFlow Modelinin Seçimi

Doğru Nesne Algılama TensorFlow Modeli , kullanıcının özel gereksinimlerine göre TensorFlow API'sinden seçilebilir. Tek çekim algılama ağı, yani kullanıcı yüksek hızlı bir modele ihtiyaç duyarsa SSD ağı kullanılabilir. Model oldukça hızlıdır ve yüksek fps'de video beslemesini algılayabilir.

Bununla birlikte, daha fazla doğruluk gerekiyorsa, model doğruluğu yüksek olduğundan ancak nispeten daha yavaş bir hıza sahip olduğundan FasterRCNN daha iyi bir seçim olabilir. Bu nedenle, kullanıcı, gereksinimlerine göre mevcut çeşitli fırsatları keşfedebilir.

Nesne algılama için bir TensorFlow örneği

Nesne algılama için TensorFlow API'sinin kullanımı, makine öğrenimi veya sinir ağları hakkında önceden bilgi gerektirmez. API tarafından sağlanan dosyalar çoğunlukla kullanılacaktır. Tek şart, python'un temellerini bilmektir.

1. TensorFlow'u İndirme

  • TensorFlow, git üzerinden indirilebilir veya manuel olarak indirilebilir.
  • Git aracılığıyla TensorFlow'u indirmek , indirmenin en kolay yollarından biridir. Git üzerinden indirmek için, sistemde git önceden kurulu olmalıdır. Git kurulduktan sonra terminale aşağıdaki komut yazılmalıdır.
  • Aşağıdaki bağlantı ziyaret edilmeli ve yeşil butona tıklanmalıdır. Sıkıştırılmış dosyalar indirilmeli ve çıkarılmalıdır.
  • Klasör, model-master'dan model olarak yeniden adlandırılmalıdır.
  • Sanal bir ortam oluşturulmalıdır. Bir python sanal ortamı yaratmanın temel amaçlarından biri, izole edilmiş bir python ortamı yaratmaktır. Python altındaki projeler için kullanılacaktır. Bu nedenle, her projenin bağımlılıkları farklı olacaktır.
  • Anaconda isteminde aşağıdaki komutlar kullanılmalıdır:

Bu durumda sanal ortam obj_detection olarak adlandırılır.

conda create -n obj_detection -> ortamı sanal olarak kurmak için

conda activate obj_detection -> sanal ortamı etkinleştirmek için

2. Bağımlılıkları yükleme

  • API'nin gerektirdiği bağımlılıkların yerel PC'ye yüklenmesi gerekir.
  • Bağımlılıklar sanal ortam etkinleştirildikten sonra kurulabilir.
  • Aşağıdaki komut yazılmalıdır

pip kurulum tensorflow

  • Bir GPU varsa, aşağıdaki komut gereklidir

pip kurulumu tensorflow-gpu

  • Diğer bağımlılıklar aşağıdaki komutla kurulacaktır.

pip yükleme yastığı Cython lxml jupyter matplotlib contextlib2 tf_slim

3. Protokol Tamponlarını İndirme (Protobuff)

  • Protokol arabellekleri, verileri XML gibi seri olarak yapılandırmak için belirli mekanizmalardır.
  • 'Protobuff' linkten indirilmelidir .
  • Dosyaları ayıklayın ve önceden indirilmiş “modeller” klasöründeki “research” adlı alt klasöre dosyaları kopyalayın.
  • Protobuf dosyalarını içeren klasöre gidilmeli ve aşağıdaki komut çalıştırılmalıdır.

protokol object_detection/protos/*.proto –python_out=.

  • Komutun başarılı bir şekilde yürütülmesi, modeller klasöründe nesne algılama altındaki protos klasöründeki proto dosyalarının her birine karşı bir python dosyası oluşturacaktır.

Çözüm

Nesne algılama, çeşitli gerçek zamanlı uygulamalarda yaygın olarak uygulanan bir tekniktir. Tekniğin makine öğrenimi veya derin öğrenme algoritmalarının uygulanmasıyla elde edilebileceğini öğrendik.

Ayrıca, bir API uygulamasıyla, yani TensorFlow ile, kullanıcıların python programlama konsepti hakkında önceden bilgi sahibi olmaları gerekir. Ancak o zaman TensorFlow API'sini kullanan nesne algılama yöntemleri düzgün bir şekilde anlaşılabilir. TensorFlow, makine öğrenimi için açık kaynaklı bir platformdur. Bu nedenle, TensorFlow'un çalışma mekanizmasını ve uygulamasını anlamak için makine öğrenimi kavramları hakkında bilgi edinmek daha iyidir.

Python programlamayı öğrenmek, bulut bilişim ile birlikte ML modellerini dağıtmak isteyen orta seviye bir profesyonel iseniz, upGrad tarafından sağlanan “ Machine Learning & Yapay Zekada Bilim Ustası” kursuna göz atabilirsiniz. IIIT Bangalore & LJMU tarafından ortaklaşa onaylanan kurs, hedeflerinizi uzman eğitimiyle uyumlu hale getirecek ve hayalinizdeki şirketlere girişiniz için hazırlanmanıza olanak sağlayacaktır. Tek ihtiyacınız olan bir lisans derecesine sahip olmak. upGrad tarafından verilen kursla ilgili herhangi bir sorunuz varsa yardım ekibimiz size geri dönüş yapmak için hazırdır.

Yapay Zeka Güdümlü Teknolojik Devrime Öncülük Edin

MAKİNE ÖĞRENİMİ VE YAPAY ZEKA YÖNETİCİ PG PROGRAMI
Şimdi Uygula