Dela via


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-mltillä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 mltillä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.

Diagram som visar en bild som delas in i ett rutnät med överlappande paneler.

Förutsättningar

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.

Diagram som visar objektförslag från bilder och paneler som sammanfogas för att bilda de slutliga förutsägelserna.

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