Een klein objectdetectiemodel trainen met AutoML

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (current)

In dit artikel leert u hoe u een objectdetectiemodel traint om kleine objecten in afbeeldingen met een hoge resolutie te detecteren met geautomatiseerde ML in Azure Machine Learning.

Computer Vision-modellen voor objectdetectie werken doorgaans goed voor gegevenssets met relatief grote objecten. Vanwege geheugen- en rekenbeperkingen presteren deze modellen echter vaak te weinig wanneer ze kleine objecten in afbeeldingen met een hoge resolutie moeten detecteren. Omdat afbeeldingen met een hoge resolutie doorgaans groot zijn, wordt het formaat ervan gewijzigd voordat ze in het model worden ingevoerd, waardoor ze minder kleine objecten kunnen detecteren ten opzichte van de oorspronkelijke afbeeldingsgrootte.

Geautomatiseerde ML ondersteunt tegels als onderdeel van de Computer Vision-mogelijkheden om dit probleem op te lossen. De tegelfunctie in geautomatiseerde ML is gebaseerd op de concepten in De kracht van tegelen voor detectie van kleine objecten.

Bij het tegelen wordt elke afbeelding verdeeld in een raster met tegels. Aangrenzende tegels overlappen elkaar in breedte- en hoogteafmetingen. De tegels worden uit het origineel bijgesneden, zoals wordt weergegeven in de volgende afbeelding.

Diagram met een afbeelding die wordt verdeeld in een raster met overlappende tegels.

Vereisten

Ondersteunde modellen

Detectie van kleine objecten met behulp van tegels wordt ondersteund voor alle modellen die worden ondersteund door Geautomatiseerde ML voor afbeeldingen voor objectdetectietaak.

Tegelen inschakelen tijdens de training

Als u tegeling wilt inschakelen, kunt u de tile_grid_size parameter instellen op een waarde zoals '3x2'. Hierbij is 3 het aantal tegels langs de breedtedimensie en 2 het aantal tegels langs de hoogtedimensie. Wanneer deze parameter is ingesteld op '3x2', wordt elke afbeelding gesplitst in een raster van 3 x 2 tegels. Elke tegel overlapt met de aangrenzende tegels, zodat objecten die op de tegelrand vallen, volledig worden opgenomen in een van de tegels. Deze overlapping kan worden beheerd door de tile_overlap_ratio parameter, die standaard 25% is.

Wanneer tegelen is ingeschakeld, worden de volledige afbeelding en de tegels die daaruit worden gegenereerd, doorgegeven via het model. De grootte van deze afbeeldingen en tegels wordt aangepast aan de min_size parameters en max_size voordat u het model invoert. De rekentijd neemt proportioneel toe vanwege het verwerken van deze extra gegevens.

Als de tile_grid_size parameter bijvoorbeeld '3x2' is, is de berekeningstijd ongeveer zeven keer hoger dan zonder tegelwerk.

U kunt de waarde voor tile_grid_size opgeven in uw trainingsparameters als een tekenreeks.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

training_parameters:
  tile_grid_size: '3x2'

De waarde voor tile_grid_size parameter is afhankelijk van de afmetingen van de afbeelding en de grootte van objecten in de afbeelding. Een groter aantal tegels is bijvoorbeeld handig wanneer de afbeeldingen kleinere objecten bevatten.

Als u de optimale waarde voor deze parameter voor uw gegevensset wilt kiezen, kunt u hyperparameterzoekopdrachten gebruiken. Om dit te doen, kunt u een keuze van waarden voor deze parameter opgeven in uw hyperparameterruimte.

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

Tegelen tijdens deductie

Wanneer een model dat is getraind met tegelbewerking wordt geïmplementeerd, vindt tegelbewerking ook plaats tijdens deductie. Geautomatiseerde ML gebruikt de waarde uit de tile_grid_size training om de tegels te genereren tijdens deductie. De volledige afbeelding en de bijbehorende tegels worden doorgegeven aan het model en de objectvoorstellen worden samengevoegd om definitieve voorspellingen uit te voeren, zoals in de volgende afbeelding.

Diagram met objectvoorstellen van afbeeldingen en tegels die worden samengevoegd om de uiteindelijke voorspellingen te vormen.

Notitie

Het is mogelijk dat hetzelfde object wordt gedetecteerd op meerdere tegels. Duplicatiedetectie wordt uitgevoerd om dergelijke duplicaten te verwijderen.

Duplicaatdetectie wordt uitgevoerd door NMS uit te voeren op de voorstellen van de tegels en de afbeelding. Wanneer meerdere voorstellen elkaar overlappen, wordt het voorstel met de hoogste score gekozen en worden andere als duplicaten verwijderd. Twee voorstellen worden als overlappend beschouwd wanneer het snijpunt boven de samenvoeging (iou) ertussen groter is dan de tile_predictions_nms_thresh parameter.

U hebt ook de mogelijkheid om tegels alleen in te schakelen tijdens deductie zonder dit in te schakelen tijdens de training. Als u dit wilt doen, stelt u de tile_grid_size parameter alleen in tijdens deductie, niet voor training.

Als u dit doet, kunnen de prestaties voor sommige gegevenssets worden verbeterd en worden er geen extra kosten in rekening gebracht die gepaard gaan met tegelwerk tijdens de training.

Hyperparameters tegelen

Hier volgen de parameters die u kunt gebruiken om de tegelfunctie te beheren.

Parameternaam Description Standaard
tile_grid_size De rastergrootte die moet worden gebruikt voor het tegelen van elke afbeelding. Beschikbaar voor gebruik tijdens training, validatie en deductie.

Moet worden doorgegeven als een tekenreeks in '3x2' de indeling.

Opmerking: als u deze parameter instelt, wordt de rekentijd proportioneel verhoogd, omdat alle tegels en afbeeldingen door het model worden verwerkt.
geen standaardwaarde
tile_overlap_ratio Hiermee bepaalt u de overlappingsverhouding tussen aangrenzende tegels in elke dimensie. Wanneer de objecten die op de tegelgrens vallen te groot zijn om volledig in een van de tegels te passen, verhoogt u de waarde van deze parameter zodat de objecten volledig in ten minste één van de tegels passen.

Moet een float in [0, 1) zijn.
0,25
tile_predictions_nms_thresh Het snijpunt boven de samenvoegingsdrempelwaarde dat moet worden gebruikt om niet-maximale onderdrukking (nms) uit te voeren tijdens het samenvoegen van voorspellingen van tegels en afbeeldingen. Beschikbaar tijdens validatie en deductie. Wijzig deze parameter als er meerdere vakken per object zijn gedetecteerd in de uiteindelijke voorspellingen.

Moet zweven in [0, 1].
0,25

Voorbeeldnotebooks

Zie het voorbeeldnotitieblok voor objectdetectie voor gedetailleerde codevoorbeelden van het instellen en trainen van een objectdetectiemodel.

Notitie

Alle installatiekopieën in dit artikel worden beschikbaar gesteld in overeenstemming met de sectie over toegestaan gebruik van de MIT-licentieovereenkomst. Copyright © 2020 Roboflow, Inc.

Volgende stappen