YOLO Vision 2026:

Labelbox Entegrasyonu#

Ultralytics Platform Labelbox NDJSON dış aktarımlarını doğrudan okur. Yapıştırılacak bir anahtar, açık tutulacak bir bağlantı ve bakımını yapacak bir dönüştürme betiği yoktur; Labelbox'tan dışarı aktar, dosyayı yükle ve etiketlerin normal bir Platform veri kümesi olarak gelir.

Labelbox'tan İçe Aktar#

  1. Labelbox'tan dışarı aktar. Getirmek istediğin etiketleme projesini veya kataloğu aç ve Veri Satırları sekmesine git. Tümü'nü seç, Verileri dışarı aktar'a tıkla, dahil edilecek alanları seç ve onayla. Bir projeden ziyade Katalog'dan mı dışarı aktarıyorsun? Projeden etiketleri dışarı aktar seçeneğini etkinleştir ve projeyi seç, aksi takdirde dosya hiç ek açıklamalar olmadan gelir.
  2. Dosyayı indir. Labelbox dışarı aktarma işlemini arka plan işi olarak çalıştırır. Bildirimler kısmından bunu takip et ve bittiğinde .ndjson dosyasını kaydetmek için İndir'e tıkla.
  3. Platform'a yükle. Yeni bir veri kümesi oluştur ve .ndjson dosyasını yükle veya buna doğrudan bir bağlantı yapıştır. Ayrıca Ayarlar > Entegrasyonlar > Labelbox seçeneğinden de başlayabilirsin.
  4. Eğit. İşlem bittikten sonra, ek açıklamaları düzenle ve diğer herhangi bir Platform veri kümesinde olduğu gibi tam olarak eğit.

Ultralytics Platform Labelbox Veri Kümesi İçe Aktarımı

CVAT ve Label Studio'nun aksine, seçilecek bir biçim yoktur; Labelbox'ın kendi dış aktarımı desteklenen biçimdir.

SDK ile Dışa Aktar#

Labelbox ayrıca, yinelenebilir bir boru hattı için daha kolay yol olan Python SDK'sında dışa aktarma görevini sunar. Görevi akışa al ve satır başına bir JSON nesnesi yaz:

import json

import labelbox

client = labelbox.Client(api_key="YOUR_LABELBOX_API_KEY")
export_task = labelbox.ExportTask.get_task(client, "YOUR_EXPORT_TASK_ID")
export_task.wait_till_done()  # streaming a task that isn't COMPLETE raises

with open("dataset.ndjson", "w") as f:
    f.writelines(json.dumps(data_row.json) + "\n" for data_row in export_task.get_buffered_stream())
JSON dizisi değil, NDJSON yaz

NDJSON satır başına bir JSON nesnesidir. json.dump(list_of_rows, f) bunun yerine tek bir dizi yazar ve Platform JSON nesnesi olmayan herhangi bir satırı atlar; içe aktarım hiçbir veri satırı bulamaz. Yukarıdaki döngüyü kullan veya "\n".join(json.dumps(r) for r in rows) kullan.

Neler İçe Aktarılır#

Platform, Labelbox biçimini kendi kendine tanır ve sınırlayıcı kutuları ile çokgenleri eşleşen YOLO görev türüne eşler:

Labelbox Etiketiİçe Aktarılan
Sınırlayıcı kutuAlgıla
ÇokgenSegmentlere Ayır
Segmentasyon maskesi, nokta, çoklu çizgi, ilişki, sınıflandırmaHenüz değil

Her nesnenin name değeri sınıf adı olur; dolayısıyla bir "name": "Dog" açıklaması, küçük harfli value olarak değil Dog sınıfı olarak içe aktarılır ve piksel koordinatları, dışa aktarımdaki media_attributes boyutlarına göre normalleştirilir. Her görüntü adını dışa aktarımda harici bir ID bulunmadığında imzalı URL'deki dosya adına geri dönen data_row.external_id değerinden alır. Hiç açıklaması olmayan bir katalog dışa aktarımı, Platform'un annotation editor kısmında etiketlenmeye hazır, etiketlenmemiş bir görüntü veri kümesi olarak içe aktarılır.

Tek bir veri satırı, Platform'un okuduğu alanlarla sınırlandırılmış olarak şu şekildedir:

{
    "data_row": {
        "external_id": "000000000307.jpg",
        "row_data": "https://storage.labelbox.com/...?Expires=...&Signature=..."
    },
    "media_attributes": { "height": 480, "width": 640, "mime_type": "image/jpeg" },
    "projects": {
        "<project-id>": {
            "labels": [
                {
                    "annotations": {
                        "objects": [
                            {
                                "name": "Dog",
                                "annotation_kind": "ImageBoundingBox",
                                "bounding_box": { "top": 200.0, "left": 407.0, "height": 172.0, "width": 176.0 }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Dış aktarımdaki diğer her şey (embeddings, metadata_fields, attachments, project_details) yoksayılır. Yerleştirmeleri dışarı aktarırken seçimini kaldırmaya değer: örnek bir dış aktarımda bunlar dosyanın yaklaşık beşte dördünü oluştururken, Platform'un gerçekten okuduğu alanlar beşte birini oluşturuyordu.

Maske ve nokta projeleri ek açıklamalar olmadan içe aktarılır

Bugün yalnızca sınırlayıcı kutular ve çokgenler okunur ve bunlar yalnızca nesne ek açıklamalarından okunur; görüntü düzeyindeki sınıflandırmalar dışa aktarımın başka bir yerinde yer alır ve atlanır. Tamamen segmentasyon maskesi (fırça) aracı, noktalar, çoklu çizgiler veya sınıflandırmalarla etiketlenmiş bir proje, görüntülerini içe aktarır ancak hiçbir ek açıklama içe aktarmaz ve herhangi bir hata oluşmaz. Bunu veri kümesi sayfasında fark edebilirsin: etiketlerini koruyan içe aktarılan bir veri kümesi, görüntü sayısının yanında bir etiketli ve ek açıklama sayısı gösterirken, bunları kaybeden bir veri kümesi hiçbirini göstermez.

Bağlantıları tazeyken dışa aktarımı yükle

Bir Labelbox dışa aktarımı, pikselleri gömmek yerine her görüntüye imzalı URL ile başvurur ve bu imzaların süresi dolar. Platform, başlamadan önce bir örneği inceleyerek görüntüleri bu URL'lerden indirir, bu nedenle bağlantılarının tümünün süresi dolmuş bir dışa aktarım hemen başarısız olur ve nedenini söyler; Labelbox'tan yeniden dışa aktar ve yeni dosyayı yükle. Yalnızca kısmen süresi dolmuş bir dışa aktarım, hala ulaşabildiği görüntüleri içe aktarır ve geri kalanını atlar, bu nedenle dışa aktardıktan kısa süre sonra yükle.

Karışık bir dışa aktarımda kutular bırakılır

Hem sınırlayıcı kutular hem de çokgenler içeren bir dışa aktarım, segment veri kümesi olarak içe aktarılır ve bir segment veri kümesi yalnızca çokgen geometrisi taşır; kutu ek açıklamaları eğitim için kullanılmaz veya sürüm dışa aktarımlarına dahil edilmez. Her ikisine de ihtiyacın varsa kutuları ve çokgenleri ayrı Labelbox projeleri olarak dışa aktar. Çokgenlerin okunabilmesi için ayrıca en az üç nokta gereklidir.

Katkıda Bulunanlar

Yorumlar