Klassifizieren von Bildobjekten mithilfe eines Begrenzungsrahmens - Amazon SageMaker AI

Klassifizieren von Bildobjekten 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 Amazon SageMaker Ground Truth Bounding Box Aufgabentyp für Beschriftungsaufträge mit. In diesem Zusammenhang bezeichnet Lokalisierung die Pixelposition des Begrenzungsrahmens. Sie erstellen einen Bounding Box Beschriftungsauftrag im Bereich der Konsole von Amazon SageMaker AI oder über die CreateLabelingJob Operation.

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 die Anweisungen unter Erstellen eines Kennzeichnungsauftrags (Konsole) befolgen, um einen Kennzeichnungsauftrag für den Begrenzungsrahmen in der SageMaker-AI-Konsole zu 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

Erstellen einer Labeling-Aufgabe für Begrenzungsrahmen (API)

Um einen Bounding Box Beschriftungsauftrag zu erstellen, verwenden Sie die SageMaker-API-Operation CreateLabelingJob. Diese API definiert diese Operation für alle AWS-SDKs. Eine Liste der sprachspezifischen SDKs, die für diese Operation 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 dazu, wie Sie den ARN des voranntorieten Lambda für die Vorannotierung für Ihre Region finden, sind im Abschnitt PreHumanTaskLambdaArn enthalten.

  • Annotations-Konsolidierende Lambda-Features für die Annotationskonsolidierung für diesen Aufgabentyp enden mit ACS-BoundingBox. Informationen dazu, wie Sie den Anmerkungskonsolidierungs ARN für Ihre Region finden, sind im Abschnitt AnnotationConsolidationLambdaArn.

Im Folgenden finden Sie ein Beispiel für eine AWS-Python-SDK-(Boto3)-Anforderung zum Erstellen eines Beschriftungsauftrags 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 eine Labeling-Aufgabe unter Verwendung der API erstellen, müssen Sie in UiTemplateS3Uri eine Worker-Aufgabenvorlage bereitstellen. Kopieren und ändern Sie die folgende Vorlage. Ändern Sie nur short-instructions, full-instructions und header. Laden Sie diese Vorlage zu S3 hoch und geben Sie den S3-URI für diese Datei in UiTemplateS3Uri an.

<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

Nach der Erstellung des Bounding Box Beschriftungsauftrags befinden sich bei Verwendung der API die Ausgabedaten in dem im S3OutputPath Parameter angegebenen Amazon-S3-Bucket oder im Feld Ausgabedatensatz-Speicherort im Abschnitt Auftragsübersicht der Konsole.

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 des Begrenzungsrahmenauftrags.

Um mehr über die von Ground Truth erzeugte Ausgabemanifestdatei und die Dateistruktur zu erfahren, die Ground Truth zum Speichern Ihrer Ausgabedaten verwendet, siehe Ausgabedaten von Kennzeichnungsaufträgen.