Träna en modell för identifiering av små objekt med AutoML (förhandsversion) (v1)
GÄLLER FÖR: Python SDK azureml v1
Viktigt!
Några av Azure CLI-kommandona i den här artikeln använder azure-cli-ml
tillägget , eller v1, för Azure Machine Learning. Stödet för v1-tillägget upphör den 30 september 2025. Du kommer att kunna installera och använda v1-tillägget fram till det datumet.
Vi rekommenderar att du övergår till ml
tillägget , eller v2, före den 30 september 2025. Mer information om v2-tillägget finns i Azure ML CLI-tillägget och Python SDK v2.
Viktigt!
Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
I den här artikeln får du lära dig hur du tränar en objektidentifieringsmodell för att identifiera små objekt i högupplösta bilder med automatiserad ML i Azure Machine Learning.
Normalt fungerar modeller för visuellt innehåll för objektidentifiering bra för datauppsättningar med relativt stora objekt. Men på grund av minnes- och beräkningsbegränsningar tenderar dessa modeller att underpresterar när de får uppgiften att identifiera små objekt i högupplösta bilder. Eftersom högupplösta bilder vanligtvis är stora, storleksändras de innan de matas in i modellen, vilket begränsar deras förmåga att identifiera mindre objekt – i förhållande till den ursprungliga bildstorleken.
För att hjälpa till med det här problemet har automatiserad ML stöd för tiling som en del av funktionerna för visuellt innehåll i den offentliga förhandsversionen. Tiling-funktionen i automatiserad ML baseras på begreppen i The Power of Tiling for Small Object Detection.
Vid plattsättning delas varje bild in i ett rutnät med paneler. Närliggande paneler överlappar varandra i bredd- och höjddimensioner. Panelerna beskärs från originalet enligt följande bild.
Förutsättningar
En Azure Machine Learning-arbetsyta. Information om hur du skapar arbetsytan finns i Skapa arbetsyteresurser.
Den här artikeln förutsätter viss kunskap om hur du konfigurerar ett automatiserat maskininlärningsexperiment för uppgifter med visuellt innehåll.
Modeller som stöds
Liten objektidentifiering med tiling stöds för alla modeller som stöds av automatiserad ML för avbildningar för objektidentifieringsaktivitet.
Aktivera tiling under träning
Om du vill aktivera tiling kan du ange parametern tile_grid_size
till ett värde som (3, 2); där 3 är antalet paneler längs bredddimensionen och 2 är antalet paneler längs höjddimensionen. När den här parametern är inställd på (3, 2) delas varje bild upp i ett rutnät med 3 x 2 paneler. Varje panel överlappar de intilliggande panelerna, så att alla objekt som faller på panelens kantlinje inkluderas helt i någon av panelerna. Den här överlappningen kan styras av parametern tile_overlap_ratio
, som standard är 25 %.
När tiling är aktiverat skickas hela bilden och panelerna som genereras från den genom modellen. Dessa bilder och paneler ändras enligt parametrarna min_size
och max_size
innan de matas till modellen. Beräkningstiden ökar proportionellt på grund av bearbetningen av dessa extra data.
När parametern tile_grid_size
till exempel är (3, 2) skulle beräkningstiden vara ungefär sju gånger högre än utan tiling.
Du kan ange värdet för tile_grid_size
i hyperparameterutrymmet som en sträng.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(3, 2)'),
...
}
Värdet för tile_grid_size
parametern beror på bilddimensionerna och storleken på objekten i bilden. Till exempel skulle ett större antal paneler vara till hjälp när det finns mindre objekt i bilderna.
Om du vill välja det optimala värdet för den här parametern för datamängden kan du använda hyperparametersökning. För att göra det kan du ange ett val av värden för den här parametern i hyperparameterutrymmet.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(2, 1)', '(3, 2)', '(5, 3)'),
...
}
Tiling under slutsatsdragning
När en modell som tränats med tiling distribueras sker även plattsättning under slutsatsdragning. Automatiserad ML använder tile_grid_size
värdet från träning för att generera panelerna under slutsatsdragningen. Hela bilden och motsvarande paneler skickas genom modellen, och objektförslagen från dem sammanfogas till utdataslutförutsägelser, till exempel i följande bild.
Kommentar
Det är möjligt att samma objekt identifieras från flera paneler, dupliceringsidentifiering görs för att ta bort sådana dubbletter.
Dubblettidentifiering görs genom att köra NMS på förslagen från panelerna och bilden. När flera förslag överlappar väljs den som har högst poäng och andra ignoreras som dubbletter. Två förslag anses vara överlappande när skärningspunkten över union (iou) mellan dem är större än parametern tile_predictions_nms_thresh
.
Du har också möjlighet att endast aktivera tiling under slutsatsdragning utan att aktivera den i träning. För att göra det anger du parametern tile_grid_size
endast under slutsatsdragning, inte för träning.
Detta kan förbättra prestandan för vissa datauppsättningar och medför inte den extra kostnad som medföljer tiling vid träningstillfället.
Tiling hyperparametrar
Följande är de parametrar som du kan använda för att styra plattsättningsfunktionen.
Parameternamn | beskrivning | Standard |
---|---|---|
tile_grid_size |
Rutnätsstorleken som ska användas för att sida vid sida vid varje bild. Tillgänglig för användning under träning, validering och slutsatsdragning. Tuppeln med två heltal som skickats som en sträng, t.ex. '(3, 2)' Obs! Om du anger den här parametern ökar beräkningstiden proportionellt eftersom alla paneler och bilder bearbetas av modellen. |
inget standardvärde |
tile_overlap_ratio |
Styr överlappningsförhållandet mellan intilliggande paneler i varje dimension. När objekten som faller på panelgränsen är för stora för att få plats helt i någon av panelerna ökar du värdet för den här parametern så att objekten får plats i minst en av panelerna helt. Måste vara en flottör i [0, 1). |
0.25 |
tile_predictions_nms_thresh |
Skärningspunkten över unionströskelvärdet som ska användas för att utföra icke-maximal undertryckning (nms) samtidigt som förutsägelser från paneler och bilder slås samman. Tillgänglig under validering och slutsatsdragning. Ändra den här parametern om det finns flera rutor som identifieras per objekt i de slutliga förutsägelserna. Måste vara flytande i [0, 1]. |
0.25 |
Exempelnotebook-filer
Mer information om hur du konfigurerar och tränar en objektidentifieringsmodell finns i exempelanteckningsboken för objektidentifiering.
Kommentar
Alla bilder i den här artikeln görs tillgängliga i enlighet med avsnittet om tillåten användning i MIT-licensavtalet. Copyright © 2020 Roboflow, Inc.
Nästa steg
- Läs mer om hur och var du distribuerar en modell.
- Definitioner och exempel på prestandadiagram och mått som tillhandahålls för varje jobb finns i Utvärdera automatiserade maskininlärningsexperimentresultat.
- Självstudie: Träna en objektidentifieringsmodell (förhandsversion) med AutoML och Python.
- Se vilka hyperparametrar som är tillgängliga för uppgifter med visuellt innehåll.
- Göra förutsägelser med ONNX på modeller för visuellt innehåll från AutoML