Identificeer natte koeltorens zonder fysiek bezoek

Met ons image recognition model identificeren we natte koeltorens in jouw regio met behulp van openbare luchtfoto’s. In 4 stappen naar het resultaat:

Stap 1: Adressen naar coördinaten

Op veel plekken in Nederland staan natte koeltorens, boven op gebouwen, dichtbij productiehallen, en naast kassen. Omgevingsdiensten hebben van een deel van de natte koeltorens in hun gebied de locatie in hun zaaksysteem. Vaak betreft dit het hoofdadres en niet de exacte coördinaat van de natte koeltoren. 

Daarom is de eerste stap het omzetten van adressen van bekende natte koeltorens naar coördinaten. Om precies te weten waar een natte koeltoren staat is het adres namelijk niet precies genoeg. Ook de locaties van bekende natte koeltorens op atlas leefomgeving laten alleen de locatie zien waarop het bedrijf is ingeschreven (meestal een kantoor).

Om de coördinaten te achterhalen maken we gebruik van Google maps om de precieze locatie van natte koeltorens te achterhalen. Het belang van de exacte locatie van de natte koeltoren lees je in stap 2.

Stap 2: Luchtfoto’s van PDOK

Het machine learning model dat we gebruiken voor deze toepassing is gebaseerd op de luchtfoto’s van PDOK. Deze foto’s hebben een resolutie van 25 cm, wat vooral voor de grote industriële koeltorens goed genoeg is, maar het model wordt steeds verfijnder en kan ook kleinere natte koeltorens herkennen. De kracht van deze toepassing van machine learning zit in de hoeveelheid luchtfoto’s om van te leren, maar ook om nieuwe natte koeltorens op te voorspellen.

Uiteraard hebben we niet alle luchtfoto’s nodig maar alleen de luchtfoto’s waar een natte koeltorens op staat. We maken gebruik van ons eigen Python package om coördinaten om te rekenen naar tile-nummers en de specifieke luchtfoto’s te downloaden met natte koeltorens.

Labelen

Om een model nieuwe natte koeltorens te laten vinden, moet het model eerst leren om natte koeltorens te herkennen op luchtfoto’s. Met behulp van de gedownloade luchtfoto’s en de coördinaten van bekende natte koeltorens kunnen we deze luchtfoto’s gaan labelen. Hiervoor gebruiken we het open source programma Labelimg om kaders te tekenen om alle koeltorens die we op de bekende locaties op de luchtfoto’s kunnen zien.

Aanpassingen tiles

De luchtfoto’s die we gebruiken zijn opgedeeld in tiles. Het nadeel hiervan is dat een natte koeltoren precies op de grens tussen twee plaatjes kan liggen. Om dit probleem te verhelpen downloaden we voor elke luchtfoto ook de 8 omliggende luchtfoto’s en creëren we 8 nieuwe luchtfoto’s door de omliggende foto’s een halve afstand naar het midden te schuiven. Op deze manier weten we zeker dat de natte koeltorens op tenminste een luchtfoto in zijn geheel is afgebeeld.

Stap 3: Model trainen

Score bepalen

Na het labelen van de luchtfoto’s, kunnen we aan de slag gaan met het trainen van een model. Maar voordat we daar mee beginnen, is het goed om aan de voorkant te bepalen wanneer een model goed scoort. Hiervoor wordt er meestal gekeken naar precision en recall. In dit geval betekent dit:

  • Precision: alle correct voorspelde natte koeltorens gedeeld door het totaal aantal voorspelde natte koeltorens (goed en fout)
  • Recall: Alle correct voorspelde natte koeltorens gedeeld door het totaal aantal correcte natte koeltorens

Het model wordt getraind op 80% van de data, waarbij 20% wordt achtergehouden om bovenstaande scores uit te rekenen.Wat een correct voorspelde natte koeltoren is, is niet volledig triviaal. Daarom kijken we op 3 verschillende niveaus naar deze scores: Tile, object en de Intersection over Union.

