Tensorflow Object Detection API (TF OD API) is nu nog beter geworden. Onlangs heeft Google de nieuwe versie van TF OD API uitgebracht die nu Tensorflow 2.x ondersteunt. Dit is een enorme verbetering waar we allemaal op hebben gewacht!

Intro

Recente verbeteringen in objectdetectie (OD) worden aangedreven door de wijdverbreide acceptatie van de technologie door industrie. Autofabrikanten gebruiken objectdetectie om voertuigen te helpen autonoom over de weg te navigeren, artsen gebruiken het om hun diagnoseproces te verbeteren, boeren gebruiken het om verschillende gewasziekten op te sporen… en er zijn vele andere (nog te ontdekken) use-cases waarbij OD kan enorme waarde bieden.

Tensorflow is een diepgaand leerraamwerk dat veel van de state-of-the-art (SOTA) modellen in natuurlijke taalverwerking aanstuurt ( NLP), spraaksynthese, semantische segmentatie en objectdetectie. TF OD API is een open-source verzameling van objectdetectiemodellen die wordt gebruikt door zowel liefhebbers van diep leren als door verschillende experts in het veld.

Nu we de basisterminologie hebben behandeld, laten we eens kijken wat de nieuwe TF OD API biedt!

Nieuwe TF OD API

Nieuwe TF2 OD API introduceert gretige uitvoering die het debuggen van de objectdetectiemodellen veel eenvoudiger; het bevat ook nieuwe SOTA modellendie worden ondersteund in de TF2 Model Zoo. Goed nieuws voor Tensorflow 1.x. gebruikers is dat de nieuwe OD API achterwaarts compatibel is, dus je kunt nog steeds TF1 gebruiken als je wilt, hoewel overschakelen naar TF2 ten zeerste wordt aanbevolen!

Naast de SSD (MobileNet/ResNet), Faster R- CNN (ResNet/Inception ResNet) en Mask R-CNN-modellen die eerder beschikbaar waren in TF1 Model Zoo, TF2 Model Zoo introduceert nieuwe SOTA-modellen zoals CenterNet, ExtremeNet en EfficientDet.

Modellen in de TF2 OD API Model Zoo zijn vooraf getraind op de COCO 2017-dataset. De vooraf getrainde modellen kunnen handig zijn voor out-of-the-box gevolgtrekking als u geïnteresseerd bent in categorieën die al in deze dataset zijn opgenomen, of voor het initialiseren van uw modellen bij het trainen op nieuwe datasets. Het gebruik van TF OD API-modellen in plaats van de SOTA-modellen zelf te implementeren geeft u meer tijd om u op de gegevens te concentreren, wat een andere cruciale factor is bij het bereiken van hoge prestaties van OD-modellen. Maar zelfs als u besluit de modellen zelf te bouwen, bieden TF OD API-modellen een goede prestatiebenchmark!

U kunt kiezen uit een lange lijst van verschillende modellen, afhankelijk van uw vereisten (snelheid vs. nauwkeurigheid):

In de vorige tabel kunt u zien dat alleen de gemiddelde COCO mAP-statistiek in de tabel wordt gegeven. Hoewel het een redelijk goede oriëntatie kan zijn voor de prestaties van het model, aanvullende statistiekenkan handig zijn als u geïnteresseerd bent in hoe het model presteert op objecten van verschillende groottes of verschillende soorten objecten. Als u bijvoorbeeld geïnteresseerd bent in het ontwikkelen van uw geavanceerde rijhulpsystemen (ADAS), maakt het u niet zoveel uit of de detectoren bananen slecht kunnen detecteren!

In deze blog leggen we uit hoe u een gedetailleerde evaluatie uitvoert van verschillende vooraf getrainde EfficientDet-controlepunten die direct beschikbaar zijn in de TF2 Model Zoo.

EfficientDets — SOTA OD-modellen

EfficientDet is een single-shot detector die redelijk vergelijkbaar is met het RetinaNet-model met verschillende verbeteringen: EfficientNet-backbone, gewogen bidirectioneel piramidenetwerk (BiFPN) en samengestelde schaalmethode.

BiFPN is een verbeterde versie van de zeer populaire FPN. Het leert de gewichten die het belang van verschillende invoerfuncties vertegenwoordigen, terwijl het herhaaldelijk top-down en bottom-up multi-scale functiefusie toepast.

Functienetwerkontwerp: a) FPN introduceert een top-down-pad om functies op meerdere schalen te combineren, b) BiFPN voegt een bottom-up-pad toe aan de bestaande top-down pad om een ​​bidirectionele FPN te creëren. Bron: https://arxiv.org/pdf/1911.09070.pdf

