Vinnaren i pepparkakshustävlingen!
2024-01-07, 17:24
  #1
Medlem
Tom.Of.Finlands avatar
Hejsan!

Mål:
Jag tänker göra det Disney, Snapchat och alla andra verksamheter håller på med, för att detektera objekt och ersätta objekten med någon 3D bild.

Men först....detektera objekt.
Den absolut främsta algoritmen för att detektera ett ansikte heter Active Shape Model(ASM). Det är en algoritm som detekterar punkter i en bild och flyttar punkterna efter en önskad form, t.ex. ett ansikte. Ansiktet kan vara skalat, roterad eller deformerat (vridet). ASM fungerar ändå. Det finns även en påbyggnad av ASM som kallas för Active Apparance Model(AAM), vilket är i praktiken samma sak, fast man använder en ansiktsmask av punkter i AAM istället för en ansiktsorm av punkter i ASM. Båda fungerar ändå lika bra.

Både ASM och AAM använder Point Distribution Model (PDM).

Litteratur:
Det finns en film på Youtube som behandlar ASM riktigt bra, men jag har fortfarande inte förstått ASM helt.
https://www.youtube.com/watch?v=53kx...nnel=RichRadke

Filmen visar 5 steg:
  1. Välja X antal bilder och placera manuellt några gemensamma landpunkter på varje bild. Det kan vara t.ex. punkter runt ögonen, för alla har ju ögon. Det kan vara en punkt på näsan och två punkter på läpparna
  2. Använd Procrutest algorim för att rotera alla landpunkter efter en vald bild
  3. Sedan applicera PCA. Detta är algoritm 2 och jag har inte förstått varför man ska använda detta:

Problem:
Jag har förstått att man ska samla på sig X antal bilder och manuellt placera ut M antal landpunkter på varje bild.

Jag har förstått Procrustes algoritm som kan translatera, skala och rotera M antal punkter.

Det jag inte har förstått är:
  1. Varför bakas PCA in här?
  2. Hur identifierar jag landpunkter i en okänd bild?
  3. När jag placerar ut alla landpunkter, ska jag göra något mera med dom, eller är det bara koordinater?

Matlab-kod:
Det finns Matlab-kod här som visar ett exempel på ansiktsdetektion: https://github.com/johnwmillr/ActiveShapeModels

Dom verktyg jag har:

Jag har Procrustes algoritm som jag kan flytta punkter mot ett mål efter bästa rotation och skalning:
https://se.mathworks.com/help/stats/procrustes.html

Så vad behöver jag komplettera för att kunna detektera?
__________________
Senast redigerad av Tom.Of.Finland 2024-01-07 kl. 17:38.
Citera
2024-01-08, 10:17
  #2
Medlem
-taki-s avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
[*]Varför bakas PCA in här?

Jag gissar att det är för att minska antalet datapunkter att hantera.
Se t ex detta klipp:

https://www.youtube.com/watch?v=M6fBAzcw1Ps
Citera
2024-01-08, 11:12
  #3
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av -taki-
Jag gissar att det är för att minska antalet datapunkter att hantera.
Se t ex detta klipp:

https://www.youtube.com/watch?v=M6fBAzcw1Ps

Så hur hittar jag okända punkter i en okänd bild med PDM?
Citera
2024-01-09, 08:42
  #4
Medlem
-taki-s avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
Så hur hittar jag okända punkter i en okänd bild med PDM?
Ha ha, för djupt för mig!
Jag bara kastade fram en idé.
Citera
2024-01-09, 08:43
  #5
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av -taki-
Ha ha, för djupt för mig!
Jag bara kastade fram en idé.

Jag har börjat fundera.
Jag tror att PDM handlar inte om att estimera punkterna. Punkterna är redan givna vid begynnelsen.
Vilket PDM är alltså inte rätta svaret för mig om jag söker för att estimera punkter.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback