Integração com o Labelbox#
A Ultralytics Platform lê diretamente as exportações NDJSON do Labelbox. Não há nenhuma chave para colar, nenhuma ligação para manter ativa e nenhum script de conversão para manter — exporta a partir do Labelbox, carrega o ficheiro e as tuas etiquetas chegam como um dataset normal da Platform.
Importar do Labelbox#
- Exporta a partir do Labelbox. Abre o projeto de anotação ou catálogo que queres importar e vai para o separador Data Rows. Seleciona All, clica em Export data, escolhe os campos a incluir e confirma. Estás a exportar a partir do Catalog em vez de um projeto? Ativa Export labels from project e seleciona o projeto; caso contrário, o ficheiro chega sem quaisquer anotações.
- Transfere o ficheiro. O Labelbox executa a exportação como uma tarefa em segundo plano. Procura-a em Notifications e clica em Download quando terminar para guardares o ficheiro
.ndjson. - Carrega para a Platform. Cria um novo dataset e carrega o ficheiro
.ndjsonou cola uma ligação direta para o mesmo. Também podes começar em Settings > Integrations > Labelbox. - Treina. Quando o processamento terminar, edita as anotações e treina exatamente como farias com qualquer outro dataset da Platform.

Ao contrário do CVAT e do Label Studio, não há nenhum formato para escolher — a exportação própria do Labelbox é a suportada.
Exportar com o SDK#
O Labelbox também disponibiliza a tarefa de exportação no seu SDK de Python, que é a opção mais simples para um pipeline repetível. Transmite a tarefa e escreve 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())NDJSON consiste num objeto JSON por linha. json.dump(list_of_rows, f) escreve um único array, e a Platform ignora qualquer linha que não seja um objeto JSON — a importação não encontra nenhuma linha de dados. Usa o ciclo acima ou "\n".join(json.dumps(r) for r in rows).
O que é importado#
A Platform reconhece automaticamente o formato do Labelbox e mapeia caixas delimitadoras e polígonos para o tipo de tarefa YOLO correspondente:
| Anotação do Labelbox | Importado |
|---|---|
| Caixa delimitadora | Detetar |
| Polígono | Segmentar |
| Máscara de segmentação, ponto, polilinha, relação, classificação | Ainda não |
O name de cada objeto torna-se o nome da classe — por isso uma anotação "name": "Dog" é importada como a classe Dog, e não como o seu value em minúsculas — e as coordenadas dos píxeis são normalizadas em relação às dimensões media_attributes na exportação. Cada imagem recebe o nome do seu data_row.external_id, usando como alternativa o 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 dataset de imagens sem etiquetas, pronto para ser anotado no editor de anotações da Platform.
Uma única linha de dados tem este aspeto, limitada aos campos lidos pela Platform:
{
"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 resto na exportação — embeddings, metadata_fields, attachments, project_details — é ignorado. Vale a pena não selecionar os embeddings ao exportar: numa exportação de exemplo, representavam cerca de quatro quintos do ficheiro, contra um quinto para os campos que a Platform realmente lê.
Atualmente, apenas são lidas caixas delimitadoras e polígonos, e apenas a partir de uma anotação de objeto — as classificações ao nível da imagem encontram-se noutra parte da exportação e são ignoradas. Um projeto anotado inteiramente com a ferramenta de máscara de segmentação (pincel), pontos, polilinhas ou classificações importa as imagens, mas não as anotações, e nenhum erro é gerado. Podes verificar isso na página do dataset: um dataset importado que manteve as etiquetas mostra uma contagem de etiquetas e de anotações junto à contagem de imagens, enquanto um que as perdeu não mostra nenhuma das duas.
Uma exportação do Labelbox referencia cada imagem por um URL assinado, em vez de incorporar os píxeis, e essas assinaturas expiram. A Platform descarrega as imagens a partir desses URLs, testando uma amostra antes de começar, por isso uma exportação cujas ligações já expiraram falha imediatamente e explica o motivo — faz uma nova exportação a partir do Labelbox e carrega o novo ficheiro. Uma exportação parcialmente expirada importa as imagens que ainda consegue alcançar e ignora as restantes, por isso carrega-a pouco depois de a exportares.
Uma exportação que contenha caixas delimitadoras e polígonos é importada como um dataset de segmentação, e um dataset de segmentação contém apenas a geometria dos polígonos — as anotações das caixas não são utilizadas no treino nem incluídas nas exportações de versões. Exporta as caixas e os polígonos como projetos do Labelbox separados se precisares de ambos. Os polígonos também precisam de ter pelo menos três pontos para serem lidos.