Klassifizieren Sie Bildobjekte mithilfe eines Begrenzungsrahmens - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Klassifizieren Sie Bildobjekte mithilfe eines Begrenzungsrahmens

Die zum Training eines Machine-Learning-Modells verwendeten Bilder enthalten oft mehrere Objekte. Um ein oder mehrere Objekte in Bildern zu klassifizieren und zu lokalisieren, verwenden Sie den Auftragstyp Amazon SageMaker Ground Truth Bounding Box Labeling. In diesem Zusammenhang bezeichnet Lokalisierung die Pixelposition des Begrenzungsrahmens. Sie erstellen einen Bounding-Box-Labeling-Job mithilfe des Ground-Truth-Bereichs der SageMaker Amazon-Konsole oder der CreateLabelingJobOperation.

Wichtig

Wenn Sie eine eigene Manifestdatei erstellen, verwenden Sie den Aufgabentyp "source-ref" zur Identifizierung des Speicherorts jeder Bilddatei in Amazon S3, die beschriftet werden soll. Weitere Informationen finden Sie unter Eingabedaten.

Erstellen einer Labeling-Aufgabe für einen Begrenzungsrahmen (Konsole)

Sie können den Anweisungen folgenErstellen eines Kennzeichnungsauftrags (Konsole), um zu erfahren, wie Sie einen Bounding-Box-Label-Job in der SageMaker Konsole erstellen. Wählen Sie in Schritt 10 im Dropdown-Menü Aufgabenkategorie die Option Image und als Aufgabentyp Bounding Box aus.

Ground Truth stellt für die Beschriftungssaufgaben eine Worker-Benutzeroberfläche ähnlich der folgenden bereit. Wenn Sie den Beschriftungsauftrag mit der Konsole erstellen, müssen Sie Anweisungen bereitstellen, damit die Worker den Auftrag ausführen können, und bis zu 50 Beschriftungen, aus denen die Worker auswählen können.

GIF, das zeigt, wie man für eine Kategorie einen Rahmen um ein Objekt zeichnet.

Einen Bounding Box Labeling-Job erstellen () API

Verwenden Sie die Operation, um einen Auftrag zur Kennzeichnung von Begrenzungsrahmen zu erstellen. SageMaker API CreateLabelingJob Dadurch wird diese Operation für alle API AWS SDKs definiert. Eine Liste der sprachspezifischen Sprachen, die für diesen Vorgang SDKs unterstützt werden, finden Sie im Abschnitt Siehe auch von. CreateLabelingJob

Befolgen Sie diese Anweisungen unter Erstellen eines Kennzeichnungsauftrags (API) und führen Sie die folgenden Schritte aus, während Sie Ihre Anforderung konfigurieren:

  • Vorannotierende Lambda-Features für die Vorannotierung für diesen Aufgabentyp enden mit PRE-BoundingBox. Informationen zum Lambda-Pre-Annotation ARN für Ihre Region finden Sie unter. PreHumanTaskLambdaArn

  • Annotations-Konsolidierende Lambda-Features für die Annotationskonsolidierung für diesen Aufgabentyp enden mit ACS-BoundingBox. Informationen zum Lambda zur Annotationskonsolidierung ARN für Ihre Region finden Sie unter. AnnotationConsolidationLambdaArn

Im Folgenden finden Sie ein Beispiel für eine AWS Python-Anfrage SDK (Boto3) zur Erstellung eines Labeling-Jobs in der Region USA Ost (Nord-Virginia). Alle Parameter in Rot sollten durch Ihre Spezifikationen und Ressourcen ersetzt werden.

response = client.create_labeling_job( LabelingJobName='example-bounding-box-labeling-job, LabelAttributeName='label', InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri': 's3://bucket/path/manifest-with-input-data.json' } }, 'DataAttributes': { 'ContentClassifiers': [ 'FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent', ] } }, OutputConfig={ 'S3OutputPath': 's3://bucket/path/file-to-store-output-data', 'KmsKeyId': 'string' }, RoleArn='arn:aws:iam::*:role/*, LabelCategoryConfigS3Uri='s3://bucket/path/label-categories.json', StoppingConditions={ 'MaxHumanLabeledObjectCount': 123, 'MaxPercentageOfInputDatasetLabeled': 123 }, HumanTaskConfig={ 'WorkteamArn': 'arn:aws:sagemaker:region:*:workteam/private-crowd/*', 'UiConfig': { 'UiTemplateS3Uri': 's3://bucket/path/worker-task-template.html' }, 'PreHumanTaskLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:PRE-BoundingBox', 'TaskKeywords': [ 'Bounding Box', ], 'TaskTitle': 'Bounding Box task', 'TaskDescription': 'Draw bounding boxes around objects in an image', 'NumberOfHumanWorkersPerDataObject': 123, 'TaskTimeLimitInSeconds': 123, 'TaskAvailabilityLifetimeInSeconds': 123, 'MaxConcurrentTaskCount': 123, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:ACS-BoundingBox' } }, Tags=[ { 'Key': 'string', 'Value': 'string' }, ] )

