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.
Projeyi İndir ve Kur
edgeai-tensorlab projesi çalışmaya hazır hale getir ve distrobox içerisine gir
Config Dosyasını Düzenle
Hazırlanmak istenilen modele göre config dosyasını düzenle
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.
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
Eğitimde kullanılacak epoch sayısı
Eğitimde kullanılacak batch boyutu
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.
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
Eğitimde kullanılacak epoch sayısı
Eğitimde kullanılacak batch boyutu
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.
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.
Veri Kümesinin Yolu (İnternet sitesi veya dosya sisteminizden bir yol girebilirsiniz.)
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
Eğitimde kullanılacak epoch sayısı
Eğitimde kullanılacak batch boyutu
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.
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.
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
Eğitimde kullanılacak epoch sayısı
Eğitimde kullanılacak batch boyutu
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.