Ana içeriğe atla
Bu bölümde, görüntü işleme işlemlerinde nesne tanıma vb. amaçlar için nasıl model hazırlandığına değinilecektir. Önceki bölümde anlatılan edgeai-tensorlab edgeai-tensorlab projesinin kurulumunu tamamladıysanız 3 adımda modelinizi derleyebilirsiniz.
1

Projeyi İndir ve Kur

edgeai-tensorlab projesi çalışmaya hazır hale getir ve distrobox içerisine gir
2

Config Dosyasını Düzenle

Hazırlanmak istenilen modele göre config dosyasını düzenle
3

Modeli Derle

Model derlemesini başlat

1. Yapılandırma Dosyaları

Yapılandırma dosyaları, EdgeAI-ModelMaker aracının eğitimden derlemeye kadar tüm akışı yapılandırılabilir şekilde yürütmesini sağlar. Kullanıcı bu dosyalarda proje özelinde parametreleri tanımlayarak kendine özgü modeli oluşturabilir. Örnek olması amacıyla configs klasörünün içinde 4 ana görüntü işleme tipi için örnek yapılandırma dosyası verilmiştir.

2. Nesne Sınıflandırma

EdgeAI Model Maker içerisinde yer alan nesne sınıflandırma (object classification) konfigürasyon dosyası, model eğitimi ve değerlendirme süreçlerini tanımlamak için kullanılır. Bu dosya içinde veri kümesinin yolu, eğitim parametreleri (örneğin batch size, epoch sayısı ve öğrenme oranı), model mimarisi (örneğin MobileNetV2 veya RegNetX) ve optimizasyon ayarları gibi bilgileri içerir. Aşağıda örnek bir nesne sınıflandırma yapılandırma dosyasının içeriği yer almaktadır.
common:
    target_module: 'vision'
    task_type: 'classification'
    target_device: 'AM67A'
    # run_name can be any string, but there are some special cases:
    # {date-time} will be replaced with datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
    # {model_name} will be replaced with the name of the model
    run_name: '{date-time}/{model_name}'

dataset:
    # enable/disable dataset loading
    enable: True #False
    # max_num_files: [1000, 250] #None

    # Image Classification Dataset Examples:
    # -------------------------------------
    # Example 1, (known datasets): 'oxford_flowers102'
    # dataset_name: oxford_flowers102
    # -------------------------------------
    # Example 2, give a dataset_name and input_data_path.
    # input_data_path could be a path to zip file, tar file, folder OR http, https link to zip or tar files
    # for input_data_path these are provided with this repository as examples:
    #    'http://software-dl.ti.com/jacinto7/esd/modelzoo/08_06_00_01/datasets/animal_classification.zip'
    # -------------------------------------
    dataset_name: animal_classification
    input_data_path: 'http://software-dl.ti.com/jacinto7/esd/modelzoo/08_06_00_01/datasets/animal_classification.zip'

training:
    # enable/disable training
    enable: True #False

    # Image Classification model chosen can be changed here if needed
    # options are: 'mobilenet_v2_lite', 'regnet_x_400mf', 'regnet_x_800mf'
    model_name: 'mobilenet_v2_lite'

    # training_epochs: 15 #30
    # batch_size: 64 #8 #32
    # learning_rate: 0.005
    # num_gpus: 0 #1 #4

compilation:
    # enable/disable compilation
    enable: True #False
    # tensor_bits: 8 #16 #32
Yukarıdaki YAML dosyasını kendi ihtiyaçlarına göre düzenleyebilirisiniz.
DATASET_NAME
required
Veri Kümesinin Adı
INPUT_DATA_PATH
required
Veri Kümesinin Yolu (İnternet sitesi veya dosya sisteminizden bir yol girebilirsiniz.)
MODEL_NAME
default:"mobilenet_v2_lite"
required
Nesne sınıflandırma için kullanacağınız temel modeli girmeniz beklenmektedir.
Şu anda desteklenen modeller: mobilenet_v2_lite, regnet_x_400mf, regnet_x_800mf
TRAINING_EPOCHS
default:"10"
required
Eğitimde kullanılacak epoch sayısı
BATCH_SIZE
default:"32"
required
Eğitimde kullanılacak batch boyutu
LEARNING_RATE
default:"0.001"
required
Öğrenme oranı
NUM_GPUS
default:"1"
required
Kullanılacak GPU sayısı