Bereitstellen einer Vorlage für Labeling-Aufgaben für Begrenzungsrahmen

Wenn Sie einen Label-Job mit dem erstellenAPI, müssen Sie unter eine Worker-Aufgabenvorlage angeben. UiTemplateS3Uri Kopieren und ändern Sie die folgende Vorlage. Ändern Sie nur short-instructions, full-instructions und header. Laden Sie diese Vorlage auf S3 hoch und stellen Sie die S3-Datei URI für diese Datei unter bereitUiTemplateS3Uri.

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-bounding-box name="boundingBox" src="{{ task.input.taskObject | grant_read_access }}" header="please draw box" labels="{{ task.input.labels | to_json | escape }}" > <full-instructions header="Bounding box instructions"> <ol><li><strong>Inspect</strong> the image</li><li><strong>Determine</strong> if the specified label is/are visible in the picture.</li> <li><strong>Outline</strong> each instance of the specified label in the image using the provided “Box” tool.</li></ol> <ul><li>Boxes should fit tight around each object</li> <li>Do not include parts of the object are overlapping or that cannot be seen, even though you think you can interpolate the whole shape.</li> <li>Avoid including shadows.</li> <li>If the target is off screen, draw the box up to the edge of the image.</li> </full-instructions> <short-instructions> <h3><span style="color: rgb(0, 138, 0);">Good example</span></h3> <p>Enter description of a correct bounding box label and add images</p> <h3><span style="color: rgb(230, 0, 0);">Bad example</span></h3> <p>Enter description of an incorrect bounding box label and add images</p> </short-instructions> </crowd-bounding-box> </crowd-form>

Ausgabedaten für Begrenzungsrahmen

Sobald Sie einen Bounding-Box-Label-Job erstellt haben, befinden sich Ihre Ausgabedaten in dem Amazon S3 S3-Bucket, der im S3OutputPath Parameter angegeben ist, wenn Sie das API oder im Feld Speicherort des Ausgabe-Datensatzes im Bereich Jobübersicht der Konsole verwenden.

Beispielsweise enthält die Ausgabemanifestdatei einer erfolgreich abgeschlossenen Aufgabe mit Begrenzungsrahmen einer Klasse Folgendes:

[ { "boundingBox": { "boundingBoxes": [ { "height": 2832, "label": "bird", "left": 681, "top": 599, "width": 1364 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]

Der Parameter boundingBoxes identifiziert die Position des Begrenzungsrahmens, der um ein Objekt gezeichnet wird, das als „Vogel“ identifiziert wird, relativ zur linken oberen Ecke des Bildes, für die Pixel-Koordinate (0,0) festgelegt wird. Im vorherigen Beispiel geben left und top die Position des Pixels in der linken oberen Ecke des Begrenzungsrahmens relativ zur linken oberen Ecke des Bildes an. Die Abmessungen des Begrenzungsrahmens werden mit height und width identifiziert. Der Parameter inputImageProperties gibt die Pixel-Abmessungen des ursprünglichen Eingabebildes an.

Wenn Sie den Aufgabentyp mit Begrenzungsrahmen verwenden, können Sie Labeling-Aufträge mit Ein- und Mehrklassen-Begrenzungsrahmen erstellen. Die Ausgabemanifestdatei einer erfolgreich abgeschlossenen Aufgabe mit Begrenzungsrahmen für mehrere Klassen enthält Folgendes:

[ { "boundingBox": { "boundingBoxes": [ { "height": 938, "label": "squirrel", "left": 316, "top": 218, "width": 785 }, { "height": 825, "label": "rabbit", "left": 1930, "top": 2265, "width": 540 }, { "height": 1174, "label": "bird", "left": 748, "top": 2113, "width": 927 }, { "height": 893, "label": "bird", "left": 1333, "top": 847, "width": 736 } ], "inputImageProperties": { "height": 3726, "width": 2662 } } } ]

Weitere Informationen zur Ausgabemanifestdatei zu einem Kennzeichnungsauftrag mit Begrenzungsrahmen finden Sie unter Ausgabe eines Bounding-Box-Jobs.

Um mehr über die von Ground Truth erzeugte Ausgabemanifestdatei und die Dateistruktur zu erfahren, die Ground Truth zum Speichern Ihrer Ausgabedaten verwendet, siehe Ausgabedaten des Jobs beschriften.