Labelbox Entegrasyonu#
Ultralytics Platform, Labelbox NDJSON dışa aktarımlarını doğrudan okur. Yapıştırılacak bir anahtar, canlı tutulacak bir bağlantı veya sürdürülecek bir dönüştürme betiği yoktur — Labelbox'tan dışa aktar, dosyayı yükle ve etiketlerin normal bir Platform veri kümesi olarak gelsin.
Labelbox'tan içe aktarma#
- Labelbox'tan dışa aktar. Aktarmak istediğin etiketleme projesini veya kataloğu aç ve Data Rows sekmesine git. All seçeneğini belirle, Export data düğmesine tıkla, dahil edilecek alanları seç ve onayla. Proje yerine Catalog'dan mı dışa aktarıyorsun? Export labels from project seçeneğini etkinleştir ve projeyi seç; aksi halde dosya hiçbir ek açıklama içermeden gelir.
- Dosyayı indir. Labelbox dışa aktarma işlemini arka plan görevi olarak çalıştırır. Görevi Notifications bölümünde takip et ve tamamlandığında
.ndjsondosyasını kaydetmek için Download düğmesine tıkla. - Platform'a yükle. Yeni bir veri kümesi oluşturup
.ndjsondosyasını yükle veya dosyanın doğrudan bağlantısını yapıştır. Ayrıca Settings > Integrations > Labelbox yolundan da başlayabilirsin. - Eğit. İşleme tamamlandığında ek açıklamaları düzenle ve diğer tüm Platform veri kümelerinde olduğu gibi eğit.

CVAT ve Label Studio'dan farklı olarak seçilecek bir biçim yoktur — Labelbox'ın kendi dışa aktarımı desteklenen biçimdir.
SDK ile dışa aktarma#
Labelbox, dışa aktarma görevini Python SDK'sında da sunar; bu, tekrarlanabilir bir işlem hattı için daha kolay yoldur. Görevi akış olarak işle ve her satıra 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())NDJSON, her satırda bir JSON nesnesidir. json.dump(list_of_rows, f) bunun yerine tek bir dizi yazar ve Platform, JSON nesnesi olmayan tüm satırları atlar — içe aktarma hiçbir veri satırı bulamaz. Yukarıdaki döngüyü veya "\n".join(json.dumps(r) for r in rows) kullan.
Neler İçe Aktarılır#
Platform, Labelbox biçimini kendisi tanır ve sınırlayıcı kutuları ile çokgenleri eşleşen YOLO görev türüne eşler:
| Labelbox Ek Açıklaması | İçe aktarıldı |
|---|---|
| Sınırlayıcı kutu | Algılama |
| Poligon | Segmentasyon |
| Segmentasyon maskesi, nokta, çoklu çizgi, ilişki, sınıflandırma | Henüz değil |
Her nesnenin name değeri sınıf adına dönüşür — bu nedenle "name": "Dog" ek açıklaması, küçük harfli value yerine 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ü data_row.external_id değerine göre adlandırılır; dışa aktarımda harici bir kimlik yoksa imzalı URL'deki dosya adına geri dönülür. Ek açıklama içermeyen bir katalog dışa aktarımı, Platform'ın ek açıklama düzenleyicisinde etiketlemeye hazır, etiketsiz bir görüntü veri kümesi olarak içe aktarılır.
Tek bir veri satırı, Platform'ın okuduğu alanlarla sınırlandırılmış şekilde şöyle görünür:
{
"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ışa aktarımdaki diğer her şey — embeddings, metadata_fields, attachments, project_details — yok sayılır. Dışa aktarırken gömülü gösterimleri seçimini kaldırmaya değer: örnek bir dışa aktarımda bunlar dosyanın yaklaşık beşte dördünü oluştururken, Platform'ın gerçekten okuduğu alanlar beşte birini oluşturuyordu.
Bugün yalnızca sınırlayıcı kutular ve çokgenler okunur ve bunlar da yalnızca bir nesne ek açıklamasından okunur — görüntü düzeyindeki sınıflandırmalar dışa aktarımın başka bir yerinde bulunur ve atlanır. Tamamı 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 aktarmaz ve hata bildirilmez. Bunu veri kümesi sayfasında görebilirsin: etiketlerini koruyan içe aktarılmış bir veri kümesinde görüntü sayısının yanında etiketli görüntü ve ek açıklama sayısı gösterilir; bunları kaybeden bir veri kümesinde ise ikisi de gösterilmez.
Bir Labelbox dışa aktarımı, her görüntüye pikselleri gömmek yerine imzalı URL üzerinden başvurur ve bu imzaların süresi dolar. Platform, başlamadan önce bir örneği kontrol ederek görüntüleri bu URL'lerden indirir; bu nedenle tüm bağlantılarının süresi dolmuş bir dışa aktarım hemen başarısız olur ve nedenini bildirir — Labelbox'tan yeniden dışa aktar ve yeni dosyayı yükle. Yalnızca kısmen süresi dolmuş bir dışa aktarım, hâlâ erişebildiği görüntüleri içe aktarır ve geri kalanları atlar; bu nedenle dışa aktardıktan kısa süre sonra yükle.
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 segment veri kümesi yalnızca çokgen geometrisini içerir — kutu ek açıklamaları eğitimde 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 en az üç noktaya da ihtiyacı vardır.