2.1. MobileNet V2

MobileNet V2, Google tarafından geliştirilen, özellikle gömülü sistemler ve mobil cihazlar gibi kısıtlı donanımlarda yüksek verimlilik sağlayan bir evrişimsel sinir ağı (CNN) mimarisidir. Model, önceki sürüm olan MobileNet V1’e göre daha az parametreyle daha yüksek doğruluk sunar. Bunu, Inverted Residual Block ve Linear Bottleneck adı verilen iki temel yapı sayesinde başarır. Bu özellikler sayesinde:
  • Model boyutu küçülür.
  • Hesaplama maliyeti azalır.
  • Gerçek zamanlı uygulamalarda yüksek hız elde edilir.
EdgeAI Model Maker içinde yer alan bu konfigürasyon dosyasında, bu mimarinin lite (daha düşük kaynak tüketimli) sürümüne ait parametreleri içerir ve genellikle nesne sınıflandırma görevlerinde kullanıldığı için tercih edilmiştir.

2.3. RegNet

RegNet, Facebook AI Research (FAIR) tarafından geliştirilen bir ölçeklenebilir ağ mimarisi ailesidir. RegNet modelleri, yapılandırma parametreleri (örneğin kanal sayısı, blok sayısı, genişlik oranı) sistematik olarak değiştirilebilen bir tasarım felsefesine sahiptir. Bu sayede, küçük gömülü cihazlardan büyük sunucu ortamlarına kadar farklı donanımlarda aynı mimari mantık korunarak modeller oluşturulabilir.
  • RegNetX-400MF: 400 milyon FLOP civarında işlem maliyetine sahip, hafif bir sürümdür.
  • RegNetX-800MF: Daha yüksek doğruluk sunan, orta seviye kaynaklara uygun bir sürümdür.
Bu modeller, özellikle verimlilik ve doğruluk dengesine ihtiyaç duyulan sınıflandırma projelerinde tercih edilir.

3. Nesne Tespiti

EdgeAI Model Maker içerisinde yer alan nesne tespiti (object detection) konfigürasyon dosyası, model eğitimi ve değerlendirme süreçlerini tanımlamak için kullanılır. Aşağıda örnek bir nesne sınıflandırma yapılandırma dosyasının içeriği yer almaktadır.
common:
    target_module: 'vision'
    task_type: 'detection'
    target_device: 'AM67A'
    # run_name can be any string, but there are some special cases:
    # {date-time} will be replaced with datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
    # {model_name} will be replaced with the name of the model
    run_name: '{date-time}/{model_name}'

dataset:
    # enable/disable dataset loading
    enable: True #False
    # max_num_files: [750, 250] #None

    # Object Detection Dataset Examples:
    # -------------------------------------
    # Example 1, (known datasets): 'widerface_detection', 'pascal_voc0712', 'coco_detection', 'udacity_selfdriving', 'tomato_detection', 'tiscapes2017_driving'
    # dataset_name: widerface_detection
    # -------------------------------------
    # Example 2, give a dataset name and input_data_path.
    # input_data_path could be a path to zip file, tar file, folder OR http, https link to zip or tar files
    # for input_data_path these are provided with this repository as examples:
    #    'http://software-dl.ti.com/jacinto7/esd/modelzoo/08_06_00_01/datasets/tiscapes2017_driving.zip'
    #    'http://software-dl.ti.com/jacinto7/esd/modelzoo/08_06_00_01/datasets/animal_detection.zip'
    # -------------------------------------
    # Example 3, give image folders with annotation files (require list with values for both train and val splits)
    # dataset_name: coco_detection
    # input_data_path: ["./data/projects/coco_detection/dataset/train2017",
    #                        "./data/projects/coco_detection/dataset/val2017"]
    # input_annotation_path: ["./data/projects/coco_detection/dataset/annotations/instances_train2017.json",
    #                        "./data/projects/coco_detection/dataset/annotations/instances_val2017.json"]
    # -------------------------------------
    dataset_name: tiscapes2017_driving
    input_data_path: 'http://software-dl.ti.com/jacinto7/esd/modelzoo/08_06_00_01/datasets/tiscapes2017_driving.zip'

