Tích hợp Labelbox#
Ultralytics Platform đọc trực tiếp các bản xuất NDJSON từ Labelbox. Bạn không cần dán key, không cần duy trì kết nối và cũng không cần bảo trì script chuyển đổi — chỉ cần xuất từ Labelbox, tải tệp lên và các nhãn của bạn sẽ xuất hiện dưới dạng một dataset Platform thông thường.
Nhập từ Labelbox#
- Xuất từ Labelbox. Mở dự án gắn nhãn hoặc catalog bạn muốn đưa vào, rồi chuyển đến tab Data Rows. Chọn All, nhấp vào Export data, chọn các trường cần đưa vào và xác nhận. Bạn đang xuất từ Catalog thay vì một dự án? Hãy bật Export labels from project và chọn dự án; nếu không, tệp sẽ hoàn toàn không có annotation.
- Tải tệp xuống. Labelbox chạy tác vụ xuất dưới dạng background job. Theo dõi tác vụ trong Notifications và nhấp Download khi hoàn tất để lưu tệp
.ndjson. - Tải lên Platform. Tạo dataset mới rồi tải tệp
.ndjsonlên hoặc dán liên kết trực tiếp đến tệp. Bạn cũng có thể bắt đầu từ Settings > Integrations > Labelbox. - Huấn luyện. Sau khi xử lý hoàn tất, hãy chỉnh sửa annotation và huấn luyện giống hệt như với bất kỳ dataset Platform nào khác.

Không giống CVAT và Label Studio, bạn không cần chọn định dạng — bản xuất riêng của Labelbox là định dạng được hỗ trợ.
Xuất bằng SDK#
Labelbox cũng cung cấp tác vụ xuất trong Python SDK, đây là lựa chọn dễ dàng hơn cho một pipeline có thể lặp lại. Stream tác vụ và ghi một đối tượng JSON trên mỗi dòng:
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 là một đối tượng JSON trên mỗi dòng. json.dump(list_of_rows, f) lại ghi một mảng duy nhất, còn Platform sẽ bỏ qua mọi dòng không phải là đối tượng JSON — quá trình nhập sẽ hoàn toàn không tìm thấy data row nào. Hãy sử dụng vòng lặp ở trên hoặc "\n".join(json.dumps(r) for r in rows).
Nội dung được nhập#
Platform tự nhận diện định dạng Labelbox và ánh xạ bounding box cùng polygon tới loại tác vụ YOLO tương ứng:
| Annotation Labelbox | Đã nhập |
|---|---|
| Bounding box | Detect |
| Polygon | Segment |
| Segmentation mask, point, polyline, relationship, classification | Chưa hỗ trợ |
name của mỗi object trở thành tên class — vì vậy annotation "name": "Dog" sẽ được nhập thành class Dog, chứ không phải value viết thường — và tọa độ pixel được chuẩn hóa theo kích thước media_attributes trong bản xuất. Mỗi image được đặt tên theo data_row.external_id, và nếu bản xuất không có ID bên ngoài thì dùng tên tệp trong signed URL. Bản xuất từ catalog không có annotation sẽ được nhập thành dataset image chưa gắn nhãn, sẵn sàng để gắn nhãn trong trình chỉnh sửa annotation của Platform.
Một data row duy nhất có dạng như sau, được rút gọn còn các trường Platform đọc:
{
"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 }
}
]
}
}
]
}
}
}Mọi nội dung khác trong bản xuất — embeddings, metadata_fields, attachments, project_details — đều bị bỏ qua. Bạn nên bỏ chọn embeddings khi xuất: trong một bản xuất mẫu, chúng chiếm khoảng bốn phần năm dung lượng tệp, trong khi các trường mà Platform thực sự đọc chỉ chiếm một phần năm.
Hiện tại, hệ thống chỉ đọc bounding box và polygon, đồng thời chỉ đọc chúng từ annotation của object — classification ở cấp image nằm ở nơi khác trong bản xuất và bị bỏ qua. Một dự án được gắn nhãn hoàn toàn bằng công cụ segmentation-mask (brush), point, polyline hoặc classification sẽ nhập các image nhưng không có annotation, và không phát sinh lỗi. Bạn có thể nhận biết điều này trên trang dataset: dataset đã nhập và giữ lại nhãn sẽ hiển thị số lượng label và annotation bên cạnh số lượng image, còn dataset bị mất nhãn sẽ không hiển thị cả hai.
Bản xuất Labelbox tham chiếu mỗi image bằng signed URL thay vì nhúng pixel, và các chữ ký này sẽ hết hạn. Platform tải image từ những URL đó, kiểm tra thử một mẫu trước khi bắt đầu; vì vậy, nếu tất cả liên kết trong bản xuất đều đã hết hạn, quá trình sẽ thất bại ngay và cho biết lý do — hãy xuất lại từ Labelbox rồi tải tệp mới lên. Bản xuất chỉ hết hạn một phần sẽ nhập các image mà hệ thống vẫn truy cập được và bỏ qua phần còn lại, vì vậy hãy tải lên ngay sau khi xuất.
Bản xuất chứa cả bounding box và polygon sẽ được nhập thành dataset segment, mà dataset segment chỉ chứa geometry polygon — các annotation box không được dùng để huấn luyện hoặc đưa vào bản xuất version. Hãy xuất box và polygon thành các dự án Labelbox riêng biệt nếu bạn cần cả hai. Polygon cũng phải có ít nhất ba point mới được đọc.