Träna en YOLO modell eller använda befintlig? - Bildigenkänning

Permalänk
Medlem

Träna en YOLO modell eller använda befintlig? - Bildigenkänning

Jag har börjat använda mig utav ett ramverk som heter Darknet. Allt skrivet i C. Det fungerar superbra!
Men jag har bara använt befintliga modeller för att träna en modell tar lååååång tid och man ska helst ha en superdator eller superserver för att träna en sådan modell.

Än fast det tar lång tid och massa manualer på Youtube finns hur man tränar en sådan modell, så ska det inte vara något problem att träna en modell.

Det problem jag finner är att samla på sig data i form av bilder. Detta väcker massa frågor.

1. Hur många bilder ska man ha per klass?
2. Hur många klasser är lämpligt?
3. Hur ska bilderna se ut?
4. Vilken storlek ska dom vara i?
5. Ska det vara olika nyanser osv?

Så min fråga är om det är enormt svårt att få till bra data för att bygga en modell? Eller det kanske är busenkelt?
Bara ha massa bilder och sedan klart?

Vad säger ni?
Jag kör senaste Yolo V4 och denna är mycket noggrann.
https://github.com/AlexeyAB/darknet

Permalänk
Medlem
Skrivet av heretic16:

1. Hur många bilder ska man ha per klass?
2. Hur många klasser är lämpligt?
3. Hur ska bilderna se ut?
4. Vilken storlek ska dom vara i?
5. Ska det vara olika nyanser osv?

Så min fråga är om det är enormt svårt att få till bra data för att bygga en modell? Eller det kanske är busenkelt?
Bara ha massa bilder och sedan klart?

1. Så många som möjligt. Det är extremt viktigt att datan väl representerar din domän.
2. Så många som du vill kunna klassificera.
3. Se 1.
4. Prova dig fram. Kan vara lämpligt att börja med 500x500 px?
5. Se 1.

Det svåraste med bildigenkänning är inte att träna sin modell, det är att hitta bra data. Det finns företag som bara jobbar med att ta fram högkvalitativ test/träningsdata.

Samtidigt är det ingen idé att lägga ner asmycket tid på att ta fram bra träningsdata, om modellen sedan kommer användas i en miljö där din träningsdata inte längre är representativ. Återigen, det handlar om 1. ovan. Du ska ha så mycket data som möjligt, som representerar din domän.

Permalänk
Medlem
Skrivet av GLaDER:

1. Så många som möjligt. Det är extremt viktigt att datan väl representerar din domän.
2. Så många som du vill kunna klassificera.
3. Se 1.
4. Prova dig fram. Kan vara lämpligt att börja med 500x500 px?
5. Se 1.

Det svåraste med bildigenkänning är inte att träna sin modell, det är att hitta bra data. Det finns företag som bara jobbar med att ta fram högkvalitativ test/träningsdata.

Samtidigt är det ingen idé att lägga ner asmycket tid på att ta fram bra träningsdata, om modellen sedan kommer användas i en miljö där din träningsdata inte längre är representativ. Återigen, det handlar om 1. ovan. Du ska ha så mycket data som möjligt, som representerar din domän.

Tackar.
Hur mycket data per klass kan man behöva för att känna att nu börjar man få precision? Jag har hört 1000 bilder per objekt ska vara lämpligt.

Permalänk
Medlem
Skrivet av heretic16:

Hur mycket data per klass kan man behöva för att känna att nu börjar man få precision? Jag har hört 1000 bilder per objekt ska vara lämpligt.

Jag förstår inte riktigt din situation. Du verkar vara i startfasen av dataaggregering och undrar "när är det dags att sluta samla och börja träna". Om så är fallet skulle jag säga att du ska börja samla och träna pö-om-pö.

Har du 10 klasser?

1. Börja med 50 bilder per klass (träna på 45, testa på 5).
2. Implementera din modell.
3. Träna din modell.
4. Testa din modell.
5. Fick du bra resultat? (Vad innebär "bra" resultat?)

Sen kan du öka upp till 100 bilder per klass. 250 bilder per klass. Osv. Du kommer se en avtagande marginalnytta efter ett tag, då är det kanske dags att börja konkludera dataaggregerandet

Permalänk
Medlem
Skrivet av GLaDER:

Jag förstår inte riktigt din situation. Du verkar vara i startfasen av dataaggregering och undrar "när är det dags att sluta samla och börja träna". Om så är fallet skulle jag säga att du ska börja samla och träna pö-om-pö.

Har du 10 klasser?

1. Börja med 50 bilder per klass (träna på 45, testa på 5).
2. Implementera din modell.
3. Träna din modell.
4. Testa din modell.
5. Fick du bra resultat? (Vad innebär "bra" resultat?)

Sen kan du öka upp till 100 bilder per klass. 250 bilder per klass. Osv. Du kommer se en avtagande marginalnytta efter ett tag, då är det kanske dags att börja konkludera dataaggregerandet

Okej. Jag kan börja med 3 klasser. Men jag har också en till fråga!
När man gör dessa bilder. Då ska man ha någon annotering med också. Hur får man denna annotering?

Permalänk
Medlem
Skrivet av heretic16:

Okej. Jag kan börja med 3 klasser. Men jag har också en till fråga!
När man gör dessa bilder. Då ska man ha någon annotering med också. Hur får man denna annotering?

Det känns som att det är specifikt för olika implementationer. Jag hade börjat med att kika här -> https://github.com/AlexeyAB/darknet#how-to-mark-bounded-boxes....

Permalänk
Medlem
Skrivet av GLaDER:

Det känns som att det är specifikt för olika implementationer. Jag hade börjat med att kika här -> https://github.com/AlexeyAB/darknet#how-to-mark-bounded-boxes....

Exakt vad jag sökte efter.
Denna får det bli.

https://github.com/tzutalin/labelImg

Permalänk
Medlem

En fråga!

Låt oss säga att jag har EN klass per bild. Bilden består bara av denna klass, dvs det finns inget annat med på bilden.
Skulle detta räcka som träningsdata?

Permalänk
Medlem

Ehrm. Spontant -> Ja. Men det kanske gör att din modell blir dålig på att identifiera flera klasser i samma bild. Som jag skrev ovan.

Permalänk
Medlem
Skrivet av GLaDER:

Ehrm. Spontant -> Ja. Men det kanske gör att din modell blir dålig på att identifiera flera klasser i samma bild. Som jag skrev ovan.

Men är det inte så att om man har en bild med t.ex. 3 klasser så måste man rutar in dessa med en ram och kalla ramen för t.ex. "katt", "hund" eller "hus". Det är för att när YOLO-programmet läser in bilden, så delas bilden upp i flera olika delar och sedan jämförs varje del med en sådan där ruta som man har rutat in?

Min teori är att man har massvis med bilder på EN klass, där klassen tänker upp hela bilden.
Nu vill Darknet Yolo ha fyktantiga bilder, men det är inget problem att skala om rektangulära kamera bilder till fyrkantiga bilder.

Så vad tror du om min teori? Eller måste man ha flera klasser i olika bilder, för att yolo ska kunna känna igen att nu är det flera klasser i denna bild?

Permalänk
Medlem
Skrivet av heretic16:

Så vad tror du om min teori? Eller måste man ha flera klasser i olika bilder, för att yolo ska kunna känna igen att nu är det flera klasser i denna bild?

Har aldrig använt YOLO, så talar bara utifrån generell erfarenhet av bildklassificering. Kan tyvärr inte hjälpa dig vidare i frågan.