Zephyrnet-logo

Een visuele zoekmachine bouwen - Deel 1: gegevensverkenning

Datum:

By Mudit Bachhawat, Machine Learning-ingenieur @ Google

Waarom?

 
Heeft u zich ooit afgevraagd hoe Google of Bing afbeeldingen vindt die vergelijkbaar zijn met uw afbeelding. De algoritmen voor het genereren van op tekst gebaseerde 10 blauwe links zijn heel anders dan het vinden van visueel vergelijkbare of gerelateerde afbeeldingen. In dit artikel leggen we een dergelijke methode uit om een ​​visuele zoekmachine te bouwen. We zullen de Caltech gebruiken 101 dataset die afbeeldingen bevat van veelvoorkomende objecten die in het dagelijks leven worden gebruikt. We bespreken alleen een prototype-algoritme en bespreken wat er nodig is om een ​​volledige visuele zoekmachine te ontwikkelen.

Over dataset

 
De Caltech 101-dataset bevat 101 klassen objecten, zoals gezicht, vinkje, mes, mobiel, geld, enz. Het bevat 40-200 afbeeldingen per klasse. Naast 101 klassen bevat het ook een achtergrondklasse/ruisklasse om het model op negatieve beelden te testen. De dataset bevat 8677 afbeeldingen exclusief 486 achtergrondafbeeldingen. Hieronder vindt u de frequentieverdeling van afbeeldingen in klassen.

Een visuele zoekmachine bouwen - Deel 1: Gegevensverkenning


 

Het aantal afbeeldingen in elke klasse volgt de lange staartverdeling. De meest voorkomende klasse bevat ~16x meer afbeeldingen dan de minst voorkomende klasse. Ongeveer 5% van de klassen (5 klassen) bevat ~30% afbeeldingen. Ongeveer 90% van de klassen bevat minder dan 100 afbeeldingen.

Opmerking: Deze onbalans in de dataset kan leiden tot scheve batches bij het trainen van het model. 

Verkennende gegevensanalyse

 
We nemen willekeurige afbeeldingen van willekeurig geselecteerde klassen. Hieronder vindt u enkele voorbeeldafbeeldingen.

XXXXX


 

XXXXX


 

Waarnemingen

  • Aspect Ratio: Afbeeldingen hebben een andere beeldverhouding, maar de maximale zijde van de afbeelding wordt aangepast naar 300px. Daarnaast proberen we de verdeling van de beeldverhouding te achterhalen om de dataset beter te begrijpen. We ontdekten dat de meeste afbeeldingen een beeldverhouding van 0.5–0.8 hebben, dat wil zeggen dat de breedte groter is dan de hoogte.

XXXXX


 

  • Kleur versus grijswaarden: We hebben gemerkt dat veel afbeeldingen in een bepaalde map grijswaardenafbeeldingen waren. We hebben een controle van grijswaardenafbeeldingen geïmplementeerd en hebben vastgesteld dat 411 afbeeldingen in 101 klassen grijswaarden hadden. Vervolgens controleerden we de verdeling per klasse en ontdekten dat de klasse aan de autozijde alleen grijswaardenafbeeldingen had. Er zijn weinig andere klassen die grijswaardenafbeeldingen bevatten, maar ze bevatten allemaal, behalve de autozijde, ook kleurenafbeeldingen.

XXXXX


 

Gegevens vooroordelen:

  • gezichten en gezichten_gemakkelijk: deze klassen bevatten respectievelijk afbeeldingen van gezichten en bijgesneden gezichten. Maar er zijn meerdere afbeeldingen van dezelfde persoon met een kleine perspectiefverandering. Bovendien lijken de afbeeldingen qua occlusie, achtergrond en belichting sterk op elkaar.

XXXXX


 

  • flamingo en flamingo_head: De ene klasse bevat het hele lichaam van de flamingo en de andere klasse bevat alleen het kopgedeelte ervan.

XXXXX


 

  • soortgelijk geval: stoel en windsor_stoel
  • accordeon — afbeeldingen worden 45 graden gedraaid met zwarte vulling

