Ankarlådor med YOLO - Hur fungerar dom som?

Permalänk

Ankarlådor med YOLO - Hur fungerar dom som?

Jag håller på bygga eget bildklassificeringsbibliotek. Jag är lite unik i min programmering, så jag bygger alltid allt från grunden, för att lära mig. Alltså uppfinna hjulet på nytt.

Jag vet inte exakt hur YOLO algoritmen fungerar, men jag har hört att den har några sådana ankarlådor (anchor boxes) lite utspridda på en bild. Jag vet vad dom gör, men jag vet inte varför dom är där.

Jag har byggt en algoritm som utför följande:

  1. Hitta intressepunkter från en bild. Intressepunkter hittas i hörn och kanter på objekt

  2. Från intressepunkterna, hitta deskriptorer som beskriver området runt intressepunkten med ett binärt tal t.ex 0b1101101001010101011010001010111000. En bra deskriptörsalgoritm är Local Binary Pattern som är robust mot rotation och variation i belysning

  3. Ta deskriptorerna och mata in dom i ett 2-lagers neuralt nätverk (djupt) och hitta klass ID på bilden. Notera att jag tränar mitt neurala nätverk med kvadratisk programmering och inte med stokastisk gradientnedstigning

Punkt 1 och 2 förklaras här: https://www.youtube.com/watch?v=25GkgxClSaU&ab_channel=Cyrill...

Detta låter inte så svårt. Det är inte det heller.
En fördel med att använda intressepunkter, är att objektet i bilden kan enkelt lokaliseras. Men här kommer problemet.

Att definiera ett objekt med EN desiktor, är omöjligt. Man måste använda flera deskritorer för att definiera ett objekt. Matar man in för lite deskriptorer i ett neuralt nätverk, så kan det neurala nätverket inte klassificera. Matar man in för mycket deskriptorer, så kan neurala nätverket kanske tolka objektet som något annat.

Så valet hur många deskriptorer man använder för att mata in i det neurala nätverket, avgör faktiskt vad det är för objekt. Det förstås rätt logiskt att det skulle vara så.

Men då kommer vi till något som heter ankarlådor i YOLO. Ankarlådorna i YOLO avskärmar så neurala nätverket bara matas med datat som finns inuti ankarlådan. Ankarlådorna har en fixerad position. Men då har jag några frågor:

  1. Om man har satt ut för fixerade ankarlådor. Då måste objektet befinna sig i anklarlådan för att objektet skall kunna klassificeras?

  2. Om objektet rör sig, då måste man ha rätt många ankarlådor som objektet kan befinna sig i? T.ex. en fotbollspelare som springer. Då måste man ha lite fixerade ankarlådor utplacerade överallt?

  3. Vad händer det om objektet är större än ankarlådan. Måste man ha olika ankarlådor då med olika storlekar?

  4. Är inte ankarlådor typ samma sak som sliding window...ungefär?

Permalänk

Jag har bestämt mig för att använda fixerade ankarlådor. Är objektet innuti dessa ankarlådor, ja, då kan bilden troligvis klassificeras.
Det känns enormt resurskrävande att ha "sliding window", som metoden heter.