training:
    # enable/disable training
    enable: True #False

    # Object Detection model chosen can be changed here if needed
    # options are: 'yolox_s_lite', 'yolox_tiny_lite', 'yolox_nano_lite', 'yolox_pico_lite', 'yolox_femto_lite', 'yolov7_l_lite'
    model_name: 'yolox_nano_lite'

    # training_epochs: 15 #30
    # batch_size: 8 #32
    # learning_rate: 0.005
    # num_gpus: 0 #1 #4

compilation:
    # enable/disable compilation
    enable: True #False
    # tensor_bits: 8 #16 #32
Yukarıdaki YAML dosyasını kendi ihtiyaçlarına göre düzenleyebilirisiniz.
DATASET_NAME
required
Veri Kümesinin Adı
INPUT_DATA_PATH
required
Veri Kümesinin Yolu (İnternet sitesi veya dosya sisteminizden bir yol girebilirsiniz.)
MODEL_NAME
default:"yolox_s_lite"
required
Nesne sınıflandırma için kullanacağınız temel modeli girmeniz beklenmektedir.
Şu anda desteklenen modeller: yolox_s_lite, yolox_tiny_lite, yolox_nano_lite, yolox_pico_lite, yolox_femto_lite, yolov7_l_lite
TRAINING_EPOCHS
default:"10"
required
Eğitimde kullanılacak epoch sayısı
BATCH_SIZE
default:"32"
required
Eğitimde kullanılacak batch boyutu
LEARNING_RATE
default:"0.001"
required
Öğrenme oranı
NUM_GPUS
default:"1"
required
Kullanılacak GPU sayısı

3.1. Yolo Nedir ?

YOLO (You Only Look Once), gerçek zamanlı nesne tespiti için geliştirilmiş derin öğrenme tabanlı bir algoritmadır. YOLO, bir görüntüdeki nesnelerin sınıflarını ve konumlarını tek bir ileri besleme işlemiyle tahmin eder. Bu yaklaşım, geleneksel iki aşamalı yöntemlerden (örneğin R-CNN) farklı olarak, hem sınıflandırma hem de konumlandırma işlemlerini tek bir evrede gerçekleştirir. YOLO algoritması, girdiyi bir ızgara yapısına böler. Her hücre, görüntüde belirli bir bölgeyi temsil eder ve bu bölgedeki olası nesneler için:
  • Sınıf olasılıklarını,
  • Koordinat bilgilerini (x, y, genişlik, yükseklik),
  • Güven skorlarını (confidence score)
tahmin eder. Böylece model, görüntüdeki tüm nesneleri aynı anda analiz ederek yüksek hızda çıktı üretir. YOLO’nun en önemli avantajı, hız ve gerçek zamanlılık sağlamasıdır. Özellikle gömülü sistemlerde, robotik uygulamalarda ve otonom araçlarda bu özellik büyük önem taşır. Bununla birlikte, küçük boyutlu nesnelerde veya yoğun sahnelerde doğruluk oranı diğer yöntemlere kıyasla daha düşük olabilir.

YOLO Model Kıyaslama Grafiği

Zaman içerisinde YOLO algoritması farklı sürümlerle geliştirilmiştir. YOLOv1’den YOLOv11’e kadar gelen versiyonlarda hem model mimarisi hem de performans anlamında önemli iyileştirmeler yapılmıştır.

3.2. Anahtar Nokta Tespiti

