Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
Ultralytics Platform ile geliştirmeye başla·Veri Kümesini Oluştur·Ders 2/10
Dersorta düzey

Veri Ekle ve Hazırla

Yüklemeden önce veri kümesini yerel olarak denetle, videodan bilinçli örnekleme yap ve Platform veri kümesini ilk denemede Ready durumuna getir.

Yüklemeden önce yakaladığın veri kümesi hatası en az maliyetli hatadır. Pascal VOC etiketleri sessizce atlanır, 28 pikselden küçük görüntüler reddedilir ve 30 dakikalık bir video yalnızca 100 kareye dönüşür; bunların çoğunda boş bir sahne görünür. Bu derste yükleme öncesi iki dakikalık bir denetim yapacak, videodan bilinçli örnekleme alacak ve eğitim verilerinin eksiksiz ulaşması için Platform'un işleme sinyallerini okuyacaksın.

Sonuç

Yerel bir veri kümesinde yükleme öncesi denetim yapabilir, uzun bir videoyu etiketlemeye değer karelere indirebilir ve Ready rozeti gösteren bir Platform veri kümesi oluşturabilirsin.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. Yükleme öncesi denetimi çalıştır: bölümlere göre görüntü ve etiket sayıları, çok küçük veya çok büyük görüntüler, desteklenmeyen dosyalar, VOC etiketleri.

  2. Annotate içinde New Dataset öğesine tıkla; kaynağı, görev türünü ve Private görünürlüğünü seç.

  3. Uzun videolardan önceden kendin örnekleme al: Platform video başına en fazla 100 kare tutar.

  4. Errors ve Charts sekmelerini incele, ardından rozet Ready diyene kadar tıkla.

Uygulamalı

Veri Kümesini Oluştur#

Veri kümesi kartlarını ve Yeni Veri Kümesi düğmesini gösteren Ultralytics Platform profil sayfasının Veri Kümeleri sekmesi

Kenar çubuğunda Annotate öğesini aç ve New Dataset öğesine tıkla. İletişim kutusu bir kaynak, ad, görev türü, isteğe bağlı lisans, yüz bulanıklaştırma seçeneği ve görünürlük sorar:

Yükleme, URL, Bulut ve Şirket İçi kaynak sekmelerini; kabul edilen biçimlerin ve boyut sınırlarının listelendiği bir yükleme alanını ve Görev Türü, Lisans, Yüzleri bulanıklaştır ve Görünürlük denetimlerini gösteren Ultralytics Platform Yeni Veri Kümesi iletişim kutusu

KaynakNe zaman kullanılırPlan
YüklemeDosyalar bilgisayarında: görüntüler, videolar, arşivler veya NDJSON dışa aktarımlarıTümü
URLHerkese açık bir .zip, .tar, .tar.gz, .tgz veya .ndjson bağlantısı var; Platform dosyayı sunucu tarafında indirirTümü
BulutVeriler zaten Google Cloud Storage, Amazon S3 veya Azure Blob Storage'da bulunuyor ve orada kalmalıPro, Enterprise
Şirket İçiPikseller makinelerinden asla çıkmamalıEnterprise

Karar kuralı: bu kurs için bir kopya yükle. Bulut ve Şirket İçi veri kümelerinde pikseller Platform dışında kalır; bu nedenle akıllı etiketleme, Kümeleme, klonlama ve sürüm anlık görüntüleri kullanılamaz.

Görev türü, hangi araçların ve modellerin görüneceğini belirler. Platform, Ultralytics YOLO'nun yedi görevinin tümünü destekler:

GörevNasıl etiketlenir
TespitDikdörtgen veya SAM ve YOLO akıllı etiketleme
SegmentasyonÇokgen veya SAM ve YOLO akıllı etiketleme
AnlamsalÇokgen veya SAM ve YOLO akıllı etiketleme; PNG maskeleri doğrudan içe aktarılır
PozYerleşik ya da özel iskeletlerde anahtar noktalar; akıllı etiketleme için YOLO poz modelleri
OBBYönlendirilmiş kutu veya SAM ve YOLO akıllı etiketleme
SınıflandırmaKenar çubuğundaki sınıf seçici
DerinlikÇizim yok: eşleştirilmiş derinlik haritaları olan görüntüleri yükle (yalnızca Yükle veya URL)