Geanimeerde afbeeldingen: Veel klassen bevatten cartoonafbeeldingen. Cartoonafbeeldingen zijn semantisch correct, maar hebben een andere textuur dan echte afbeeldingen.

Objectlocatie en schaal: We hebben ontdekt dat de dataset een bepaalde schaal en locatie in de afbeelding heeft. Het scherpgestelde object bevindt zich altijd in het midden van het beeld en heeft een vergelijkbare schaal. Objecten in het midden vormen mogelijk geen probleem omdat CNN-modellen vertalingsinvariant zijn (bij gebruik met maximale pooling of gemiddelde pooling). Maar als u het model traint met een vaste schaal, werkt het model mogelijk alleen op objecten met een vergelijkbare schaal. Dit zorgt ervoor dat het model faalt op afbeeldingen met verschillende schalen, wat meestal in de praktijk voorkomt. Wij stellen twee oplossingen voor dit probleem voor:

  1. Tweetrapspijpleiding: We kunnen een pijplijn in twee fasen maken, waarbij de eerste component het selectiekader van het object in focus voorspelt en de tweede component voorspelt wat het object is.
  2. Het formaat van objecten wijzigen met behulp van gegevensvergroting: We kunnen data-augmentatietechnieken toepassen om het object in focus opnieuw te schalen en het model op die uitgebreide dataset te trainen. Hiervoor kan het nodig zijn dat de modelgrootte wordt vergroot, omdat er nu meer informatie wordt opgeslagen (objectherkenning als meerdere schalen, omdat CNN's niet schaalinvariant zijn)

Occlusie en achtergrond: De meerderheid van de afbeeldingen in de gegevensset heeft een zuivere achtergrond en het scherpgestelde object is niet afgedekt.

Beeldrasterisatie: Sommige klassen hebben afbeeldingen waarvan het formaat lijkt te zijn gewijzigd vanuit kleinere afmetingen. Hierdoor zien de afbeeldingen er erg gerasterd uit

Inbeddingsvisualisatie

  
In deze sectie visualiseren we afbeeldingen met behulp van de insluitingen die zijn gegenereerd op basis van een vooraf getraind model. Voor dit doel hebben we het MobileNetV2-model gebruikt, vooraf getraind op ImageNet met 2.2 miljoen parameters. We hebben de uitvoer van de globale gemiddelde poolinglaag gebruikt, die een inbedding van grootte 1280 genereert.

XXXXX


 

De tweedimensionale plot van de vector is niet erg intuïtief. Dit komt omdat de twee dimensies samen slechts 8.5% van de variantie in de gegevens verklaren. We plotten deze inbedding ook in drie dimensies met behulp van TF Projector. De 3D-inbeddingplot verklaart ~15% van de variantie in de gegevens.

XXXXX


 

We hebben geen duidelijke cluster van objecten uit de bovenstaande grafiek waargenomen. Maar de cosinusovereenkomst tussen afbeeldingen was goed representatief voor de afbeeldingen. In de meeste gevallen waren de afbeeldingen in de buurt van een bepaalde inbedding van afbeeldingen van dezelfde klasse. Dit bewijst dat het model dat we hebben gebruikt om inbedding te genereren, zich richt op het juiste aspect van het beeld en in staat is het interessante object in het beeld te achterhalen.

De t-SNE-visualisatie van de inbedding toont veel geconcentreerde clusters van klassen. Bij het bladeren door deze visualisaties kwamen ook enkele vergelijkbare klassen aan het licht, zoals schoener en kits, helikopters en vliegtuigen, rivierkreeften en kreeft, enz.

XXXXX


 

Noot van de redactie: Sluit u volgende week bij ons aan voor de spannende conclusie van Het bouwen van een visuele zoekmachine, waar we verder gaan van het verkennen van gegevens naar het bouwen van de visuele zoekmachine zelf.

 
 
Mudit Bachhawat werkt als machine learning engineer bij Google en heeft meer dan 5 jaar ervaring in data science, deep learning, computer vision, multimodale informatie ophalen en optimaliseren. Laat gerust opmerkingen of vragen achter.

spot_img

Laatste intelligentie

spot_img