De gebruikelijke aanpak voor het verbeteren van de nauwkeurigheid van de objectdetectiemodellen is om ofwel de invoerafbeelding te vergroten of een groter backbone-netwerk te gebruiken. In plaats van te werken op een enkele dimensie of beperkte schaaldimensies, schaalt samengestelde schaling gezamenlijk de resolutie/diepte/breedte op voor de backbone, het functienetwerk en het box/klasse-voorspellingsnetwerk.

EfficientDet-modellen met verschillende schaalfactoren zijn opgenomen in de TF2 OD API Model Zoo, en de schaalfactor wordt aangegeven met de {X} in de naam van het model, terwijl de resolutie van het invoerbeeld wordt aangegeven met {RES}x{RES} EfficientDet D{X} {RES}x{RES}.

Evaluatie van vooraf getrainde EfficientDet-modellen

We willen gedetailleerde nauwkeurigheidsvergelijkingen uitvoeren om de invloed van de samengestelde schaalconfiguraties op de prestaties van het netwerk zelf te bestuderen. Om die reden hebben we een Google Colab-notebook gemaakt waarin we uitleggen hoe je de evaluatie van de modellen uitvoert en hoe je de evaluatieresultaten efficiënt kunt vergelijken. We zijn geïnteresseerd in gedetailleerde evaluatiestatistieken, inclusief statistieken per klasse en verschillende objectgroottes.

Helaas ondersteunt TF OD API dergelijke statistieken niet standaard. Daarom hebben we een fork van de TF OD-repo gemaakt en de relevante scripts bijgewerkt om deze functionaliteit te introduceren volgens de instructies in dit nummer.

In de notebook geven we instructies over hoe Tensorflow in te stellen 2 en de TF2 OD API. We voegen ook scripts toe die het gemakkelijk maken om de EfficientDet-controlepunten te downloaden, evenals aanvullende scripts die u helpen de COCO 2017 Val-dataset te verkrijgen en tfrecord-bestanden te maken die worden verbruikt door de TF OD API in de evaluatiefase.

Ten slotte wijzigen we de pipeline.config-bestanden voor de EfficientDet-controlepunten om alles voor te bereiden voor de sequentiële evaluatie van de 8 EfficientDet-controlepunten. TF OD API gebruikt ze om het trainings- en evaluatieproces te configureren. Het schema voor de trainingspijplijn is te vinden in object_detection/protos/pipeline.proto. Op een hoog niveau is het configuratiebestand opgesplitst in 5 delen:

  1. De modelconfiguratie. Dit definieert welk type model zal worden getraind (d.w.z. meta-architectuur, feature-extractor…).
  2. De train_config, die beslist welke parameters moeten worden gebruikt om modelparameters te trainen (d.w.z. SGD-parameters, invoervoorverwerking , en initialisatiewaarden van feature-extractor…).
  3. De eval_config, die bepaalt welke set van meetwaarden zal worden gerapporteerd voor evaluatie.
  4. De train_input_config, die definieert op welke dataset het model moet worden getraind.
  5. De eval_input_config, die bepaalt op welke dataset het model wordt geëvalueerd. Meestal moet dit anders zijn dan de trainingsinvoergegevensset.

model { (… Voeg hier modelconfiguratie toe… ) } train_config : { (… Toevoegentrain_config hier…) } train_input_reader: { (… Toevoegen train_input-configuratie hier…) } eval_config: { }< span class=”pln”> eval_input_reader: { (… Voeg hiereval_input-configuratie…) }

We zijn alleen geïnteresseerd in de delen eval_config en eval_input_config van het configuratiebestand. Bekijk deze cel in Google Colab eens nader voor meer details over hoe we de evaluatieparameters instellen. Twee extra vlaggen die niet standaard zijn ingeschakeld in de TF OD API zijn include_metrics_per_category en all_metrics_per_category. Na het toepassen van de patch die in het Colab-notebook wordt gegeven, maken deze twee, indien ingesteld op true, gedetailleerde statistieken (per categorie en grootte) mogelijk waarin we geïnteresseerd zijn!

ClearML — efficiënt experiment management

Om de modelevaluaties efficiënt te kunnen vergelijken, gebruiken we een open-source experimentbeheertool genaamd ClearML. Het is heel eenvoudig om het in uw code te integreren en het maakt een heleboel verschillende functionaliteit uit de doos mogelijk. Het kan worden gebruikt als alternatief voor Tensorboard voor het visualiseren van experimentresultaten.

Het hoofdscript in de OD API is object_detection/model_main_tf2.py. Het behandelt zowel de training als de evaluatiefase. We hebben een klein script gemaakt dat model_main_tf2.py in een lus aanroept om alle EfficientDet-controlepunten te evalueren.