Çözümlü Örnek: Yüklemeden Önce Veri Kümesini Kontrol Et#

Platform, 50 MB'a kadar ve kısa kenarı en az 28 px olan JPEG, PNG, WebP, BMP, TIFF, HEIC, AVIF, JP2, DNG ve MPO görüntülerini kabul eder; YOLO, COCO, LabelMe, Ultralytics veya Labelbox NDJSON biçimlerini ve anlamsal PNG maske etiketlerini okur. Pascal VOC XML algılanır ancak içe aktarılmaz. Bu betik, yerel bir YOLO veri kümesini bu kurallara göre denetler; burada herkese açık medical pills veri kümesini kullanıyor:

from collections import Counter
from pathlib import Path

from PIL import Image

from ultralytics.data.utils import check_det_dataset

ACCEPTED = {".jpg", ".jpeg", ".png", ".webp", ".bmp", ".tif", ".tiff", ".heic", ".avif", ".jp2", ".dng", ".mpo"}
data = check_det_dataset("medical-pills.yaml")  # your local dataset YAML
root = Path(data["path"])

problems = Counter()
for split in ("train", "val", "test"):
    if not data.get(split):
        continue
    files = [p for p in Path(data[split]).rglob("*") if p.is_file()]
    images = [p for p in files if p.suffix.lower() in ACCEPTED]
    labeled = 0
    for img in images:
        label = Path(str(img).replace("images", "labels")).with_suffix(".txt")
        labeled += label.exists() and label.stat().st_size > 0
        if min(Image.open(img).size) < 28:
            problems["under 28 px (rejected)"] += 1
        if img.stat().st_size > 50 * 1024**2:
            problems["over 50 MB (rejected)"] += 1
    problems["unsupported files (skipped)"] += len(files) - len(images)
    print(f"{split:<5} {len(images):>4} images, {labeled:>4} labeled, {len(images) - labeled:>3} background")
problems["Pascal VOC .xml labels (not imported)"] += len(list(root.rglob("*.xml")))
print("classes:", data["names"])
print("problems:", {k: v for k, v in problems.items() if v} or "none")
train   92 images,   92 labeled,   0 background
val     23 images,   23 labeled,   0 background
classes: {0: 'pill'}
problems: none

Çıktının anlattıkları:

  • Bölüm başına sayılar. train/, val/ ve test/ klasörlerindeki görüntüler, yükleme sırasında bulundukları bölümü korur; dolayısıyla Platform bu sayıları gösterir. val satırının olmaması, Platform'un senin için rastgele bir doğrulama bölümü oluşturacağı anlamına gelir (aşağıdaki tuzağa bak).
  • Arka plan görüntüleri (etiket dosyası olmayanlar) ölçülü kullanıldığında sorun olmaz; modele “burada hiçbir şey yok” durumunun nasıl göründüğünü öğretirler. Yüzlerce arka plan görüntüsü genellikle etiketlerin dışa aktarılamadığı anlamına gelir.
  • problems: none, her görüntünün işleneceği anlamına gelir. Buradaki her sayı, Errors sekmesine düşecek ya da hiç ulaşmayacak bir dosyadır.

Veri kümesi klasörünü data.yaml ile birlikte ZIP'le ve arşivi galeriye sürükle. Platform biçimi otomatik algılar, aynı görüntüleri yalnızca bir kez depolar ve yüklenen bir dosya veri kümesindeki mevcut görüntülerle çakıştığında Atla, İkisini de tut veya Değiştir seçeneklerinden hangisini istediğini sorar.

Çözümlü Örnek: Platform İşlemeden Önce Videoyu Örnekle#

Platform her videodan saniyede 1 kare örnekler ve en fazla 100 kare tutar; 100 saniyeden uzun kliplerde aralığı genişletir:

Klip süresiTutulan karelerAralık
60 saniye601 saniye
100 saniye1001 saniye
30 dakika (30 fps'de 54.000 kare)10018 saniye

Bu yöntem hızlıca göz atmaya uygundur, ancak gerçek projelerin çoğunda işe yaramaz: 30 dakikalık bir vardiya kaydı, çoğu boş bir koridordan alınmış 100 kareye dönüşür. Uzun görüntüleri kendin örnekle ve kareleri yükle:

Düzenli aralıklarla örnekleme için FFmpeg yeterlidir:

mkdir -p frames
ffmpeg -i source.mp4 -vf fps=1 frames/%06d.jpg

Olay odaklı örnekleme için, nesnenin bulunduğu kareleri tutması amacıyla önceden eğitilmiş bir Ultralytics YOLO modeli kullan:

from pathlib import Path

import cv2

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # or your latest fine-tune
out = Path("frames")
out.mkdir(exist_ok=True)

source = "https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4"
seen = kept = 0
for i, result in enumerate(model.predict(source, stream=True, vid_stride=5, classes=[0], conf=0.5, verbose=False)):
    seen += 1
    if len(result.boxes):  # keep only frames where a person was detected
        cv2.imwrite(str(out / f"frame_{i:05d}.jpg"), result.orig_img)
        kept += 1
print(f"Kept {kept} of {seen} sampled frames")
Kept 12 of 12 sampled frames

vid_stride=5 her beş kareden birine bakar, classes=[0] algılamayı kişilerle sınırlar ve conf=0.5 güven düzeyi düşük tahminleri yok sayar. Bu hareketli demo klibinde örneklenen her karede insanlar var; çoğunlukla boş bir sahnenin kaydında tutulan karelerin oranı ve dolayısıyla etiketleme maliyetin keskin biçimde düşer. Yan yana tutulan kareler artık birbirinin aynısı görünmeyene kadar vid_stride değerini artır.

Platform'un İşleme Sinyallerini Oku#

Yüklemeden sonra Platform doğrulama yapar, normalleştirir (4.096 px üzerindeki görüntüleri yeniden boyutlandırır), küçük resimler oluşturur, etiketleri ayrıştırır ve istatistikleri hesaplar. Üç yeri kontrol et:

Hatalar sekmesi açık olan Ultralytics Platform veri kümesi sayfası; 1 görüntünün işlenemediğini belirten bir başlık ve Görüntü dosyası okunamadı yazan, düzeltme ipucu içeren bir tablo satırı gösteriliyor

  • Errors sekmesi yalnızca dosyalar işlenemediğinde görünür: bozuk dosyalar, desteklenmeyen biçimler, 28 px'den küçük görüntüler veya CMYK ve dizinlenmiş renk modları; her biri için bir düzeltme ipucu gösterilir. Bu dosyaları yeniden dışa aktar veya yükle.
  • Charts sekmesi bölüm dağılımını, en sık görülen sınıfları, görüntü boyutlarını, dosya boyutlarını, anotasyonların konumlarını, kutu boyutlarını ve görüntü başına nesne sayılarını gösterir. Nadir görülen bir sınıf, küçük görüntüler veya tek bir köşede kümelenmiş kutular olup olmadığına bak.
  • Veri kümesi başlığındaki rozet, işleme tamamlandığında ve veri kümesinde en az bir train görüntüsü, bir val veya test görüntüsü ve etiketlenmiş bir görüntü bulunduğunda Ready yazar. Hangi koşulun eksik olduğunu görmek için Not Ready öğesine tıkla.

Ultralytics Platform'daki medical-pills veri kümesinin Grafikler sekmesi; Bölüm Dağılımı ve En Sık Görülen Sınıflar halka grafikleriyle Görüntü Boyutları ve Görüntü Dosyası Boyutu histogramlarını gösteriyor

Herkese Açık Bir Veri Kümesiyle Başla#

Herkese açık bir inşaat KKD veri kümesi için Ultralytics Platform Veri Kümesini Klonla iletişim kutusu; yeni ad, URL kısa adı, açıklama, görev türü, lisans ve görünürlük anahtarı alanları gösteriliyor

Henüz verin yok mu? Keşfet sayfasında resmî ve topluluk veri kümeleri listelenir. Veri Kümesini Klonla, görüntüleri, anotasyonları ve sınıfları çalışma alanına kopyalar, depolama alanından düşer ve varsayılan olarak kaynak veri kümesinin herkese açık görünürlüğünü korur; bu nedenle hassas bir şey ekleyeceksen iletişim kutusundaki anahtarı değiştir.

Yaygın Hatalar#

Pascal VOC etiketleri sessizce kayboluyor

Belirti: Yükleme başarılı oluyor ama tüm görüntüler etiketsiz geliyor. Çözüm: Platform, Pascal VOC XML dosyalarını algılar ve içe aktarmaz. Önce YOLO .txt etiketlerine veya COCO JSON'a dönüştür; yükleme öncesi kontrol .xml dosyalarını sayarak yüklemeden önce bunu fark etmeni sağlar.

Otomatik doğrulama bölmesi video karelerinin sızmasına yol açıyor

Belirti: Doğrulama mAP değeri mükemmel, ancak dağıtılan model öyle değil. Çözüm: Bölme seçilmeden yapılan yüklemede val boş kalırsa Platform, eğitim görüntülerinin yaklaşık %20'sini rastgele val içine taşır. Video karelerinde bu işlem birbirine çok benzeyen komşu kareleri her iki bölmeye de koyar. Bunun yerine, videoya veya kameraya göre bölünmüş train/ ve val/ klasörleriyle yükle (ders 4).

Etiketleme araçları eksik

Belirti: Çokgen aracını veya kilit noktaları bulamıyorsun. Çözüm: Kullanılacak araçları görev türü belirler. Veri kümesi başlığından görev türünü değiştir; her görüntü tüm görevlerin etiketlerini saklar, bu nedenle görev türünü değiştirmek diğer görevlerin etiketlerini silmek yerine gizler.

Dene

preflight.py aracını kendi veri kümen (veya medical pills) üzerinde çalıştır ve bildirdiği her sorunu düzelt. Ardından bir Özel Platform veri kümesi oluştur, veri kümesini ve bir videoyu yükle; galeriyi kontrol etmeden önce videonun tablodan kaç kare üreteceğini tahmin et.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • preflight.py, yüklediğin veri kümesinde problems: none rapor ediyor.

  • Galerideki görüntü sayısı, görüntülerinle tahmin ettiğin video karelerinin toplamına eşit.

  • Veri kümesi başlığında Ready yazıyor ya da hangi koşulun eksik olduğunu tam olarak not ettin.

Çözümü göster

medical pills veri kümesi ve 4 dakikalık hat kamerası videosu için çözümlü yanıt. Yükleme öncesi kontrol: 92 eğitim ve 23 doğrulama görüntüsü; tümü etiketli ve sorunsuz. Video: 240 saniye 100 saniyeyi aştığından aralık ceil(240 / 100) = 3 saniyeye genişler ve Platform 80 kare tutar (0 sn, 3 sn, …, 237 sn'de bir kare). Beklenen galeri sayısı: 92 + 23 + 80 = 195 görüntü. Video kareleri etiketsiz olarak, galeri filtresinde seçili bölüme gelir; bu nedenle doğrulama bölümüne düşmelerini önlemek için videoyu bırakmadan önce Eğitim'i seç. Eğitim, doğrulama ve etiketli görüntüler bulunduğu için rozet Ready yazar. Yalnızca videoyu yüklemiş olsaydın rozet Not Ready yazardı: henüz etiketli görüntü yok.

Sırada ne var

Sırada görüntüleri bir modelle önceden etiketleyecek ve her güven eşiğinin ne kadar inceleme işi oluşturduğunu ölçeceksin.

İlerlemeni kaydetmek için giriş yap