YOLO Vision 2026:

Tích hợp Labelbox#

Ultralytics Platform đọc trực tiếp các tệp xuất NDJSON từ Labelbox. Không cần dán khóa, không cần duy trì kết quả 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 dữ liệu từ Labelbox, tải tệp lên và các nhãn của bạn sẽ chuyển đến dưới dạng một dataset Platform thông thường.

Nhập từ Labelbox#

  1. 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. Bạn đang xuất từ Catalog thay vì từ một dự án? Hãy bật Export labels from project và chọn dự án, nếu không tệp đến sẽ hoàn toàn không có chú thích nào.
  2. Tải xuống tệp. Labelbox chạy quá trình xuất dưới dạng một tác vụ nền. Hãy chú ý theo dõi trong phần Notifications và nhấp vào Download khi quá trình hoàn tất để lưu tệp .ndjson.
  3. Tải lên Platform. Tạo một dataset 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.
  4. Train. Khi quá trình xử lý hoàn tất, hãy chỉnh sửa các chú thíchtrain hoàn toàn giống như bất kỳ dataset Platform nào khác.

Ultralytics Platform Labelbox Dataset Import

Khác với CVATLabel Studio, không có định dạng nào cần chọn — tệp xuất chính 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 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())
Ghi NDJSON, không phải mảng JSON

NDJSON là một đối tượng JSON trên mỗi dòng. json.dump(list_of_rows, f) ghi một mảng duy nhất thay vào đó, và Platform 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 bất kỳ dò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).

Những nội dung được nhập#

Platform tự động nhận dạng định dạng Labelbox và ánh xạ các bounding box và polygon sang YOLO task type tương ứng:

Chú thích LabelboxĐã nhập
Hộp giới hạnDetect
Đa giácSegment
Mặt nạ phân đoạn (segmentation mask), điểm, đường gấp khúc (polyline), mối quan hệ, phân loạiChưa có

Mỗi đối tượng name trở thành tên lớp — do đó chú thích "name": "Dog" được nhập dưới dạng lớp Dog, chứ không phải dạng chữ thường value — và tọa độ điểm ảnh được chuẩn hóa theo kích thước media_attributes trong bản xuất. Mỗi hình ảnh được đặt tên theo data_row.external_id, và quay về sử dụng tên tệp trong URL có chữ ký khi bản xuất không có ID bên ngoài. 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 gán 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 tệp 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 tệp xuất mẫu, chúng chiếm khoảng bốn phần năm tệp, trong khi các trường mà Platform thực sự đọc chỉ chiếm một phần năm.

Các dự án mặt nạ và điểm được nhập mà không có chú thích

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.

Tải lên bản xuất khi các liên kết của nó còn mới

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.

Trong một bản xuất hỗn hợp, các hộp sẽ bị loại bỏ

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.

Những người đóng góp

Bình luận