Link to this sectionTích hợp Labelbox#
Ultralytics Platform đọc các tệp xuất NDJSON từ Labelbox trực tiếp. Không cần dán khóa, không cần duy trì kết nối và không có tập lệnh chuyển đổi nào cần bảo trì — hãy 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 tập dữ liệu Platform thông thường.
Link to this sectionNhập từ Labelbox#
- Xuất từ Labelbox. Mở dự án gán nhãn hoặc danh mục bạn muốn chuyển sang và chuyển đến tab Data Rows. Chọn All, nhấp vào Export data, chọn các trường cần bao gồm và xác nhận. Xuất từ Danh mục thay vì một dự án? Bật Export labels from project và chọn dự án, nếu không tệp sẽ đến mà không có bất kỳ chú thích nào.
- Tải xuống tệp. Labelbox chạy quá trình xuất dưới dạng tác vụ nền. Hãy chú ý theo dõi trong Notifications và nhấp vào Download khi quá trình hoàn tất để lưu tệp
.ndjson. - Tải lên Platform. Tạo một tập dữ liệu mới và tải lên tệp
.ndjson, hoặc dán một liên kết trực tiếp tới 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 các chú thích và huấn luyện giống hệt như với bất kỳ tập dữ liệu Platform nào khác.
Không giống như CVAT và Label Studio, không có định dạng nào cần chọn — bản xuất của chính Labelbox là định dạng được hỗ trợ.
Link to this sectionXuất bằng SDK#
Labelbox cũng cung cấp tác vụ xuất trong Python SDK của họ, đây là phương thức dễ dàng hơn cho một quy trình lặp lại. Truyền phát tác vụ và ghi mỗi đối tượng JSON trên một 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) thay vào đó sẽ ghi một mảng đơn và Platform sẽ bỏ qua bất kỳ dòng nào không phải là đối tượng JSON — quá trình nhập sẽ không tìm thấy hàng dữ liệu nào. Hãy sử dụng vòng lặp ở trên, hoặc "\n".join(json.dumps(r) for r in rows).
Link to this sectionNhững nội dung được nhập#
Platform tự động nhận dạng định dạng của Labelbox và ánh xạ các hộp giới hạn (bounding boxes) và đa giác (polygons) tới loại tác vụ YOLO tương ứng:
| Chú thích Labelbox | Đã nhập |
|---|---|
| Hộp giới hạn | Detect |
| Đa giác | Segment |
| Mặt nạ phân đoạn (segmentation mask), điểm, đường gấp khúc (polyline), mối quan hệ, phân loại | Chưa có |
Thuộc tính name của mỗi đối tượng trở thành tên lớp — vì vậy một chú thích "name": "Dog" sẽ được nhập thành lớp Dog, chứ không phải giá trị viết thường value — và tọa độ điểm ảnh được chuẩn hóa theo các kích thước media_attributes trong tệp xuất. Một bản xuất danh mục không có chú thích sẽ được nhập dưới dạng tập dữ liệu hình ảnh chưa có nhãn, sẵn sàng để gán nhãn trong trình chỉnh sửa chú thích của Platform.
Một hàng dữ liệu đơn lẻ có dạng như sau, đã được cắt bớt các trường mà 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 thứ khác trong bản xuất — embeddings, metadata_fields, attachments, project_details — đều bị bỏ qua. Các embedding rất đáng để bỏ chọn khi bạn xuất: trong một bản xuất mẫu, chúng chiếm khoảng bốn phần năm tệp, so với một phần năm dành cho các trường mà Platform thực sự đọc.
Hiện tại, chỉ có các hộp giới hạn và đa giác được đọc, và chỉ từ một chú thích đối tượng — các phân loại ở cấp độ hình ảnh nằm ở các phần 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ụ mặt nạ phân đoạn (bút lông), điểm, đường gấp khúc hoặc phân loại sẽ nhập hình ảnh của nó nhưng không có chú thích nào, và không có lỗi nào được đưa ra. Bạn có thể phát hiện điều này trên trang tập dữ liệu: một tập dữ liệu đã nhập giữ lại nhãn của nó sẽ hiển thị số lượng nhãn và chú thích bên cạnh số lượng hình ảnh, và tập dữ liệu làm mất chúng sẽ không hiển thị cả hai.
Bản xuất Labelbox tham chiếu đến mỗi hình ảnh bằng URL có chữ ký thay vì nhúng các điểm ảnh, và các chữ ký đó sẽ hết hạn. Platform tải xuống các hình ảnh từ các URL đó, kiểm tra một mẫu trước khi bắt đầu, vì vậy một bản xuất có các liên kết đã hết hạn sẽ thất bại ngay lập tức và cho bạn biết lý do — hãy xuất lại từ Labelbox và tải lên tệp mới. Một bản xuất chỉ mới hết hạn một phần sẽ nhập các hình ảnh mà nó vẫn có thể truy cập và bỏ qua phần còn lại, vì vậy hãy tải lên ngay sau khi xuất.
Một bản xuất chứa cả hộp giới hạn và đa giác được nhập dưới dạng tập dữ liệu phân đoạn, và tập dữ liệu phân đoạn chỉ chứa hình học đa giác — các chú thích hộp không được sử dụng để huấn luyện hoặc bao gồm trong các bản xuất phiên bản. Hãy xuất các hộp và đa giác thành các dự án Labelbox riêng biệt nếu bạn cần cả hai. Các đa giác cũng cần ít nhất ba điểm để được đọc.