Om ClearML-experimentbeheer in het evaluatiescript te integreren, moesten we 2 (+1) regels code toevoegen. In het model_main_tf2.py-script hebben we deze regels toegevoegd:

van clearml import Taak taak = Taak.init(projectnaam=NAME_OF_THE_PROJECT, task_name=NAME_OF_THE_TASK) # OPTIONEEL – logt de pipeline.config in het clearml-dashboardtaak.connect_configuration(VLAGGEN.pipeline_config_path)

en ClearML begint automatisch tal van zaken voor u te loggen. U kunt hier een uitgebreide lijst met functies vinden.

Verschillende EfficientDet-modellen vergelijken

Op deze link vindt u de resultaten van de evaluatie van 8 EfficientDet-modellen die zijn opgenomen in de TF2 OD API. We hebben de experimenten genoemd efficientdet_d{X}_coco17_tpu-32 waarbij {x} staat voor de samengestelde schaalfactor voor het EfficientDet model. U krijgt dezelfde resultaten als u het voorbeeld van Colab-notebook uitvoert en uw experimenten worden weergegeven op de demo ClearML-server.

In dit gedeelte laten we u zien hoe u efficiënt kunt vergelijken verschillende modellen en verifieer hun prestaties op de evaluatiedataset. We gebruiken COCO 2017 Val dataset aangezien het een standaard dataset is voor de evaluatie van objectdetectiemodellen in de TF OD API.

ClearML legt automatisch code, hyperparameters en statistieken vast

We zijn geïnteresseerd in de evaluatiestatistieken van het COCO Object Detection-model. Klik hier om de resultaten van experimenten te zien. Deze pagina bevat grafieken met alle statistieken waarin we geïnteresseerd zijn.

We kunnen eerst de DetectionBoxes_Precision-plot bekijken die de gemiddelde precisiestatistiek bevat voor alle categorieën in de dataset

. De waarde van de mAP-metriek komt overeen met de mAP-metriek gerapporteerd in de tabel in de TF2 Model Zoo.

DetectionBoxes_Precision-statistieken voor alle categorieën in de COCO 2017 Evaluation-dataset

Dankzij de patch die we op de pycocotools hebben toegepast, kunnen we ook de mAP per categorie krijgen statistieken. Aangezien er 90 categorieën in de COCO-dataset zijn, willen we de bijdrage van elke categorie aan de gemiddelde nauwkeurigheid weten. Op deze manier krijgen we meer granulair inzicht in de prestaties van het geëvalueerde model. U bent bijvoorbeeld misschien geïnteresseerd in hoe het model alleen presteert voor kleine objecten in een bepaalde categorie. Uit de geaggregeerde statistieken is het onmogelijk om dergelijke inzichten te verkrijgen, terwijl de voorgestelde patch dit mogelijk maakt!

MAP-statistieken per categorie voor EfficientDet D0-model

We gebruiken ook de mogelijkheid van ClearML om meerdere experimenten te vergelijken. De experimentvergelijking toont alle verschillen tussen de modellen. We kunnen eerst een gedetailleerde scalaire en plotvergelijking van de relevante statistieken krijgen. In ons voorbeeld vergelijken we de prestaties van EfficientDet D0-, D1- en D2-modellen. Het is duidelijk dat samengestelde schaling een positieve invloed heeft op de prestaties van de modellen.

Een van de extra voordelen van het hebben van statistieken per categorie is dat u de invloed van samengestelde schalingsfactoren op de nauwkeurigheid kunt analyseren. van een bepaalde klasse van interesse. Als u bijvoorbeeld geïnteresseerd bent in het detecteren van bussen in een bewakingsvideo, kunt u de grafiek analyseren die de mAP-prestaties toont voor de buscategorie versus de samengestelde schaalfactor van het EfficientDet-model. Dit helpt om te beslissen welk model te gebruiken en waar de sweet spot ligt tussen prestaties en computationele complexiteit!

mAP metrische vs. samengestelde schaalfactor van EfficientDet model voor “bus” categorie

Een van de interessante dingen die u ook kunt vergelijk is het modelconfiguratiebestand pipeline.config. U kunt zien dat het fundamentele verschil tussen de EfficientDet-modellen ligt in de afmetingen van de invoerafbeelding en het aantal/de diepte van filters, zoals eerder besproken.

De volgende grafiek bevat de mAP-waarden voor 3 EfficientDet-modellen. Er is een duidelijk voordeel in het verhogen van de invoerbeeldresolutie en het vergroten van het aantal filters in het model. Terwijl het D0-model 33,55% mAP behaalt, presteert het D2-model beter en haalt het 41,79% mAP. U kunt ook proberen om vergelijkingen per klasse uit te voeren, andere EfficientDet-modellen te vergelijken of wat u maar interessant vindt voor uw toepassing.

