logo

Tensorflow İle Birlikte Windows 10'da Kendi Modelimizi Eğitme

avatarMUSTAFA COŞAR

clock27 Nisan 2020

view2433 Görüntülenme

5 Beğeni

Paylaş

Bu yazımda sizlere tensorflow ile birlikte kendi obje modelinizi nasıl oluşturacağınızı göstereceğim.

Tensorflow İle Birlikte Windows 10'da Kendi Modelimizi Eğitme

Kaynak Link:
https://github.com/maacofficial/tensorflow-train-object-detection-classiffier-tutorial#7-edit-label-map-and-configure-training-config







Video Link:
https://www.youtube.com/watch?v=ZuG-k__yFrc



Eğer destek olmak için yeni bir çeviri eklemek isterseniz istek oluşturabilirsiniz.


Kendi modelinizi Windows 10/8 ve 7 de eğitebilirsiniz. Bu proje Tensorflow 1.5 sürümü kullanılarak hazırlanmıştır. Eğer siz farklı bir sürümle yapmak isterseniz uyumluluk sorunundan dolayı hatalarla karşılaşabilirsiniz.

Ayrıca bu projenin nasıl yapıldığına dair bir video da çektim.

Gerekli Açıklamalar

Siz TensorFlow (GPU) yerine TensorFlow (CPU) kullanabilirsiniz. Bunu yapmak için "pip install --ignore-installed --upgrade tensorflow==1.5.0" komutu yerine "pip install --ignore-installed --upgrade tensorflow-gpu==1.5.0" komutunu çalıştırmanız gerekir.Aynı zamanda ekran kartınız için CUDA ve cuDNN driverlarını kurmanız gerekir.

Eğer eğitmek için GPU kullanıyorsanız,Nvidia ekran kartına sahip olmanız gerekir. Ayrıca grafik kartınız minimum gereksinimleri karşılamalıdır. TensorFlow minimum 3.5 hesaplama kapasitesine(CC) ihtiya. duymaktadır. Bütün Ekran Kartları İçin Hesaplama Kapasitesi Listesi

Eğer ekran kartınız orta seviyeyse, bu işlem 3 saat kadar alıcaktır. Ve burada TensorFlow sürümleriyle uyumlu CUDA versionları bulunmaktadır.

Adımlar


1.Anaconda Yükleme
İlk olarak,ücretsiz ve açık kaynaklı bir dağıtım olan Anaconda'yı bu linkten indirelim.

Adımları videodan takip edebilirsiniz.

2.TensorFlow Klasörünü Oluşturma
Eğer farklı bir TensorFlow kütüphanesiyle çalışmak istemiyorsanız, direk olarak bu projeyi indirip çıkartabilirsiniz. Bu linkten. Ve bir sonraki adıma geçelim.

2.1. C:/ dizininda "tensorflow1" adında klasör oluşturalım. Bu klasör bizim model,training ve object_detection klasörlerimizi barındırıcak. Kısacası bu klasör içinde çalışacağız.

2.2. Aşağıdaki linklerden sizin tensorflow sürümünüze uygun olan model dosyalarını indiriniz.Biz bu projede TensorFlow 1.5 sürümünü kullanacağız.

TensorFlow version
GitHub Models Repository
TF v1.4
https://github.com/tensorflow/models/tree/1f34fcafc1454e0d31ab4a6cc022102a54ac0f5b
TF v1.5
https://github.com/tensorflow/models/tree/d90d5280fea4a5303affc1e28af505d8292d84b8
TF v1.6
https://github.com/tensorflow/models/tree/4c05414826e87f3b8ef0534862748e4b7fcd1ec7
TF v1.7
https://github.com/tensorflow/models/tree/adfd5a3aca41638aa9fb297c5095f33d64446d8f
TF v1.8
https://github.com/tensorflow/models/tree/abd504235f3c2eed891571d62f0a424e54a2dabc
TF v1.9
https://github.com/tensorflow/models/tree/d530ac540b0103caa194b4824af353f1b073553b
TF v1.10
https://github.com/tensorflow/models/tree/b07b494e3514553633b132178b4c448f994d59df
TF v1.11
https://github.com/tensorflow/models/tree/23b5b4227dfa1b23d7c21f0dfaf0951b16671f43
TF v1.12
https://github.com/tensorflow/models/tree/r1.12.0
TF v1.13
https://github.com/tensorflow/models/tree/r1.13.0
Latest version
https://github.com/tensorflow/models

