Integração com Labelbox#
O Ultralytics Platform lê diretamente as exportações NDJSON do Labelbox. Não precisas de colar uma chave, manter uma ligação ativa nem atualizar um script de conversão — exporta do Labelbox, carrega o ficheiro e os teus rótulos chegam como um conjunto de dados normal do Platform.
Importar do Labelbox#
- Exportar do Labelbox. Num projeto de anotação, abre o separador Data Rows, seleciona All, clica em Export data, escolhe os campos a incluir e confirma. Em Catalog, seleciona as linhas de dados e escolhe Manage selection > Export data; depois ativa Export labels from project e seleciona o projeto. Caso contrário, o ficheiro chega sem anotações.
- Transferir o ficheiro. O Labelbox executa a exportação como uma tarefa em segundo plano. Procura-a em Notifications e clica em Download quando estiver concluída para guardar o ficheiro
.ndjson. - Carregar para o Platform. Cria um novo conjunto de dados e carrega o ficheiro
.ndjsonou cola uma ligação direta para o ficheiro. Também podes começar em Settings > Integrations > Labelbox. - Treinar. Quando o processamento terminar, edita as anotações e treina exatamente como farias com qualquer outro conjunto de dados do Platform.

Ao contrário do CVAT e do Label Studio, não há nenhum formato para escolher — a exportação nativa do Labelbox é a única compatível.
Exportar com o SDK#
O Labelbox também disponibiliza a tarefa de exportação no SDK Python, que é a opção mais simples para um fluxo de trabalho repetível. Transmite a tarefa e grava 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() # transmitir uma tarefa que não está COMPLETE gera um erro
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 contém um objeto JSON por linha. json.dump(list_of_rows, f) escreve uma única matriz, e o Platform ignora todas as linhas que não sejam objetos JSON — a importação não encontra quaisquer linhas de dados. Usa o ciclo acima ou "\n".join(json.dumps(r) for r in rows).
O que é importado#
O Platform reconhece automaticamente o formato do Labelbox e associa as caixas delimitadoras e os polígonos ao 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 da exportação. Por isso, mantém os atributos de multimédia na exportação: as linhas sem largura e altura importam a imagem sem anotações. Só os objetos que o Platform consegue importar registam uma classe, pelo que as ferramentas de máscara, ponto e polilinha não adicionam classes vazias ao conjunto de dados. O nome de cada imagem é o seu data_row.external_id, seguido do seu global_key; se a exportação não incluir nenhum dos dois, usa-se o nome do ficheiro no URL assinado. As linhas de dados de imagem são importadas; as linhas de dados de vídeo, texto e outros tipos que não sejam imagens são ignoradas. Uma exportação do catálogo sem anotações é importada como um conjunto de dados de imagens sem rótulos, pronto para ser anotado no editor de anotações do Platform.
Uma única linha de dados é semelhante a esta, reduzida aos campos que o Platform lê:
{
"data_row": {
"external_id": "000000000307.jpg",
"global_key": "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, ocupavam cerca de quatro quintos do ficheiro, enquanto os campos que o Platform realmente lê ocupavam um quinto.
Atualmente, só são lidas caixas delimitadoras e polígonos, e apenas quando fazem parte de uma anotação de objeto — as classificações ao nível da imagem estão noutra parte da 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 as imagens, mas não as anotações, e não gera nenhum erro. Podes confirmar isso na página do conjunto de dados: um conjunto de dados importado que manteve os rótulos apresenta as contagens de imagens rotuladas e de anotações junto à contagem de imagens; se os rótulos se perderam, não apresenta nenhuma das duas.
Uma exportação do Labelbox referencia cada imagem através de um URL assinado, em vez de incluir os píxeis, e essas assinaturas expiram. O Platform transfere as imagens a partir desses URLs, testando uma amostra antes de começar. Por isso, se todas as ligações de uma exportação tiverem expirado, a importação falha imediatamente e explica o motivo — volta a exportar do Labelbox e carrega o novo ficheiro. Se apenas algumas ligações tiverem expirado, são importadas as imagens ainda acessíveis e as restantes são ignoradas; por isso, carrega o ficheiro pouco depois da exportação.
Uma exportação que contenha caixas delimitadoras e polígonos é importada como um conjunto de dados de segmentação, que só inclui a geometria dos polígonos — as anotações das caixas não são usadas no treino nem incluídas nas exportações de versões. Exporta as caixas e os polígonos como projetos Labelbox separados se precisares de ambos. Os polígonos também têm de ter pelo menos três pontos para serem lidos.
Perguntas frequentes#
As caixas delimitadoras são importadas como um conjunto de dados detect e os polígonos como um conjunto de dados segment. As máscaras de segmentação, os pontos, as polilinhas, as relações e as classificações ainda não são lidos; por isso, um projeto rotulado apenas com essas ferramentas importa as imagens sem anotações.
O Platform lê NDJSON, com um objeto JSON por linha. Uma exportação guardada como uma única matriz JSON é totalmente ignorada. Usa o ciclo do SDK acima ou a transferência Export data do próprio Labelbox, que já está no formato NDJSON.
As exportações do Labelbox referenciam as imagens através de URLs assinados, e essas assinaturas expiram. Volta a exportar do Labelbox e carrega o novo ficheiro pouco depois de a exportação terminar.
Não. Uma exportação mista é importada como um conjunto de dados de segmentação e só os polígonos são usados. Exporta as caixas e os polígonos como projetos Labelbox separados se precisares de ambos.