EdgeAI Model Maker içerisinde yer alan anahtar nokta tespiti (keypoint detection) konfigürasyon dosyası, model eğitimi ve değerlendirme süreçlerini tanımlamak için kullanılır. Anahtar Nokta Tespiti, bir görüntü üzerindeki belirli noktaların (örneğin insan vücudundaki eklemler, yüz üzerindeki referans noktaları veya nesnelerin karakteristik köşe noktaları) konumlarını tespit etmeye yönelik modelin eğitim ve değerlendirme parametrelerini tanımlar. Aşağıda örnek bir yer alan anahtar nokta tespiti yapılandırma dosyasının içeriği yer almaktadır.
common:
    target_module: 'vision'
    task_type: 'keypoint_detection'
    target_device: 'AM67A'
    # run_name can be any string, but there are some special cases:
    # {date-time} will be replaced with datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
    # {model_name} will be replaced with the name of the model
    run_name: '{date-time}/{model_name}'

# Need to modify later according to the data loaders
dataset:
    # enable/disable dataset loading
    enable: True #False
    
    # specify annotation prefix (of th annotation file) if needed - default is 'instances'.
    # annotation_prefix: person_keypoints
    # specify split names (of th annotation file) if needed - default is ['train', 'val'].
    # split_names: ['train2017', 'val2017']
    # specify max number of files to get split (of th annotation file) if needed - default is [750, 250].
    # max_num_files: [750, 250] #None
    # -------------------------------------
    # Keypoint Detection Dataset Examples:
    #
    # -------------------------------------
    # Example 1, (known datasets): 'coco_kpts'
    # dataset_name: coco_keypoint_detection
    #
    # -------------------------------------
    # Example 2, give a dataset name and input_data_path.
    # dataset_name: coco_keypoints_val2017
    # input_data_path could be a path to zip file, tar file, folder OR http, https link to zip or tar files
    # input_data_path: "./data/downloads/datasets/coco_keypoints_val2017"
    #
    # -------------------------------------
    # Example 3, give image folders with annotation files (require list with values for both train and val splits)
    # dataset_name: coco_keypoint_detection
    # input_data_path: ["./data/projects/coco_keypoint_detection/dataset/train2017",
    #                        "./data/projects/coco_keypoint_detection/dataset/val2017"]
    # input_annotation_path: ["./data/projects/coco_keypoint_detection/dataset/annotations/person_keypoints_train2017.json",
    #                        "./data/projects/coco_keypoint_detection/dataset/annotations/person_keypoints_val2017.json"]
    #
    # -------------------------------------
    # This simple dataset can be constucted by taking images in val2017 and putting in images folder
    # and then taking person_keypoints_val2017.json and renaming it at annotations/instances.json
    dataset_name: coco2017_subset_ccby_x8
    input_data_path: http://tensorlabdata2.dhcp.ti.com/pub/projects/edgeai-algo/data/datasets/modelmaker/public/coco2017_subset_ccby_x8.zip
    input_annotation_path : data/projects/coco2017_subset_ccby_x8/dataset/annotations/person_keypoints.json

training:
    # enable/disable training
    enable: True #False
    # Keypoint Detection model chosen can be changed here if needed
    # Available models: yolox_s_keypoint
    model_name: 'yoloxpose_tiny_lite'
    # training_epochs: 15
    # batch_size: 16 #16
    # learning_rate: 0.001
    # num_gpus: 1

compilation:
    # enable/disable compilation
    enable: True #False
    # tensor_bits: 8 #16 #32
