Labelbox Entegrasyonu#
Ultralytics Platform, Labelbox NDJSON dışa aktarımlarını doğrudan okur. Yapıştırılacak bir anahtar, etkin tutulması gereken bir bağlantı veya bakımı gereken bir dönüştürme betiği yok — Labelbox'tan dışa aktar, dosyayı yükle ve etiketlerin normal bir Platform veri kümesi olarak gelir.
Labelbox'tan içe aktar#
- Labelbox'tan dışa aktar. Bir etiketleme projesi için Data Rows sekmesini aç, All'ı seç, Export data'ya tıkla, eklenecek alanları seç ve onayla. Catalog bölümünde veri satırlarını seçip Manage selection > Export data'yı seç, ardından Export labels from project seçeneğini etkinleştirip projeyi seç; aksi hâlde dosya hiç açıklama içermeden gelir.
- Dosyayı indir. Labelbox, dışa aktarma işlemini arka plan görevi olarak yürütür. Notifications bölümünde işlemi izle ve tamamlandığında
.ndjsondosyasını kaydetmek için Download'a 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, diğer Platform veri kümelerinde olduğu gibi açıklamaları düzenleyebilir ve eğitebilirsin.

CVAT ve Label Studio araçlarından farklı olarak seçilecek bir biçim yok — desteklenen biçim Labelbox'ın kendi dışa aktarma biçimidir.
SDK ile dışa aktar#
Labelbox, dışa aktarma görevini Python SDK'sında da sunar; bu, tekrarlanabilir bir işlem hattı oluşturmanın daha kolay yoludur. 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() # TAMAMLANMAMIŞ bir görevin akış olarak işlenmesi hata verir
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 nesnesi bulunması demektir. 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 işleminde hiç veri satırı bulunmaz. 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 otomatik olarak tanır ve sınırlayıcı kutularla çokgenleri eşleşen YOLO görev türüne dönüştürür:
| Labelbox Açıklaması | İçe aktarıldı |
|---|---|
| Sınırlayıcı kutu | Algılama |
| Çokgen | Segmentasyon |
| Segmentasyon maskesi, nokta, çoklu çizgi, ilişki, sınıflandırma | Henüz desteklenmiyor |
Her nesnenin name alanı sınıf adı olur — bu nedenle "name": "Dog" açıklaması, küçük harfli value değil, Dog sınıf adıyla içe aktarılır — ve piksel koordinatları dışa aktarımdaki media_attributes boyutlarına göre normalleştirilir; bu nedenle dışa aktarımda medya özniteliklerini koru: genişliği ve yüksekliği olmayan satırlardaki görseller açıklama olmadan içe aktarılır. Yalnızca Platform'un içe aktarabildiği nesneler sınıf kaydı oluşturur; böylece maske, nokta ve çoklu çizgi araçları veri kümesine boş sınıflar eklemez. Her görsel önce data_row.external_id, ardından global_key alanına göre adlandırılır; dışa aktarımda ikisi de yoksa imzalı URL'deki dosya adı kullanılır. Görsel veri satırları içe aktarılır; video, metin ve diğer görsel olmayan veri satırları atlanır. Açıklama içermeyen bir katalog dışa aktarımı, Platform'un açıklama düzenleyicisinde etiketlemeye hazır, etiketsiz bir görsel veri kümesi olarak içe aktarılır.
Tek bir veri satırı, Platform'un okuduğu alanlarla sınırlandırılmış hâliyle şöyledir:
{
"data_row": {
"external_id": "000000000307.jpg",
"global_key": "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ım sırasında gömmeleri seçmemek faydalı olur: örnek bir dışa aktarımda dosyanın yaklaşık beşte dördünü oluşturuyorlardı; Platform'un gerçekten okuduğu alanlar ise beşte bir kadardı.
Şu anda yalnızca sınırlayıcı kutular ve çokgenler okunur ve bunlar da yalnızca bir nesne açıklamasından alınır — görsel düzeyindeki sınıflandırmalar dışa aktarımın başka bir yerinde bulunur ve atlanır. Tümüyle segmentasyon maskesi (fırça) aracıyla, noktalarla, çoklu çizgilerle veya sınıflandırmalarla etiketlenmiş bir projenin görselleri içe aktarılır ancak açıklamaları içe aktarılmaz ve hata verilmez. Bunu veri kümesi sayfasında görebilirsin: etiketlerini koruyan içe aktarılmış bir veri kümesinde görsel sayısının yanında etiketli ve açıklamalı öğe sayısı gösterilir; etiketlerini kaybeden bir veri kümesinde ise bu sayılar gösterilmez.
Labelbox dışa aktarımı, görsellerin piksel verilerini eklemek yerine her görsele imzalı URL ile başvurur ve bu imzaların süresi dolar. Platform başlamadan önce örnek görselleri kontrol ederek görselleri bu URL'lerden indirir; bu nedenle tüm bağlantıları geçersiz hâle gelmiş bir dışa aktarım hemen başarısız olur ve nedeni bildirir — Labelbox'tan yeniden dışa aktar ve yeni dosyayı yükle. Yalnızca bazı bağlantıların süresi dolmuş bir dışa aktarım, erişebildiği görselleri içe aktarır ve geri kalanını atlar; bu nedenle dışa aktardıktan kısa süre sonra yükle.
Hem sınırlayıcı kutuları hem de çokgenleri içeren bir dışa aktarım, segment veri kümesi olarak içe aktarılır ve segment veri kümesinde yalnızca çokgen geometrisi bulunur — kutu açıklamaları eğitimde kullanılmaz veya sürüm dışa aktarımlarına eklenmez. Her ikisine de ihtiyacın varsa kutuları ve çokgenleri ayrı Labelbox projeleri olarak dışa aktar. Ayrıca çokgenlerin okunabilmesi için en az üç noktası olmalıdır.
Sık Sorulan Sorular#
Platform, her satırda bir JSON nesnesi bulunan NDJSON biçimini okur. Tek bir JSON dizisi olarak kaydedilmiş bir dışa aktarım bütünüyle atlanır. Yukarıdaki SDK döngüsünü veya zaten NDJSON biçiminde olan Labelbox'ın kendi Export data indirme seçeneğini kullan.
Labelbox dışa aktarımları görsellere imzalı URL'lerle başvurur ve bu imzaların süresi dolar. Labelbox'tan yeniden dışa aktar ve işlem tamamlandıktan kısa süre sonra yeni dosyayı yükle.
Hayır. Karma bir dışa aktarım segment veri kümesi olarak içe aktarılır ve yalnızca çokgenler kullanılır. Her ikisine de ihtiyacın varsa kutuları ve çokgenleri ayrı Labelbox projeleri olarak dışa aktar.