mAP-vergelijking voor EfficientDet D0-, D1- en D2-modellen

Hoe wordt TF OD API gebruikt om de veiligheid op de bouwplaats te verbeteren?

Forsight is een startup in een vroeg stadium en het is onze missie om bouwplaatsen om te vormen tot veilige omgevingen voor werknemers. Forsight maakt gebruik van computervisie en machine learning, waarbij realtime CCTV-beelden worden verwerkt, om veiligheidsingenieurs te helpen bij het bewaken van het juiste gebruik van persoonlijke beschermingsmiddelen (PBM) om locaties veilig en beveiligd te houden.

Onze pijplijn voor het bewaken van bouwplaatsen is gebouwd bovenop de TF OD API en functies omvatten PBM-detectie en -bewaking, sociale afstandsregistratie, virtuele geofence-bewaking, bewaking van niet-parkeerzones en branddetectie. Bij Forsight gebruiken we ClearML ook om onze experimenten bij te houden, ze te delen met teamleden en alles te loggen zodat we het kunnen reproduceren.

Terwijl de COVID-19-pandemie voortduurt, zijn bouwprojecten over de hele wereld actief op zoek naar manieren om projecten opnieuw op te starten of in stand te houden terwijl de werknemers veilig blijven. Computervisie en machine learning kunnen bouwmanagers helpen ervoor te zorgen dat hun bouwplaatsen veilig zijn. We hebben een realtime monitoringpijplijn gebouwd die de naleving van sociale afstand tussen werknemers bijhoudt.

<Toezicht op sociale afstand met behulp van TF OD API

Naast de nieuwe, onzichtbare dreiging van COVID zijn er enkele eeuwenoude gevaren waarmee alle bouwvakkers elke dag worden geconfronteerd, met name de ‘Fatale Vier’: vallen, geraakt worden door voorwerpen, gevangen in of tussen en elektrocutiegevaren. Ervoor zorgen dat werknemers hun persoonlijke beschermingsmiddelen dragen, is cruciaal voor de algehele veiligheid van een bouwplaats. TF OD API is een geweldig startpunt voor het bouwen van een autonome pijplijn voor PBM-bewaking. Onze volgende blog gaat in op het trainen van een basishelmdetector met behulp van de nieuwe TF OD API.

Bewaking van persoonlijke beschermingsmiddelen (PBM) met behulp van TF OD API

Sommige delen van een bouwplaats zijn gevaarlijker dan andere. Het creëren van virtuele geofence-gebieden en deze bewaken met behulp van CCTV-camera’s voegt enorme waarde toe aan de bouwmanagers, omdat ze zich kunnen concentreren op andere taken terwijl ze zich bewust zijn van eventuele geofence-inbreuken op hun site. Bovendien kan geofencing eenvoudig worden uitgebreid tot het bewaken van toegang tot machines en zwaar materieel.

<Geofence-monitoring met OD API

Conclusie

In deze blog hebben we de voordelen van het gebruik van de nieuwe TF2 OD API. We hebben laten zien hoe u op efficiënte wijze vooraf getrainde OD-modellen kunt evalueren die direct beschikbaar zijn in de TF2 OD API Model Zoo. We hebben ook laten zien hoe u ClearML kunt gebruiken als een efficiënte oplossing voor experimentbeheer die krachtige inzichten en statistieken mogelijk maakt. Tot slot hebben we enkele real-world toepassingen van objectdetectie in een bouwomgeving laten zien.

Deze blog is de eerste blog in de reeksvan blogs die instructies en advies geven over het gebruik van TF2 OD API. In de volgende blog laten we zien hoe u een aangepaste objectdetector traint waarmee u werknemers kunt detecteren die hun persoonlijke beschermingsmiddelen dragen. Volg ons voor meer praktische tutorials! Neem ook gerust contact met ons op als u vragen of opmerkingen heeft!

[1] “Snelheid/nauwkeurigheid compromissen voor moderne convolutionele objectdetectoren.” Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z, Song Y, Guadarrama S, Murphy K, CVPR 2017

[2] TensorFlow Object Detection API, https://github.com/tensorflow/models/tree/master/research/object_detection

[3] “EfficientDet: schaalbare en efficiënte objectdetectie” Mingxing Tan, Ruoming Pang, Quoc V. Le, https ://arxiv.org/abs/1911.09070

[4] “EfficientNet: heroverweging van modelschaling voor convolutionele neurale netwerken” Mingxing Tan en Quoc V. Le, 2019, https://arxiv.org/abs /1905.11946

Ivan Ralašić
Technische mede-oprichter, Forsight.ai

0

Geef een antwoord

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