Envision

Voor het ontwikkelen van ons model hebben we veel gebruik gemaakt van ons eigen package Envision. Via Envision kunnen we snel modellen voor Object detection en segmentation trainen en gebruiken om te voorspellen. De ontwikkelingen op het gebied van Object detection en image segmentation gaan zo snel, dat er nog geen stabiel package bestaat wat dit helemaal voor ons doet.

Yolov2/Yolov3

Voor ons eerste model hebben we gebruik gemaakt van het YOLOv2 model door middel van de darknet backend. Om ons meer bewegingsvrijheid te geven en over te stappen naar YOLOv3 hebben we dit model helemaal overgezet in Pytorch, dit stelt ons in staat om veel meer controle te hebben over het model zelf, en de eerste resultaten laten zien dat YOLOv3 op alle vlakken beter presteert dan YOLOv2.

Stap 4: Nieuwe natte koeltorens vinden

Nadat het model getraind is, kunnen we het model ‘loslaten’ op de luchtfoto’s van een geselecteerd gebied. In de afgelopen tijd hebben we flinke stappen gezet op hardware gebied, waardoor we nu op onze eigen GPU-service (genaamd de matrix) en Envision veel sneller voorspellingen doen, waarbij het voorspellen op honderdduizenden plaatjes geen enkel probleem meer is en we in een keer een hele regio van bijvoorbeeld een omgevingsdienst als input aan het model kunnen geven.

Coördinaten naar adressen

De voorspellingen van nieuwe natte koeltorens worden door het model teruggegeven als kaders op luchtfoto’s. Omdat we van de luchtfoto’s de coördinaten hebben van de linkerbovenhoek en we uit kunnen rekenen waar de koeltoren zich bevindt relatief aan de luchtfoto, kunnen we de voorspellingen omzetten naar coördinaten.

Omdat voor veel toepassingen het ook handig is om te weten welk adres zich waarschijnlijk bevindt gebruiken reverse geocoding om aan de hand van een coördinaat het waarschijnlijke adres te vinden.

Eindresultaat

De resultaten van het model geven we momenteel nog terug in de vorm van een Excelbestand, met hierin de gevonden coördinaten, adresgegevens, zekerheid van het model en een link naar Google Maps, zodat het heel makkelijk te controleren is. De zekerheid van het model geeft in een percentage aan hoe zeker het model is dat het een natte koeltoren heeft gevonden. De lijst is standaard gesorteerd van hoog naar lage zekerheid en bekende natte koeltorens zijn eruit gefilterd, zodat je zo snel mogelijk nieuwe natte koeltorens vindt.

Naast het teruggeven van deze resultaten in een Excel lijst, zien we het ook als een waardevolle doorontwikkeling om een dashboard te maken waarop we de resultaten geografisch weergeven. Naast het plotten van de gevonden natte koeltorens met de bijbehorende kenmerken (zoals het adres en de zekerheid van het model), kunnen hier ook omgevingskenmerken aan gekoppeld worden. Een onbekende natte koeltoren naast een kinderopvang of ziekenhuis heeft bijvoorbeeld een hogere prioriteit dan een onbekende natte koeltoren in een vrij onbebouwd gebied. Daarom is het ook mogelijk om een omgevingsrisico te voorspellen aan de hand van de locatie en omgevingskenmerken.

Disclaimer: willekeurig gegenereerde locaties.

Potentie andere objecten

Naast het detecteren van natte koeltorens zijn er ook nog tal van andere toepassingen denkbaar. Denk bijvoorbeeld aan het detecteren van industriële waterzuiveringsinstallaties, propaantanks, airco’s, folietunnel of zonnepanelen.

Wil je meer weten over het detecteren van objecten of heb je een vraag of deze techniek bij jouw probleem een oplossing kan zijn? Neem dan contact met ons op!

Leonie klaassen
Business Consultant

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *