Delen via


Een klein objectdetectiemodel trainen met AutoML

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

In dit artikel leert u hoe u een objectdetectiemodel traint om kleine objecten in afbeeldingen met 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 worden deze modellen echter meestal minder goed uitgevoerd wanneer ze kleine objecten in afbeeldingen met hoge resolutie detecteren. Omdat afbeeldingen met een hoge resolutie doorgaans groot zijn, worden ze aangepast voordat ze in het model worden ingevoerd. Hierdoor kunnen kleinere objecten worden gedetecteerd ten opzichte van de oorspronkelijke afbeeldingsgrootte.

Om dit probleem te verhelpen, ondersteunt geautomatiseerde ML tegeling als onderdeel van de computer vision-mogelijkheden. De tegelfunctie in geautomatiseerde ML is gebaseerd op de concepten in The Power of Tiling for Small Object Detection.

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

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

Vereisten

Ondersteunde modellen

Kleine objectdetectie met behulp van tegeling wordt ondersteund voor alle modellen die worden ondersteund door Automated ML voor afbeeldingen voor objectdetectietaak.

Tiling inschakelen tijdens de training

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

Wanneer tegeling is ingeschakeld, worden de volledige afbeelding en de tegels die daaruit zijn gegenereerd, doorgegeven via het model. Deze afbeeldingen en tegels worden aangepast aan de min_size en max_size parameters voordat ze aan het model worden toegevoegd. De rekentijd neemt proportioneel toe vanwege het verwerken van deze extra gegevens.

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

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

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

training_parameters:
  tile_grid_size: '3x2'

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

Als u de optimale waarde voor deze parameter voor uw gegevensset wilt kiezen, kunt u hyperparameterzoekopdrachten gebruiken. Hiervoor kunt u een keuze opgeven uit waarden voor deze parameter in uw hyperparameterruimte.

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

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

Tiling tijdens deductie

Wanneer een model dat is getraind met tiling wordt geïmplementeerd, vindt ook de tiling plaats tijdens deductie. Geautomatiseerde ML gebruikt de tile_grid_size waarde van training om de tegels te genereren tijdens deductie. De volledige afbeelding en de bijbehorende tegels worden doorgegeven via het model en de objectvoorstellen hiervan worden samengevoegd tot uiteindelijke voorspellingen, 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 uit meerdere tegels wordt gedetecteerd, wordt er duplicatiedetectie uitgevoerd om dergelijke duplicaten te verwijderen.

Dubbele detectie wordt uitgevoerd door NMS uit te voeren op de voorstellen van de tegels en de afbeelding. Wanneer meerdere voorstellen elkaar overlappen, wordt de ene met de hoogste score gekozen en worden andere als duplicaten verwijderd. Er worden twee voorstellen beschouwd als overlappend wanneer het snijpunt tussen de voorstellen groter is dan de tile_predictions_nms_thresh parameter.

U hebt ook de mogelijkheid om tiling alleen in te schakelen tijdens deductie zonder deze in te schakelen in de training. Hiervoor stelt u de parameter alleen in tijdens deductie tile_grid_size , niet voor training.

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

Tiling hyperparameters

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

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

Moet worden doorgegeven als een tekenreeks in '3x2' 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 zijn in [0, 1).
0.25
tile_predictions_nms_thresh Het snijpunt boven de samenvoegdrempel om niet-maximumonderdrukking (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 worden gedetecteerd in de uiteindelijke voorspellingen.

Moet zweven in [0, 1].
0.25

Voorbeeldnotebooks

Zie het voorbeeldnotebook 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 toegestaan gebruik van de MIT-licentieovereenkomst. Copyright © 2020 Roboflow, Inc.

Volgende stappen