blog

Az AutoSplitter fejlődése

Megjelent: 2026. október 27.

Az AutoSplitter fejlődése

2012 – Sarkok felismerése

Amikor elkezdtem dolgozni az AutoSplitteren, nem volt valódi viszonyítási alapom. A síkágyas szkennerem gyártója által biztosított alapszintű szkennelőszoftver volt az egyetlen, amit kipróbáltam, és meglehetősen hiányosnak bizonyult.

Szerettem volna valami jobbat készíteni, a teszteléshez pedig csak a saját szkennerem és a saját családi fotóim álltak rendelkezésemre. Ezek a képek nem egy megsárgult fotóalbumba voltak ragasztva; egyszerűen egy kartondobozban hevertek.

Ezért azt feltételeztem, hogy szinte mindenki számára a síkágyas szkenner fehéres háttere előtti fotószkennelés lesz az egyetlen használati eset.

Ez adta az ötletet a fotófelismerő algoritmusom első változatához. A feladat egyértelműnek tűnt: egy több fotót tartalmazó beszkennelt képen úgy kell megtalálni a fotókat, hogy megállapítjuk, mely képpontok tartoznak egy fotóhoz, és melyek a szkenner üvegéhez. Minden fotó téglalap alakú, és (többnyire) éles sarkai vannak. Egy fotó sarka körül a szomszédos képpontok 25%-a a fotóhoz, 75%-a pedig a háttérhez tartozik. A háttér általában csaknem fehér, míg a fotó tartalma többnyire messze áll a fehértől.

Ha e logika szerint értékeljük a képpontcsoportokat, többnyire megtalálhatjuk a sarkokat. Néhány találat téves pozitív (valójában nem sarok), mások téves negatív eredmények (fel nem ismert sarkok). A felismert sarkok könnyen besorolhatók bal felső, jobb felső, bal alsó vagy jobb alsó sarokként attól függően, hogy a sarok képpontja körüli területek közül melyek tűnnek háttérnek, és melyek a fotó részének.

Két vagy három sarok is elég lehet a fotó helyének meglehetősen pontos meghatározásához. Ez a megközelítés jól működött a fotógyűjteményeimnél. Néhány fel nem ismert sarok problémákat okozott, például több fotó téves összevonását, de az eredmény így is sokkal jobb volt, mint a szkennerhez kapott gyári szoftveré.

Mellékesen: a képélek felismerése szintén jó módszer a téglalap alakú formák megtalálására. Nem állíthatom, hogy soha nem játszott szerepet az algoritmusaimban, de csak másodlagos segítségként használtam a fotófelismerések értékeléséhez. Soha nem ez volt a fő módszer.


2019 – Négyzetek és blokkok… és sarkok

Az AutoSplitter fotófelismerő algoritmusa által észlelt szomszédos négyzetek – hibakeresési nézet

2019 őszén, miután éveken át újra és újra megpróbáltam javítani az automatikus felismerő algoritmust, még mindig nem sokat haladtam. A sarokfelismerési módszer finomhangolásával sikerült némi javulást elérnem, de ezek sosem voltak forradalmiak. Több szűrési réteget adtam a sarokfelismerő algoritmushoz, hogy akkor is működjön, ha a felhasználók nem fehér háttér előtt szkennelnek. Ez sokat segített, de nem eleget.

A következő nagy fejlesztés a „négyzetmódszer” volt. Informatikai szakkifejezéssel ezt összefüggő komponensek címkézésének és konvex burok illesztésének nevezik. Az ötlet meglehetősen egyszerű: különböző szűrőkkel a bemeneti kép minden képpontját háttérként vagy fotóként címkézzük, majd megkeressük azokat a képpontcsoportokat, amelyek mindegyike egy fotó részének tűnik. A szomszédos négyzeteket csoportokba rendezzük; mindegyik csoport nagyjából körvonalaz egy felismert fotót.

Ez egyenetlen hátterekkel is jól működött. Sokkal szigorúbbá tettem a sarokfelismerő algoritmust, hogy csak az egyértelmű fotókat ismerje fel. A négyzetmódszer ezután feldolgozta a megmaradt, fel nem ismert területeket, hogy megtalálja a többi fotót. Sajnos nem sikerült rájönnöm, hogyan lehet pontosan felismerni a fotók elforgatási szögét, ezért a rendszer mindig elforgatás nélkül (0 fokban) ismerte fel őket. Ez így is nagy előrelépés volt a kizárólag sarkokra épülő módszerhez képest.


2026 nyara – A négyzetek végre elfordulnak

Miután számos kísérletet tettem az automatikus felismerési módszereim további javítására, végre sikerült meghatároznom a felismert négyzetcsoportok elforgatási szögét. Emiatt felhagytam a négyzetfelismeréssel, mivel ez okozta a sok téves pozitív találatot és az összevont felismeréseket. Ismét nem sikerült azonban tovább javítanom az eredményeken.


2026 kora ősze – Mélytanulás

Az AutoSplitter fotófelismerő algoritmusa által észlelt szomszédos négyzetek – hibakeresési nézet

Nem maradt más út. A négyzetekkel és a sarkokkal nem lehetett jobb eredményt elérni. Bárhogyan finomhangoltam az algoritmust, egy megkerülhetetlen tény továbbra is fennállt: téglalap alakú objektumokat találni egy képen KÖNNYŰ. Annak kiderítése, hogy mely képpontok tartoznak a fotókhoz, nehéz – NAGYON nehéz. Minden az egyes képpontok egyszerű bináris besorolásától függ. Mit sem ér a téglalapfelismerési módszer tökéletes hangolása, ha nem lehet pontosan megállapítani, mely képpontok tartoznak a téglalaphoz, igaz?

A mélytanulás neurális hálózatokat használ: olyan algoritmusokat, amelyek bizonyos mértékig utánozzák az emberi agyat. A neurális hálózatok betanításához sok példára (és a hozzájuk tartozó helyes válaszokra) van szükség a hálózat tanításához és értékeléséhez. Nem könnyű beszkennelt képekhez fotófelismerő rendszert tanítani. Nem lehet teherautónyi beszkennelt fotót találni az interneten. Az ügyfeleimtől sem szerezhettem ilyeneket, mivel a szoftver SOHA nem töltött fel beszkennelt képeket, az ügyfelek pedig biztosan nem hagytak volna jóvá egy ilyen folyamatot.

A mélytanulás választ ad a mindennél fontosabb kérdésre: EZ A KÉPPONT EGY FOTÓ RÉSZE VAGY SEM? Ha erre megbízhatóan lehet válaszolni, egy egyszerű összefüggőkomponens-címkéző algoritmus (amit én szívesen „négyzeteknek” nevezek) nagyon megbízhatóan képes felismerni a fotókat.

Találtam egy módszert arra, hogy elegendő mintát szerezzek a neurális hálózat betanításához anélkül, hogy bárki magánszférája sérülne. Ennek eredményeként az AutoSplitter az 1.16.1-es verzió óta nagyon megbízhatóan ismeri fel a fotókat.


A jövő

Egyelőre nem tudom, mi következik. Az automatikus felismerés további javításához valószínűleg finomítani kell a tanítóadatokat. Az eredmények még biztosan nem 100%-osak, és valószínűleg soha nem is lesznek azok. Mindenesetre, ha látok lehetőséget a javításukra, megpróbálom.