YOLOv8 → ONNX → C# Üretim Pipeline
Şablon eşleştirme sabit UI için mükemmeldir; değişken düzenlerde YOLOv8 küçük modeller (n/s) masaüstü otomasyonunda bbox üretir. Bu makale, eğitimden C# inference’a kadar uçtan uca süreci anlatır. Veri yalnızca yerel işlenmelidir; ekran görüntüleri buluta gönderilmemelidir.
1. Veri seti ve etiketleme
Kendi UI öğelerinizi (buton, ikon, durum göstergesi) en az 200–500 kare ile etiketleyin. COCO genel modelleri masaüstü UI’da tutarsızdır. Etiket formatı YOLO txt (sınıf, x_center, y_center, w, h normalize). Sınıf sayısını düşük tutun (5–15); bu inference hızını artırır.
2. Ultralytics ile eğitim
# pip install ultralytics
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.train(data="ui_dataset.yaml", epochs=80, imgsz=640, batch=16)
metrics = model.val()
ui_dataset.yaml train/val yollarını ve names: sözlüğünü içerir. Erken durdurma (patience) aşırı öğrenmeyi azaltır.
3. ONNX export
model.export(format="onnx", opset=12, simplify=True, dynamic=False)
dynamic=False sabit giriş boyutu ile GPU kernel seçimini kolaylaştırır. Opset 12 geniş ONNX Runtime uyumluluğu sağlar. Export sonrası onnx.checker.check_model ile doğrulayın.
4. C# inference (ONNX Runtime)
NuGet: Microsoft.ML.OnnxRuntime (+ OnnxRuntime.Gpu isteğe bağlı). Giriş tensörü NCHW, normalize 0–1:
var opts = new SessionOptions();
opts.AppendExecutionProvider_CUDA(0); // yoksa CPU
using var session = new InferenceSession("ui_yolov8n.onnx", opts);
// Preprocess: ROI BGR → resize 640 → float tensor
// Postprocess: çıktıdan kutular → NMS → eşik 0.45
Non-Maximum Suppression (NMS) çakışan kutuları birleştirir. IoU eşiği 0.5 tipik değerdir.
5. OpenCV DNN alternatifi
OpenCvSharp4 CvDnn.ReadNetFromOnnx ile de çalıştırılabilir. CUDA backend kurulumu makineye bağlıdır. ONNX Runtime genelde daha öngörülebilir güncelleme döngüsü sunar.
6. Gecikme ve kare atlama
- Her karede inference yerine her N karede tam tespit, arada hafif tracker (ör. merkez takibi).
- ROI kırpma: yalnızca ilgili panel bölgesi 640×640’a ölçeklenir.
- Batch size = 1; gecikme öncelikli tasarım.
- p99 gecikme hedefi ofis senaryosunda < 80 ms (GPU ile).
7. Gizlilik ve uyumluluk
Model eğitimi ve inference yerel diskte kalmalıdır. Kullanıcı profili açık onay ile loglanmalıdır. Üçüncü parti uygulama kurallarına uyum kullanıcı sorumluluğundadır; yazılım eğitim ve ergonomi amaçlı konumlandırılır.