Yukarıdaki YAML dosyasını kendi ihtiyaçlarına göre düzenleyebilirisiniz.
ANNOTATION_PREFIX
default:"instances"
required
Etiket dosyasının öneki. Varsayılan değer ‘instances’ olarak tanımlıdır.
SPLIT_NAMES
default:"['train', 'val']"
required
Veri kümesindeki eğitim ve doğrulama bölümlerinin adlarını belirtir.
MAX_NUM_FILES
default:"[750, 250]"
Eğitim ve doğrulama bölümlerinden yüklenecek maksimum dosya sayısını sınırlar.
Örneğin [750, 250] değeri, 750 eğitim ve 250 doğrulama örneği yükler.
DATASET_NAME
required
Veri Kümesinin Adı
INPUT_DATA_PATH
required
Veri Kümesinin Yolu (İnternet sitesi veya dosya sisteminizden bir yol girebilirsiniz.)
INPUT_ANNOTATION_PATH
required
Veri kümesine ait etiket dosyasının (annotation file) yerel yolunu tanımlar.
MODEL_NAME
default:"yolox_s_keypoint"
required
Anahtar nokta tespiti için kullanacağınız temel modeli girmeniz beklenmektedir.
Şu anda desteklenen modeller: yolox_s_keypoint, yoloxpose_tiny_lite
TRAINING_EPOCHS
default:"10"
required
Eğitimde kullanılacak epoch sayısı
BATCH_SIZE
default:"32"
required
Eğitimde kullanılacak batch boyutu
LEARNING_RATE
default:"0.001"
required
Öğrenme oranı
NUM_GPUS
default:"1"
required
Kullanılacak GPU sayısı

3.3. YOLOX-Pose Nedir?

YOLOX-Pose, popüler YOLOX (You Only Look Once - eXtended) mimarisinin bir uzantısı olup, insan vücudu üzerindeki anahtar noktaları (keypoints) tespit etmek için tasarlanmış bir derin öğrenme modelidir. Bu model, klasik nesne tespitine ek olarak, tespit edilen her kişi için eklem konumlarını (örneğin omuz, dirsek, diz, ayak bileği gibi) koordinat bazında tahmin eder.

3.4. YOLOX-S-Keypoint Nedir?

YOLOX-S-Keypoint, YOLOX-S modelinin anahtar nokta tespiti (keypoint detection) için uyarlanmış versiyonudur. Temel olarak, YOLOX-S’in hızlı ve hafif nesne tespit yeteneklerini, insan veya nesne üzerindeki belirli noktaların (keypoints) tahmini yapmak üzere genişletir.

4. Görüntü Segmantasyonu

EdgeAI Model Maker içerisinde yer alan görüntü segmentasyonu (Image Segmentation) konfigürasyon dosyası, model eğitimi ve değerlendirme süreçlerini tanımlamak için kullanılır. Görüntü segmentasyonu (Image Segmentation), bir görüntüyü anlamlı bölgelere ayırma işlemidir. Her pikselin, görüntüdeki nesne veya arka planla ilişkili bir sınıfa ait olduğu belirlenir. Bu sayede, sadece nesnelerin konumu değil, tam şekilleri ve sınırları da belirlenmiş olur. Aşağıda örnek bir yer alan anahtar nokta tespiti yapılandırma dosyasının içeriği yer almaktadır.
common:
    target_module: 'vision'
    task_type: 'segmentation'
    target_device: 'AM67A'
    # run_name can be any string, but there are some special cases:
    # {date-time} will be replaced with datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
    # {model_name} will be replaced with the name of the model
    run_name: '{date-time}/{model_name}'

# Need to modify later according to the data loaders
dataset:
    # enable/disable dataset loading
    enable: True #False
    # max_num_files: [750, 250] #None
    # specify annotation prefix (of th annotation file) if neded - default is 'instances'.
    #annotation_prefix: 'stuff'
    
    # Semantic Segmentation Dataset Examples:
    # -------------------------------------
    # Example 1, (known datasets): 'widerface_detection', 'pascal_voc0712', 'coco_detection', 'udacity_selfdriving', 'tomato_detection', 'tiscapes2017_driving'
    # dataset_name: widerface_detection
    # -------------------------------------
    # Example 2, give a dataset name and input_data_path.
    # input_data_path could be a path to zip file, tar file, folder OR http, https link to zip or tar files
    # for input_data_path these are provided with this repository as examples:
    #    'http://software-dl.ti.com/jacinto7/esd/modelzoo/latest/datasets/tiscapes2017_driving.zip'
    #    'http://software-dl.ti.com/jacinto7/esd/modelzoo/latest/datasets/animal_detection.zip'
    # -------------------------------------
    # Example 3, give image folders with annotation files (require list with values for both train and val splits)
    # dataset_name: coco_detection
    # input_data_path: ["./data/projects/coco_detection/dataset/train2017",
    #                        "./data/projects/coco_detection/dataset/val2017"]
    # input_annotation_path: ["./data/projects/coco_detection/dataset/annotations/instances_train2017.json",
    #                        "./data/projects/coco_detection/dataset/annotations/instances_val2017.json"]
    # -------------------------------------
    dataset_name: tiscapes2017_driving
    input_data_path: "http://software-dlasdasdas.ti.com/jacinto7/esd/modelzoo/latest/datasets/tiscapes2017_driving.zip"

