Özel Veri Kümesi ile TensorFlow Object Detection API Kullanarak Faster R-CNN Uygulaması

Dilara Özdemir
3 min readAug 3, 2021
Source: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/examples/images/sheep_06.jpg

📌 Anaconda Ortamı ve Gereksinimlerinin Oluşturulması

📌 Dizinleri Ayarlama

Repo’yu klonladıktan sonra, requirements.txt dosyası içinden yükleyin.

Adım 1

Tensorflow model dosyasını indirin. Yapacağımız bütün işlemler model dosyası içerisinde olacak. Bu repoyu .zip olarak yükleyin ve çalışacağınız dizine açın.

NOT 📝 Zipten çıkardığınız dosyanın adını models yapın.

Adım 2

Repoda, fast_rcnn_inception_v2_coco_2018_01_28 dosyasını models/research/object_detection dizinine taşıyın.

NOT 📝 object_detection dizisindeki eksik dosyaları kontrol edebilmek için object_detection.rar ‘a bakabilirsiniz.

Adım 3

Burada iki yolunuz bulunmaktadır.

📣 1. Yol: Windows üzerinden sistem ortam değişkenlerine giderek aşağıda görüldüğü gibi sistem ortam değişkenlerinizi ayarlayabilirsiniz.

📣 2. Yol: Aşağıdaki kodu komut istemine yazarak ortam değişkeninizi ayarlayabilirsiniz.

⚠️ Dikkat! ⚠️ Bu yöntemi ortamınızı her açtığınızda tekrarlamak zorunda kalabilirsiniz!

Adım 4

model/research dizinine giderek aşağıdaki komutu çalıştırın.

setup.py dosyasını model/research dizininin altına taşıyın ve aynı dizinin altındaki aşağıdaki komutları kullanarak setup.py dosyasını çalıştırın.

⚠️ Dikkat! ⚠️ Yeni bir proto eklediğinizde aşağıdaki komutu tekrardan çalıştırmanız gerekmektedir.

📌 Veri Kümesini Hazırlama

Kullanılacak veri seti PASCAL VOC [1] formatında olmalı ve her bir görselin kendine ait bir etiket dosyası (.xml uzantılı) bulunmalıdır.

Adım 1

Test ve eğitim verisini models/research/object_detection/images dizinine taşımalısınız.

Adım 2

Aşağıdaki kodu models/research/object_detection dizininde çalıştırmalısınız. Kod çalıştırıldıktan sonra images klasörünün içerisinde test_labels.csv and train_labels.csv dosyaları oluşacaktır. Dizininizi kontrol edebilirsiniz

Adım 3

Verinizde bulunan sınıfları aşağıda görüldüğü gibi generate_tfrecord.py dosyasına yazmalısınız.

Aşağıdaki kodu models/research/object_detection dizininde çalıştırmalısınız.

Adım 4 : labelmap.pbtxt oluşturma

  • Bu adımda, faster_rcnn_inception_v2_pets.config ve graph.pbtxt dosyalarını models/research/object_detection/training dizinine taşıyın.
  • labelmap.pbtxt dosyasını models/research/object_detection/training dizininin içerisine el ile oluşturmalısınız.

⚠️ labelmap dosyasının uzantısı .pbtxt olmalıdır.

  • Kullanılacak sınıfları ve id’leri aşağıda görüldüğü gibi labelmap.pbtxt içerisine yazmalısınız.

NOT 📝 id = dönüş değerleri, name = generate_tfrecord.py içerisinde belirtilen sınıf isimleri

NOT 📝 Eğitimden önce, faster_rcnn_inception_v2_pets.config, graph.pbtxt ve labelmap.pbtxt dosyaları training models/research/object_detection/training dizininde bulunmalıdır.

Adım 5

models/research/object_detection/training dizininde bulunan faster_rcnn_inception_v2_pets.config dosyası içerisindeki satırları aşağıdaki şekilde değiştirmelisiniz.

  • 9. Satır : # Sınıf sayısını yazınız
  • 106. Satır: fine_tune_checkpoint karşısına kendi dizininizi yazmalısınız.
  • 123. Satır: train.record dizinini input_path olarak yazmalısınız.
  • 125. Satır: labelmap.pbtxt dosyasının yolunu yazmalısınız.
  • 130. Satır: models/research/images/test dosyası içerisinde bulunan test görsel sayısını yazmalısınız.
  • 135. Satır: test.record dizinini input_path olarak yazmalısınız.
  • 137. Satır: labelmap.pbtxt dosyasının yolunu yazmalısınız.

📌Eğitim

⚠️ Eğitimden öcece models/research/object_detection/inference_graph dosyası boş olmalıdır.

Eğitime başlamak için aşağıdaki kodu models/research/object_detection dizininde çalıştırmalısınız.

Eğitim başladıktan sonra Şekil 1'deki ekrandan loss ve adımlar takip edilebilir.

Şekil 1. Model eğitimi.

📌Test

Inference Graph

⚠️ Aşağıdaki komutun XXXX kısmına inference_graph içerisinde oluşan son model.ckpt modelinin numarasını yazmalısınız.

Örnek: Yaptığım eğitim sonrasında oluşan modelimin numarası Şekil 2'deki gibi “0000” idi.

Şekil 2. Eğitimden sonra inference graph dizini.

Tespit Aşaması

Adım 1

Komut isteminize IDLE yazın ve aşağıdaki gibi bir ekran göreceksiniz.

Adım 2

Idle’ın sol üst köşesinden Choose File/Open… seçeneğini seçin. Açılan ekrandan models/research/object_detection dizinindeki Object_detection_image.py dosyasını seçin.

Adım 3

Burada iki seçeneğiniz bulunmaktadır. Test klasörünün yolunu object_detection_image.py dosyasında ayarlayabilir veya test etmek istediğiniz görseli models/research/object_detection dizinine taşıyabilirsiniz.

İpucu 🗝️ Burada tespit yapılmak istenilen görüntüler models /research/object_detection dizinine taşınarak işlemler gerçekleştirilir.

Nesne tespitinin tanımlayabileceği sınıf sayısını yazın.

Adım 4

Modülü çalıştırmak (Run Module) için F5'e basın.

NOT 📝 Doğruluk performans metriğinin görüntülenmesiyle ilgili bir sorun yaşıyorsanız, Tensorflow Model dosyasının doğru sürümüne ulaşmanız gerekir.

Referanslar

[1] M. Everingham, L. Van Gool, C. K. I. Williams, J. Winn, and A. Zisserman, “The PASCAL Visual Object Classes Challenge 2007 (VOC2007) Results,” 2007.

You can reach the English language and the original of the article from the link below;

--

--