2.3. "C:/" dizininin içinde oluşturduğumuz "tensorflow1" klasörünün içine indirdiğimiz model dosyalarını çıkartalım ve çıkardığımız bu klasörü "models" olarak yeniden adlandıralım.

2.4. "Faster-RCNN-Inception-V2-COCO" modelini TensorFlow'un model zoo kısmından indirelim: link.

2.5. "faster_rcnn_inception_v2_coco_2018_01_28.tar.gz" isimli dosyayı "C:\tensorflow1\models\research\object_detection\" klasörünün içerisine çıkaralım.

2.6. "Edje Electronics repository" dosyalarını indirelim: link.

2.7. İndirdiğimiz "TensorFlow-Object-Detection-API.zip" isimli dosyayı "C:\tensorflow1\models\research\object_detection\" klasörüne çıkartalım.

2.8. Son olarak "object_detection" isimli klasör aşağıdaki resimdeki gibi gözükmelidir.




3. Anaconda Ortamını Oluşturma ve Kurma
3.1 Komut istemcisini yönetici olarak çalıştırın.

3.2 Daha sonra bu komutu çalıştırın: C:\>conda create -n tensorflow1 pip python=3.5

C:\>conda activate tensorflow1

3.3 TensorFlow 1.5 sürümünü yükleyelim: C:\>pip install --ignore-installed --upgrade tensorflow==1.5.0

Eğer TensorFlow GPU 1.5 sürümünü yükleyecekseniz: C:\>pip install --ignore-installed --upgrade tensorflow-gpu==1.5.0

3.5 Aşağıdaki komutları girerek gerekli paketleri yükleyelim;

C:\>conda install -c anaconda protobuf

C:\>pip install pillow lxml cython jupyter matplotlib pandas opencv-python

3.6 Çevre Değişkenlerini kurmak için:

C:\>set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1\models\research\slim
 

4. Protobufları derleyelim ve setup.py dosyasını çalıştıralım
Komut isteminde aşağıdaki komutu çalıştırarak "research" klasörüne gidin:C:\>cd C:\tensorflow1\models\research
Daha sonra devamındaki kodları çalıştırın:

protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto
(tensorflow1) C:\tensorflow1\models\research>python setup.py build
(tensorflow1) C:\tensorflow1\models\research>python setup.py install

5. Fotoğraf Toplama ve Resimleri Etiketleme
Resim çekmek için telefonunuzun kamerasını kullanabilirsiniz. Ama çektiğiniz fotoğrafların boyutunun 200KB ve çözünürlüklerinin ise 720x1280 değerlerinden düşük olmasına dikkat edin. Resimleri topladıktan sonra,resimlerin %20'sini "C:\tensorflow1\models\research\object_detection\images\test\" klasörüne ve %80'ini ise "C:\tensorflow1\models\research\object_detection\images\train\" klasörüne atın. Son olarak resimlerinizin çeşitli şekillerde çekildiğine dikkat edin.

Bu adımda ise resimleri etiketlemek için "LabelImg" aracını indireceğiz: Bu linkten.

6. Eğitim Verilerini Oluşturma
İlk olarak resimlerin xml verilerini csv dosyasına çevireceğiz. Bunu yapmak için:

(tensorflow1) C:\tensorflow1\models\research\object_detection>python xml_to_csv.py
Bundan sonra, generate_tfrecord.py dosyasını notepad ile düzenleyelim. Etiket haritasını kendi haritanızla değiştirin.

# TO-DO replace this with label map
def class_text_to_int(row_label):
if row_label == '200TL':
return 1
elif row_label == '5TL':
return 2
else:
None
TO:

# TO-DO replace this with label map
def class_text_to_int(row_label):
if row_label == 'cat':
return 1
elif row_label == 'dog':
return 2
elif row_label == 'bird':
return 3
elif row_label == 'person':
return 4
else:
None
Daha sonra,veri dosyalarını oluşturmak için "C:\tensorflow1\models\research\object_detection" klasörünün içerisinde aşağıdaki komutları çalıştırın:

python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record
python generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=images\test --output_path=test.record

7. Etiket haritasını ve eğitme ayarlarını düzenleme
"C:\tensorflow1\models\research\object_detection\training\labelmap.pbtxt" dosyasını notepad ile düzenleyin.

item {
id: 1
name: '200TL'
}

item {
id: 2
name: '5TL'
}

To:

item {
id: 1
name: 'cat'
}

item {
id: 2
name: 'dog'
}
item {
id: 3
name: 'bird'
}
item {
id: 4
name: 'person'
}

Bundan sonra "C:\tensorflow1\models\research\object_detection\training\faster_rcnn_inception_v2_pets.config" dosyasını notepad ile düzenleyin.

a. Satır 9 - num_classes değerini kameraya algılatmak istediğiniz nesne sayısı ile değiştirin.Örneğin; cat,dog,bird and person "num_classes:4"

b. Satır 110 - fine_tune_checkpoint değiştirin:


fine_tune_checkpoint: "C:/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
 

c. Satır 126-128 - train_input_reader bölümündeki bazı değişkenleri değiştirin:


train_input_reader: {
tf_record_input_reader {
input_path: "C:/tensorflow1/models/research/object_detection/train.record"
}
label_map_path: "C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
}

 

d. Satır 140-142 - eval_input_reader bölümündeki bazı değişkenleri değiştirin:


tf_record_input_reader {
input_path: "C:/tensorflow1/models/research/object_detection/test.record"
}
label_map_path: "C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
shuffle: false
num_readers: 1
}

 

e. Satır 132 - num_examples değerini "C:\tensorflow1\models\research\object_detection\images\test" klasörünün içindeki resim sayısıyla değiştirin: num_examples: 89

f. Son olarak dosyalarınızdaki değişiklikleri kaydedin ve çıkın.

8. train.py dosyasını çalıştırma
Eğer TensorFlow'un daha yeni bir sürümünü kullanıyorsanız ,train.py dosyası C:\tensorflow1\models\research\object_detection\legacy" klasörünün içinde bulunur. Bu dosyayı object_detection klasörüne kopyalayabilirsiniz.

İşte en aksiyonlu an! train.pydosyasını çalıştıralım. Belirtilen komutu "C:\tensorflow1\models\research\object_detection" klasörünün içinde çalıştırın:

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

Eğitim başladığında aşağıdaki resimdeki gibi gözükür:




9. Modelimizi çıkartma
Eğitim işlemi tamamlandığında,en son model dosyamızı oluşturmalıyız(.pb).Aşağıdaki komutta "XXXX" değerini "C:\tensorflow1\models\research\object_detection\training" klasöründeki en büyük sayı ile değiştirin. Daha sonra belirtilen komutu "C:\tensorflow1\models\research\object_detection" klasörünün içinde çalıştırın:

python export_inference_graph.py --input_type image_tensor --pipeline_config_path training/faster_rcnn_inception_v2_pets.config --trained_checkpoint_prefix training/model.ckpt-XXXX --output_directory inference_graph

Oluşturulan model dosyası "C:\tensorflow1\models\research\object_detection\inference_graph" klasörünün içinde bulunmaktadır.

10. Kendi modelimizi kullanma
Eğer WebCam ile nesneleri tanımak istiyorsanız "C:\tensorflow1\models\research\object_detection" klasörünün içinde yer alan "Object_detection_webcam.py" dosyasını çalıştırın."Object_detection_webcam.py" dosyasını çalıştırmadan önce ,"NUM_CLASSES = 2" bölümünü düzenleyin.Son olarak aşağıdaki komutu çalıştırın:

python Object_detection_webcam.py

Hayalleriniz gerçekleşinceye kadar hayal etmeye devam edin!!!

Etiketler

tensorflow object detection

traing own object model

tensorflow

tensorflow nesne algılama

obje algılama

kendi modelimizi eğitme

tensorflow nesne tanıma