YOLO Vision 2026:

Integração com o Labelbox#

Ultralytics Platform lê exportações NDJSON do Labelbox diretamente. Não há chave para colar, nenhuma conexão para manter ativa e nenhum script de conversão para manter — exporte do Labelbox, envie o arquivo e suas etiquetas chegam como um dataset normal do Platform.

Importar do Labelbox#

  1. Exportar do Labelbox. Abra o projeto de rotulagem ou catálogo que deseja trazer e vá para a aba Data Rows. Selecione All, clique em Export data, escolha os campos a incluir e confirme. Vai exportar do Catalog em vez de um projeto? Ative Export labels from project e escolha o projeto, ou o arquivo chegará sem nenhuma anotação.
  2. Baixar o arquivo. O Labelbox executa a exportação como um trabalho em segundo plano. Fique de olho em Notifications e clique em Download quando terminar para salvar o arquivo .ndjson.
  3. Enviar para o Platform. Crie um novo dataset e envie o arquivo .ndjson, ou cole um link direto para ele. Você também pode começar em Settings > Integrations > Labelbox.
  4. Treinar. Assim que o processamento terminar, edite as anotações e treine exatamente como qualquer outro dataset do Platform.

Ultralytics Platform Labelbox Dataset Import

Ao contrário do CVAT e do Label Studio, não há formato para escolher — a própria exportação do Labelbox é a suportada.

Exportar com o SDK#

O Labelbox também oferece a tarefa de exportação em seu SDK em Python, que é o caminho mais fácil para um pipeline repetível. Faça o streaming da tarefa e escreva um objeto JSON por linha:

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())
Escreva NDJSON, não um array JSON

NDJSON é um objeto JSON por linha. json.dump(list_of_rows, f) grava uma única matriz em vez disso, e o Platform ignora qualquer linha que não seja um objeto JSON — a importação não encontra nenhuma linha de dados. Use o loop acima ou "\n".join(json.dumps(r) for r in rows).

O que é importado#

O Platform reconhece o formato do Labelbox por conta própria e mapeia caixas delimitadoras e polígonos para o YOLO task type correspondente:

Anotação do LabelboxImportado
Caixa delimitadoraDetectar
PolígonoSegmentar
Máscara de segmentação, ponto, polilinhas, relacionamento, classificaçãoAinda não

Cada name do objeto torna-se o nome da classe — portanto, uma anotação "name": "Dog" é importada como a classe Dog, e não o seu value em minúsculas —, e as coordenadas de pixel são normalizadas em relação às dimensões da media_attributes na exportação. Cada imagem é nomeada com base no seu data_row.external_id, recorrendo ao nome do ficheiro no URL assinado quando a exportação não contém um ID externo. Uma exportação de catálogo sem anotações é importada como um conjunto de dados de imagens não rotulado, pronto a ser rotulado no editor de anotações da Platform.

Uma única linha de dados se parece com isto, recortada para os campos que a Platform lê:

{
    "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 }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Tudo o mais na exportação — embeddings, metadata_fields, attachments, project_details — é ignorado. Os embeddings valem a pena ser desmarcados quando você exporta: em uma exportação de amostra, eles representavam cerca de quatro quintos do arquivo, contra um quinto para os campos que o Platform realmente lê.

Projetos de máscara e pontos são importados sem anotações

Apenas caixas delimitadoras e polígonos são lidos hoje, e apenas a partir de uma anotação de objeto — as classificações em nível de imagem ficam em outro lugar na exportação e são ignoradas. Um projeto rotulado inteiramente com a ferramenta de máscara de segmentação (pincel), pontos, polilinhas ou classificações importa suas imagens, mas sem anotações, e nenhum erro é gerado. Você pode identificá-lo na página do conjunto de dados: um conjunto de dados importado que manteve seus rótulos mostra uma contagem de rotulados e anotações ao lado da contagem de imagens, e um que os perdeu não mostra nenhum dos dois.

Carregue a exportação enquanto seus links estiverem ativos

Uma exportação do Labelbox faz referência a cada imagem por URL assinada em vez de incorporar os pixels, e essas assinaturas expiram. A Platform baixa as imagens a partir dessas URLs, testando uma amostra antes de começar, de modo que uma exportação cujos links tenham caducado falha imediatamente e informa o motivo — reexporte do Labelbox e carregue o novo arquivo. Uma exportação que está apenas parcialmente expirada importa as imagens que ainda consegue alcançar e pula o restante, portanto, faça o upload logo após exportar.

Em uma exportação mista, as caixas são descartadas

Uma exportação contendo caixas delimitadoras e polígonos é importada como um conjunto de dados de segmentos, e um conjunto de dados de segmentos carrega apenas a geometria de polígonos — as anotações de caixa não são usadas para treinamento nem incluídas nas exportações de versão. Exporte caixas e polígonos como projetos do Labelbox separados se você precisar de ambos. Os polígonos também precisam de pelo menos três pontos para serem lidos.

Contribuidores

Comentários