YOLO Nesne Algılama: Geliştiriciler İçin Eksiksiz Uygulamalı Rehber

YOLO nesne algılama için temel kavramlardan veri, eğitim ve değerlendirmeye; gerçek zamanlı çalışma, üretim, performans ve güvenliğe uzanan geliştirici rehberi.
YOLO nesne algılama nedir?
YOLO (“You Only Look Once”), tek aşamalı nesne algılama modelleri ailesidir. Görüntü sınıflandırma tüm resme tek etiket verirken nesne algılama her nesne için sınıf, güven skoru ve sınırlayıcı kutu üretir.
YOLO; trafik analizi, üretim kalite kontrolü, robotik, tarım, spor analizi, perakende ve gerçek zamanlı video sistemlerinde kullanılır. Popülerliğinin temel nedeni doğruluk, gecikme, model boyutu ve dağıtım kolaylığı arasındaki dengedir.
Temel kavramlar
- Bounding Box: nesneyi çevreleyen dikdörtgen.
- Confidence: tahminin güvenilirlik skoru.
- IoU: iki kutunun kesişim alanının birleşim alanına oranı.
- Precision: üretilen tespitlerin ne kadarının doğru olduğu.
- Recall: gerçek nesnelerin ne kadarının bulunduğu.
- mAP: sınıflar ve IoU eşikleri boyunca performans özeti.
Güven eşiğini yükseltmek yanlış alarmları azaltabilir ancak zor nesneleri kaçırabilir. Eşiği iş hatalarının maliyetine göre seçin.
YOLO işlem hattı
- Görüntüyü veya video karesini çöz.
- Model sözleşmesine göre yeniden boyutlandır ve normalize et.
- Sinir ağını çalıştır.
- Ham çıktıyı kutu, sınıf ve skorlara dönüştür.
- Zayıf ve yinelenen sonuçları NMS ile temizle.
- Koordinatları orijinal görüntüye ölçekle.
Mimari genellikle özellik çıkaran Backbone, çoklu ölçekleri birleştiren Neck ve tahmin üreten Detection Head bölümlerinden oluşur.
Kurulum
python -m venv .venv
source .venv/bin/activate
pip install ultralytics opencv-python
İlk tahmin, kamera ve eğitim
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
result = model.predict("street.jpg", conf=0.35, imgsz=640)[0]
for box in result.boxes:
class_id = int(box.cls.item())
print({
"class": model.names[class_id],
"confidence": float(box.conf.item()),
"xyxy": box.xyxy[0].tolist(),
})
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
camera = cv2.VideoCapture(0)
while camera.isOpened():
ok, frame = camera.read()
if not ok:
break
result = model.predict(frame, conf=0.4, verbose=False)[0]
cv2.imshow("YOLO", result.plot())
if cv2.waitKey(1) & 0xFF == ord("q"):
break
camera.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.train(
data="dataset.yaml",
epochs=100,
imgsz=640,
batch=16,
device=0,
project="runs/safety",
name="baseline",
)
path: /absolute/path/to/dataset
train: images/train
val: images/val
test: images/test
names:
0: person
1: helmet
2: safety_vest
Önce küçük bir modelle gecikme ölçümü yapın. Daha büyük modeli yalnızca ölçülen doğruluk kazancı bellek ve işlem maliyetini karşılıyorsa seçin.
Veri kümesi ve etiketler
YOLO etiket satırı çoğunlukla şu biçimdedir:
class_id x_center y_center width height
Koordinatlar 0 ile 1 arasında normalize edilir. images ve labels klasörlerini train, val ve test olarak ayırın. Aynı videonun komşu karelerini rastgele farklı bölümlere koymak veri sızıntısına ve gerçekçi olmayan skorlara yol açar.
Etiket kalite listesi
- Kısmen kapanmış nesneler için tek kural kullanın.
- Kutuları sıkı ve tutarlı çizin.
- Yalnız kolay örnekleri değil tüm ilgili nesneleri etiketleyin.
- Yansıma, ekran ve poster kurallarını belirleyin.
- Sınıf dengesini ve nesne boyutlarını inceleyin.
- Her etiketleyiciden örnek denetleyin.
- Veri ve yönerge sürümlerini kaydedin.
Eğitim ve değerlendirme
Çoğu projede önceden eğitilmiş ağırlıklarla başlamak daha hızlıdır. Fazladan epoch yanlış etiketi, veri sızıntısını veya eksik üretim senaryosunu düzeltemez.
Tek bir mAP değerine güvenmeyin. Sonuçları sınıf, nesne boyutu, kamera, müşteri, ışık, hava, örtülme, hareket bulanıklığı, mesafe ve sıkıştırmaya göre bölün. False positive, false negative, konum hatası ve yinelenen tespit galerisi oluşturun.
API ve üretim mimarisi
Modeli uygulama başlangıcında bir kez yükleyip ısıtın. Dosya içeriğini, boyutunu ve piksel ölçülerini doğrulayın. Uzun videoları tek HTTP isteği yerine ilerleme bilgisi veren asenkron işlerle işleyin.
Dayanıklı sistem; gateway ve kimlik doğrulama, yükleme kontrolü, nesne depolama, kuyruk, inference worker, sonuç servisi, izleme ve denetim kayıtlarını ayırır.
Performans
Yalnız model inference süresini değil decode, resize, veri aktarımı, NMS, çizim, serileştirme ve ağ süresini ölçün. Desteklenen GPU’da FP16 kullanın, concurrency ve kuyrukları sınırlayın, p50/p95/p99 gecikmesini, belleği ve düşürülen kareleri izleyin.
ONNX, TensorRT veya OpenVINO dışa aktarımından sonra orijinal modelle sınıf bazında regresyon testi yapın.
Güvenlik ve gizlilik
Görüntüler yüz, plaka, ekran, adres ve özel alan içerebilir. Veri minimizasyonu, saklama süresi, erişim kontrolü ve şifreleme uygulayın. Dosya uzantısına güvenmeyin ve güvenilmeyen model dosyalarını yüklemeyin. YOLO olasılıksal sonuç verir; yüksek riskli tıbbi, hukuki, işe alım veya güvenlik kararlarında tek otorite olmamalıdır.
Yaygın hatalar
- Benzer karelerin bölümler arasında sızması.
- Tutarsız etiket kuralları.
- Kritik sınıf sorununu genel mAP arkasında kaçırmak.
- Yalnız temiz görüntülerle test.
- Her sınıfa aynı eşik.
- p99 gecikmesini yok saymak.
- Sınırsız video kuyruğu.
- Regresyon testi olmadan export.
- Özel görüntüleri varsayılan olarak loglamak.
- Veri driftini izlememek.
Mülakat soruları
YOLO neden tek aşamalıdır?
Konum ve sınıfları ayrı bir bölge öneri aşaması olmadan doğrudan tahmin eder.
IoU ne ölçer?
Tahmin kutusu ile gerçek kutu arasındaki örtüşmenin birleşim alanına oranını.
Precision mı Recall mı?
Hata maliyetine bağlıdır. Güvenlik taraması recall, otomatik engelleme yüksek precision isteyebilir.
Küçük nesneler nasıl iyileştirilir?
Temsil gücü yüksek çözünür veri ve etiketleri iyileştirin, giriş boyutu ve augmentation ayarlayın, çok ölçekli özellikleri koruyun ve gerektiğinde tiling deneyin.
Sonuç
Başarılı YOLO projesi yalnız bir eğitim komutu değil, veri ve sistem projesidir. Ölçülebilir baseline kurun, gerçek hatalardan veri üretin ve tüm işlem hattını profillemeden optimizasyon yapmayın.
Kaynaklar
Öne Çıkan Makaleler

Üretimde Kafka: Bölümleme, Consumer Lag, Güvenilirlik ve Olay Müdahalesi
Kafka kümesini canlıya taşımadan önce sıralama, kapasite, gecikme ve yeniden oynatma kararlarını netleştirin. Somut metrikler ve olay müdahalesi adımlarıyla bir rehber.

Apache Kafka'yı Anlamak: Topic, Partition, Consumer Group ve İlk Olay Akışınız
Bir sipariş olayını üreticiden tüketicilere izleyin; ardından Kafka'yı yerelde çalıştırıp sıralama, gruplar ve tekrar okuma davranışını deneyin.

İstemcilerin Güvenebileceği API'ler Nasıl Tasarlanır? Sözleşmeden Başlayan Pratik Rehber
İyi bir API, istemcinin sonraki adımını öngörülebilir kılar. Bir kurs kaydı örneğiyle güvenli tekrarları, yararlı hataları ve değişim planını tasarlayın.
Yorumlar
0 yorumHenüz onaylı yorum yok. Yeni yanıtlar moderasyon bekleyebilir.