zaterdag 27 januari 2018

data-science-bowl-2018 - Strategie bepalen

Een gangbare strategie bij het werken met afbeeldingen van verschillend formaat in een neuraal netwerk is het 'resizen' van alle afbeeldingen naar een vast, kleiner formaat. Kleiner omdat anders het NN wel erg groot kan gaan worden. Als er vervolgens iets met de locatie gedaan moet worden, zoals in dit geval de locatie van de celkernen bepalen, moeten de resultaten weer worden opgeschaald naar het oorspronkelijke formaat.



Echter bij deze afbeeldingen is er heel veel 'herhaling'. Ook een uitsnede van de afbeelding laat meetstal meerdere celkernen zien. Ik ga kijken of ik hier iets mee kan door de afbeeldingen in vaste, kleine, gelijke delen op te delen. Bijvoorbeeld delen van 80x80 pixels. Ook de maskers moeten dan uiteraard in het zelfde formaat worden opgesplitst. Hierdoor gaat er geen informatie verloren zoals bij de 'resize' optie wel het geval is. Tevens creƫer ik een veelfout aan afbeeldingen hetgeen voor het trainen van een neuraal netwerk altijd beter is.

Voordat ik dat doe moet ik echter de verschillende masker-afbeeldingen per cel-plaatje samenvoegen. Daar gebruik ik ook weer een geleend algoritme voor. Ik zie echter dat de maskers regelmatig elkaar raken of overlappen. Tevens lijken de maskers iets ruim om de celkernen heen te vallen. Om hieraan iets te doen maak ik een functie die een rand van de maskers weghaalt. Ik verwijder daartoe elke pixel als die een 'zwarte' raakt. Dat is uiteraard een stevige klus. Het lukt mij om die behoorlijk te versnellen door eerst te testen of het wel een witte pixel betreft en vervolgens te testen of de matrix rond de pixel een zwarte pixel bevat. Ik ga hierbij even de mist in omdat ik bij een logische matrix vergelijking verwacht de .any uitgang te moeten gebruiken. Het moet echter de .all zijn.

                if img[x,y]!=0 and img[x-1:x+1,y-1:y+1].all() == 0:

                    h[x,y]=0

Het neemt nog wel even maar uiteindeljk heb ik per preparaat een prachtig samengesteld masker.
Voorbeeld samengesteld masker

We kunnen nu gaan werken aan het opsplitsen in kleine afbeeldingen zoals hierboven beschreven.

Geen opmerkingen:

Een reactie posten