Skip to content
­čĽÁ´ŞĆÔÇŹÔÖé´ŞĆ Tensorflow Object Detection API ile Obje Bulma ve kullan─▒m─▒ i├žin gerekli talimatlar─▒m
Python Jupyter Notebook Batchfile
Branch: master
Clone or download
Fetching latest commitÔÇŽ
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/assets
addons
docs
scripts
workspace/example_detection
.gitignore
LICENSE
README.md

README.md

­čĽÁ´ŞĆÔÇŹÔÖé´ŞĆ YTensorflow Object Detection API

GitHub last commit GitHub made_with_Markdown GitHub repo size

  • Copyright ┬ę ~ Yunus Emre AK






PDF Yap─▒s─▒ Hakk─▒nda Bilgilendirme


─░├žerikler

Temel Bilgileri

  • PDF olarak g├Âr├╝nt├╝lemek i├žin buraya bakabilrisin.
  • Python dili ├╝zerinde makine ├Â─črenimi gibi i┼člemler i├žin Google taraf─▒ndan sunulan k├╝t├╝phanedir.
  • Yabanc─▒ Kaynaklar: ­čô║ ­čôä

Hangi ─░┼čletim Sistemi Daha iyi

Linux daha iyidir ­čÉž

Kaynak i├žin buraya bakabilrisin.

Tensorflow Kurulumu

  • Tensorflow anaconda ├╝zerinden daha sa─čl─▒kl─▒, ta┼č─▒nabilir ve verimli ├žal─▒┼čabilmekte
  • Anacondan─▒n sanal ortamlar─▒, paketlerin ├žak─▒┼čmas─▒n─▒ engelleyecektir
  • Anaconda'n─▒n tensorflowdaki avantaj─▒ i├žin buraya g├Âz atabilirsin.

Anaconda Kurulumu

  • Anaconda kurulumu i├žin buraya t─▒klayarak onun i├žin haz─▒rlad─▒─č─▒m d├Âk├╝mana eri┼čebilirsin.

Tensorflow CPU veya GPU Kurulumu

  • Bu kurulum CPU kurulumu olarak da ge├žmekte
  • GPU kurulumu CPU'ya nazaran olduk├ža h─▒zl─▒ e─čitim se├žene─či sa─člar
  • GPU kurulumu i├žin gereksinimleri sa─čl─▒yorsan─▒z GPU kurulumu (tensorflow-gpu) yapman─▒z tavsiye edilir

Sanal Ortam Olu┼čturma ve ├ťzerine Kurma

conda create -n tensorflow tensorflow # CPU kurulumu
conda create -n tensorflow tensorflow-gpu # GPU kurulumu

Kurulumu Test Etme

Alttaki komnut ile 'Hello, TensorFlow!' ├ž─▒kt─▒s─▒n alman─▒z gerekmektedir.

python -c
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

Tensorflow Alg─▒lama Modellerinin Kurulumu

  • Alg─▒lama modelleri tabloma eri┼čmek i├žin buraya t─▒klayabilirsin
    • Resmi sitesi i├žin buraya bakabilirsin
  • Video ├╝zerinden a├ž─▒klama i├žin buraya bakabilirsin

Resmi a├ž─▒klamalar models/research/object_detection/g3doc dizinindedir.

Gerekli Paketlerin Kurulumlar─▒

Tensorflow modellerini kullanabilmek i├žin alttaki kurulumlara da ihtiya├ž olabilmekte:

conda install opencv pillow matplotlib pandas jupyter

Mod├╝l bulunamamas─▒ gibi durumlarda lxml, protobuf paketlerini y├╝klemeyi deneyebilirsin.

Linux i├žin OpenCv Kurulumu

GTK ve FFMPEG hatas─▒n─▒ engellemek i├žin pip ile kurulum yap─▒n

pip install opencv-contrib-python

Script Dosyalar─▒ i├žin Gerekli Mod├╝ller

pip install pynput # detect_from_desktop

Tensorflow Models ─░ndirilmesi

Alttaki talimatler ve komutlar yard─▒m─▒yla tensorflow modellerini kurun:

  • Modelleri indirmek i├žin buraya t─▒klayabilirsin
  • ─░stersen buraya t─▒klayarak github linkine eri┼čebilirsin
  • ─░ndirdi─činiz dosyan─▒n i├žindekileri models dizinine koyman─▒z gerekmektedir.

Bu ad─▒ndan sonras─▒ models/research/ dizininde ger├žekle┼čtirilmelidir.

powershell.exe Expand-Archive models-master.zip .
ren models-master models
move models %TENSORFLOW%
cd %TENSORFLOW%\models\research\

Models Klas├Âr├╝ Yap─▒s─▒

+ models
    + offical
    + research
    + sample
    ...

Protobuflarlar─▒n ─░┼členmesi

Protobuf dosyalar─▒ (.proto uzant─▒l─▒ olan dosyalar) python kodlan─▒ olu┼čturmak i├žin kullan─▒lan dosyalard─▒r. TensorFlow/models/research/ dizininde

Windows:

for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.

Linux:

protoc object_detection/protos/*.proto --python_out=.

Protobuflarlar─▒n i┼členmesiyle .py uzant─▒l─▒ dosyalar olu┼čacakt─▒r

Obje Alg─▒lama K├╝t├╝phanelerinin Derlenmesi ve Y├╝klenmesi

# TensorFlow/models/research/ dizininde
python setup.py build
python setup.py install

Gerekli Ortam De─či┼čkenlerinin Tan─▒mlanmas─▒

E─čer daha ├Ânceden tan─▒ml─▒ PYTHONPATH ortam de─či┼čkeniniz yoksa ilk olan, varsa ikinci olan komutu kullan─▒n.

Bu ortam de─či┼čkenlerinin terminalin her a├ž─▒l─▒┼č─▒nda yaz─▒lmas─▒ gerekmetedir.

set PYTHONPATH=%TENSORFLOW%\models\research;%TENSORFLOW%\models\research\slim;%TENSORFLOW%\models\research\object_detection
set PYTHONPATH=%PYTHONPATH%;%TENSORFLOW%\models\research;%TENSORFLOW%\models\research\slim;%TENSORFLOW%\models\research\object_detection

Anaconda Ortam─▒ i├žin Otomatik Tan─▒mlama

  • Her conda activate <ortam_ismi> komutu yaz─▒ld─▒─č─▒nda ortamlar dahil edilir
  • Her conda deactivate yaz─▒ld─▒─č─▒nda ortamlar kald─▒r─▒l─▒r
Windows i├žin Otomatik Tan─▒mlama
cd <conda_ortam─▒_yolu>
mkdir .\etc\conda\activate.d
echo set PYTHONPATH=%TENSORFLOW%\models\research;%TENSORFLOW%\models\research\slim;%TENSORFLOW%\models\research\object_detection > .\etc\conda\activate.d\env_vars.bat
Linux i├žin Otomatik Tan─▒mlama

Resmi kaynak i├žin buraya bakabilirsin.

cd <conda_ortam─▒_yolu>
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
echo export PYTHONPATH=${PYTHONPATH}:${TENSORFLOW}/models/research:${TENSORFLOW}/models/research/slim:${TENSORFLOW}/models/research/object_detection > etc/conda/activate.d/env_vars.sh
echo unset PYTHONPATH > etc/conda/deactivate.d/env_vars.sh
  • <conda_ortam─▒_yolu> Conda ortam─▒n─▒n kuruldu─ču yol
    • ├ľrn: %USERPROFILE%\Anaconda3\envs\tensorflow-cpu

Modellerin Kurulumunu Test Etme

Jupyter notebook ile API'lar─▒ eval etmemzi gerekmekte.

cd object_detection
jupyter notebook

Jupyter notebook hakk─▒nda bilgi sahibi de─čilsen buraya t─▒klayarak ne yapman gerekti─čini ├Â─črenebilirsin.

LabelImg Kurulumu

  • LabelImg tensorflow modelleri i├žin etiketleme ama├žl─▒ kullan─▒lmaktad─▒r
  • Derlenmi┼č s├╝r├╝m├╝n├╝ indirmek i├žin buraya t─▒klayabilirsin

─░ndirilen dosyay─▒ %TENSORFLOW%\addons dizinine atman─▒z daha verimli bir ├žal─▒┼čma sa─člayacakt─▒r.

LabelImg Kaynak Kodlar─▒n─▒ Derleme

LabelImg i├žin Sanal Ortam Olu┼čturma

Tensorflow ortam─▒n─▒n alt paketlerini etkilememsi i├žin ek bir sanal ortamda kurulum sa─člamal─▒y─▒z.

conda create -n labelImg pyqt # QT grafik k├╝t├╝phanesi
conda activate labelImg
conda install -c anaconda lxml

LabelImg Paketlerini Kurma ve Derleme

Paketlerin kurulumu i├žin alttaki talimatlar─▒ s─▒rayla uygulay─▒n:

  • LabelImg dosyalar─▒n─▒ indirmek i├žin buraya t─▒klay─▒n
  • Di─čer i┼člemler i├žin indirdi─činiz dosya dizininde cmd a├ž─▒p alttaki komutlar─▒ yaz─▒n
# labelImg-master.zip dizininde
powershell.exe Expand-Archive labelImg-master.zip .
ren labelImg-master labelImg
mkdir %TENSORFLOW%\addons
move labelImg %TENSORFLOW%\addons
cd %TENSORFLOW%\addons\labelImg
pyrcc5 -o resources.py resources.qrc # QT grafiklerinin olu┼čturulmas─▒

'pyrcc5' is not recognized as an internal or external command hatas─▒ gelirse, y├╝kledi─činiz pyqt s├╝r├╝m├╝ne g├Âre komutu kullan─▒n (pyrcc<pyqt_s├╝r├╝m├╝_ilk_basama─č─▒>)

LabelImg Kurulumunu Test Etme

conda activate tensorflow-cpu
cd %TENSORFLOW%\addons\labelImg
python labelImg.py
# python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

Dizin Yap─▒s─▒n─▒ Olu┼čturma

Tensorflow Dizininizi Ge├žici Ortam De─či┼čkenlerine Ekleme

Alttaki komut yard─▒m─▒yla a├ž─▒k olan cmd ekran─▒na ortam de─či┼čkeni tan─▒mlayabilirsiniz.

set TENSORFLOW=<dizin_yolu>
  • <dizin_yolu> Tensorflow'u kurmak istedi─činiz dizin
    • ├ľrn: "C:\Tensorflow"

Tensorflow Dizininizi Kal─▒c─▒ Olarak Ortam De─či┼čkenlerine Ekleme

  • Bilgisayar─▒ma sa─č t─▒klay─▒n Ayarlar k─▒sm─▒na girin
  • Sol alanda Geli┼čmi┼č Sistem Ayarlar─▒'na t─▒klay─▒n
  • A├ž─▒lan ekranda Ortam De─či┼čkenleri butonuna t─▒klay─▒n
  • ├ťst k─▒s─▒mdaki kullan─▒c─▒ de─či┼čkenleri alan─▒nda Yeni butonuna t─▒klay─▒n
  • De─či┼čken ismine: Tensorflow De─čerine: 'dizin yolunuzu' yaz─▒n

Temel Klas├Ârlerin Olu┼čturulmas─▒

─░lerideki yap─▒ i├žin bu dizinin yolu %TENSORFLOW% olarak ifade edilecektir.

Proje yap─▒s─▒ tavsiye edilen dizin yap─▒s─▒na ├Ârnek olacak ┼čekilde olu┼čturulmu┼čtur.

D├╝zg├╝n ve verimli ├žal─▒┼čmak i├žin buradaki yap─▒y─▒ kullanman─▒z ├Ânerilir.

mkdir %TENSORFLOW%\workspace\example_detection
mkdir %TENSORFLOW%\workspace\example_detection\data
mkdir %TENSORFLOW%\workspace\example_detection\images\train
mkdir %TENSORFLOW%\workspace\example_detection\images\eval
mkdir %TENSORFLOW%\workspace\example_detection\models

Temel Dizin Yap─▒s─▒

+ addons
+ docs
+ models
+ scripts
+ workspace
    + example_detection
        + data
        + models
            + <model_ismi>
                + eval
                + train
                - *.config
                ...
            + <model_ismi>
                + eval
                + train
                - *.config
                ...
            ...
        ...
    + example2_detection
        + data
        + models
            + <model_ismi>
                + eval
                + train
                - *.config
                ...
            + <model_ismi>
                + eval
                + train
                - *.config
                ...
            ...
        ...
    ...
Dizin A├ž─▒klama
addons LabelImg vs.
docs D├Âk├╝manlar
models Tensorflow Models dosyas─▒
scripts Kullanaca─č─▒n─▒z ortak kod par├žalar─▒
workspace ├çal─▒┼čma Alan─▒

├çal─▒┼čma Alan─▒ Yap─▒s─▒

+ workspace
    + example_detection
        + data
        + models
        ...
    + example2_detection
        + data
        + models
        ...
    ...
Dizin A├ž─▒klama
data E─čitime kat─▒lacak verileri (eval.record, train.record, label_map) i├žeririr.
model E─čitilecek modellerin dosyalar─▒n─▒ i├žerir.

Data Dizini Yap─▒s─▒

+ example_detection
    + data
        - label_map.pbtxt
        - eval.record
        - train.record
    + models
    ...
...
Dosya A├ž─▒klama
label_map.pbtxt Etiket haritas─▒ dosyas─▒
eval.record Test i├žin kullan─▒lacak tensorflow kay─▒tlar─▒ (TF record)
train.record E─čitim i├žin kullan─▒lacak tensorflow kay─▒tlar─▒ (TF record)

Models Dizini Yap─▒s─▒

+ example_detection
    + data
    + models
        + <model_ismi>
            + eval
            + train
            - *.config
            ...
        + <model_ismi>
            + eval
            + train
            - *.config
            ...
        ...
    ...
...

Her bir model i├žin ayr─▒ dizinler olu┼čturulur.

─░sim Tipi A├ž─▒klama
eval Dizin Test sonu├žlar─▒ burada tutulur.
train Dizin E─čitim ├ž─▒kt─▒lar─▒ burada tutulur
.config Dosya Yap─▒land─▒rma dosyas─▒

├ľzelle┼čtirilmi┼č Tensorflow Obje Alg─▒lay─▒c─▒s─▒ E─čitme

├ľzelle┼čtirilmi┼č model e─čitmek i├žin alttakilerin yap─▒lm─▒┼č olmas─▒ gerekmektedir:

Resim Etiketleme ─░┼člemi

Etiketleme i┼člemini labelImg ├╝zerinden yapmaktay─▒z.

Derlenmi┼č LabelImg

─░ndirdi─činiz dizindeki labelimg.exe dosyas─▒n─▒ ├žal─▒┼čt─▒rman─▒z yeterlidir.

Python ile LabelImg

─░┼člemleri Anconda Prompt ile i┼člemler yapmal─▒y─▒z.

conda activate labelImg
cd %TENSORFLOW%\addons\labelImg
python labelImg.py ..\..\workspace\example_detection\images # ├ž─▒kt─▒lar─▒ hedefleme

LabelImg kullan─▒m─▒ i├žin bu videoya bakabilirsin.

Etiket Yollar─▒n─▒ veya Adlar─▒n─▒ D├╝zenleme

XML ve resim dosyalar─▒n─▒ ba┼čka bir yolda olu┼čturduyasan alttaki script yard─▒m─▒yla d├╝zeltebilirsin

  • Script dosyas─▒n─▒ buraya t─▒klayarak indirmeli ve gerekli dizine alttaki komutla koymal─▒y─▒z
  • Komutlar─▒ Anaconda Prompt ├╝zerinden tensorflow ortam─▒n─▒ aktif ederek uygulamay─▒ unutmay─▒n.
# Train verilerini yeniden adland─▒rma ve d├╝zeltme
python xml_path_regulator.py -i %TENSORFLOW%\workspace\example_detection\images\train -p train

# Test verilerini yeniden adland─▒rma ve d├╝zeltme
python xml_path_regulator.py -i %TENSORFLOW%\workspace\example_detection\images\eval -p eval

Etiket Haritas─▒ Olu┼čturma

  • Alttaki komutla a├ž─▒lan dizinde .pbtxt uzant─▒l─▒ etiket haritas─▒ dosyas─▒s─▒ olu┼čturun
  • ├ľrnek dosya yap─▒s─▒ komutlar─▒n alt─▒ndad─▒r.
cd %TENSORFLOW%\workspace\example_detection\annotations
start .
item {
  id: 1
  name: 'cat'
}
item {
  id: 2
  name: 'dog'
}
  • cat ve dog etiket isimleridir

Tensorflow Kay─▒tlar─▒ Olu┼čturma

  • Resim verileri toplan─▒r veya ├žekilir.
  • Toplanan resimler labelimg yard─▒m─▒yla etiketlenir ve .xml uzant─▒l─▒ dosyalar─▒ olu┼čturulur.
  • images dizinine resimler ve onlara ait xml dosyalar─▒ %80'i train %20'i eval olacak ┼čekilde klas├Ârlere ayr─▒larak yerle┼čtirilir.
  • scripts/preprocessing dizindeki xml_path_regulator.py scripti arac─▒l─▒─č─▒yla xml ve resimlerde yol sorunlar─▒ d├╝zeltilir, veriler yeniden adland─▒r─▒l─▒r.
  • scripts/preprocessing dizindeki xml_to_csv.py scripti arac─▒l─▒─č─▒yla veriler .csv uzant─▒l─▒ tablosal bir dosyaya d├Ân├╝┼čt├╝r├╝l├╝r.
  • Olu┼čturulan csv dosyas─▒nda resimlerin etiketlerine g├Âre say─▒lar─▒ tablo olarak g├Âsterilir. (Excel yard─▒m─▒yla)
  • Verilerde denge durumunun (her veriden yakla┼č─▒k olarak ayn─▒ say─▒da varsa) kontrol├╝ yap─▒l─▒r.
  • Her ├že┼čit veri i├žin bir id belirtilecek ┼čekilde label_map.pbtxt adl─▒ etiket haritas─▒ olu┼čturulur
  • Olu┼čturulan csv, etiket haritas─▒ ve resim verileri scripts/preprocessing dizindeki generate_tfrecord.py scripti arac─▒l─▒─č─▒yla veriler .record uzant─▒l─▒ kay─▒tlara d├Ân├╝┼čt├╝r├╝l├╝r.
  • Se├žilen modele ├Âzg├╝ yap─▒land─▒rma dosyas─▒ indirilir.
  • Yap─▒land─▒rma dosyas─▒ olan *.config dosyas─▒ndaki PATH_TO_CONFIGURED olarak i┼čaretlenen alanlar, num_classes, num_examples ve batch_size de─čerleri g├╝ncellenir.
    • num_examples eval dizindeki resim say─▒s─▒d─▒r (toplam class say─▒s─▒ de─čil)

Resimlerdeki Hatalar─▒ Bulma

Resimlerde hata oldu─ču zaman e─čitim a┼čamas─▒nda tensorflow modeli ├žal─▒┼čma hatas─▒ vermektedir. Resimleri kontrol etmek i├žin buradaki scripti alttaki komutlarla kullanabilirsiniz.

python scripts\preprocessing\check_images.py -i workspace\example_detection\images\train

python scripts\preprocessing\check_images.py -i workspace\example_detection\images\eval

Verileri Yeniden Adland─▒rma ve XML Hatalar─▒n─▒ D├╝zeltme

LabelImg ile etiketledi─činiz resimleri farkl─▒ bir dizine ta┼č─▒man─▒z durumunda XML dosyalar─▒ndaki yollar uyu┼čmayacakt─▒r. XML dosya yollar─▒n─▒ d├╝zeltmek, etiketsiz resimleri g├Âr├╝nt├╝lemek i├žin buradaki script dosyam─▒ alttaki komutlar ile kullanabilirsiniz.

python scripts\preprocessing\xml_path_regulator.py -i %TENSORFLOW%\workspace\example_detection\images\train  -p train

python scripts\preprocessing\xml_path_regulator.py -i %TENSORFLOW%\workspace\example_detection\images\eval  -p eval

Etiketlenmemi┼č Resimleri Bulma

Etiketlenmemi┼č resimleri buradaki script dosyas─▒ ile alttaki komutlar ile kullanabilirsiniz.

E─čer XML scriptini kulland─▒ysan─▒z bu kontrol├╝ yapman─▒za gerek yoktur, XML scripti bunu zaten yapmaktad─▒r.

python scripts\preprocessing\find_unlabeled_imgs.py -i %TENSORFLOW%\workspace\example_detection\images\train

python scripts\preprocessing\find_unlabeled_imgs.py -i %TENSORFLOW%\workspace\example_detection\images\eval

XML'i CSV'ye Çevirme

XML dosyalar─▒n─▒ CSV dosyas─▒nda toparlamak i├žin buradaki scripti alttaki komutlar ile kullanabilirsin.

Komutlar─▒ Anaconda Prompt ├╝zerinden tensorflow ortam─▒n─▒ aktif ederek uygulamay─▒ unutmay─▒n.

# Create train data:
python scripts\preprocessing\xml_to_csv.py -i %TENSORFLOW%\workspace\example_detection\images\train -o %TENSORFLOW%\workspace\example_detection\images\train_labels.csv

# Create eval data:
python scripts\preprocessing\xml_to_csv.py -i %TENSORFLOW%\workspace\example_detection\images\eval -o %TENSORFLOW%\workspace\example_detection\images\test_labels.csv

CSV'lerden Resim Bilgilerini Analiz Etme

Her bir etiketten ka├ž tane oldu─čunu anlamak i├žin csv dosyalar─▒n─▒ a├ž─▒p alltaki y├Ântemi uygulay─▒n.

  • class h├╝cresiinin bir alt─▒ndaki h├╝creyi se├žin
  • ctrl + shift + a┼ča─č─▒ ok ile t├╝m s─▒n─▒f verilerini se├žin
  • Sa─č alttaki butona t─▒klay─▒n
  • Tables sekmesine gelin
  • A├ž─▒lan sekmede Pivot Table butonuna t─▒klay─▒n
  • Tablo'dan etiketlenen verileri kontrol edin
  • Fazladan etiketlenmi┼č verilerin ismini bulup, filename, width vs. verilerin yaz─▒ld─▒─č─▒ alanda CTRL + F komutu ile arat─▒p, uygun dosya ismini ve xml dosyas─▒n─▒ silin

csv csv csv csv

CSV'yi Record'a Çevirme

CSV dosyalar─▒n─▒ TF kay─▒tlar─▒na ├ževirmek i├žin buradaki scripti alttaki komutlar ile kullanabilirsin.

Komutlar─▒ Anaconda Prompt ├╝zerinden tensorflow ortam─▒n─▒ aktif ederek uygulamay─▒ unutmay─▒n.

python generate_tfrecord.py --label_map=%TENSORFLOW%\workspace\example_detection\data\label_map.pbtxt --csv_input=%TENSORFLOW%\workspace\example_detection\images\train_labels.csv --img_path=%TENSORFLOW%\workspace\example_detection\images\train --output_path=%TENSORFLOW%\workspace\example_detection\data\train.record

python generate_tfrecord.py --label_map=%TENSORFLOW%\workspace\example_detection\data\label_map.pbtxt --csv_input=%TENSORFLOW%\workspace\example_detection\images\test_labels.csv --img_path=%TENSORFLOW%\workspace\example_detection\images\eval --output_path=%TENSORFLOW%\workspace\example_detection\data\eval.record

Ba─člant─▒lar─▒ (pipeline) Yap─▒land─▒rma

  • Tensorflow'un resmi a├ž─▒klamas─▒ i├žin buraya t─▒klayabilirisin

Modellin ─░ndirilmesi ve Gerekli Yere Ta┼č─▒nmas─▒

  • Tensorflow ├Ânceden e─čitilmi┼č modelleri indirmek i├žin buraya t─▒klayabilrisin
  • .tar.gz uzant─▒l─▒ olaca─č─▒ i├žin winrar ya da 7zip gibi ek uygulamalarla buraya ├ž─▒kart demen gerekmekte
    • Klas├Âr'e ├ž─▒kart de─čil buraya ├ž─▒kart diyeceksiniz.

Klas├Âr i├žinde ayn─▒ isimde ba┼čka klas├Âr olmas─▒n

# Modelin ├ž─▒kart─▒ld─▒─č─▒ dizinde
cd <model_ismi>
move * %TENSORFLOW%\workspace\example_detection\pre_trained_model
move saved_model %TENSORFLOW%\workspace\example_detection\pre_trained_model
cd %TENSORFLOW%\workspace\example_detection\pre_trained_model
  • <model_ismi> Se├žip, indirdi─činiz .tar.gz uzant─▒l─▒ dosyan─▒n ad─▒
    • TAB tu┼ču ile dizindeki dosya adlar─▒n─▒ tamamlayabilirsiniz
    • *.tar.gz uzant─▒s─▒ yaz─▒lmayacak
    • ├ľrn: ssd_inception_v2_coco_2018_01_28
    • ├ľrn: ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync_2018_07_03

Modellin Yap─▒land─▒rma Dosyalar─▒

Se├žti─činiz modelin *.config dosyas─▒n─▒ example_detection/training klas├Âr├╝ alt─▒na kopyalaman─▒z gerekmekte.

mkdir %TENSORFLOW%\workspace\example_detection\training

copy %TENSORFLOW%\models\research\object_detection\samples\configs\<model_ismi>.config %TENSORFLOW%\workspace\example_detection\training
  • <model_ismi> Se├žip, indirdi─činiz .tar.gz uzant─▒l─▒ dosyan─▒n ad─▒
    • TAB tu┼ču ile dizindeki dosya adlar─▒n─▒ tamamlayabilirsiniz
    • *.tar.gz uzant─▒s─▒ yaz─▒lmayacak
    • Tarih son ekini i├žermemeli
      • *_2018_07_03.tar.gz ise *.tar.gz olarak yaz─▒lmal─▒
    • ├ľrn: ssd_inception_v2
    • ├ľrn: ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync

Modelin Yap─▒land─▒rma Dosyas─▒n─▒ D├╝zenleme

Yap─▒land─▒rma ├Ârnek dosyas─▒ i├žin buraya bakabilirsin.

D├╝zenlenecek Sat─▒r A├ž─▒klama ├ľrnek
num_classes Etiket t├╝r├╝ say─▒s─▒ 2
batch_size Toplu i┼čleme boyutu 24
num_steps Ad─▒m say─▒s─▒ 2000
fine_tune_checkpoint E─čitilmi┼č modelin yolu "./pre_trained_model/model.ckpt"
label_map_path Etiket haritas─▒ yolu "./annotations/train.record"
input_path Train dosyas─▒ yolu "./annotations/train.record"
input_path Test dosyas─▒ yolu "./annotations/eval.record"

Modeli E─čitme

Modeli e─čitmek i├žin train.py script dosyas─▒n─▒ kullanaca─č─▒z.

Modeli ├Ânerilen dosya olan model_main.py ile e─čitmek i├žin buraya bakmal─▒s─▒n.

E─čitim Scriptlerini ├çal─▒┼čma Alan─▒na Kopyalama

├çal─▒┼čma ortam─▒n─▒n d├╝zg├╝n ilerlemesi ad─▒na alttaki komut ile gerekli yere scripti kopyalayal─▒m

copy %TENSORFLOW%\models\research\object_detection\legacy\train.py %TENSORFLOW%\workspace\example_detection
copy %TENSORFLOW%\models\research\object_detection\model_main.py

E─čitimde Raporlanacak Seviyeyi Ayarlama (iste─če Ba─čl─▒)

E─čitimde uyar─▒ ve bilgileri gizlemek i├žin TF_CPP_MIN_LOG_LEVEL adl─▒ ortam de─či┼čkeni olu┼čturup seviyesini tan─▒ml─▒yoruz

set TF_CPP_MIN_LOG_LEVEL=2

Modeli train.py Dosyas─▒ ile E─čitime

# TODO Daha d├╝zg├╝n ve detayl─▒ linkli bir yaz─▒ ekle

Eskimi┼č olan bir e─čitim kodudur, model_main.py kod dosyas─▒ tensorflow taraf─▒ndan ├Ânerilir.

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training\<yap─▒land─▒rma_dosyas─▒>
  • <yap─▒land─▒rma_dosyas─▒> Modelimizin yap─▒land─▒rma dosyas─▒n─▒n tam ad─▒
    • training klas├Âr├╝ne att─▒─č─▒m─▒z yap─▒land─▒rma dosyalar─▒
    • ├ľrn: ssd_inception_v2_coco.config
E─čitime Ba┼člad─▒─č─▒nda Gelen ├ľrnek ├ç─▒kt─▒
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:depth of additional conv before box predictor: 0
INFO:tensorflow:Restoring parameters from ssd_inception_v2_coco_2017_11_17/model.ckpt
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Starting Session.
INFO:tensorflow:Saving checkpoint to path training\model.ckpt
INFO:tensorflow:Starting Queues.
INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:global step 1: loss = 13.8886 (12.339 sec/step)
INFO:tensorflow:global step 2: loss = 16.2202 (0.937 sec/step)
INFO:tensorflow:global step 3: loss = 13.7876 (0.904 sec/step)
INFO:tensorflow:global step 4: loss = 12.9230 (0.894 sec/step)
INFO:tensorflow:global step 5: loss = 12.7497 (0.922 sec/step)
INFO:tensorflow:global step 6: loss = 11.7563 (0.936 sec/step)
INFO:tensorflow:global step 7: loss = 11.7245 (0.910 sec/step)
INFO:tensorflow:global step 8: loss = 10.7993 (0.916 sec/step)
INFO:tensorflow:global step 9: loss = 9.1277 (0.890 sec/step)
INFO:tensorflow:global step 10: loss = 9.3972 (0.919 sec/step)
INFO:tensorflow:global step 11: loss = 9.9487 (0.897 sec/step)
INFO:tensorflow:global step 12: loss = 8.7954 (0.884 sec/step)
INFO:tensorflow:global step 13: loss = 7.4329 (0.906 sec/step)
INFO:tensorflow:global step 14: loss = 7.8270 (0.897 sec/step)
INFO:tensorflow:global step 15: loss = 6.4877 (0.894 sec/step)

Modeli model_main.py Dosyas─▒ ile E─čitme

Bu dosya ile e─čitim ├Ânerilen e─čitim ┼čeklidir.

  • train.py ile e─čitime nazaran, kald─▒─č─▒ yerden devam eder
    • 1000 ad─▒m yap─▒ld─▒ysa, ikinci e─čitimi 1200 yapt─▒─č─▒n─▒zda 200 ad─▒m e─čitir
    • train.py e─čitiminde modelin sonucunun ay─▒r─▒l─▒p, sonu├ž ├╝zerinden e─čitim yap─▒lmas─▒ gerekir

E─čitim dosyalar─▒ aras─▒nda performans veya kalite fark─▒ yoktur, kaynak i├žin buraya bakabilirsin.

E─čitim i├žin Gereksinimlerin Kurulmas─▒

E─čitim i├žin pycocotools kurulumu gereklidir

Windows i├žin PyCocoTools Kurulumu

Windows deste─čiyle kurulum yapmak i├žin alttaki komutu ko┼čturun

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

A├ž─▒klama i├žin buraya bakabilirsin.

Linux i├žin Cocotools
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools /content/models/research/
cd ../..
rm -rf cocoapi
E─čitimi Haz─▒rlama ve Ba┼člatma

Resmi kayna─ča ula┼čmak i├žin buraya bakabilirsin.

  • model_main.py e─čitim i├žin ├Ânerilen dosyad─▒r
  • Varsay─▒lan olarak ekrana raporlama yapmaz, yapmas─▒n─▒ isterseniz buraya bakabilirsiniz
# From the tensorflow/models/research/ directory
PIPELINE_CONFIG_PATH={path to pipeline config file}
MODEL_DIR={path to model directory}
NUM_TRAIN_STEPS=50000
SAMPLE_1_OF_N_EVAL_EXAMPLES=1
python object_detection/model_main.py \
    --pipeline_config_path=${PIPELINE_CONFIG_PATH} \
    --model_dir=${MODEL_DIR} \
    --num_train_steps=${NUM_TRAIN_STEPS} \
    --sample_1_of_n_eval_examples=$SAMPLE_1_OF_N_EVAL_EXAMPLES \
    --alsologtostderr

E─čitimi Etkileyen Fakt├Ârler

Training times can be affected by a number of factors such as:

  • The computational power of you hardware (either CPU or GPU): Obviously, the more powerful your PC is, the faster the training process.

  • Whether you are using the TensorFlow CPU or GPU variant: In general, even when compared to the best CPUs, almost any GPU graphics card will yield much faster training and detection speeds. As a matter of fact, when I first started I was running TensorFlow on my Intel i7-5930k (6/12 cores @ 4GHz, 32GB RAM) and was getting step times of around 12 sec/step, after which I installed TensorFlow GPU and training the very same model -using the same dataset and config files- on a EVGA GTX-770 (1536 CUDA-cores @ 1GHz, 2GB VRAM) I was down to 0.9 sec/step!!! A 12-fold increase in speed, using a ÔÇťlow/mid-endÔÇŁ graphics card, when compared to a ÔÇťmid/high-endÔÇŁ CPU.

  • How big the dataset is: The higher the number of images in your dataset, the longer it will take for the model to reach satisfactory levels of detection performance.

  • The complexity of the objects you are trying to detect: Obviously, if your objective is to track a black ball over a white background, the model will converge to satisfactory levels of detection pretty quickly. If on the other hand, for example, you wish to detect ships in ports, using Pan-Tilt-Zoom cameras, then training will be a much more challenging and time-consuming process, due to the high variability of the shape and size of ships, combined with a highly dynamic background.

  • And many, many, many, more. . . .

E─čitim ─░┼člemini TensorBoard Kullanarak Takip Etme

Anaconda Prompt ├╝zerinden alttaki komutlar uygulan─▒r:

activate tensorflow_cpu # ya da gpu
tensorboard --logdir=training\

Alttaki gibi bir ├ž─▒kt─▒ gelmesi gerekmekte:

TensorBoard 1.6.0 at http://YOUR-PC:6006 (Press CTRL+C to quit)

├ç─▒kt─▒y─▒ g├Âr├╝nt├╝lemek i├žin verilen url'i taray─▒c─▒na kopyalaman yeterlidir.

Sonu├ž Grafi─čini D─▒┼čar─▒ Aktarma

Anaconda Prompt ├╝zerinden alttaki komutlar uygulan─▒r:

activate tensorflow_cpu # ya da gpu

copy %TENSORFLOW%\models\research\object_detection/export_inference_graph.py %TENSORFLOW%\workspace\example_detection

cd %TENSORFLOW%\workspace\example_detection

python export_inference_graph.py --input_type image_tensor --pipeline_config_path training/<yap─▒land─▒rma_dosyas─▒> --trained_checkpoint_prefix training/model.ckpt-<checkpoint> --output_directory trained-inference-graphs/output_inference_graph_v1.pb
  • <yap─▒land─▒rma_dosyas─▒> Modelimizin yap─▒land─▒rma dosyas─▒n─▒n tam ad─▒
    • training klas├Âr├╝ne att─▒─č─▒m─▒z yap─▒land─▒rma dosyalar─▒
    • ├ľrn: ssd_inception_v2_coco.config
  • <checkpoint> example_detection/training dizinindeki g├Âsterilmek istenen ad─▒m─▒n numaras─▒
    • ├ľrn: 13302

Hata Notlar─▒ ve A├ž─▒klamalar─▒

'conda' is not recognized as an internal or external command

Anaconda Prompt ├╝zerinden terminal i┼člemlerinize devam etmeniz durumunda sorun gidecektir.

'...' is not recognized as an internal or external command

Gerekli Paketlerin Kurulumlar─▒ tamamnlanmad─▒─č─▒ i├žin bu hata ile kar┼č─▒la┼č─▒yor olabilirsiniz.

'ImportError: No module named' Hatalar─▒

PythonPath ayarlanmad─▒─č─▒ i├žin bu hata ile kar┼č─▒la┼čmaktas─▒n─▒z.

set PYTHONPATH=%TENSORFLOW%\models\research;%TENSORFLOW%\models\research\slim;%TENSORFLOW%\models\research\object_detection

D├Âk├╝mandaki ilgili alana y├Ânelmek i├žin buraya t─▒klayabilrisin.

'dict_keys' object does not support indexing

A├ž─▒klama linki i├žin buraya bakabilirsin.

start %TENSORFLOW%\models\research\object_detection\models\feature_map_generators.py
  • Sat─▒r 518'deki yere alttaki kodu yap─▒┼čt─▒r─▒n
image_features = image_features[list(image_features.keys())[0]]

Object was never used (type <class 'tensorflow.python.framework.ops.Tensor'>)

Yak─▒nda..

'unicodeescape' codec can't decode bytes in position

Modelinizin .config dosyan─▒za yazd─▒─č─▒n tam yol verilerinde \ yerine / veya \\ kullanmal─▒s─▒n─▒z.

Allocation of X exceeds 10% of system memory

  • Rastgeldi─čim bu kayna─ča g├Âre ssd_mobilenet_v2_coco modeline ├Âzg├╝ bir hatad─▒r.
  • Hatan─▒n ├ž├Âz├╝m kayna─č─▒ i├žin buraya t─▒klayabilirsin

google.protobuf.text_format.ParseError, Expected string but found

Config dosyalar─▒n─▒n text edit├Âr ├╝zerinden d├╝zenlemesi durumunda, t├╝rk├že karakterler i├žin text edit├Âr├╝ yap─▒y─▒ de─či┼čtirmekte ve tensorflow bunu alg─▒layamamaktad─▒r. Sorunu ├ž├Âzmek i├žin alttakiler yard─▒m─▒yla .config dosyas─▒n─▒ d├╝zenleyin:

  • VsCode
  • Notepad++
  • Sublime
  • Atom

Harici kaynak i├žin buraya bakabilirsin.

Value Error: No Variable to Save

Model e─čitimi yap─▒ld─▒─č─▒ s─▒rada gelen bir hatad─▒r, ├ž├Âz├╝m├╝ i├žin .configdosyan─▒z─▒ bu ┼čekilde d├╝zenleyin:

train_config: {
  ...
  fine_tune_checkpoint: "./pre_trained_model/model.ckpt"
  fine_tune_checkpoint_type:  "detection"
  ...
}

ssd_mobilenet_v1_quantized_300x300_coco14_sync modelinde test edilmi┼čtir.

Colab ├ťzerinden Tensorflow Modelini E─čitme

Colab ├╝cretsiz GPU sundu─ču i├žin ├žok h─▒zl─▒ bir e─čitim imkan─▒ sunar.

Colab E─čitimi i├žin Gereken Dosyalar

  • label_map.pbtxt
  • eval.record
  • train.record
  • *.config
  • model_main.py (eskisi: train.py)
  • export_inference_graph.py

Colab ├ťzeriinden E─čitim Kodlar─▒

Detaylar─▒ ├Â─črenmek i├žin buraya t─▒klayarak colab notuma eri┼čebilirsin.

Web Kameras─▒ Kullanarak Obje Tespit Etme

Script dosyas─▒na buraya t─▒klayarak eri┼čebilirsin

Harici Ba─člant─▒lar

Ba┼člang─▒├ž i├žin ─░deal Olanlar

├ľnemli Notlar

  • train.py i┼člemi i├žin images dizinindeki resimlere ihtiya├ž yok, tf_records'lar yeterlidir.

Yap─▒lacaklar

  • Tensorflow notlar─▒ buraya ta┼č─▒nacak!
  • Her yeni e─čitim i├žin yap─▒lacaklar i├žin h─▒zl─▒ notlar olu┼čtur
    • Num classses'lar de─či┼čecek (config ve detection_utils)
    • Yollar de─či┼čecek (config ve detection_utils)
    • Label_map.pbtxt de─či┼čecek
    • Test say─▒s─▒ config'e girilecek
  • Git sorununu d├╝zelt, temiz ├ž─▒kt─▒ya ge├ž
    • Gitignore'a gereksiz her┼čeyi ekle (*, ** gibi karakterler ile)
    • Models klas├Âr├╝n├╝ ele alma, d─▒┼čar─▒dan indirme linkini ver
  • VsCode i├žin mod├╝l bulunamad─▒ sorunu d├╝zeltilecek
    • PythonPath ile ortam de─či┼čkeni ayarlamaya ├žal─▒┼č─▒lacak
    • VsCode, python proje ├žal─▒┼čt─▒r─▒c─▒s─▒ olarak ele al─▒nacak

Sonra Yap─▒lacaklar

  • TF recordlar─▒ olu┼čturma k─▒sm─▒ otomatikle┼čtirelecek ve dizinler ba─č─▒ml─▒ yollar halinde belirtilecek
    • .csv deki class'lardan label_map olu┼čturulacak.
    • generate.tfrecord.py i├žerisinde t├╝m di─čer scriptler eklenecek ve FROM: ? ile xml veya csv bilgisi alacak
    • Benim yap─▒ma uygun yap─▒ya sahip olanlar─▒n CLI parametresi vermesine gerek olmayacak
  • El ile yap─▒lan t├╝m i┼člemler otomatize edilecek
    • images i├žindeki eval, train adl─▒ dizinlerin ismi otomatik al─▒nacak
    • grap_images.py script'i olacak ve resimleri gerekli dizinlere yerle┼čtirmek i├žin yol alacak (yerle┼čtirileceklerin yolu)
    • Etiketli veriler haz─▒r oldu─čunda tek bir script generate_tf_data ile direk e─čitime haz─▒r hale getirilecek
      • label_map csv'den al─▒nacak
      • config yolu otomatik tan─▒mlanacak
      • recordlar xml'den olu┼čturulacak
  • pre_trained_model klas├Âr├╝ yeniden adland─▒r─▒lacak ve modeller i├žin alt klas├Ârler olacak
    • base_model ile modelin s─▒f─▒r hali tutulacak
  • inference_graph klas├Âr├╝ yeniden adland─▒r─▒lacak ve modeller i├žin alt klas├Ârler olacak
  • Tf recordlar─▒ farkl─▒ y├Ântemlerle elde etmeyi ara┼čt─▒r
  • TF recoderlardan resimleri elde etmeyi ara┼čt─▒r

Sonradan Eklenecek Scriptle┼čtirme

  • Linux i├žin sh script
    • Protobuf, tensorflow vs. her biri i├žin
  • Windows i├žin bat executable

Sonradan Derlenecek Bilgiler

  • Yapt─▒─č─▒m tekninleri video'ya veya yaz─▒ya kay─▒t edece─čim
    • csv'lerden alan─▒ se├žip tablo format─▒na alarak class say─▒lar─▒n─▒ g├Ârme vs.

TF Verilerini Alma

https://www.tensorflow.org/tutorials/load_data/tf_records

Recover the images from the TFRecord file
for image_features in parsed_image_dataset:
  image_raw = image_features['image_raw'].numpy()
  display.display(display.Image(data=image_raw))

­čĺľ Destek ve ─░leti┼čim

ÔÇőÔÇőGithubÔÇő ÔÇőLinkedInÔÇő ÔÇőWebsiteÔÇő ÔÇőMailÔÇőÔÇő

ÔÇőÔÇőPatreon

­čöĆ Lisans

The Apache 2.0 License ┬ę´ŞĆ Yunus Emre Ak

YEmreAk

You canÔÇÖt perform that action at this time.