Setelah operasi pelabelan selesai, Anda dapat mengekspor set data yang dianotasi ke bucket Google Cloud Storage dengan memanggil ExportData
.
ExportData
mendukung ditampilkannya file .csv yang berisi satu baris untuk setiap anotasi atau item data. Kolom pertama menunjukkan kategori penggunaan ml dari baris ini, yang defaultnya adalah UNASSIGNED. ExportData
juga mendukung file jsonl yang setiap barisnya mewakili contoh yang mencakup item data dan semua anotasi. Berikut contoh untuk setiap jenis.
Klasifikasi gambar
baris csv:
UNASSIGNED,image_url,label_1,label_2,...
baris json:
{ "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "imagePayload":{ "mimeType":"IMAGE_PNG", "imageUri":"gs://sample_bucket/image.png" }, "annotations":[ { "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationValue":{ "imageClassificationAnnotation":{ "annotationSpec":{ "displayName":"tulip", } } } } ] }
Kotak pembatas image
baris csv: Setiap baris berisi informasi tentang satu kotak pembatas, menggunakan koordinat x,y untuk mewakili setiap sudut kotak. Beberapa kotak untuk satu gambar berada di baris terpisah. Format garis adalah
UNASSIGNED, image_url, label, topleft_x, topleft_y, topright_x, topright_y, bottomright_x, bottomright_y, bottomleft_x, bottomleft_y
. Koordinat topright_x, topright_y, bottomleft_x, dan bottomleft_y mungkin berupa string kosong, karena memberikan informasi yang berlebihan.TIDAK DITETAPKAN,image_url,label,0,1,0,1,,,0,3,0,3,,
baris json: jika koordinat dalam normalizedVertices tidak ditetapkan, kolom tersebut secara default adalah 0. Hal ini juga berlaku untuk anotasi berbasis koordinat apa pun.
{ "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "imagePayload":{ "mimeType":"IMAGE_PNG", "imageUri":"gs://sample_bucket/image.png" }, "annotations":[ { "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationValue":{ "image_bounding_poly_annotation": { "annotationSpec": { "displayName": "tulip" }, "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.1, "y": 0.2 }, { "x": 0.9, "y": 0.9 } ] } } } } ] }
Poligon pembatas gambar, kotak pembatas berorientasi, dan polyline
garis csv: Setiap titik dalam poligon/polyline tertutup diwakili oleh titik x,y, dipisahkan oleh dua kolom csv kosong. Pasangan terakhir menghubungkan kembali ke pasangan pertama untuk poligon, sementara tidak ada siklus tertutup untuk polyline. Setiap garis mewakili satu poligon/polyline.
TIDAK DITETAPKAN,url_gambar,label,0.1,0.1,,,0.3,0.3,,,0.6,0.6,,...
baris json:
{ "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "imagePayload":{ "mimeType":"IMAGE_PNG", "imageUri":"gs://sample_bucket/image.png" }, "annotations":[ { "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationValue":{ "image_bounding_poly_annotation": { "annotationSpec": { "displayName": "tulip" }, "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.1, "y": 0.1 }, { "x": 0.1, "y": 0.2 }, { "x": 0.2, "y": 0.3 } ] } } } } ] }
Segmentasi gambar
Untuk segmentasi gambar, hanya output jsonl yang disediakan.
- baris json: Kolom imageBytes di imageSegmentationAnnotation mewakili mask segmentasi untuk gambar tersebut. Warna untuk setiap label (yaitu, setiap
dan kucing) ditampilkan dalam kolom annotationColors.
{ "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "imagePayload":{ "mimeType":"IMAGE_PNG", "imageUri":"gs://sample_bucket/image.png" }, "annotations":[ { "name":"projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationValue":{ "imageSegmentationAnnotation": { "annotationColors": [ { "key": "rgb(0,0,255)", "value": { "display_name": "dog" } }, { "key": "rgb(0,255,0)", "value": { "display_name": "cat" } } ], "mimeType": "IMAGE_JPEG", "imageBytes": "/9j/4AAQSkZJRgABAQAAAQABAAD/2" } } } ] }
Klasifikasi video
baris csv:
UNASSIGNED,video_url,label,segment_start_time,segment_end_time
baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "videoPayload": { "mimeType": "VIDEO_MP4", "resolution": { width: 720, height: 360 } "frameRate": 24 }, "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationSource": 3, "annotationValue": { "videoClassificationAnnotation": { "timeSegment": { "startTimeOffset": { "seconds": 10 }, "endTimeOffset": { "seconds": 20 } }, "annotationSpec": { "displayName": "dog" } } } } ] }
Deteksi objek video
baris csv: Keempat titik tersebut adalah kiri atas, kanan atas, kanan bawah, kiri bawah. Poin kedua dan keempat bersifat opsional. Setiap titik diwakili oleh x,y. Setiap baris akan berisi satu kotak pembatas.
UNASSIGNED,video_url,label,stempel waktu,0.1,0.1,,,0.3,0.3,,
baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "videoPayload": { "mimeType": "VIDEO_MP4", "resolution": { width: 720, height: 360 } "frameRate": 24 }, "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationSource": 3, "annotationValue": { "videoObjectTrackingAnnotation": { "annotationSpec": { "displayName": "tulip" }, "timeSegment": { "startTimeOffset": { "seconds": 10 }, "endTimeOffset": { "seconds": 10 } }, "objectTrackingFrames": [ { "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.2, "y": 0.3 }, { "x": 0.9, "y": 0.5 } ] }, }, { "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.3, "y": 0.3 }, { "x": 0.5, "y": 0.7 } ] }, } ] } } }]}
Pelacakan objek video
baris csv: Keempat titik tersebut adalah kiri atas, kanan atas, kanan bawah, kiri bawah. Poin kedua dan keempat bersifat opsional. Setiap titik diwakili oleh x,y. Setiap baris akan berisi satu kotak pembatas. Setiap objek dalam video direpresentasikan oleh instance_id unik.
UNASSIGNED,video_url,label,instance_id,timestamp,0.1,0.1,,,0.3,0.3,,
baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "videoPayload": { "mimeType": "VIDEO_MP4", "resolution": { width: 720, height: 360 } "frameRate": 24 }, "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationSource": 3, "annotationValue": { "videoObjectTrackingAnnotation": { "annotationSpec": { "displayName": "tulip" }, "timeSegment": { "startTimeOffset": { "seconds": 10 }, "endTimeOffset": { "seconds": 20 } }, "objectTrackingFrames": [ { "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.2, "y": 0.3 }, { "x": 0.9, "y": 0.5 } ] }, "timeOffset": { "nanos": 1000000 } }, { "normalizedBoundingPoly": { "normalizedVertices": [ { "x": 0.3, "y": 0.3 }, { "x": 0.5, "y": 0.7 } ] }, "timeOffset": { "nanos": 84000000 } } ] } } }]}
Peristiwa video
baris csv: Keempat titik tersebut adalah kiri atas, kanan atas, kanan bawah, kiri bawah. Poin kedua dan keempat bersifat opsional. Setiap titik diwakili oleh x,y. Setiap baris akan berisi satu kotak pembatas. Setiap objek dalam video direpresentasikan oleh instance_id unik.
UNASSIGNED,video_url,label,segment_start_time,segment_end_time
baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "videoPayload": { "mimeType": "VIDEO_MP4", "resolution": { width: 720, height: 360 } "frameRate": 24 }, "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/annotation_id", "annotationValue": { "videoEventAnnotation": { "annotationSpec": { "displayName": "Callie" }, "timeSegment": { "startTimeOffset": { "seconds": 123 }, "endTimeOffset": { "seconds": 150 } } } } } ] } } }]}
Klasifikasi teks
baris csv:
TIDAK DITETAPKAN,teks_url,label_l
baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "textPayload": { "textContent": "dummy_text_content", "textUri": "gs://test_bucket/file.txt", "wordCount": 1 } "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/fake_annotation_id", "annotationValue": { "textClassificationAnnotation": { "annotationSpec": { "displayName": "news" } } } } ], }
Ekstraksi entity teks
Untuk ekstraksi entitas teks, hanya output jsonl yang disediakan.
- baris json:
{ "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id", "textPayload": { "textContent": "dummy_text_content", "textUri": "gs://test_bucket/file.txt", "wordCount": 1 } "annotations": [ { "name": "projects/project_id/datasets/dataset_id/annotatedDatasets/annotated_dataset_id/examples/example_id/annotations/fake_annotation_id", "annotationValue": { "textEntityExtractionAnnotation": { "annotationSpec": { "displayName": "equations" }, "textSegment": { "startOffset": 10, "endOffset": 20 } } } } ], }
ExportData adalah operasi yang berjalan lama. API akan menampilkan ID operasi. Anda dapat menggunakan ID operasi untuk memanggil GetOperation agar mendapatkan statusnya nanti.
UI Web
Ikuti langkah-langkah berikut untuk mengekspor data berlabel menggunakan UI Layanan Pelabelan Data.
Buka Data Labeling Service UI di Konsol Google Cloud.
Halaman Datasets menampilkan status set data yang dibuat sebelumnya untuk project saat ini.
Klik nama set data dari set data yang ingin Anda ekspor. Tindakan ini akan mengarahkan Anda ke halaman Dataset detail.
Di bagian Labeled dataset, klik EKSPOR di kolom Export status.
Pada dialog Export berlabel dataset, masukkan jalur Cloud Storage yang akan digunakan untuk file output, lalu pilih format file yang Anda inginkan.
Klik EKSPOR.
Halaman Detail set data menampilkan status sedang berlangsung saat data Anda diekspor. Setelah selesai, Anda dapat menemukan file ekspor di jalur Cloud Storage yang telah ditentukan.
Command line
Tetapkan variabel lingkungan berikut:PROJECT_ID
ke project ID Google Cloud Anda.-
DATASET_ID
ke ID set data Anda, dari respons saat membuat set data. ID muncul di akhir nama set data lengkap:projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
-
ANNOTATED_DATASET_ID
ke ID nama resource set data Anda yang telah dianotasi. Nama resource menggunakan format berikut:projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/annotatedDatasets/ANNOTATED_DATASET_ID
STORAGE_URI
ke URI bucket Cloud Storage tempat Anda ingin menyimpan hasil.
Untuk semua permintaan anotasi kecuali segmentasi
gambar, permintaan curl
terlihat mirip seperti berikut:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}:exportData \ -d '{ "annotatedDataset": "${ANNOTATED_DATASET_ID}", "outputConfig": { "gcsDestination": { "output_uri": "${STORAGE_URI}", "mimeType": "text/csv" } } }'
Untuk mengekspor data segmentasi gambar, permintaan curl
akan terlihat seperti berikut:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}:exportData \ -d '{ "annotatedDataset": "${ANNOTATED_DATASET_ID}", "outputConfig": { "gcsFolderDestination": { "output_folder_uri": "${STORAGE_URI}" } } }'
Anda akan melihat output yang mirip dengan berikut ini:
{ "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064", "metadata": { "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.ExportDataOperationResponse", "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c" } }