Weet er iemand wat de makkelijkste manier is om in een dbase een soort van similar images te zetten?
Ik heb iets van 470.000 artikelen + images in een db staan, nu wil ik als ik 1 artikel bekijk iets van lijkt op dit artikel op basis van images doen ( op tekstuele basis is al geregeld ).
Nu doe ik op de tekst van een leverancier binnen een categorie al een levensteihn calculatie zodat ik soortgelijke artikelen etc kan vinden ( zit een iets uitgebreider algoritme achter wat rekening houdt met waar de gebruiker op zocht, wat de gebruiker veelal aanklikt etc ), dit levert in de huidige setup een n:n koppeltabel met ratings op van 378 miljoen entries en enkel id's. Qua gebruik werkt dit perfect en qua aanmaken is het ook niet echt zwaar.
Nu wil ik eigenlijk iets soortgelijks gaan opbouwen voor images, qua n:n tabel kom ik dan uit op 198 miljoen entries ( dubbele plaatjes etc zijn eruit gehaald ).
Alleen hoe kan ik die onderling snel vergelijken?
Huidig probeerseltje was de volgende code :
Wat opzich perfect werkt, ik krijg gewoon een score qua gelijkheid. Alleen dit ding verwerkt er maar ongeveer 1000 per minuut. Qua eerste aanzet is dit geen probleem ( er is een 2e server voor dit soort dingen aanwezig die gewoon 2 weken kan stampen ).
Maar als een leverancier er op een dag 100 plaatjes bijzet ( meeste leveranciers leveren batchgewijs aan, dus 100 leveranciers die 50 plaatjes aanleveren op de 1e vd maand is geen uitzondering ) dan wordt het uiteraard wel problematisch.
Ik had zelf al zitten denken om een extreem kleine thumbnail te maken ( momenteel loopt bovenstaande code op een 80x80 8-bits plaatje ) en die dan onder te verdelen naar pre-dominant color, maar dit verhoogt de snelheid niet significant ( getest met 40x40 4-bits plaatjes ) maar de mis-rate gaat gigantisch omhoog ( door het onderscheid in dominant color ga ik gelijksoortige producten missen als de achtergrond net iets anders is qua kleur / belichting etc )
Mijn google-skills laten me even compleet in de steek qua programmatuur die dit zou kunnen doen ( ik gok dat een dedicated app dit tig x sneller / beter kan dan wat grappen met imagemagick maarja, roeien met de riemen die je hebt )
Iemand die me wat tips oid kan geven hoe dit wel te doen is?
P.s. voor er mensen komen met al te specifieke tools / tips, aan alleen een dedicated image comparer heb ik imho weinig, het is onderdeel van een totaal algoritme wat weer samenhangt met rechten en rollen / geschiedenis / categorie waar iemand in zit etc etc. Als ik blind de 250 meest gelijkende images terug zou krijgen dan kan daar best alles uit geelimineerd worden op basis van andere parameters van het algoritme.
Ik heb iets van 470.000 artikelen + images in een db staan, nu wil ik als ik 1 artikel bekijk iets van lijkt op dit artikel op basis van images doen ( op tekstuele basis is al geregeld ).
Nu doe ik op de tekst van een leverancier binnen een categorie al een levensteihn calculatie zodat ik soortgelijke artikelen etc kan vinden ( zit een iets uitgebreider algoritme achter wat rekening houdt met waar de gebruiker op zocht, wat de gebruiker veelal aanklikt etc ), dit levert in de huidige setup een n:n koppeltabel met ratings op van 378 miljoen entries en enkel id's. Qua gebruik werkt dit perfect en qua aanmaken is het ook niet echt zwaar.
Nu wil ik eigenlijk iets soortgelijks gaan opbouwen voor images, qua n:n tabel kom ik dan uit op 198 miljoen entries ( dubbele plaatjes etc zijn eruit gehaald ).
Alleen hoe kan ik die onderling snel vergelijken?
Huidig probeerseltje was de volgende code :
code:
1
| $cmd='convert "' . $afb1 . '" "' . $afb2 . '" -compose difference -composite -colorspace gray miff:- | identify -verbose - | sed -n \'/^.*Mean: */{s//scale=2;/;s/(.*)//;s/$/*100\/32768/;p;q;}\' | bc'; |
Wat opzich perfect werkt, ik krijg gewoon een score qua gelijkheid. Alleen dit ding verwerkt er maar ongeveer 1000 per minuut. Qua eerste aanzet is dit geen probleem ( er is een 2e server voor dit soort dingen aanwezig die gewoon 2 weken kan stampen ).
Maar als een leverancier er op een dag 100 plaatjes bijzet ( meeste leveranciers leveren batchgewijs aan, dus 100 leveranciers die 50 plaatjes aanleveren op de 1e vd maand is geen uitzondering ) dan wordt het uiteraard wel problematisch.
Ik had zelf al zitten denken om een extreem kleine thumbnail te maken ( momenteel loopt bovenstaande code op een 80x80 8-bits plaatje ) en die dan onder te verdelen naar pre-dominant color, maar dit verhoogt de snelheid niet significant ( getest met 40x40 4-bits plaatjes ) maar de mis-rate gaat gigantisch omhoog ( door het onderscheid in dominant color ga ik gelijksoortige producten missen als de achtergrond net iets anders is qua kleur / belichting etc )
Mijn google-skills laten me even compleet in de steek qua programmatuur die dit zou kunnen doen ( ik gok dat een dedicated app dit tig x sneller / beter kan dan wat grappen met imagemagick maarja, roeien met de riemen die je hebt )
Iemand die me wat tips oid kan geven hoe dit wel te doen is?
P.s. voor er mensen komen met al te specifieke tools / tips, aan alleen een dedicated image comparer heb ik imho weinig, het is onderdeel van een totaal algoritme wat weer samenhangt met rechten en rollen / geschiedenis / categorie waar iemand in zit etc etc. Als ik blind de 250 meest gelijkende images terug zou krijgen dan kan daar best alles uit geelimineerd worden op basis van andere parameters van het algoritme.