training:
    # enable/disable training
    enable: True #False

    # Semantic segmentation model chosen can be changed here if needed
    # REGNETx800MF: fpn_aspp_regnetx800mf_edgeailite
    # UNET-MOBILENET: unet_aspp_mobilenetv2_tv_edgeailite
    # DEEPLABV3plus-MOBILENET: deeplabv3plus_mobilenetv2_tv_edgeailite

    model_name: 'deeplabv3plus_mobilenetv2_tv_edgeailite'

    #training_epochs: 15 #30
    #batch_size: 32 #8
    #learning_rate: 0.001
    #num_gpus: 0 1 2 3

compilation:
    # enable/disable compilation
    enable: True #False
    # tensor_bits: 8 #16 #32
Yukarıdaki YAML dosyasını kendi ihtiyaçlarına göre düzenleyebilirisiniz.
ANNOTATION_PREFIX
default:"instances"
required
Etiket dosyasının öneki. Varsayılan değer ‘instances’ olarak tanımlıdır.
SPLIT_NAMES
default:"['train', 'val']"
required
Veri kümesindeki eğitim ve doğrulama bölümlerinin adlarını belirtir.
MAX_NUM_FILES
default:"[750, 250]"
Eğitim ve doğrulama bölümlerinden yüklenecek maksimum dosya sayısını sınırlar.
Örneğin [750, 250] değeri, 750 eğitim ve 250 doğrulama örneği yükler.
DATASET_NAME
required
Veri Kümesinin Adı
INPUT_DATA_PATH
required
Veri Kümesinin Yolu (İnternet sitesi veya dosya sisteminizden bir yol girebilirsiniz.)
MODEL_NAME
default:"fpn_aspp_regnetx800mf_edgeailite"
required
Anahtar nokta tespiti için kullanacağınız temel modeli girmeniz beklenmektedir.
Şu anda desteklenen modeller: fpn_aspp_regnetx800mf_edgeailite, unet_aspp_mobilenetv2_tv_edgeailite, deeplabv3plus_mobilenetv2_tv_edgeailite
TRAINING_EPOCHS
default:"10"
required
Eğitimde kullanılacak epoch sayısı
BATCH_SIZE
default:"32"
required
Eğitimde kullanılacak batch boyutu
LEARNING_RATE
default:"0.001"
required
Öğrenme oranı
NUM_GPUS
default:"1"
required
Kullanılacak GPU sayısı

4.1. REGNETx800MF

Bu model, görüntüdeki nesneleri detaylı bir şekilde ayırmak için kullanılır. Farklı boyutlardaki nesneleri iyi tanır ve daha karmaşık görevlerde yüksek doğruluk sağlar. Daha çok endüstriyel ve gömülü sistemlerde tercih edilir.

4.2. UNET-MOBILENET

Hafif ve hızlı bir segmentasyon modelidir. Düşük kaynak kullanımı ile mobil cihazlar ve küçük bilgisayarlar için uygundur. Görüntüdeki nesnelerin sınırlarını net bir şekilde çıkarır.

4.3. DEEPLABV3plus-MOBILENET

Hafif ama detaylı sonuçlar verir. Görüntüdeki nesnelerin alanını ve sınırlarını doğru bir şekilde tahmin eder. Edge cihazlarda orta seviyede doğruluk ve hız isteyen uygulamalar için uygundur.