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.
Vereisten
Een Azure Machine Learning-werkruimte. Zie Werkruimtebronnen maken om de werkruimte te maken.
In dit artikel wordt ervan uitgegaan dat u bekend bent met het configureren van een geautomatiseerd machine learning-experiment voor Computer Vision-taken.
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.
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
- Meer informatie over hoe en waar u een model kunt implementeren.
- Zie De resultaten van geautomatiseerde machine learning-experimenten evalueren voor definities en voorbeelden van de prestatiegrafieken en metrische gegevens voor elke taak.
- Zelfstudie: Een objectdetectiemodel trainen met AutoML en Python.
- Bekijk welke hyperparameters beschikbaar zijn voor Computer Vision-taken.
- Voorspellingen doen met ONNX op Computer Vision-modellen van AutoML