Diplomaterv
Neurális hálózatok alkalmazása mammográfiás vizsgálatok analízisében
Lasztovicza László 2003.
1
Diplomaterv melléklet Neurális hálózatok alkalmazása mammográfiás vizsgálatok analízisében A fejlett társadalmakban rendkívül jelent s probléma a betegségek, ezen belül is a rák korai felismerése. A n k közel 10%-a az élete során valamikor megbetegszik mellrákban, ami szerencsére legtöbbször gyógyítható. Ismert, hogy a betegségek gyógyításában a legfontosabb fázisok: a megel zés illetve a minél korábbi detektálás, a sz rés. Sokkal gazdaságosabb és általában sikeresebb egy betegséget megel zni, vagy korai fázisában kezelni, mint egy kés bbi súlyosabb fázisban megpróbálni elérni a még elérhet t. Ezért merült fel az utóbbi id ben, hogy célszer lenne országos mellráksz r programot indítani. Ugyanakkor egy ilyen program hatalmas terhet ró az egészségügyre, éves szinten kb. egy millió röntgenfelvételt kell kiértékelni, ami hatalmas él munka igényt jelent, ezen belül is kiemelt nehézség a magasan képzett radiológus szakemberek iránti óriási igény. Ezért el térbe került egy számítógépes döntéstámogató rendszer kifejlesztése, amely a mammográfiás sz rés terheinek csökkentését célozza, a képek el sz résével, a szakért figyelmének a gyanús helyekre irányításával. A mellrák – röntgenfelvételeken detektálható – legfontosabb jellemz i mikrokalcifikációk, a különböz körülírt és spikulált foltok, az aszimmetriák.
a
A röntgenfelvételeken lokalizálni és jellemezni kívánt alakzatok matematikai leírása nem megoldott. Sokszor csak kevéssé pontos kvalitatív leírás áll rendelkezésre, ugyanakkor példákkal és szabályokkal mégis nagyrészt megragadható az a tudás, amelyet az orvosok a diagnosztizálás során felhasználnak. A példákban megtestesül tudás felhasználásának immár klasszikusnak tekinthet eszköze a neurális háló. Ennek megfelel en számos javaslat született a mammográfiás röntgenfelvételek neurális feldolgozására, a feldolgozás szinte mindegyik lépésére tettek már ilyen javaslatot. A diplomaterv kidolgozása során a jelölt feladatai a következ k: • • • • •
Tanulmányozza a mammográfiás felvételek feldolgozásában felmerül problémákat és a javasolt neurális megoldásokat! Valósítson meg a mammográfiás felvételek mikrokalcifikációinak detektálásra alkalmas egy vagy több neurális eszközt! Definiáljon a módszerek kiértékelésére alkalmas kvantitatív mér számot! A rendelkezésre álló adatbázis segítségével alakítson ki olyan képhalmazt, amely alkalmas a különböz módszerek hatékony összehasonlító vizsgálatára! Tesztelje a megvalósított módszer(eke)t, vizsgálja meg a paraméterekre (ablakméret, bemeneti leíró paraméterek, képfelbontás stb.) való érzékenységet!
(dr. Pataki Béla) docens
2
Nyilatkozat Alulírott, Lasztovicza László, a Budapesti M szaki és Gazdaságtudományi Egyetem hallgatója kijelentem, hogy ezt a diplomatervet meg nem engedett segítség nélkül, saját magam készítettem, és a diplomatervben csak a megadott forrásokat használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben de átfogalmazva más forrásból átvettem, egyértelm en, a forrás megadásával megjelöltem.
.............................................. Lasztovicza László
3
Tartalomjegyzék 1 BEVEZETÉS .......................................................................................................................................... 6 1.1 EL SZÓ .......................................................................................................................................... 6 1.2 A MAMMOGRÁFIA .......................................................................................................................... 7 1.2.1 A mammográfiás röntgenfelvételek ....................................................................................... 8 1.2.2 Kóros elváltozások a mammográfián ..................................................................................... 8 1.3 A MEGOLDANDÓ FELADAT ............................................................................................................10 1.4 MEGKÖZELÍTÉS .............................................................................................................................11 1.5 A DOLGOZAT FELÉPÍTÉSE ..............................................................................................................11 2 MESTERSÉGES NEURÁLIS HÁLÓZATOK...................................................................................12 2.1 NEURÁLIS HÁLÓZATOK FELÉPÍTÉSE, TULAJDONSÁGAIK ................................................................13 2.1.1 Neurális hálózatok tanítása....................................................................................................15 2.1.2 Neurális hálózatok alkalmazásával kapcsolatos problémák ..................................................17 2.2 NEURÁLIS HÁLÓZAT EGYÜTTESEK ................................................................................................19 3 DIGITÁLIS KÉPFELDOLGOZÁS ....................................................................................................22 3.1 A DIGITÁLIS KÉPFELDOLGOZÁS ALAPFELADATAI ..........................................................................22 3.1.1 Képjavítás..............................................................................................................................22 3.1.2 Képhelyreállítás.....................................................................................................................23 3.1.3 Képanalízis ............................................................................................................................24 3.2 KÉPFELDOLGOZÁSI FELADATOK MEGOLDÁSÁNAK ÁLTALÁNOS LÉPÉSEI .......................................24 3.2.1 Digitalizálás és el feldolgozás ..............................................................................................25 3.2.2 Szegmentálás és lényegkiemelés ...........................................................................................25 3.2.3 Felismerés, értelmezés...........................................................................................................26 3.3 NEURÁLIS HÁLÓZATOK ALKALMAZÁSA A KÉPFELDOLGOZÁS TERÜLETÉN.....................................27 3.3.1 Képhelyreállítás.....................................................................................................................27 3.3.2 Képanalízis ............................................................................................................................27 3.4 MULTIREZOLÚCIÓS FELDOLGOZÁS ................................................................................................28 4 MIKROKALCIFIKÁCIÓK DETEKTÁLÁSA NEURÁLIS HÁLÓZATOK SEGÍTSÉGÉVEL .30 4.1 ÁTTEKINTÉS ..................................................................................................................................30 4.2 MOTIVÁCIÓK .................................................................................................................................32 4.3 A RENDSZER FELÉPÍTÉSE ÉS M KÖDÉSE ........................................................................................33 4.4 HIERARCHIKUS FELDOLGOZÁS ......................................................................................................36 4.5 AZ ALKALMAZOTT NEURÁLIS HÁLÓZATOK ...................................................................................38 4.5.1 A normalizálás hatása a tanulásra..........................................................................................39 4.6 LÉNYEGKIEMELÉS .........................................................................................................................41 4.6.1 A kiválasztott paraméterek ....................................................................................................41 4.6.2 A paraméterek vizsgálata ......................................................................................................45 4.6.3 Paraméterhalmazok kiválasztása ...........................................................................................51 4.7 DÖNTÉSI ELJÁRÁSOK .....................................................................................................................55 4.7.1 Döntési fák ............................................................................................................................55 4.7.2 Szavazás ................................................................................................................................58 4.8 AZ EGYEDI MIKROKALCIFIKÁCIÓK HELYÉNEK MEGHATÁROZÁSA .................................................60 5 EREDMÉNYEK....................................................................................................................................61 5.1 ÉRTÉKELÉSI SZEMPONTOK ............................................................................................................62 5.1.1 Mintahalmazok......................................................................................................................62 5.1.2 Mérések .................................................................................................................................63 5.1.3 Az eredmények ábrázolása ....................................................................................................64 5.2 A HASZNÁLT KÉPADATBÁZIS, A KIALAKÍTOTT MINTAHALMAZOK .................................................64 5.3 A MEGVALÓSÍTOTT RENDSZER PARAMÉTEREI ...............................................................................66 5.3.1 A lényegkiemelés során alkalmazott paraméterhalmazok meghatározása ............................66 5.3.2 A hierarchikus neurális hálózatok méretének meghatározása ...............................................67 5.3.3 A végleges neurális hálózatok ...............................................................................................68
4
5.3.4 Döntési fák ............................................................................................................................69 5.4 A RENDSZER EREDMÉNYEI ............................................................................................................70 5.4.1 Mikrokalcifikációt tartalmazó képek felismerése..................................................................70 5.4.2 Egyedi mikrokalcifikációk felismerése .................................................................................73 5.5 AZ EREDMÉNYEK ÖSSZEFOGLALÁSA .............................................................................................76 6 ÖSSZEFOGLALÁS ..............................................................................................................................77 7 TOVÁBBFEJLESZTÉSI LEHET SÉGEK ......................................................................................78 M1 MELLÉKLET ...................................................................................................................................80 A mintahalmazok részletes ismertetése..................................................................................................80 M2 MELLÉKLET ...................................................................................................................................86 Matlab programkódok............................................................................................................................86 REFERENCIÁK ÉS IRODALOMJEGYZÉK ....................................................................................105
5
1 Bevezetés 1.1 El szó Az ember számára a világ megismerésének folyamatában a vizualitás, a látás meghatározó jelent séggel bír, az élet nagyon sok területén fontos szerepet játszik a vizuális információ rögzítése és feldolgozása. Az érzelmek kifejezésén keresztül a szubatomikus részecskék világának vizsgálatáig mindenhol találkozhatunk vele. A számítástechnika megjelenésével és fejl désével a reprezentáció és a feldolgozás újabb útjai nyíltak meg. Napjainkban már sok helyen találkozhatunk olyan alkalmazásokkal, amelyek a vizuális információ, illetve annak reprezentációi, a képek digitális úton történ feldolgozásával oldanak meg különböz problémákat. Az alkalmazási területek lehetnek
például
különböz
ipari
folyamatok
ellen rzése
és
irányítása,
biztonságtechnikai berendezésekben felismerési feladatok végrehajtása vagy az orvostudományban a különböz
diagnosztikai módszerekkel készített felvételek
elemzése. A digitális képfeldolgozás az elmúlt évtizedekben külön tudományterületté n tte ki magát. Az egyre több elméleti és gyakorlati eredménye ellenére is maradtak azonban olyan feladatok, például az arcfelismerés, a karakterek vagy a kézírás felismerése, és általában a felismerési feladatok, amelyeknek pontos analitikus megfogalmazása nem ismert, így csak közelít
algoritmikus megoldások adhatók. Az algoritmizálás
nehézsége sok esetben annak is köszönhet , hogy nem ismertek pontosan azok a folyamatok, amelyek az ember számára viszonylag könny vé teszik ezen feladatok megoldását. A számítógépes feldolgozást tovább bonyolítja a nagy adatmennyiség és az ezzel együtt járó hatalmas számításigény. A digitális képfeldolgozás kifejezés alatt többnyire a kétdimenziós képfeldolgozást értjük, napjainkban azonban egyre nagyobb jelent séggel bír a háromdimenziós képfeldolgozás, bár ennek számításigénye és a feldolgozandó adatok mennyisége sokszor nagyságrendekkel nagyobb, mint kétdimenziós esetben.
6
Régóta közismert, hogy az emberi agy számára sok exponenciális méret , például optimalizációs feladat, vagy az el bbiek során már említett felismerési problémák megoldása viszonylag könny , míg a pontos megoldás vagy nagyon id - és er forrásigényes, vagy a rendelkezésre álló ismeretekkel nem lehetséges. A 20. század közepén az ilyen problémákkal kapcsolatos számításelméleti megfontolások, illetve az agy biológiai és fiziológiai jellemz inek vizsgálata egy új információfeldolgozó eszköz, a mesterséges neuron, és a mesterséges neuronokból álló hálózatok létrehozásához vezettek [1]. A kutatások során bebizonyosodott, hogy a mesterséges neuronhálózatok rendelkeznek néhány a természetes neuronhálózatokéhoz hasonló tulajdonsággal, így például képesek az adatok formájában megjelen tudást feldolgozni, az adatok közötti összefüggéseket felismerni, megtanulni, vagyis rendelkeznek tanulási algoritmussal és a megtanult adatokat képesek el hívni. További hasonlóság a párhuzamos felépítés és m ködés, amely bizonyos mérték hibat rést, és gyors feldolgozási sebességet biztosít [2, 3]. A képfeldolgozás egyik területe az orvosi célú diagnosztikai feladatok megoldása. Ez jelentheti például röntgen-, ultrahang-, vagy MR (mágneses rezonancia) felvételek feldolgozását. A feladat ezekben az esetekben bizonyos objektumok, például daganatos elváltozások megkeresése, felismerése. Egy ilyen orvosi célú diagnosztikai feladat mammográfiás röntgenfelvételek számítógépes elemzése. A dolgozatban bemutatott megoldás a mammográfiai vizsgálat során keresett elváltozások egyik típusának, a mikrokalcifikációknak a felismerésére alkalmas.
1.2 A mammográfia Hazánkban és a világ számos részén a n i daganatos megbetegedések és halálozások egyik vezet oka az eml rák [4, 5]. Az eml rák kialakulásának megel zésére jelenleg nem ismert módszer, a gyógyítás sikeressége nagymértékben függ attól, hogy a betegséget sikerül-e kezdeti szakaszában felismerni. A daganatmegel z
állapotok
kisz résére több módszer is alkalmas, amelyek közül napjainkban a mammográfia a legelterjedtebb módszer. A mammográfia az eml k alacsony dózisú röntgenvizsgálatát jelenti. A vizsgálat során mindkét eml r l minimálisan két-két eltér
irányú
röntgenfelvétel készül, ezek alapján történik a diagnózis. A mammográfiát alkalmazzák diagnosztikai módszerként is a már kialakult betegség vizsgálatára, de sokkal
7
jelent sebb a sz r vizsgálatként való alkalmazása, amelynek során a cél a rákkeletkezést megel z állapotok kisz rése. Az utóbbi esetben nagy problémát jelent a megfelel emberi és anyagi er források biztosítása, hiszen csak Magyarországon évente kb. 2 millió felvétel készítése és elemzése lenne szükséges, amelyeknek ráadásul többsége (95% felett) negatív.
1.2.1 A mammográfiás röntgenfelvételek A mammográfiás röntgenfelvételek két leggyakoribb típusa a cranio-caudális (1.1.a. ábra), és a medio-laterális (1.1.b ábra) felvétel. A cranio-caudális felvételt az eml vízszintes síkjában felülr l lefelé készítik, míg a medio-laterális felvételt oldalirányból a röntgenkészülék csövét 30-60° fokban megdöntve. Mindkét típusú felvétel készítésekor kompressziót is alkalmaznak.
a) Cranio-caudális felvétel
b) Medio-laterális felvétel
1.1. ábra – Mammográfiás röntgenfelvételek f típusai
1.2.2 Kóros elváltozások a mammográfián A rákos sejtek közvetlen felismerése a mammográfiás röntgenfelvételeken nem lehetséges. A kóros elváltozásokra indirekt jelek alapján lehet következtetni, amelyeknek több fajtája ismert és külön-külön illetve egymással szabadon kombinálódva is megjelenhetnek a felvételeken.
8
Mikromeszesedések A malignitásra gyanús folyamatok egyik legjellemz bb kísér je a mikromeszesedés, amely jelentkezhet csoportosan és egymagában is. Diagnosztikai jelent sége f ként a csoportos el fordulású mikrokalcifikációnak van.
Az eml rákok közel felét
mikromeszesedések formájában fedezik fel. A mikromeszesedések a felvételeken eltér méret és formájú fényes foltokként jelennek meg (1.2.a ábra). Foltok A foltoknak két csoportját szokás megkülönböztetni. A kerek képletek szabályos felszín , homogén fényesség igen változatos méret leginkább kör és ellipszis alakú foltként jelennek meg (1.2.b ábra), és többségükben jóindulatúak. A spikulált foltok egy nagy s r ség magból és a bel le kiinduló változó hosszúságú nyúlványokból állnak (1.2.c ábra), többnyire rosszindulatú elváltozást jelölnek. Egyéb elváltozások A fenti elváltozásokon kívül diagnosztikai jelent séggel bírnak a különböz szerkezeti torzulások, illetve a két eml r l készült felvételek között felfedezhet
eltérések,
aszimmetriák.
a) Mikromeszesedések
b) Kerek képlet
c) Spikulált folt
1.2. ábra – Kóros elváltozások a mammográfiás röntgenfelvételen
9
1.3 A megoldandó feladat A számítógéppel segített diagnosztikai (CAD – Computer Aided Diagnosis) módszerek egyre nagyobb jelent séggel bírnak a gyakorlatban. Az orvosi célú számítógépes diagnosztikai eszközök f
el nyei lehetnek az orvosok mentesítése a munka egy
részét l, például a negatív esetek kisz résével, a diagnózis megbízhatóságának növelése, és mivel az információ digitális formában jelenik meg, könnyebb a tárolása, kategorizálása, lehet ség nyílik a legújabb eredmények gyors cseréjére, vagy a távoli konzultációra nehéz esetekben. Egy mammográfiai célokra alkalmazható CAD rendszer általános blokkvázlata látható a 1.3. ábrán. A rendszer f feladata a vizsgálat során készült röntgenfelvételek elemzése, azaz a kóros elváltozások felismerése, illetve a negatív felvételek kisz rése.
Foltok detektálása és osztályozása
E L Aktuális felvétel
Korábbi felvételek
F E L D O L G O Z Á S
Mikrokalcifikációk detektálása és osztályozása
Eredmények, adatok integrálása
Diagnózis
Aszimmetriák detektálása és osztályozása
Anamnézis adatok
1.3. ábra – Mammográfiai célú CAD rendszer általános felépítése
A diplomaterv feladata egy olyan, CAD rendszer részeként is alkalmazható, neurális hálózatokat alkalmazó megoldás kidolgozása, amely mikrokalcifikációk detektálását végzi. A feladat implicit módon tartalmaz több részfeladatot. Szükség van olyan, képfeldolgozási
módszerekkel
meghatározott
paraméterekre,
amelyek
a
mikrokalcifikációkat jellemzik, és a neurális hálózatok bemeneteiként használhatók. A neurális hálózatok topológiája, tanítási módszere, a tanításhoz használt mintahalmaz az osztályozás min ségét befolyásoló tényez k, így fontos feladat ezek optimális
10
meghatározása és kialakítása. A képfeldolgozási eljárások és a neurális módszerek közös jellemz je, hogy sok szabad paraméterrel dolgoznak. A lehet legjobb min ség és minél robusztusabb megoldás létrehozása megköveteli ezeknek a paramétereknek az optimális, vagy ahhoz közeli beállítását, illetve a rendszernek minél érzéketlenebbnek kell lennie a paraméterek esetleges változásaira.
1.4 Megközelítés A megoldás alapjául egy hierarchikus struktúra szolgál [6, 7], amelyben együttm köd neurális hálózatok [8, 9] végzik az osztályozást. A megoldás f
lépései az el feldolgozás, a lényegkiemelés és az osztályozás. A
feldolgozás alapelemei, azaz az osztályozandó objektumok, a képpontok. Az egyes objektumok, képpontok jellemzése egy több paraméterb l álló sajátságvektorral történik, amelyek az osztályozást végz neurális hálózatok bemenetéül szolgálnak. A hierarchikus felépítés a képek multirezolúciós vizsgálatán alapul, amely alkalmas a képek részleteinek és nagyobb lépték összefüggéseinek egyidej vizsgálatára [10]. A rendszer kimenetét a hierarchikus feldolgozást végz blokkok neurális hálózatainak egyesített kimenete adja. A neurális hálózat együttesek által adott megoldások pontosabbnak bizonyultak sok probléma esetén, mint az egy hálózat által adott megoldások [11].
1.5 A dolgozat felépítése A 2. fejezetben a neurális hálózatok alapvet
tulajdonságai (felépítés, tanítás), az
alkalmazásukkal kapcsolatban felmerül kérdések, illetve a neurális hálózat együttesek rövid elméleti bemutatása található. A 3. fejezet a digitális képfeldolgozás alapfeladataival, a képfeldolgozási feladatok megoldásának általános lépéseivel, a neurális hálózatok alkalmazásának lehet ségeivel, és a multirezolúciós feldolgozással foglalkozik. A 4. fejezet tartalmazza a feladat megoldásának részletes ismertetését, az 5. fejezetben az eredmények áttekintése és a bel lük levonható következtetések találhatóak, végül a munka összefoglalása és a lehetséges továbbfejlesztési lehet ségek tárgyalása következik.
11
2 Mesterséges neurális hálózatok
Az ember számítógépe, az agy sok olyan el nyös tulajdonsággal rendelkezik, amellyel a mai számítástechnikai eszközök még nem, például a teljesen párhuzamos m ködés, a modularitás, a nagyfokú hibat r képesség vagy a tanulás képessége. Az agy további el nye a bels reprezentációs képessége, amelynek pontos formája, m ködése még nem ismert. Ezek az el nyök sok valós világbeli probléma hatékony és gyors megoldását teszik lehet vé számunkra. Ezzel szemben a számítástechnikai eszközök egy feladat végzése közben nem fáradnak el, vagy nem unják meg azt, ami az emberr l nem állítható, így az algoritmikusan pontosan leírható problémák esetén felül is múlják az embert. Az
emberi
neuronhálózat
fenti
el nyös
tulajdonságai
vezettek
azokhoz
a
megfontolásokhoz, amelyek eredményeképpen egy új számítási paradigmaként megjelentek a mesterséges neurális hálózatok [1]. Annak ellenére, hogy a mesterséges neuron és a bel le felépített hálózatok csak vázlatos modelljei a biológiai rendszernek, a mesterséges neurális hálózatok mégis rendelkeznek néhány a természetes neurális hálózatokhoz hasonló tulajdonsággal. A teljesen párhuzamos felépítés a feldolgozást teszi gyorsabbá és emellett hibat r képességet is biztosít, így kis számú feldolgozó egység meghibásodása nem befolyásolja jelent sen a hálózat teljesítményét. A neurális hálózatok képesek a különböz
problémákat csupán a rendelkezésre álló adatok
segítségével megtanulni, vagyis rendelkeznek tanulási algoritmussal és képesek a megtanult ismereteket el hívni, amennyiben szükséges. Elméletileg, bizonyos feltételek teljesülése esetén, a neurális hálózatok képesek bármilyen függvény tetsz legesen kicsiny hibával való közelítésére [2, 3]. A neurális hálózatok alkalmazása olyan területeken célszer , ahol a hagyományos számítástechnikai megközelítések csak nehezen, vagy egyáltalán nem használhatók. A tanulási folyamat felfogható úgy is, mint információrögzítés, vagy információtárolás. A megtanult, azaz tárolt információkat a hálózat képes el hívni, így használható speciális, például asszociatív memóriaként. A neurális hálózatok approximációs képességeit használhatjuk ki, például az osztályozási vagy felismerési feladatok megoldásakor. Az optimalizációs feladatok olyan problémák, amelyek lehetséges megoldásainak tere 12
általában exponenciális méret , vagyis az algoritmikus megoldás nagyon id - és er forrásigényes. Visszacsatolt neurális hálózatokkal nemlineáris dinamikus rendszerek modellezése is lehetséges. Mivel a bemutatott megoldás neurális része el recsatolt, többréteg
perceptron
hálózatokat tartalmaz, a továbbiakban elmondottak f ként az ilyen típusú neurális hálózatokra érvényesek (kivétel a neurális hálózat együttesek, amelyek bármilyen hálózati típusra érvényesek), egyéb hálózati típusokról, algoritmusokról csak megemlékezés szintjén esik szó. B vebb információk a [2, 3, 12] forrásokban találhatók.
2.1 Neurális hálózatok felépítése, tulajdonságaik Mérnöki szempontból a mesterséges neurális hálózatok olyan információfeldolgozó eszközök, amelyeket a nagyfokú párhuzamos m ködés és egy tanulási algoritmus jellemez. Megvalósításuk lehetséges mind hardver mind szoftver formájában, azonban a párhuzamos felépítésben rejl lehet ségek kiaknázása a hardver megvalósítás esetén lehetséges igazán. A neurális hálózatok alapegysége a mesterséges neuron, egy több bemenet és egy kimenet m veleti elem, ami lokális memóriával is rendelkezhet. A neuron legegyszer bb és egyben legelterjedtebb változata – a perceptron – a bemenetei súlyozott összegzését végzi, amelyet egy nemlineáris leképezés követ. Felépítése a 2.1. ábrán látható.
x0=1 x1 x2 x3 xn
w0 w1 w2 w3
. . . wn
s
f
y = f(s)
2.1. ábra – A perceptron felépítése
A perceptron által végzett leképezés valamilyen nemlineáris függvény használata esetén a következ képpen adható meg:
13
y = f ( s) = f (
n i =0
(
wi xi ) = f w T x
)
(2.1)
A nemlineáris leképezést megvalósító f függvény megválasztása többféleképpen lehetséges, gyakran használatos a következ két függvény, a logisztikus és a tangens hiperbolikus:
f ( s) =
1 ; 1 + e − Ks
K >0
(2.2)
f ( s) =
1 − e − Ks ; 1 + e − Ks
K >0
(2.3)
Az egyes neuronok bemenetét szokásos kiegészíteni egy állandó taggal (bias – eltolás, a 4. ábrán az x0-al jelölt érték), amely a nemlineáris függvény eltolását, vagyis a neuron aktivációs szintjét szabja meg. A perceptronok összekötéséb l adódó többréteg
el recsatolt perceptron hálózat az
egyik legelterjedtebb hálózati architektúra. A hálózat minden rétegében a neuronok bemeneteit az el z réteg neuronjainak súlyozott kimenetei adják. Két réteg között általában teljes az összekapcsolás, vagyis egy neuron kimenete a következ réteg összes neuronjának bemenetéhez kapcsolódik, de néhány speciális esetben ett l eltérnek. A kimeneti neuronok alkotta réteg és a bemenet közötti rétegeket szokás rejtett rétegnek nevezni. Az 2.2. ábrán látható egy kétréteg
el recsatolt perceptron hálózat n
bemenettel és két kimenettel. A bemenetet az xi értékek adják, a kimenetet az yi értékek, a W(1) és W(2) jelöli az egyes rétegek súlymátrixait, az x0(1), és x0(2) az egyes rejtett rétegekhez tartozó eltolást jelölik.
W(1)
x0(1)=1
/f
x0(2)=1
x1 x2 x3 xn
/f
y1
/f
y2
/f . . .
/f
W(2)
2.2. ábra – Kétréteg perceptron hálózat
14
Az egyéb hálózati struktúrák a neuronok felépítésében, az összekapcsolások rendszerében, illetve a hálózati algoritmusok (tanítás, el hívás) tekintetében térnek el a többréteg perceptron hálózatoktól. Az egyes rétegek közötti visszacsatolással, vagy késleltetett bemenetek el állításával id függ , dinamikus neurális rendszerek is létrehozhatók.
2.1.1 Neurális hálózatok tanítása A hálózatok tanítása a neuronok közötti összeköttetések súlyainak valamilyen algoritmus szerinti módosítását jelenti. Ha a tanítás során rendelkezésre állnak összetartozó ki- és bemeneti mintapárok, akkor ellen rzött tanulásról beszélünk, ha csak a bemeneti adatok ismertek, akkor nemellen rzött tanulásról. A nemellen rzött tanítási módszerek a neuronok aktivitásának függvényében módosítják a súlyokat. Ellen rzött tanulás esetén a tanítás rendszerint valamilyen hibafüggvény minimalizálását jelenti, amely a hálózat által adott és az elvárt válasz különbségének függvénye. Az alkalmazott súlymódosító algoritmusoknak sok fajtája létezik, amelyek f ként a konvergencia sebességében, és a tanítás stabilitási feltételeiben különböznek egymástól, illetve az egyes hálózat típusokra is eltér ek. Az ellen rzött és nemellen rzött tanulás mellett létezik még analitikus tanítás, amelynél a súlyok meghatározása a tanító pontok közvetlen felhasználásával analitikus összefüggéseken keresztül történik. Az el recsatolt többréteg perceptron hálózatok tanítási módszere az ellen rzött tanítás, amelynek során rendelkezésünkre állnak olyan bemeneti minták, amelyekhez ismert a kimenet, például egy kép esetén tudjuk, hogy hol található a keresett objektum. A tanítás során a rendelkezésre álló bemenetek és kimenetek segítségével a neurális hálózat kimeneteib l egy hibát képezhetünk. A tanító algoritmus célja ennek a hibának, illetve a hibából képzett kritériumfüggvénynek a minimalizálása. Az ellen rzött tanítás általános sémája a 2.3. ábrán látható.
15
d(k) B e m e n e t
x(k)
+
y(k)
Neurális hálózat (W)
W
*
(k)
Paraméter módosító algoritmus
2.3. ábra – Az ellen rzött tanítás általános sémája
A továbbiakban, az ábrán jelölteknek megfelel en, az egyes lépésekben a hálózat bemenetét az x(k) vektor, kimenetét az y(k) vektor, az adott pillanatbeli bemenetekhez tartozó helyes (elvárt) válaszokat a d(k) vektor tartalmazza. A módosítandó paramétereket, vagyis a hálózat súlyait a W mátrix, míg az egyes lépésekben vétett hibát (k) jelöli. A paraméterek módosításához szükségünk van a pillanatnyi hibára, valamint egy bel le képzett kritériumfüggvényre, amely lehet például a pillanatnyi hiba négyzete (j a kimenetek száma): C (k ) = ε 2 (k ) = j
(d
− yj )
2
j
(2.4)
A cél tehát a kritériumfüggvény minimalizálása, amely a gradiens mentén lehetséges, a súlymódosítás pedig a következ képpen adódik:
w (k + 1) = w (k ) − µ ∇ C ( k )
(2.5)
Itt µ a tanítási tényez , amelynek szokásos értéke a (0, 1) intervallumba esik, míg ∇ a kritériumfüggvény gradiensét jelöli. A fent bemutatott megközelítés az ún. LMS (Least Mean Square) algoritmus [13]. Az algoritmus egy általánosan alkalmazható optimalizáló algoritmus, azonban a többréteg
neurális hálózatokra való hatékony
alkalmazásához további kiegészítések szükségesek. A többréteg
hálózatok tanítására az ún. hibavisszaterjesztéses algoritmus [14]
alkalmas. Az algoritmus kritériumfüggvénye továbbra is az LMS algoritmusnál megismert négyzetes hibafüggvény, azonban a hiba meghatározása az egyes rétegek esetén eltér en történik.
16
Legyen
yi =
1 1 + e − si
(2.6)
az i. neuron kimenete, és
si =
wij y j ,
(2.7)
j
ekkor a j.-t l az i. neuronhoz vezet súlyra a láncszabály értelmében:
∇C =
Itt
∂C ∂C ∂si ∂C ∂yi ∂si = = . ∂wij ∂si ∂wij ∂yi ∂si ∂wij
(2.8)
∂si ∂yi megegyezik az i. neuron j. bemeneti jelével, egyszer en számítható a ∂wij ∂si
használt nemlinearitás deriváltjaként,
∂C a kimeneti réteg neuronjainak esetén a ∂yi
kritériumfüggvényb l határozható meg, míg a rejtett réteg neuronjainak figyelembe kell vennünk a hálózat rétegein keresztül visszaterjesztett hibát is: ∂C = ∂yi
k
∂C ∂yk wki , ∂yk ∂sk
(2.9)
ahol k az adott neuron kimenetére csatlakozó neuronokat jelenti. A fenti algoritmusnak sok változata létezik, amelyek különbözhetnek a kritériumfüggvény és annak gradiense meghatározásában, illetve különböz
algoritmikus kiegészítéseket tartalmazhatnak a
tanítás konvergencia-sebességének, vagy stabilitásának növelésére.
2.1.2 Neurális hálózatok alkalmazásával kapcsolatos problémák A neurális hálózatokra vonatkozó elméleti eredmények nem adnak választ mindazokra a kérdésekre, amelyek egy-egy konkrét alkalmazás során felmerülhetnek. Miután sikerül egy adott feladat olyan megfogalmazását megtalálni, amely lehet vé teszi a neurális megoldás alkalmazását, az els kérdés ami felmerül, hogy mekkora méret hálózatot kell választani. A rétegek és az egyes rétegekben található neuronok optimális
17
számának meghatározására nincs általános módszer. Az elméleti eredmények mindössze annyit állítanak, hogy bizonyos feltételek teljesülése esetén egy háromréteg (két rejtett réteg ) hálózat bármilyen nemlineáris függvény tetsz leges pontosságú közelítésére képes. Az egyik ilyen feltétel, hogy a rejtett rétegben megfelel számú neuron szükséges, a pontos számról azonban az elméleti eredmények nem nyilatkoznak. A szükséges adatokat a tapasztalatokból, és a probléma elemzéséb l lehet megállapítani, például ha a probléma megoldása egy általános, többdimenziós felület, akkor nagyobb hálózat alkalmazása szükséges, míg lineárisan szeparálható problémák esetén akár egy feldolgozó egység is elég lehet. A rendelkezésre álló tapasztalati eredmények azt mutatják, hogy az egy rejtett réteggel rendelkez hálózatok az esetek többségében elegend ek. További tapasztalat, hogy a nagyobb méret
hálózatok gyorsabban konvergálnak, vagyis egy adott probléma
kevesebb tanítási lépést igényel, azonban túl nagy méret választása a hálózat teljesítményét leronthatja. A túlságosan kisméret hálózatok sem jók, mert esetleg nem képesek megtanulni a problémát. Léteznek szisztematikus eljárások, amelyek nagyobb hálózatból kiindulva próbálják a hálózat méretét csökkenteni, például a felesleges, az eredmény el állításában nem résztvev
hálózatrészek kimetszésével, míg más
megoldások kisebb hálózatból kiindulva a hálózat méretét próbálják növelni, a megfelel eredmény eléréséhez. Ezek a módszerek azonban nem elég általánosak és a tanítás idejét nagyon megnövelik. A nagyobb problémák esetén megfontolandó a probléma részekre bontásának lehet sége, mivel így kisebb hálózatok alkalmazására nyílik lehet ség. A neurális hálózatok a kívánt viselkedést a súlyok megfelel beállításával érik el, a súlyok beállítása pedig a tanító eljárás feladata. Az optimális súlyok beállítása NP-teljes probléma, vagyis a tanító eljárások csak optimum közeli megoldásokat adnak. A közelítés jóságát a tanító eljárás paraméterei határozzák meg. A tanító algoritmusok nagy része ezért a saját paraméterei adaptív módosításával próbálja a konvergencia jóságát növelni. Nagy problémát jelent, hogy a tanítás hosszú ideig, akár órákig, vagy napokig eltarthat, így nehéz olyan rendszereket létrehozni, ahol a valósidej adaptív viselkedés követelmény. Problémát jelenthet a tanítás során használt mintahalmaz megválasztása is. A hálózat nem tudja megfelel en megtanulni a problémát, ha nem áll rendelkezésre megfelel 18
mennyiség minta, vagy a mintahalmaz egyenetlen eloszlású. További kérdést jelent, hogy
hogyan
min sítsük
a
hálózatot,
mennyire
jó
egy
adott
hálózat
általánosítóképessége, vagyis a nem tanított mintákra helyes, vagy helytelen választ ad. A rossz általánosítóképesség
hálózatot nem tekinthetjük a probléma megfelel
modelljének. A hálózat min ségének megállapításához és a túltanulás, vagyis a tanító mintákhoz való túlzott illeszkedés elkerüléséhez szokásos a rendelkezésre álló mintahalmaz több részre bontása. A hálózatnak a tanító halmaz mintáit tanítjuk, eközben figyeljük a kiértékel halmazra adott hibát. Amint ez a hiba elkezd n ni, vagyis a hálózat elkezd túlságosan alkalmazkodni a tanító készlethez, a tanítást leállítjuk. A fenti problémákon kívül egyéb kérdések is felmerülhetnek, így általában elmondható, hogy egy adott feladat szempontjából optimális megoldás megtalálása a rendelkezésre álló tapasztalatok felhasználásával és különböz
paraméter
hálózatokkal való
kísérletezéssel, mérések elvégzésével lehetséges.
2.2 Neurális hálózat együttesek A neurális hálózatok tanítási algoritmusainak tulajdonsága, hogy az optimumhoz közeli megoldást adnak. Az algoritmus és a hálózat kezdeti beállításai különböz ek lehetnek, amely ugyanúgy különböz megoldásokhoz vezethet, mint a tanító halmaz különböz részeivel való tanítás. A tanításhoz használt bemeneti vektorok paramétereinek megválasztása szintén befolyásolhatja a megoldást. Ezek és hasonló megfigyelések vezettek ahhoz a gondolathoz, hogy egy feladat megoldását ne egyetlen hálózat kialakításával próbáljuk elérni, hanem több különböz hálózat együttm ködésével (2.4. ábra) [8, 9]. Bizonyított, hogy ha a hálózatok által adott átlagos hiba az egyes mintákra kisebb, mint 50%, és a hálózatok egymástól függetlenül hibáznak, akkor a hálózatok számának növelésével a hálózat együttes által adott hiba a nullához tart [8]. A feltételezés szerint tehát a hálózatok egyenként is jó eredményt adnak, és egymástól függetlenül hibáznak, vagyis az egyes hálózatok hibái a mintahalmaz különböz részein vannak. A hálózat együttes hibája így két részb l áll, az els az egyes hálózatok hibája, míg a második a hálózatok „egyet nem értésének”, eltérésének mértéke.
19
y
Hálózatok kimenetének kombinációja y1
y2
Network1
Network2
yn
......
NetworkN
x 2.4. ábra – Neurális hálózatok együttese
A fentiek belátásához tekintsük a következ ket: A rendszer teljes kimenete legyen az egyes hálózatok kimenetének súlyozott összege, vagyis a 7. ábra jelöléseivel élve, y =
wi = 1 . Az egyes hálózatok és a
wi yi , és i
i
teljes hálózat együttes adott bemenethez tartozó hibája a következ képpen írható fel:
ε i (x ) = [ yi (x ) − f (x )]2 ,
(2.10)
e( x ) = [ y ( x ) − f ( x )] ,
(2.11)
2
ahol f(x) az adott bemenethez várt kimenet. Formálisan definiálhatjuk az egyes hálózatok eltérésének mértékét:
d i ( x ) = [ y ( x ) − yi ( x )]
2
(2.12)
Az egyes hibákból definiálhatjuk a hibák átlagát a teljes mintahalmazon ( Eˆ , Ei , Di ). Ekkor megmutatható, hogy a hálózat együttes hibája felírható két hiba különbségeként:
Eˆ = E − D , ahol E =
wi Ei , és D = i
(2.13)
wi Di . i
20
A fentiek tehát azt mutatják, hogy az ideális neurális hálózat együttes olyan hálózatokból áll, amelyek általánosítóképessége egyenként is jó, de mégis a lehet legkülönböz bb megoldásokat adják. Az ideális neurális hálózat együttes létrehozására több módszert is javasolnak a különböz szerz k, amelyek röviden a következ kben foglalhatóak össze: a) a hálózat, és a tanító eljárás paramétereinek változtatása [15] b) a bemeneti vektorok paramétereinek különböz megválasztása [16] c) a tanító mintahalmaz különböz részhalmazaival való tanítás [17, 18, 19] A különböz
szisztematikus módszerekkel végzett kísérletek eredményei [11] azt
mutatják, hogy a problémák nagy többségénél az így kialakított hálózat együttesek jobb eredményt produkálnak, mint az egyes hálózatok.
21
3 Digitális képfeldolgozás
A digitális képfeldolgozás célja a világban el forduló, az ember számára valamilyen okból fontos vizuális információk reprezentálása és feldolgozása számítógépek segítségével. A digitális képfeldolgozás alapvet en kétdimenziós képek feldolgozását jelenti,
amikor
háromdimenziós
reprezentációt
használunk
háromdimenziós
képfeldolgozásról beszélünk. A digitális kétdimenziós képfeldolgozás els lépése tehát a digitális reprezentáció el állítása, vagyis a folytonos kétdimenziós jelnek tekintett vizuális látvány mintavételezése. Az így el álló digitális információ szokásos ábrázolása egy két- vagy háromdimenziós mátrix, attól függ en, hogy a kép szürke árnyalatú, vagy színes. A különböz digitális képformátumok (bmp, gif, jpg) ezt a mátrixot tárolják különböz segédinformációkkal (méret, felbontás, fizikai paraméterek, paletták stb.) kiegészítve, illetve sok esetben tömörítve. A digitális tárolási eljárások hatalmas mennyiség képi információ tárolását teszik lehet vé viszonylag kis helyen, míg a képfeldolgozás eljárásai lehet séget adnak a képeken található információk automatikus kinyerésére és értelmezésére, amelyet az orvostudománytól kezdve az rkutatásig, számos területen használhatunk.
3.1 A digitális képfeldolgozás alapfeladatai A képfeldolgozás alapfeladatai [20, 21] hasonló célú eljárások gy jteményeiként képzelhet k el. A következ kben a három fontos alapfeladat bemutatása következik. A negyedik alapfeladatnak tekinthet
a tömörítés, amelynek célja az eredetit l minél
kevésbé eltér , és minél kisebb méret
digitális reprezentáció létrehozása, ami
információveszteséggel jár. A tömörítésr l a továbbiakban nem lesz szó, mivel a feladat megoldásához nem lehetséges ilyen célú eljárások használata.
3.1.1 Képjavítás A képjavítás els dleges célja a kép vizuális vagy az adott alkalmazás szempontjából lényeges tulajdonságainak javítása. Az egyes alkalmazások más és más tulajdonságokat tekintenek fontosnak, ami egyben azt is jelenti, hogy a képjavítás módszerei
22
nagymértékben függenek az adott problémától. A terület eljárásai alapvet en két kategóriába sorolhatók: az els kategóriába a képtartományban, míg a másodikba a frekvencia-tartományban dolgozó módszerek tartoznak. A képtartománybeli eljárások közvetlenül az egyes képpontok értékeivel (fényességi érték) dolgoznak, míg a frekvencia-tartománybeli eljárások a kép Fourier, koszinusz stb. transzformáltjának együtthatóit manipulálják, és inverz transzformáció segítségével állítják el
az
eredményt. A képjavítás körébe tartozó eljárások például a kontraszt javítása, a hisztogrammot manipuláló eljárások, különböz lineáris sz rési eljárások vagy az éleket javító módszerek.
3.1.2 Képhelyreállítás A képjavításhoz hasonlóan a képhelyreállítási technikák is a kép bizonyos értelemben vett javításával foglalkoznak. Míg azonban a képjavítás eljárásai nagymértékben heurisztikusak, addig a képhelyreállítási eljárások tisztán matematikai modelleket alkalmaznak a kép min ségét rontó hatások leírására, és a kép helyreállítása a folyamat modellje alapján el állított inverz eljárás segítségével történik. A kép min ségét rontó hatások egy egyszer és gyakori modellje [21] a 3.1. ábrán látható.
η ( x, y )
f(x, y)
H
+
g(x, y)
3.1. ábra – A kép min ségét rontó hatások egy modellje
Az ábrán f(x,y) jelöli a bemeneti képet, a H operátor a folyamat, vagy az átviteli rendszer hatásait írja le, míg η ( x, y ) valamilyen additív zajt jelöl. A 3.1. ábra képlet formájában: g ( x, y ) = H [ f (x, y )] + η ( x, y )
(3.1)
A képhelyreállítás során a cél tehát megadni f(x, y) legjobb közelítését az ismert g(x, y), és a folyamatot modellez H operátor segítségével figyelembe véve a lehetséges zajt is.
23
3.1.3 Képanalízis A képanalízis módszerei a képeken található információ kinyerésével foglalkoznak. A keresett információ természetesen mindig az adott probléma függvénye. A képanalízis els lépése általában a képhelyreállítási és képjavítási lépések során el feldolgozott képen elkülöníteni azokat az objektumokat, képelemeket, amelyek az adott probléma szempontjából fontosak, vagyis az információt hordozzák, ez a szegmentálás feladata. A sikeres analízis szempontjából a problémához legjobban illeszked
szegmentálási
eljárás megtalálása létfontosságú. A szegmentálási eljárások a fényességi értékek különbségének és hasonlatosságának elemzésén alapulnak. A képanalízis második lépése a szegmentálás során meghatározott objektumokhoz olyan paraméterek el állítása, amelyekkel azok egyértelm en megkülönböztethet ek, felismerhet ek. Az utolsó lépés, a probléma által meghatározott „a priori” tudás segítségével, a képanalízis során kinyert információ – a képen található objektumok típusa, elhelyezkedése, egyéb jellemz ik – értelmezése.
3.2 Képfeldolgozási feladatok megoldásának általános lépései A képfeldolgozási feladatok megoldásának általános lépései [21] a 3.2. ábrán láthatók. Az el feldolgozás során f ként a képjavítás illetve a képhelyreállítás körébe tartozó eljárások fordulnak el , a következ két lépésben alkalmazott eljárások a képanalízis körébe sorolhatóak, míg az utolsó lépésben különböz
a mesterséges intelligencia
körébe tartozó módszerek alkalmazhatók.
Szegmentálás
Lényegkiemelés, reprezentáció
El feldolgozás
Tudásbázis Problématér
Felismerés, értelmezés
Eredmény
Kép készítése, digitalizálás
3.2. ábra – A képfeldolgozási feladatok megoldásának alaplépései ([21] 8. oldal)
24
Az egyes lépések során célszer felhasználni az adott problémához tartozó „a priori” tudást, amit az ábrán a „tudásbázis” feliratú doboz jelöl. Egy adott feladat megoldásakor természetesen nem feltétlenül kell minden lépést végrehajtani, de általánosságban elmondható, hogy f leg a komplex alkalmazások során, ezeket a lépéseket kell végrehajtani egy-egy feladat megoldásakor.
3.2.1 Digitalizálás és el feldolgozás Az els lépés egy adott képfeldolgozási probléma megoldása során, a problémához tartozó vizuális információk digitális reprezentációjának el állítása, azaz képek készítése és digitalizálása. A digitalizálás talán legfontosabb kérdése, hogy az el állított digitális reprezentáció milyen min ség , vagyis a digitalizálás során mennyi információt vesztettünk. Az információvesztés együtt jár a finomabb részletek elvesztésével, amely egyes alkalmazások esetén megengedhetetlen. A digitalizálás min ségének sok esetben a digitalizáló berendezések szabnak határt, de olykor kénytelenek vagyunk figyelembe venni a rendelkezésre álló tárolókapacitást is. A digitalizálás eredményeképpen kapott képeket sokszor hibák terhelik, vagy zajosak ezért a tényleges feldolgozás megkezdése el tt tulajdonságaikat célszer javítani. Az el feldolgozás célja éppen ez, vagyis a képek megfelel bb formára hozása a további feldolgozáshoz. Az el feldolgozás során f ként a képhelyreállítás, illetve a képjavítás módszereit alkalmazzuk, a megfelel eljárás kiválasztása mindig az adott feladattól függ. El feldolgozási lépés lehet így a sérült képek helyreállítása, vizuális tulajdonságaik javítása, vagy a képen található, a további feldolgozás szempontjából érdekes objektumok tulajdonságainak kiemelése. Az el feldolgozás során a képet általában
olyan
m veleteknek
vetjük
alá,
amelyek
eredményeképpen
annak
információtartalma sérül, illetve némileg megváltozik.
3.2.2 Szegmentálás és lényegkiemelés A szegmentálás feladata a probléma szempontjából fontos objektumok elkülönítése egymástól és a háttért l. A szegmentáló eljárások eredményeképpen olyan adatokat kaphatunk, amelyek a különböz
régiókat, vagy azok határvonalát adják meg,
amelyekb l el állítható azok valamilyen reprezentációja. Az adatok reprezentálása sokféleképpen történhet, amelyet az adott feladat igényeihez kell alakítanunk. A
25
választott reprezentációból a lényegkiemelés segítségével olyan paramétereket határozhatunk meg, amelyek alapján az egyes objektumok elkülöníthet vé válnak. Például egy objektum reprezentációja történhet a határvonalának megadásával, és az egyes
objektumok
paraméterek,
például
csoportokba a
sorolhatók
határvonal
hossza,
a
reprezentációból
vagy
simasága,
meghatározott
segítségével.
A
lényegkiemelés során általában több, lehet leg egymástól minél függetlenebb paramétert határozunk meg, és sokszor elvárjuk, hogy az egyes paraméterek eltolásra, elforgatásra és nagyításra invariánsak legyenek, vagyis egy objektumot a képen elfoglalt helyét l, és méretét l függetlenül azonosítsanak. A sok paraméter közül a megfelel ek kiválasztása különböz
szisztematikus eljárások segítségével lehetséges [22], illetve
érdemes figyelembe venni az alábbiakat is [23]: a) Megkülönböztethet ség A választott paraméterek a különböz osztályokba tartozó objektumok esetén minél eltér bb értékeket vegyenek fel. b) Megbízhatóság A paraméterek az ugyanazon osztályba tartozó objektumok esetén minél hasonlóbb értékeket vegyenek fel. c) Függetlenség A választott paraméterek korrelációja minél kisebb legyen. d) Paraméterek száma A nagyszámú paraméter a rendszer komplexitását, és így a számításhoz szükséges id mennyiséget növeli.
3.2.3 Felismerés, értelmezés A feldolgozás utolsó lépése az egyes objektumok felismerése, osztályokba sorolása. A legegyszer bb esetben két osztályt különböztetünk meg, az egyikbe a feladat szempontjából érdekes objektumok tartoznak, a másikba az összes többi. A szegmentálási lépésben elkülönített objektumok osztályokba sorolását a lényegkiemelés során meghatározott sajátságvektorok felhasználásával, különböz
klasszikus vagy
intelligens döntési módszerek alkalmazásával végezhetjük el.
26
3.3 Neurális hálózatok alkalmazása a képfeldolgozás területén A klasszikus döntési módszerek különböz „a priori” ismereteket, vagy ezek hiánya esetén el zetes feltételezéseket igényelnek az osztályozni kívánt adatok statisztikus jellemz ir l. A döntési módszer hatékonysága ezen ismeretek „jóságától” függ. Nagyon sok valós világbeli probléma esetében azonban az adatok statisztikus jellemz i csak részben, vagy egyáltalán nem állnak rendelkezésre. A neurális hálózatok, mint korábban láthattuk, olyan eszközök, amelyek képesek a kívánt leképezést az elérhet adatokból minden el zetes ismeret követelménye nélkül megtanulni. Neurális hálózatok azonban nem csak osztályozásra használhatók, hanem például szegmentálásra, vagy különböz képhelyreállítási feladatok megoldására is. A továbbiakban néhány alkalmazási lehet ség rövid ismertetése következik.
3.3.1 Képhelyreállítás Az ellen rzött tanítást felfoghatjuk modell-illesztési feladatként is, amikor a neurális hálózat modellezi az ismeretlen rendszert, a tanítás során pedig a modell paramétereit, a hálózat súlyait, oly módon változtatjuk, hogy a hálózat viselkedése a modellezni kívánt rendszer viselkedését minél jobban megközelítse. A képhelyreállítás során a rendszer (képalkotó berendezés, átviteli csatorna stb…) képre gyakorolt hatásait a rendszer által meghatározott leképezés inverzének meghatározásával próbáljuk kiküszöbölni, amely gyakran bonyolult matematikai formulákhoz vezet. A leképezés inverze azonban neurális hálózattal is meghatározható például olyan módon, hogy a hálózat tanításakor, a 3.1. ábra jelöléseit használva, g(x,y)-t használjuk tanító mintaként, és f(x,y)-t várjuk a kimeneten. A tanított hálózat a rendszer inverzét valósítja meg, így a kimenetre illesztve a rendszer hatásai kiküszöbölhet ek. A probléma két különböz megközelítése található [24, 25]-ben.
3.3.2 Képanalízis A neurális hálózatok legf bb alkalmazási területe a képfeldolgozásban azonban az osztályozási, rendelkezésre
felismerési állnak
a
feladatok
megoldása.
lényegkiemelés
során
Az
osztályozás
képzett
elvégzéséhez
sajátságvektorok.
A
27
sajátságvektorok egy n dimenziós térben helyezkednek el, ahol n a lényegkiemelés során meghatározott paraméterek száma. A neurális hálózatok feladata az egyes osztályokat elválasztó n dimenziós felületek megtanulása. A tanítás történhet ellen rzött és nemellen rzött módon. Az el bbi esetben a sajátságvektorokkal jellemzett objektumokról tudjuk, hogy milyen osztályba tartoznak, míg az utóbbi esetben nem ismertek az egyes osztályok, azok meghatározása a hálózat feladata. A neurális hálózatok használatának jogosságát számos alkalmazás és a folyamatos kutatás is bizonyítja. Több megoldással találkozhatunk a karakterfelismerés, az automatikus célpont felismerés és követés, vagy a különböz
orvosi feladatok
megoldása, röntgen- és ultrahang felvételek, MR (mágneses rezonancia) képek elemzése területén. A [26] kiadványban található néhány példa ezekre az alkalmazásokra.
3.4 Multirezolúciós feldolgozás Az ember képes a vizuális látvány nagyobb összefüggéseit, és finomabb részleteit egyszerre feldolgozni, tehát például ha egy madarat figyelünk a fán, akkor is képesek vagyunk érzékelni, ha a környezetben változás történik, vagy olvasás közben nem csak az egyes bet ket, hanem a teljes szavakat is feldolgozzuk, s t képesek vagyunk egyszerre több szó feldolgozására is. Az emberi látás ezen tulajdonsága motiválja olyan módszerek kifejlesztését, amelyek segítségével a képfeldolgozó eljárások nem csak külön a kép kisebb vagy nagyobb részleteit képesek vizsgálni, hanem egyszerre a képen található objektumok részleteit és a közöttük lév
kapcsolatokat, összefüggéseket.
Néhány esetben maga a módszer skálázható ilyen módon, például a wavelet transzformációs eljárások esetén, de a legtöbb esetben a képfeldolgozó rendszernek kell megteremtenie azokat a körülményeket, amelyek az ilyen feldolgozást lehet vé teszik. Kézenfekv en adódik az a gondolat, hogy a feldolgozást bontsuk különböz szintekre, és minden szinten ugyanazokat az eljárásokat hajtsuk végre, a végeredményt pedig az egyes szinteken kapott eredmények szintézisével kapjuk. A különböz szinteken így vagy csak a kisebb, vagy csak a nagyobb lépték összefüggések vizsgálatát végezzük. Egy ilyen reprezentáció lehet, ha a feldolgozás egyes szintjein ugyanazon kép, különböz felbontásokban, jelenik meg, vagyis szemléletesen a képekb l egy piramist készítünk, amelynek legalsó szintjén az eredeti kép található a fels bb szinteken pedig 28
annak alulmintavételezett változatai. Ha összehasonlítunk egy képet önmaga egy alulmintavételezett, például felére kicsinyített változatával, láthatjuk, hogy a kép részletgazdagsága csökkent. A képet tovább kicsinyítve a részletek egyre inkább elt nnek viszont az egyes objektumok, és egymáshoz való viszonyuk továbbra is meghatározható, alig változik. Például a 3.3. ábrán egy mikrokalcifikáció csoportot (világos foltok) tartalmazó röntgenkép részletet és két kicsinyített változatát láthatjuk. Látszik, ahogy a kisebb felbontásokon a részletek elt nnek, vagyis az egyes mikrokalcifikációkat nem lehet már megkülönböztetni, viszont az a terület, ahol a mikrokalcifikációk vannak, még mindig jól látható.
a) Eredeti kép
b) 50%-os felbontás
c) 25%-os felbontás
3.3. ábra – Egy kép és kicsinyített változatai
A módszer lényege tehát, hogy az eredeti képen illetve annak kicsinyített verzióin hajtjuk végre az egyes m veleteket, az eredményt pedig az egyes szinteken kapott eredmények kombinációja adja. A megközelítés lehetséges párhuzamos módon, tehát a szinteket egyenrangúnak tekintve [26], vagy hierarchikus módon, amikor a feldolgozás szintr l szintre történik [6, 7]. A hierarchikus módszer esetén további két verzió lehetséges, az egyik esetben a feldolgozás a nagyobb felbontású képt l a kisebb felé, a másik esetben a kisebb felbontású képt l a nagyobb felé haladhat [6, 7].
29
4 Mikrokalcifikációk detektálása neurális hálózatok segítségével A következ kben ismertetésre kerül
moduláris megoldás mikrokalcifikációk
detektálására alkalmas. A különböz modulokban a feldolgozást hierarchikus felépítés , egymással együttm köd neurális hálózatok végzik.
4.1 Áttekintés A mammográfiás vizsgálatok során a rákos esetek közel felét mikrokalcifikációk formájában fedezik fel, ezért a különböz
CAD rendszerek fejlesztése során a
mikrokalcifikációk detektálása és osztályozása jelenti az egyik központi problémát. A detektálás célja a mikrokalcifikációkat tartalmazó képek felismerése, és az egyedi mikrokalcifikációk
minél
pontosabb
mikrokalcifikációk
alakjából,
meghatározása,
méretéb l
és
míg
az
osztályozásé
elhelyezkedéséb l
a
jó-
a
illetve
rosszindulatúság megállapítása. Az osztályozási feladat szempontjából a detektálás egy szegmentálási lépésnek tekinthet , önmagában azonban egy önálló képfeldolgozási feladatnak, amelynek els lépése szokásosan egy el feldolgozási lépés. A mikrokalcifikációk detektálását végz eljárás esetén ezért az els lépés az el feldolgozás, amelynek kett s célja van. Az els a mikrokalcifikációk
jellemz inek
javítása,
amely
hasznos
lehet
a
detektálás
szempontjából [27], illetve a vizuális megjelenítéskor. A mikrokalcifikációk, illetve a teljes mammogramm tulajdonságainak – f ként kontrasztosságának – javítására többféle módszert javasolnak a különböz szerz k. A legújabb és lassan legelterjedtebb módszerek a wavelet analízisen alapulnak [28, 29, 30], de szép számban találhatóak egyéb technikák is [31, 32]. Az el feldolgozási lépés második célja, azon területek elkülönítése, amelyek a detektálás szempontjából érdekesek lehetnek (ROI – regions of interest), vagyis amelyek mikrokalcifikációkat tartalmazhatnak. A képrészletek teljes kép helyett való vizsgálata több el nyt is hordozhat magában. A kevesebb adat feldolgozása növelheti az eljárás sebességét, és csökkenti a hamis pozitív felismerések arányát.
30
A mikrokalcifikációk detektálására kidolgozott módszerek közös jellemz je, hogy a detektálást valamilyen lokális, adaptív küszöbözési technikával érik el. Az egyik leggyakrabban idézett megoldás a [33], amely statisztikus módszereken alapul. A [34, 35]-ben bemutatott megoldások a kép ko-okkurencia mátrixából meghatározott entrópia küszöbözésével érik el a mikrokalcifikációk detektálását. Gyakran alkalmazott megoldások a wavelet analízis módszereinek felhasználása is, például [36-39]-ben. A wavelet analízis nagy el nye, hogy a kép a multirezolúciós technikának megfelel en vizsgálható. Más eljárások is el fordulnak az irodalomban, [40]-ben például egy fuzzy alapú megközelítést alkalmaznak, [41]-ben pedig egy analitikus modell-illesztést követ paraméter-becslést használnak. Nagy számban találhatóak neurális hálózatokat alkalmazó megoldások is [6, 7, 42-48]. Ezen megoldások egyik lényeges lépése a lényegkiemelés, amelynek során a cél a neurális rendszer által megtanulható, a mikrokalcifikációkat és a kép egyéb részeit elkülönít
paramétervektorok létrehozása. A neurális detektáló eljárások közötti
különbségek a meghatározott paraméterek jellegében és mennyiségében, az alkalmazott hálózati architektúrában és tanítási algoritmusban, valamint a hálózat kimenetének értelmezésében mutatkoznak meg. A neurális hálózatok másik kedvelt alkalmazási területe a mikrokalcifikációk jó- és rosszindulatúságának eldöntése, vagyis azok osztályozása [49-52]. Az egyes módszerekr l sajnos nem áll rendelkezésre összehasonlító elemzés, így csak a szerz k által közölt eredményekre támaszkodhatunk, amelyek azt mutatják, hogy a mikrokalcifikációk detektálására kidolgozott eljárások általában hasonlóan, vagy jobban teljesítenek, mint a radiológusok. A teljes CAD rendszereket tekintve, már eltér bb képet kapunk. A vizsgálatok kiterjednek a CAD rendszerek klinikai alkalmazására, például [53]-ban a vizsgált rendszer teljesítménye romlott a klinikai körülmények között, míg [54]-ben azt találtak, hogy a rendszer teljesítménye igen eltér
a különböz
szövettípusokat tartalmazó
felvételcsoportok között, néhány esetben jóval a radiológusoké alatt. [55] eredményei ezzel szemben azt mutatják, hogy a CAD rendszer jóval a radiológusok felett teljesít, míg [56]-ban nem tapasztaltak statisztikailag mérhet eltérést a radiológusok egyedi és CAD rendszerrel segített felismeréseinek hatékonysága között. Ezeket az eredményeket azonban árnyalja, hogy teljesen más körülmények között, viszonylag kis számú példára 31
támaszkodva, különböz felépítés CAD rendszereket vizsgálnak, ami megmagyarázza a néhol er sen eltér eredményeket is. A fejleszt knek azonban szembe kell nézniük azzal a ténnyel, hogy a laboratóriumi körülmények általában teljesen mások, mint a valós alkalmazási körülmények, ezért a megoldások tesztelésekor, és az eredmények értékelésénél igen körültekint en kell eljárni.
4.2 Motivációk A rendszer kialakítását két cél motiválta: -
a mikrokalcifikációkat tartalmazó képek/képrészletek felismerése, és
-
az egyedi mikrokalcifikációk felismerése.
A
mikrokalcifikációkat
tartalmazó
képek
felismerése
magában
hordozza
a
mikrokalcifikációkat nem tartalmazó képek kisz rését is, ami az orvosok munkáját teszi könnyebbé, hiszen a negatív képek felesleges vizsgálatától szabadíthatja meg ket. Az egyes mikrokalcifikációk minél pontosabb felismerése az els lépése azoknak az eljárásoknak, amelyek a mikrokalcifikációk osztályozását, vagyis a jó-, illetve rosszindulatúság eldöntését végzik. A rendszerben a feldolgozás képpontonként történik, és a tulajdonképpeni detektálást neurális hálózatok végzik. Az el zetes vizsgálatok alapján megállapítható volt, hogy a neurális hálózatok sok negatív képpontot gyanúsnak min sítenek mikrokalcifikációkat nem
tartalmazó
képrészleteken,
és
sok
pozitív
képpontot
negatívnak
a
mikrokalcifikációkat tartalmazó képrészleteken. Ezek az eredmények a rendszer mindkét céljára hatással vannak, ezért egy olyan megközelítést kellett kidolgozni, amely a két célt külön kezeli. Az egyedi mikrokalcifikációk felismerése részfeladatként tartalmazza a megfelel képrészletek felismerését, így célravezet lehet egy olyan megközelítés kidolgozása, amely
a
feldolgozást
két
részletben
végzi,
és
els
lépésként
kisz ri
a
mikrokalcifikációkat tartalmazó képrészleteket, majd második lépésként detektálja az egyedi mikrokalcifikációkat.
32
Az el zetes vizsgálatok azt is mutatták, hogy a neurális hálózatok minden tanításkor némileg eltér eredményeket adtak, különösen igaz volt ez különböz összetétel tanító halmazok használata esetén. Hasonló volt a hálózatok viselkedése, ha a bemeneti vektorok összetételében történt változás. Ez a két megfigyelés motiválta, a neurális hálózat együttesek és a moduláris felépítés kialakítását. Az egyes modulok neurális hálózat együtteseket tartalmaznak, és a bemeneti paramétervektorok összetételében különböznek egymástól, míg a neurális hálózat együttesekben a hálózatok tanítása különböz mintahalmazokkal történik.
4.3 A rendszer felépítése és m ködése A teljes rendszer blokkvázlata a 4.1. ábrán látható. A rendszer el ször az egyes modulok eredményei alapján eldönti, hogy a bemenetként kapott képrészleten találhatóe mikrokalcifikáció vagy sem (pozitív/negatív ROI), majd pozitív bemenet esetén meghatározza az egyes mikrokalcifikációk helyét. A rendszer lelkének tekinthet hierarchikus feldolgozást végz
részegység a [6, 7]-ben javasolt megoldás kissé
módosított változata. Az egyik eltérést a lényegkiemelés során meghatározott paraméterek különböz sége adja, a másodikat a hierarchikus felépítés egyszer sítése.
Bemenet (ROI-k)
Hierarchikus feldolgozás
.
Döntési fák
Pozitív / Negatív ROI .
Szavazás
Modul #1
. . .
Modul #n
Hierarchikus feldolgozás
.
Döntési fák
.
Szavazás
S z a v a z á s
MikroEredmény kalcifikációk helyének meghatározása
4.1. ábra – Mikrokalcifikációk detektálását végz neurális rendszer blokkvázlata
A rendszer – és a különböz modulok – bemenetét egy (feltételezett) el feldolgozási eljárás során meghatározott, nagy valószín séggel mikrokalcifikációkat tartalmazó, képrészletek (ROI – regions of interest) adják. A rendszer m ködése a 4.2. ábrán látható rendszeralgoritmus szerint történik.
33
1.
pyramid := build_pyramid(input_image);
2.
for each moduli
3.
features := compute_features(moduli);
4.
nn_outputs := process_nnensemble(features);
5.
votes := process_decision_trees(nn_outputs);
6.
modul_votei := voting(votes);
7.
modul_outputi := select the best of nn_outputsi;
8.
modul_vote
system_vote := voting( i
9. 10.
i
);
if system_vote = 1 system_output := detect_calcifications( i
modul_outp uti );
4.2. ábra – A rendszer algoritmusa
Az algoritmus els
lépésében (1. sor) a bemenetre kerül
képrészletb l a
multirezolúciós feldolgozásnak megfelel en egy piramis készül. Ez a lépés logikailag a hierarchikus feldolgozást végz egység feladata (ezért nincs is külön jelölve a 4.1. ábrán), miután azonban minden modul esetén ugyanaz, egy lépésben elvégezhet . A 4.1. ábrán látható, hogy minden modul tartalmaz egy hierarchikus feldolgozást végz egységet, döntési fákat, valamint egy szavazási eljárást. A hierarchikus feldolgozást végz egységek több hierarchikus neurális hálózatot, és egy lényegkiemelési eljárást tartalmaznak. A neurális hálózatok közti különbségeket a tanításuk során alkalmazott mintahalmazok eltér összetétele adja, a modulok közti különbségeket pedig a lényegkiemelés során meghatározott paraméterek száma, és jellege. Ennek megfelel en az egyes modulok ugyanazokat a feldolgozási lépéseket hajtják végre (4.2. ábra 3-7. sor), eltérés csak a lényegkiemelési eljárás során meghatározott paramétervektorok összetételében van. A modulokon belüli feldolgozás els lépése a lényegkiemelés (compute_features), amelynek eredménye adja a hierarchikus neurális hálózatok bemeneteit. A következ különböz
lépés a neurális osztályozás (process_nnensemble), amelyet több,
mintahalmazokkal tanított hierarchikus neurális hálózat végez. Mivel a
feldolgozás képpontonként történik, a hálózatok kimenetei (nn_outputs) a bemeneti képnek megfelel méret mátrixok lesznek. A kimeneti mátrixok egyes értékei 0 és 1 34
közé esnek, és a bementi kép hasonló pozíciójában található képpont „gyanússágának” mértékével egyeznek meg, azaz a neurális hálózat szerint mekkora annak az esélye, hogy az adott képpont egy mikrokalcifikáció része. Minden hierarchikus neurális hálózat kimeneti mátrixát egy döntési fa dolgozza fel (process_decision_trees). A feldolgozás eredményeképpen a döntési fák minden neurális hálózathoz egy 0 vagy 1 értéket rendelnek (votes), amelynek jelentése, hogy az adott neurális hálózat szerint a bemeneti kép tartalmaz-e mikrokalcifikációt, vagy sem. Ezek az értékek szolgálnak a modulon belüli szavazási eljárás bemenetéül, amely a modul fentiekkel egyez
értelm
döntését adja (modul_votei). A szavazási eljárás
eredménye adja a modulok egyik kimenetét (4.1. ábra vastag vonal), és egyben a rendszer szavazási eljárásának bemenetét. A modul második kimenete (modul_votei, illetve 4.1. ábra szaggatott vonal), a mikrokalcifikációk felismerésében a tanítás – és tesztelés – során legjobbnak bizonyult neurális hálózat kimeneti mátrixával egyezik meg, és a mikrokalcifikációk helyének meghatározását végz eljárás bemenetét adja. Amint az összes modul eredményei rendelkezésre állnak, a modulok modul_votei kimenetei alapján a rendszer eldönti (system_vote), hogy a bemenet tartalmaz-e mikrokalcifikációt vagy sem. A pozitív döntés aktiválja a mikrokalcifikációk helyének meghatározását végz
eljárást (detect_calcifications), amelynek eredménye
bemeneti képpel egyez , a mikrokalcifikációk helyét jelz kép. A fejezet további pontjaiban az egyes feldolgozási lépések részletes bemutatása található. A 4.4 pontban a hierarchikus feldolgozó egység és a feldolgozás részletes ismertetése található. A 4.5 pont a felhasznált neurális hálózatok rövid jellemzését adja. A lényegkiemelés során az egyes modulok különböz
paraméterhalmazokkal
dolgoznak. A kiválasztott paraméterek jellemz inek bemutatása, egyedi leíró képességük és egymáshoz való viszonyuk vizsgálata, valamint a különböz modulokban alkalmazott paraméterhalmazok kiválasztására szolgáló algoritmus ismertetése található a 4.6 pontban. A 4.7 pont tárgyalja a különböz
döntési
eljárásokat, így a döntési fákat, a fák építésére szolgáló algoritmust, valamint a szavazási eljárásokat. Végül a mikrokalcifikációk helyének meghatározását végz algoritmust a 4.8 pont mutatja be.
35
4.4 Hierarchikus feldolgozás A hierarchikus feldolgozás, a [6, 7] publikációkban bemutatott módszer egy kissé módosított változata. Alapvet
vonása a képek multirezolúciós technikával (ld. 3.4
pont) való vizsgálata. A 4.3. ábrán a hierarchikus feldolgozást végz
egység
blokkvázlata, a 4.4. ábrán pedig a feldolgozás folyamata látható.
ROI
Piramis építése
Lényegkiemelés
Neurális osztályozás #1 . . .
Kimenet #1
Neurális osztályozás #n
Kimenet #n
. . .
4.3. ábra – A hierarchikus feldolgozást végz egység blokkvázlata
A hierarchikus feldolgozás els
lépésében a bemeneti képb l egy piramis készül,
amelynek egyes szintjein a kép különböz
felbontású verziói találhatók. A piramis
építése úgy történik, hogy a legalsó szinten az eredeti kép található, a következ szinten az eredeti kép alulmintavételezett – általában felére csökkentett felbontású – változata, és így tovább. Az alulmintavételezést rendszerint egy átlagolási lépés el zi meg. Tehát, ha a legalsó szinten található eredeti kép 64x64 pixel méret , akkor a következ szinten a méret 32x32 pixelre csökken, az azt követ szinten 16x16 pixelre és így tovább. Egy háromszint piramis látható a 4.4. ábrán. A feldolgozás irányai
Hierarchikus neurális hálózat Neurális hálózat #1
Neurális hálózat #2
Neurális hálózat #3
Piramis építése
Lényegkiemelés
Kimenet #1
Neurális osztályozás #1
4.4. ábra – A hierarchikus feldolgozás folyamata
36
A feldolgozás következ lépése a lényegkiemelés, amelynek során a piramis minden szintjén az ott található képb l különböz , a mikrokalcifikációkat jellemz paraméterek meghatározása történik. A feldolgozás képpontonként történik, így a lényegkiemelés a bemeneti kép minden pontjához a paraméterek számának megfelel méret
vektort
rendel, ami egyben azt is jelenti, hogy a bemeneti képhez annyi, a paraméterek értékeib l álló mátrix fog tartozni, ahány paraméter van. Ezek a mátrixok értelmezhet ek képként is, amint a 4.4. ábrán is látható. A piramis minden szintjéhez egy neurális hálózat van rendelve, amelynek bemeneteit a lényegkiemelés során kapott paramétervektorok, és a piramisban egy szinttel feljebb található neurális hálózat rejtett rétegbeli neuronjainak kimenetei adják (4.4. ábra). A hierarchikus neurális hálózat tehát több, egymással kapcsolatban álló neurális hálózatot jelent. A feldolgozás eddig a 4.4. ábrát tekintve balról jobbra haladt, amelyet az ábra bal fels sarkában látható jobbra mutató nyíl jelöl. A neurális hálózatok esetében azonban a feldolgozás iránya nem csak balról jobbra, hanem a hierarchikus felépítés következtében a piramis legfels szintjét l a legalsó felé is halad. A lényegkiemelés után a piramis minden szintjén rendelkezésre állnak a megfelel paramétervektorok. A következ lépésben a piramis legfels szintjén található neurális hálózat (a 4.4. ábrán a „Neurális hálózat #1” doboz) feldolgozza a bemenetére kerül
adatokat. Ezután a
hálózat rejtett rétegbeli neuronjainak kimenetein megjelen
adatok az eggyel
alacsonyabb szinten található neurális hálózat (a 4.4. ábrán a „Neurális hálózat #2” doboz)
bemenetére
kerülnek,
kiegészítve
a
lényegkiemelés
során
kapott
paramétervektorokkal. A hierarchikus neurális hálózat kimenetét a legalsó szinten található neurális hálózat adja, amit a 4.4. ábrán a „Kimenet #1” feliratú nyíl jelöl. A többi neurális hálózat kimenetére a feldolgozás során nincs szükség, ezért szaggatott vonallal vannak jelölve. A neurális hálózatok tanítása felügyelt módon történik, így minden bemeneti képhez tartozik egy bináris kimeneti kép, amelyen a mikrokalcifikációk képpontjai vannak megjelölve (a pont értéke 1, ha mikrokalcifikáció része, és 0, ha nem). A tanítás során a kimeneti képekb l szintén készül egy piramis, azaz a hálózatok tanítása szintenként zajlik. El ször a legfels szinten található hálózat tanítása történik meg, a következ
37
szinten található hálózat tanításakor ez a hálózat már a feldolgozásnak megfelel en m ködik, vagyis a rejtett rétegbeli neuronok kimenetei ugyanúgy hozzáadódnak a bemenethez. A legalsó szinten található hálózat tanításakor már az összes felette lév hálózat a feldolgozásnak megfelel en m ködik. Minden hierarchikus feldolgozást végz egység több hierarchikus neurális hálózatot tartalmaz, amit a 4.3. ábrán látható „Neurális osztályozás” feliratú dobozok jelölnek. A 4.4. ábrán látható hierarchikus neurális hálózat így megfelel a 4.3. ábrán a „Neurális osztályozás #1” feliratú doboznak. Az egyes hierarchikus neurális hálózatok ugyanolyan felépítés ek, viszont a tanításuknál használt mintahalmazok eltér összetétel ek, így a hálózatok viselkedése is némiképp különböz (ld. 2.2 pont).
4.5 Az alkalmazott neurális hálózatok A rendszerben alkalmazott összes neurális hálózat egy rejtett réteg , el recsatolt perceptron hálózat. Az egyes hierarchikus modulokon belül a feldolgozás háromszint , vagyis minden hierarchikus neurális struktúra három hálózatot tartalmaz, amelyek egymással is kapcsolatban vannak (4.4. ábra). Az egyes szinteken lév hálózatok a rejtett rétegbeli neuronok számában, illetve a hálózatok közötti kapcsolatok miatt a bemenetek számában különböznek egymástól. További különbség, hogy a modulokon belül található (4.3. ábra) hierarchikus neurális struktúrák tanítása különböz mintahalmazokkal történik. A neurális hálózatok közti harmadik különbséget a lényegkiemelés eredményeképpen létrejött sajátságvektorok modulonként változó mérete és összetétele okozza. A hálózatok rejtett rétegbeli neuronjainak száma csak szintenként változik, azaz minden modulra érvényes. Az egymásnak megfelel szinteken elhelyezked hálózatok rejtett rétegében tehát ugyanannyi neuron van, függetlenül attól, hogy melyik modulban találhatóak. A rejtett rétegbeli neuronok optimális számának meghatározására jelenleg nem ismert általános érvény
módszer, vagy elméleti eredmény, ezért ezek száma
különböz mérések alapján lett meghatározva. A mérések eredményei az 5.3.2 pontban találhatóak. A hálózatok tanítása egy módosított hibavisszaterjesztéses algoritmus [62] szerint történt, amely gyorsabb konvergenciát, és jó stabilitást biztosít.
38
4.5.1 A normalizálás hatása a tanulásra A normalizálás a neurális hálózatok szempontjából a bemeneteikként szolgáló adatok egy megadott értéktartományba történ skálázását jelenti. A leggyakrabban a lineáris skálázás használatos. A normalizálást több szempontból is célszer elvégezni [2]. Ha a bemeneti adatok nagyon eltér ek, vagyis az értékeik között túl nagy különbségek vannak, akkor a hálózat tanulása az értékkülönbségek kompenzálása miatt nagyon hosszú id t vehet igénybe. A hálózat súlyainak szokásos kis érték inicializálása miatt pedig az is el fordulhat, hogy a hálózat képtelen tanulni az origótól távol es bemeneti adatokból. A lineáris skálázás az azonos típusú bemeneti adatok közti különbségeket meg rzi, miközben a különböz típusú bemeneti adatok nagyságrendbeli különbségei kiegyenlít dnek. A m velet általánosan a következ képlettel adható meg: y = ( x − y min ) ∗
y max − y min + y min , xmax − xmin
(4.1)
ahol y a normalizált érték, x a normalizálandó érték, xmax és xmin a normalizálandó értékek maximális és minimális értékét jelentik, míg ymax és ymin a normalizált értéktartomány hasonló határait. A neurális hálózatok bemeneteit a lényegkiemelés során képzett paramétervektorok adják. Minden paraméterre elméletileg adható egy fels
korlát, amelynél nagyobb
biztosan nem lehet, és ami felhasználható a normalizálásnál. A normalizálás értéktartományára gyakori választás a [0,1; 0,9] intervallum, azaz a paraméterek értékei ebbe a tartományba esnek a normalizálás után Az el zetes kísérletek során a normalizálás vizsgálata egy érdekes jelenségre világított rá. Közismert, hogy a hálózatok el ször a leginkább ellentmondásmentes adatokat képesek megtanulni, míg az ellentmondásos adatok megtanulása hosszabb ideig tart, és a hálózat gyakrabban téved az ilyen adatoknál. Ha a normalizálást a paraméterek abszolút maximális értékeivel végezzük, vagyis minden tanító minta normalizálása ugyanúgy történik, akkor a tanító minták pontjainak értékei között a teljes képhalmazon mérhet relatív különbségek megmaradnak. Ennek az lesz az eredménye, hogy a tanítás során a hálózatok a nem egyértelm en besorolható, vagyis a pozitív és negatív esetben egymáshoz hasonló tanító vektorokat a negatív esetekhez fogják sorolni, mivel a több
39
negatív tanító minta miatt erre van inkább példa. Ennek eredményeképpen a mikrokalcifikációk egy része elveszik, viszont viszonylag kevés lesz a hamis pozitív felismerések aránya is. Ha azonban a normalizálás során nem a paraméterek abszolút maximális értékével számolunk, hanem egy képenként meghatározott maximális értékkel, akkor eltér eredményeket kapunk. Ekkor ugyanis az egyes képeken meg rz dnek a paraméterek értékeinek különbségei, viszont a képek egymáshoz viszonyított különbségei elt nnek. A tanulás során csak mikrokalcifikációt tartalmazó képekb l álló tanító halmaz esetén a neurális hálózatok, a képek közti különbségek elt nése, és a negatív minták hiánya miatt, a legtöbb fényességben eltér struktúrát mikrokalcifikációnak tekintik, vagyis a hibás pozitív felismerések aránya nagyon megn . Ellenpéldákat is tartalmazó tanító halmazok esetén azonban a hálózatok hasonlóan tanulnak, mint az els esetben. A kétféle normalizálás közötti különbség tehát a tanításnál használt képhalmazok eltérése esetén bukkan fel. A két normalizálási eljárás közötti különbség egy mikrokalcifikációkat tartalmazó és nem tartalmazó képre a 4.5. ábrán látható. A képekb l kit nik, hogy a mikrokalcifikációkat közel hasonlóan ismerik fel (4.5.b ábra), viszont a hamis pozitív felismerésekben a második eljárás rosszabb (4.5.a ábra). Az ábrán a csak mikrokalcifikációkat tartalmazó képekb l álló mintahalmazzal tanított hálózatok eredményei láthatóak. Ha a tanítás pozitív és negatív képekb l álló halmazokkal történik, akkor a mikrokalcifikációk felismerése mindkét esetben némileg romlik, és a hamis pozitív felismerések száma is csökken.
a) Mikrokalcifikációt nem tartalmazó képek (baloldalon az els normalizálási eljárás)
b) Mikrokalcifikációt tartalmazó képek (baloldalon az els normalizálási eljárás)
4.5. ábra – A normalizálás hatása a tanulásra
A második normalizálási módszer használata esetén tehát a neurális hálózatok közötti különbségek nagyobbak, miközben az eredményeik a felismerés terén közel hasonlóak. 40
A hierarchikus feldolgozást végz egységekben alkalmazott neurális hálózat együttesek használata abban az esetben adja a legjobb eredményt, ha a hálózatok egyenként megfelel eredményeket adnak, miközben a lehet legnagyobb mértékben eltérnek a hibák terén. Mivel ez a feltétel jobban teljesül a második normalizálási módszer esetén ezért a rendszerben ez a módszer használatos.
4.6 Lényegkiemelés A lényegkiemelés során a cél olyan paraméterek meghatározása, amelyek a mikrokalcifikációkat elkülönítik a képeken található egyéb objektumoktól. Szokásos stratégia, lehet leg minél több, a keresett objektumot jól jellemz
tulajdonság
kiválasztása, majd ezek közül valamilyen algoritmus segítségével egy adott méret , várhatóan a legjobb eredményt adó, részhalmaz meghatározása. A mikrokalcifikációk relatíve fényes, a környezetükt l viszonylag jól elhatárolható foltokként t nnek fel a képeken, vagyis a mikrokalcifikációk jellemzése a fényesség alapján lehetséges. Célszer
tehát az olyan paraméterek körében vizsgálódni, amelyek alkalmasak a
fényesség különbségek illetve ebb l következ en az élstruktúrák jellemzésére.
4.6.1 A kiválasztott paraméterek A paraméterek számítása a szokásos módon, vizsgálóablak módszerrel történt. A vizsgált képponthoz rendelt paraméter értékét így tehát maga képpont és annak adott méret környezete adja, vagyis a paraméter tartalmaz bizonyos információkat a képpont környezetér l is. A vizsgálóablak módszer egyetlen hátránya, hogy a kép szélén található képpontok esetén bizonytalan eredményeket ad, hiszen az ablak egy része a képen kívül esik ezen képpontok feldolgozásakor. A legtöbb eljárás ezt úgy kezeli, hogy a nem létez képpontokat nullának veszi. A neurális hálózatok esetén azonban ez hamis eredményt ad, mivel a hálózatnak olyan paramétervektorokat kellene megtanulnia, amelyek nem a valóságot tükrözik. Ezért a megvalósított algoritmusok az alkalmazott ablakméretnek
megfelel
területet
teljesen
nulla
érték nek
veszik
mind
a
lényegkiemelés, mind a neurális hálózatok tanítása során.
41
A kiválasztott és megvizsgált paraméterek a következ k voltak: a) Gradiens paraméterek A gradiens a fényességi érték egy adott pontban vett változásának mértékét illetve irányát adja meg. A gradiens meghatározása különböz el re definiált maszkokkal történhet. A jelen esetben alkalmazott maszk (4.6. ábra) segítségével a gradiens több irányban mérhet . Az egyes irányok a maszk értékeinek a maszk középpontja körüli elforgatásából származnak. A számítást mind a nyolc irányra elvégezve megkapjuk a gradiens különböz irányokra vett értékeit egy adott pontban. Az eredményeket négyzetre emelve egy energia típusú értéket kapunk, amely a gradiens er sségét jellemzi. Az els paraméter a maximális energia. A két további paraméter a maximális energiájú
irányt
kiindulásnak véve a -45° és a -90° irányokban mérhet értékek [6, 7].
5 5 5 −3 0 −3 −3 −3 −3 4.6. ábra – Kirsch operátor („északi” irány)
Az így származtatott paraméterek el nye, hogy irányfüggetlenséget biztosítanak. A 4.7. ábrán látható példa az így választott három paraméterre. A képek eredetije a 4.8.a ábrán látható.
a)
irány
b) -45°
c) -90°
4.7. ábra – Gradiens paraméterek
42
b) Variancia A variancia, vagyis a szórásnégyzet statisztikai jellemz , szavakban kifejezve a fényességi értékek átlagtól való eltérésének négyzetének átlagát adja meg. A variancia, mint paraméter, így egy olyan jellemz , amely egy adott pontban négyzetesen arányos a vizsgált környezetben található pontok fényességi érték eltéréseivel, így f ként a durvább élstruktúrát jellemzi. Egy adott méret ablakra (W) a következ képpen határozható meg: u (m, n ) =
v(m, n ) =
1 NW
1 NW
u (m − k , n − l )
(4.2)
[u (m − k , n − l ) − u (m, n )]2
(4.3)
( k ,l )∈W
( k ,l )∈W
Az u az eredeti kép (mint kétváltozós függvény), u
az átlagolt, azaz
alulátereszt vel sz rt kép, míg v a variancia. A varianciára egy példa a 4.8.b ábrán látható, a kép eredetije a 4.8.a ábra képe. A 4.7.a ábra képével összevetve nagymérték hasonlóság fedezhet fel. c) Szórás A szórás a varianciához hasonlóan statisztikus jellemz , mégpedig a variancia gyöke, így a szórás esetében más a fényességi értékekben található eltérések kiemelésének mértéke. Míg a variancia a határozottabb éleket emeli ki, addig a szórás a finomabb élstruktúrát is megjeleníti. Meghatározása a már el bb említettek szerint a varianciából gyökvonással történik:
v(m, n ) =
1 NW
( k ,l )∈W
[u (m − k , n − l ) − u (m, n )]2
(4.4)
A szórásra a 4.8.c ábrán látható példa, a kiindulási kép a 4.8.a ábra képe. A 4.8.b ábrán látható varianciával összehasonlítva észrevehet , hogy ez a paraméter a finomabb élstruktúrát is megjeleníti.
43
a) Eredeti kép
b) Variancia
c) Szórás
4.8. ábra – Kiindulási kép és statisztikus paraméterek
d) Maximum és minimum különbsége A paraméter meghatározása nagyon egyszer , értékét a vizsgálóablakban található képpontok maximális és minimális fényességi értékének különbsége adja.
v(m, n ) = max [u (m − k , n − l )] − min [u (m − k , n − l )] ( k ,l )∈W
( k ,l )∈W
(4.5)
Mivel minden esetben nagyobb számból vonunk ki kisebbet, ezért negatív érték nem fordulhat el . A paraméterre példa a 4.9.a ábrán található, a kiindulási kép a 4.8.a ábra képe. Az el z ekkel összehasonlítva leginkább a szórással vethet össze, és mivel a szórás egy pontrendszer kiterjedésének egy mértéke, ezért érthet is a hasonlóság. e) Az átlagtól való eltérés Szintén egyszer
a meghatározása, a paraméter értékét a vizsgált képpont
fényességi értékének, és a vizsgálóablak fényességi értékeinek átlagának különbsége adja. A negatív értékek nullának tekintend k. u (m, n ) =
v(m, n ) =
1 NW
( k ,l )∈W
u (m − k , n − l )
u (m, n ) − u (m, n ), ha u(m, n ) − u (m, n ) > 0 0, egyébként
(4.6)
(4.7)
44
A paraméterre a 4.9.b ábrán látható egy példa, a kiindulási kép a 4.8.a ábra képe. Látható, hogy ez a paraméter jelent sen különbözik az eddigiekt l, mégis a mikrokalcifikációkat (fényesebb foltok az eredeti képen) megfelel en jellemzi. f) Blokk aktivitás A blokk aktivitás a spektrális tartományban meghatározott paraméter [43]. El ször a vizsgálóablak Fourier transzformációját kell elvégezni, ezután az együtthatók abszolút értékének, vagyis nagyságának összege mínusz az els együttható, adja a paraméter értékét:
v(m, n) =
( k ,l )∈W
U (m − k , n − l ) − U (0,0)
(4.8)
A blokk aktivitásra példa a 4.9.c ábrán látható, a kiindulási kép, hasonlóan az el z ekhez a 4.8.a ábra képe.
a) Maximum-minimum különbsége
b) Eltérés az átlagtól
c) Blokk aktivitás
4.9. ábra – Vegyes paraméterek
4.6.2 A paraméterek vizsgálata A fentiekben leírt paraméterek kiválasztása jórészt intuitív úton történt, noha többségük elterjedten használatos. Miután az intuitív választás nem garantálja, hogy a kiválasztott tulajdonságok
ténylegesen
jól
jellemzik
egyenként
is
és
együttesen
is
a
mikrokalcifikációkat, ezért szükség van a paraméterek leíró képességének és egymáshoz való viszonyának vizsgálatára. A paraméterek kapcsolatának és együttes leíró képességének elemzésére lehet séget nyújt a köztük lév
korreláció vizsgálata. A
paraméterek egyedi leíró képességének vizsgálatára alkalmas a mikrokalcifikációkra és nem mikrokalcifikációkra felvett értékeik összehasonlítása, illetve a köztük és a 45
tanításnál használt kimeneti képek között lév
korreláció vizsgálata alkalmas. A
vizsgálatok így tükrözik a 3.2.2 pont végén megfogalmazott elveket is. A vizsgálatok els dleges célja tehát a paraméterek mikrokalcifikációkat jellemz képességének megállapítása, mivel azonban a rendszerben egyaránt el fordulnak mikrokalcifikációkat tartalmazó és nem tartalmazó képek, ezért érdekes lehet a vizsgálatok elvégzése mikrokalcifikációkat nem tartalmazó képekre is. A vizsgálatok azon része, amelynél ez a felosztás értelmes volt, a két képcsoportra külön történt, egyéb esetekben csak a mikrokalcifikációkat tartalmazó képek voltak a vizsgálat célpontjai. Az elvégzett mérések a fentieknek megfelel en a következ k voltak: A paraméterek egyedi leíró képességének vizsgálatára: a) A paraméterek értékeinek vizsgálata b) A paraméterek és a tanításnál használt kimeneti képek közötti korreláció vizsgálata A paraméterek egymáshoz való viszonyának vizsgálatára: c) Paraméterek közötti korreláció vizsgálata a mikrokalcifikációkat tartalmazó képek esetén d) Paraméterek közötti korreláció vizsgálata a mikrokalcifikációkat nem tartalmazó képek esetén A rendszer bemenetére kerül képek többfélék lehetnek, a mikrokalcifikációk szintén eltérhetnek egymástól, vagyis a paraméterek viszonyaiban eltérések lehetnek, így az egy vizsgálatok több kép alapján történtek az eredményeket az egyes képek esetén mért értékek átlaga adta. A 4.1. táblázatban látható a paraméterek értéktartománya, egy fels korlát a maximális értékükre, illetve a vizsgálatok eredményeinek ismertetésénél alkalmazott jelölésük. A vizsgálatoknál alkalmazott mintahalmaz 100 db képb l állt, amelyek közül 26 tartalmazott mikrokalcifikációt, 74 nem (ld. még 5.1. pont). A képek 8 bites felbontásúak voltak, vagyis a maximális fényességi értékük 255 volt.
46
Paraméter neve Variancia Szórás Átlagtól való eltérés Maximum és minimum különbsége Blokk aktivitás Gradiens irány Gradiens -45° irány Gradiens -90° irány
Nagyságrend 0 – 104 0 – 102 0 – 102 0 – 102 0 – 103 0 – 107 0 – 106 0 – 106
Egy fels korlát 65025 255 255 255 (20655) 14630625 6502500 1625625
Jelölés Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 Feat7 Feat8
4.1. táblázat – Paraméterek jellemz i (8 bites felbontás esetén), és jelölésük
A paraméterek egyedi leíró képességének vizsgálata A vizsgálata célja annak meghatározása volt, hogy a paraméterek képesek-e megkülönböztetni a mikrokalcifikációkhoz tartozó képpontokat a kép egyéb pontjaitól. Az eredmények a 4.2. táblázatban találhatóak. A mikrokalcifikációt tartalmazó képek esetén három érték meghatározása történt, az els a paraméterek értékeinek teljes képre vett átlaga, a második a paraméterek értékeinek átlaga azokra a képpontokra, amelyek valamely mikrokalcifikáció részei, a harmadik pedig a paraméterek értékeinek átlaga a kép egyéb pontjaira. A mikrokalcifikációt nem tartalmazó képek esetén csak az els érték meghatározásának van értelme. A táblázatban található értékek az egyes képeken mért értékek átlagai. Az eredmények azt mutatják, hogy a paraméterek értékei jóval nagyobbak a mikrokalcifikációhoz tartozó, mint az egyéb képpontokra (4.2. táblázat 1. és 2. oszlop), vagyis képesek megkülönböztetni a mikrokalcifikációkat az egyéb objektumoktól. Ez megfigyelhet a teljes képekre is, bár az eltérés kisebb (4.2. táblázat 3. és 4. oszlop), aminek oka az, hogy a mikrokalcifikációkat tartalmazó képek jóval több mikrokalcifikációhoz nem tartozó képpontot tartalmaznak, mint ahhoz tartozót. Mikrokalcifikációt tartalmazó képek Paraméter Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 Feat7 Feat8
Mikrokalcifikációhoz tartozó képpontok 39.7017 5.6026 4.7625 16.9731 121.8339 2.8569 * 104 1.0251 * 104 1.9214 * 103
Mikrokalcifikációhoz nem tartozó képpontok 11.5406 2.1959 0.5395 6.8642 47.2531 9.7398 * 103 3.2448 * 103 401.8130
Teljes képek 11.8940 2.2396 0.5891 6.9936 48.1933 9.9756 * 103 3.3404 * 103 422.3251
Mikrokalcifikációt nem tartalmazó teljes képek 5.4668 2.0029 0.5455 6.3119 43.7038 3.8963 * 103 1.4710 * 103 328.8760
4.2. táblázat – Paraméterek értékeinek átlaga
47
A második mérés a paraméterek és a kimeneti képek közötti korreláció meghatározása volt. A kimeneti kép egy bináris kép, amelyen a mikrokalcifikációk pontos helye meg van jelölve. Ez a kép használatos a neurális hálózatok tanításánál is. A mérés célja annak
megállapítása
volt,
hogy
a
paraméterek
mennyire
jellemzik
jól
a
mikrokalcifikációkat. A mérés során nem volt várható nagy korreláció a kimeneti képekkel, hiszen a paraméterek a mikrokalcifikációkhoz nem tartozó képpontokra is adnak valamilyen értékeket, mivel azonban az el állított képek, és az el z mérés alapján arra lehet következtetni, hogy valamilyen mérték korreláció van, így itt az volt a f kérdés, hogy a számított értékek mennyire térnek el az egyes paraméterekre, vagyis melyik paraméter jobb, és melyik rosszabb elméletileg. Az eredmények a 4.3. táblázatban láthatóak. Észrevehet , hogy a Feat1, Feat2, Feat4, Feat5, Feat6 paraméterekre a mérés közel azonos értéket adott, a Feat3 paraméterre valamivel nagyobbat, míg a Feat7, Feat8 paraméterekre valamivel kisebbet, mindazonáltal a különbségek nem kiemelked en nagyok. A korreláció értelmezéséb l következik, hogy az eredmények alapvet en azt mutatják, hogy mennyire lehet „tippelni” a paraméterképekb l a kimeneti képekre. Nyilván akkor lehet jól tippelni, hogyha a paraméterek hasonló értékeket vesznek fel azokra a képpontokra, amelyek mikrokalcifikációkhoz tartoznak, és szintén hasonló de az el z ekt l eltér értékeket vesznek fel azokra a képpontokra, amelyek nem tartoznak mikrokalcifikációkhoz. Az eredmények alapján tehát csak azt mondhatjuk, hogy a paraméterek egymástól eltér mértékben képesek leírni a mikrokalcifikációkat és ez a leíró képesség egyik paraméternél sem túlságosan alacsony (a legjobb eredményhez képest). Paraméter Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 Feat7 Feat8
Korreláció a kimeneti képpel 0.3126 0.2626 0.4015 0.2488 0.2720 0.2676 0.1919 0.1626
4.3. táblázat – Paraméterek és a kimeneti képek közötti korreláció
Összefoglalva az eredményeket, a mérésekb l az derül ki, hogy a paraméterek képesek arra, hogy a mikrokalcifikációhoz tartozó képpontokat elkülönítsék az egyéb 48
képpontoktól, bár a leíró képességük nem egyforma, némelyik jobban, némelyik kevésbe jellemzi a mikrokalcifikációkat illetve az egyéb objektumokat, de ezek a különbségek hasznosak lehetnek az osztályozás szempontjából.
Paraméterek egymáshoz való viszonyának vizsgálata Az el z ekb l látható, hogy a paraméterek képesek jellemezni a mikrokalcifikációkat, bár nem azonos mértékben. A következ mérések célja annak megállapítása, hogy a paraméterek mennyire eltér ek ebben a jellemzésben, illetve nem hasonlítanak-e nagyon egymásra, ami esetleg ronthatja az együttes osztályozási képességüket. A paraméterek egymáshoz való viszonyának megállapítására egy módszert ad a közöttük mérhet korreláció vizsgálata. Két mérés történt, külön a mikrokalcifikációkat tartalmazó és nem tartalmazó képekre. Az eredmények a 4.4. és 4.5. táblázatokban találhatóak. A mérésekb l kiderül, hogy néhány paraméter szorosnak mondható kapcsolatban áll egymással, például a Feat1 paraméter a Feat2, Feat4, Feat5, Feat6 és Feat7 paraméterekkel, míg a Feat2 és Feat8 paraméterek kevéssé korrelálnak egymással és az összes többivel.
Szintén
megfigyelhet , hogy a Feat3 paraméter, vagyis az átlagtól való eltérés, mennyire különbözik az összes többi paramétert l, ami a 4.9.b ábrát összehasonlítva a többi paraméter ábrájával, sejthet
is. A 4.3. táblázatot összevetve a 4.4. illetve 4.5.
táblázattal észrevehet , hogy kisebb leíró er vel bíró Feat7 és Feat8 paraméterek kevésbé korrelálnak a többivel, ami várható is, ellenben a legnagyobb leíró er vel bíró Feat3 paraméter szintén kevéssé korrelál a többi paraméterrel, ami viszont nagyon értékessé teheti az osztályozás szempontjából. Összehasonlítva a 4.4. és 4.5. táblázatot, vagyis a mikrokalcifikációkat tartalmazó és nem tartalmazó képekre számított korrelációt, látható hogy a paraméterek egymáshoz való viszonya nagyrészt ugyanolyan, kivéve a Feat3 paramétert, amelynek korrelációja a paraméterekkel er s csökkenést
mutat.
Ennek
magyarázata
az
lehet,
hogy
a
Feat3
paraméter
mikrokalcifikációkat és nem mikrokalcifikációkat jellemz képessége között nagyobb a különbség, mint a többi paraméter esetén, vagyis a Feat3 paraméter sokkal eltér bb értékeket ad mikrokalcifikációk és nem mikrokalcifikációk esetén, mint a többi paraméter. A többi paraméter esetében a korreláció kicsiny eltérése a két esetben arra mutat, hogy a paraméterek egymástól némileg eltér en jellemzik a mikrokalcifikációk
49
és nem mikrokalcifikációk közötti különbségeket, ami az osztályozás szempontjából jónak számít. Paraméterek közötti korreláció 1. Paraméter Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 Feat7 Feat8
Feat1 1.0000 0.9213 0.2309 0.8942 0.8918 0.9796 0.8217 0.5287
Feat2 0.9213 1.0000 0.2554 0.9814 0.9813 0.8903 0.7401 0.5113
Feat3 0.2309 0.2554 1.0000 0.2404 0.2685 0.1728 0.1243 0.1078
Feat4 0.8942 0.9814 0.2404 1.0000 0.9755 0.8483 0.7141 0.5214
Feat5 0.8918 0.9813 0.2685 0.9755 1.0000 0.8441 0.7007 0.5244
Feat6 0.9796 0.8903 0.1728 0.8483 0.8441 1.0000 0.8331 0.4716
Feat7 0.8217 0.7401 0.1243 0.7141 0.7007 0.8331 1.0000 0.2578
Feat8 0.5287 0.5113 0.1078 0.5214 0.5244 0.4716 0.2578 1.0000
4.4. táblázat – Paraméterek közötti korreláció a mikrokalcifikációt tartalmazó képekre Paraméterek közötti korreláció 2. Paraméter Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 Feat7 Feat8
Feat1 1.0000 0.9331 0.1229 0.9011 0.8876 0.9676 0.7871 0.4768
Feat2 0.9331 1.0000 0.1695 0.9744 0.9771 0.8849 0.7059 0.4608
Feat3 0.1229 0.1695 1.0000 0.1553 0.1861 0.0642 0.0383 0.0531
Feat4 0.9011 0.9744 0.1553 1.0000 0.9670 0.8347 0.6765 0.4771
Feat5 0.8876 0.9771 0.1861 0.9670 1.0000 0.8183 0.6522 0.4680
Feat6 0.9676 0.8849 0.0642 0.8347 0.8183 1.0000 0.8054 0.4131
Feat7 0.7871 0.7059 0.0383 0.6765 0.6522 0.8054 1.0000 0.2082
Feat8 0.4768 0.4608 0.0531 0.4771 0.4680 0.4131 0.2082 1.0000
4.5. táblázat – Paraméterek közötti korreláció a mikrokalcifikációt nem tartalmazó képekre
Az eredményeket összefoglalva, a paraméterek között sok egymáshoz hasonló van, ami az osztályozást nem könnyíti meg, ugyanakkor az eltérések nem túlságosan kicsinyek. A hasonlóságok miatt nem biztosított, hogy az összes paraméter használata adja a legjobb eredményt az osztályozás során, viszont a kicsiny különbségek, például nagy mintahalmaz esetén, ahol nagy az egyes minták közötti átlapolódás, mégis hasznosak lehetnek. Szükség van tehát egy olyan algoritmusra, amely a paraméterek több részhalmazát is megvizsgálja az osztályozási teljesítmény szempontjából. Sok olyan algoritmust dolgoztak ki, amelyek adott körülmények között, és adott feltételek alapján megpróbálják megtalálni a paraméterek legjobb részhalmazát, vagy megadni a paraméterek sorrendjét a leíró képességük szerint [22, 59, 60]. Mivel a rendszer egyes moduljai a hierarchikus feldolgozó egységen belül végzett lényegkiemelés során meghatározott paramétervektorok összetételében – azaz a használt paraméterhalmazban – különböznek egymástól, ezért a fenti kérdés úgy módosul, hogy nem csak a paraméterek legjobb osztályozást nyújtó részhalmazát kell megtalálni, hanem több
50
olyan részhalmazt, amely jó osztályozást tesz lehet vé. A következ
pontban a
paraméter kiválasztási feladat elméleti megfogalmazása után egy olyan, a megoldás során alkalmazott algoritmus ismertetése következik, amely megpróbálja a paraméterek legjobb osztályozást nyújtó részhalmazait kiválasztani.
4.6.3 Paraméterhalmazok kiválasztása A paraméter kiválasztó algoritmusok (Feature Selection Algorithms) lényege, hogy megtalálják egy adott probléma esetén a releváns paramétereket. A relevancia fogalmára több elfogadott definíció is létezik, egy általánosan használt a következ [22]: Legyen Ei, 1 ≤ i ≤ n a teljes X = {x1 ,.., xn } paraméterhalmaz egyes xi paraméterei által
meghatározott tartományok. Definiáljunk az E = E1 × E 2 × ... × E n teret, amelynek egyes pontjait a problémához tartozó X = {x1 ,.., xn } paraméterhalmazokkal leírt példák adják. Legyen T a probléma osztályait tartalmazó tér, továbbá legyen c az egyes példákat a különböz osztályokhoz hozzárendel kritériumfüggvény, vagyis c : E → T . A feladat az adott c függvény szempontjából releváns paraméterek megkeresése. Akkor mondjuk, hogy egy xi ∈ X paraméter releváns az adott c kritériumfüggvényre nézve, ha létezik két olyan A, B példa a példák E terében, hogy A és B csak az xi paraméterben különbözik, és c( A) ≠ c(B ) , ami annyit tesz, hogy létezik két olyan példa, amelyek egyedül az xi paraméter segítségével osztályozhatók. Egy adott probléma szempontjából a paraméterek különböz képpen lehetnek relevánsak, azaz a paraméter kiválasztó algoritmusok célja valójában a paraméterekhez olyan súlyok rendelése, amelyek kifejezik az egyes paraméterek relevanciájának mértékét, azaz a probléma megoldásakor az egyes paramétereket eltér súlyozással használjuk. Ha azonban csak bináris súlyokat engedünk meg, akkor a paraméter kiválasztás
problémája
a
megfelel
paraméter
részhalmazok
kiválasztásaként
értelmezhet . Ez utóbbi megközelítést tükrözi, a paraméter kiválasztás alábbi definíciója is [22]:
51
Legyen
J ( X ′) ,
szeretnénk.
A
J : X ′ ⊆ X → ℜ , egy kritériumfüggvény, amelyet optimalizálni paraméterek
egy
részhalmazának
kiválasztását
a
következ
megfontolások szerint tehetjük meg: a) Válasszuk X ′ = m < n . A cél azon X ′ ⊆ X megtalálása, hogy J ( X ′) maximum legyen. b) Válasszunk egy J 0 értéket, amelynél kisebb J nem lehet. Keressük meg azt a legkisebb méret X ′ ⊆ X halmazt, amelyre J ( X ′) ≥ J 0 c) Találjunk egy kompromisszumot X ′ méretének minimalizálása, és J ( X ′) maximalizálása között. A 2.2 pont értelmében, a neurális hálózat együttesek akkor adják a legjobb teljesítményt, ha egyenként is jó megoldásokat adnak, illetve a hibáikat a problématér különböz részein vétik. A különböz paraméterhalmazok várhatóan nem ugyanúgy jellemzik az adott problémát, ami azt eredményezi, hogy az ket használó neurális modulok is a probléma eltér megoldásait adják. Az egyes algoritmusok a paraméterek kiválasztására különböz
megközelítéseket
alkalmaznak, amelyek a megfelel irodalomból megismerhet k [22, 59, 60]. Az itt bemutatott algoritmus az ún. „branch-and-bound” megközelítés [22, 61] egy változatának tekinthet . A paraméterek teljes keresési tere 2n méret , n számú paraméter esetén, vagyis jelen esetben 28. A teljes keresési tér bejárása tehát a paraméterek számára nézve exponenciális méret , vagyis a megoldás megtalálásához szükséges id a paraméterek számával exponenciálisan n , viszont a legjobb megoldás biztos megtalálása csak a keresési tér teljes bejárásával lehetséges. A különböz paraméter kiválasztó algoritmusok ezért általában nem a legjobb megoldásokat találják meg, hanem ahhoz közelieket. A „branch-and-bound” algoritmusok ezzel szemben bizonyos feltételek teljesülése esetén képesek a keresési tér teljes bejárása nélkül is megtalálni a legjobb megoldást. Ezt úgy érik el, hogy a keresési tér egyes részeit, ahol a feltételek szerint már biztosan nem lehet az addig találtnál jobb megoldás, kihagyják a keresésb l. A legjobb esetben csak a keresési tér egy kis részét szükséges átnézni, a legrosszabb esetben azonban a teljes keresési teret, vagyis teoretikusan a „branch-andbound” algoritmusok exponenciális idej algoritmusok, amelyek képesek az optimális megoldás megtalálására. Az algoritmusok a keresési teret egy körmentes gráfként 52
reprezentálják, vagyis a cél egy keresési fa csomópontjainak vizsgálata. Az egyes csomópontok a probléma egyes példányainak felelnek meg. A megvalósított algoritmus a 4.10. ábrán látható.
nodes_to_process(1) := {full_feature_set}; best_nodes(1) := {}; for level = 1 to max_level for each feature_set in nodes_to_process(level) J := compute_perf(feature_set); if J <= highest of Jbest_nodes(level) insert {feature_set, J} into best_nodes(level); break; for each feature_set in best_nodes nodes_to_process(level + 1) := generate_successors(feature_set); return best_nodes; function generate_successors(feature_set) nodes_to_process := {}; for each feature in feature_set new_feature_set := remove feature from feature_set; insert new_feature_set into nodes_to_process; return nodes_to_process; function compute_perf(feature_set) train neural nets with feature_set; J := performance of the trained neural nets on test set; return J; 4.10. ábra – Paraméterhalmazokat kiválasztó algoritmus
Az algoritmusban a keresési fa egyes csomópontjait a különböz
paraméter
részhalmazok jelentik. Az algoritmus a teljes paraméterkészletb l indul ki (4.10. ábra els sor), vagyis a legels csomópont mind a nyolc paramétert tartalmazza. Az egyes csomópontok kifejtése a szélességi keresés stratégiája [1] alapján történik. Az egyes gyermek csomópontok a szül
csomópont egy paraméterrel kevesebbet tartalmazó
részhalmazai, például ha a teljes paraméterkészletet tartalmazó gyökér csomópontot nézzük, akkor annak gyermekcsomópontjai az eredeti halmaz összes lehetséges, hét paramétert tartalmazó részhalmazai lesznek (generate_successors függvény). Az 53
algoritmus a keresési fa egyes részeit úgy vágja le, hogy minden szinten csak adott számú csomópontot fejt ki, tehát az algoritmusban alapvet feltételezés, hogy ha egy paraméter elhagyása rosszabbá teszi az adott csomópontot, akkor a gyermekei is rosszabbak lesznek. Noha ez a valóságban nem feltétlenül teljesül, mint az eredmények által is igazolt közelítés, elfogadható. A kifejtend
csomópontok kiválasztása egy
kritériumfüggvény szerint történik, amelynek értékeit a hierarchikus neurális hálózatok osztályozási teljesítménye adja (compute_perf függvény). Az algoritmus tehát minden egyes csomópont esetén megtanít egy hierarchikus neurális hálózatot, amelynek teljesítménye adja a csomóponthoz rendelt kritériumértéket. Az algoritmus futási ideje tehát arányos a hálózatok tanításához szükséges id vel. Az algoritmus nem csak az egyes szintenként kifejtend
csomópontok számát
korlátozza, hanem a maximálisan kifejtend mélységet is, vagyis a szintek számát. A nagyon kevés paraméterhalmazt tartalmazó halmazok ugyanis nagy valószín ség szerint nem hoznak javulást a teljesítményben. Mivel ez a paraméter (max_level) tetsz legesen
szabályozható,
így az
algoritmus
nincs
korlátozva
egy adott
mélységhatárra. A konkrét megvalósításban csak a három vagy annál több paramétert tartalmazó halmazok vizsgálata történt, vagyis az üreshalmazt is beleértve maximálisan 256 lehetséges paraméterhalmazból az algoritmus 37-et biztosan nem vizsgálhatott. A nodes_to_process tömbben tárolódnak azok a csomópontok, amelyeknek a teljesítményét egy adott szinten meg kell határozni. Ez a compute_perf függvény segítségével történik, amely a bemenetként kapott paraméter halmaznak megfelel en tanítja a hierarchikus neurális struktúrát, majd meghatározza annak teljesítményét egy teszthalmazon. A tanítási anomáliák miatt az eredményt öt tanítás legjobb értéke adja, ez lesz egyben a csomóponthoz rendelt kritériumérték is. Minél kisebb ez az érték, annál jobb a paraméterhalmaz. Ha az adott szinten az összes csomópont meghatározása megtörtént, akkor az algoritmus a best_nodes tömbben tárolt legjobb csomópontokat a fentiekben már említett módon kifejti, és folytatja a feldolgozást a következ szinten. Mivel megtörténhet, hogy az algoritmus két különböz ágon is eljut ugyanahhoz a paraméterhalmazhoz, ezért a megvalósított algoritmus minden kiszámított csomópont értékét elmenti, amely a kés bbiekben felhasználható, így a számítási id t csökkenti. Az egy szinten kifejtend csomópontok számát a best_nodes tömb mérete határozza meg,
54
amelynek értéke a megvalósítás során három volt. A keresés végeztével a best_nodes tömbben találhatók a szintenként talált legjobb csomópontok. A bemutatott algoritmus az exponenciális tulajdonság ellenére nem feltétlenül garantálja a legjobb megoldás megtalálását, mivel nem ismerjük a kritériumfüggvénynek, vagyis az osztályozás teljesítményének, a viselkedését a paraméterhalmazok összetételének függvényében. Monoton függvény esetén garantálni lehetne az optimális megoldást, nem monoton függvény esetén csak akkor, ha a függvény eltérése a monoton viselkedést l ismert. Ennek következménye, hogy a kifejtend csomópontok száma mindig
el re
meghatározható,
ami
eltérés
a
szokásos
„branch-and-bound”
algoritmusokhoz képest.
4.7 Döntési eljárások A rendszerben két különböz
döntési eljárás van. Az els
a hierarchikus neurális
struktúrák kimenetéhez illesztett döntési fa, a másik pedig a modulok és a rendszer egyik kimenetét adó szavazási eljárás. A döntési eljárások célja annak megállapítása, hogy a rendszer bemenetére kerül képrészlet tartalmaz-e mikrokalcifikációt vagy sem.
4.7.1 Döntési fák A döntési fák [63] feladata az egyes hierarchikus neurális struktúrák kimenete alapján meghatározni azok szavazatát, a bemeneti kép pozitív, vagy negatív voltáról. A döntési fák olyan körmentes gráfok, amelyek kétféle csomópontot tartalmazhatnak, az egyik a teszt, a másik a levél. A tesztekb l vezetnek utak más tesztek, illetve a levelek felé, míg a levelekb l nem vezet út sehova, azaz a levelek az egyes osztályoknak megfelel döntéseket adják. A döntés úgy születik, hogy a kérdéses minta a fa bemenetére kerül, ahol mindig egy teszt van. A teszt a minta valamilyen paraméterére vonatkozik, például ha almákat akarunk osztályozni, akkor egy teszt rákérdezhet az alma színére. A minta a teszt eredménye alapján valamely gyermek csomópontba kerül, ahol vagy újabb teszt van, például az alma mérete, vagy pedig egy levél, amely besorolja az almát, például a piros almák osztályába. A döntési fák építésére, vagyis az egyes csomópontokban alkalmazott megfelel tesztek kiválasztására különböz tanító algoritmusok léteznek [63]. A megoldás során egy ilyen nagyon egyszer algoritmus került megvalósításra, amely a tesztek jóságának eldöntéséhez a [63]-ben ismertetett „információ nyereség” 55
kritériumot alkalmazza. Ez a kritérium azt a T tesztet választja, amely maximalizálja a kiinduló
mintahalmaz
és
az
eredményül
kapott
mintahalmaz
közötti
információkülönbséget: gain(T ) = info(S ) − infoT (S ).
(4.9)
Itt info(S ) az az információ mennyiség, amely az S halmazban található minták osztályának megállapításához szükséges, meghatározása a következ :
info(S ) = −
k j =1
freq(C j , S ) S
log 2
freq(C j , S ) S
,
(4.10)
ahol k az osztályok száma, freq (C j , S ) a Cj osztályba tartozó S-beli minták száma. Az információ mennyiség, amely egy példa hovatartozásának megállapításához szükséges adott T általi partícionálás esetén, a kialakított halmazok becsült információ mennyiségeként definiált:
infoT (S ) =
n i =1
Si S
info (S i )
(4.11)
ahol n a T által definiált partíciók száma, Si pedig az i-k partícióban tartozó mintákat jelöli. A döntési fák kialakítását egy egyszer algoritmus végzi, amely a 4.11. ábrán látható. Az algoritmus egyetlen ciklusból áll, ez alakítja ki a döntési fát. A fa egy adott szintjén több csomópont is lehet, a fa építésének korábbi lépéseit l függ en. Az algoritmus csak azokkal a csomópontokkal foglalkozik, amelyek nem levelek, vagyis még tartalmaznak mind pozitív, mind negatív mintákat. Minden ilyen csomópontra megpróbál keresni egy tesztet, amely maximalizálja az el bbiekben ismertetett (4.9) információ nyereség kritériumot. A kiválasztott tesztet hozzárendeli az adott csomóponthoz, majd meghatározza a teszt eredményeként kapott partíciókat, amelyek egyben a következ szint csomópontjai, vagy levelei lesznek. Amennyiben az eredményül kapott partíciók kisebbek egy el re meghatározott értéknél, úgy az algoritmus az egész csoportot pozitívnak veszi, mivel a túlságosan részletes particionálás a teljesítmény rovására mehet.
56
node_info := compute_info(samples); nodes(1) := samples; while level < max_level and number of unpartitioned node > 0 for each node in nodes(level) if the node is not a leaf test_choosen := choose_test(node, node_info); save test_choosen to nodes(level); nodes(level + 1) := partition node according to test_choosen; node_info := compute_info(node); level := level + 1; function choose_test(node, node_info) max_info_gain := 0; test_choosen := 1; for each test in tests node_partition := partition node according to test; info_gain := node_info - compute_info(node_partition); if info_gain > max_info_gain max_info_gain := info_gain; test_choosen := test; return test_choosen; 4.11. ábra – Döntési fa építését végz algoritmus
A choose_test függvény szolgál a megfelel
teszt kiválasztására. A függvény
végignézi a lehetséges teszteket, kiszámítja az információ nyereséget, majd visszatér az azt maximalizáló teszttel. A döntési fa bemenetére kerül
minták, a hierarchikus
neurális hálózatok kimenetei, így az algoritmusban használt tesztek meghatározása a hierarchikus neurális hálózatok kimenetei alapján történt. A tesztek a következ k lettek: a) Kimeneti kép pontjainak száma adott érték felett b) Kimeneti kép pontjainak maximális értéke c) A legalább két pontból álló régiók száma adott érték felett d) A legalább három pontból álló régiók száma adott érték felett Az a), b) és c) esetekben az a teszt valójában több tesztet tartalmaz, amelyek a választott értékhatároknak megfelel számúak. Ezen kívül minden teszt több értéket is felvehet, vagyis egy teszt ilyen szempontból is több tesztet jelent. Például az a) teszt esetében ez 57
azt jelenti, hogy ha a kimeneti képre az értékhatár 0,5, akkor az ennél nagyobb érték pontok számát vizsgáljuk, ami elméletileg bármilyen érték lehet, maximálisan a kép pontjainak számával megegyez , ha minden pont értéke 0,5 felett van. A pontok száma természetesen képenként változhat, így egy adott értékhatárnál több partíció is lehetséges, attól függ en, hogy a pontok számára milyen értéket vizsgál az algoritmus. A megvalósításban több érték vizsgálata történik, amelyek a lehetséges értéktartomány mintavételezéséb l adódnak. Az algoritmus csak azt a tesztet választja ki, amely amellett,
hogy
az
információ
nyereség
kritériumot
maximalizálja,
olyan
partícionáláshoz vezet, amelynek egyik tagja levél lesz, vagyis csak az egyik osztályba tartozó minták találhatóak benne. A fenti algoritmus segítségével kialakított döntési fa képes a bemenetére kerül mintákat – a hierarchikus neurális hálózatok kimeneteit – osztályozni, vagyis eldönteni, hogy a neurális hálózatok kimenete alapján a rendszer bemenetére kerül képrészlet tartalmaz-e mikrokalcifikációt vagy sem.
4.7.2 Szavazás A moduláris felépítés
rendszerekben általában el fordulnak különböz
szavazási
eljárások [58], amelyek célja az egyes modulok döntéseib l a teljes rendszer döntésének meghatározása. A rendszerben található szavazási eljárások az egyes modulok és a teljes rendszer kimenetének meghatározására szolgálnak. A szavazás során minden szavazó hoz egy döntést, amely lehet 0 és 1, azaz vagy a szavazás kérdése mellett dönt, vagy az ellen. Legyen a rendszerben n szavazó, az egyes szavazók Vi, és Vi : {0,1} . A szavazás eredményének megállapításához adjuk össze az egyes szavazatokat: r =
n i =1
Vi , így r
értéke egy 0 és n közötti érték. A szavazás végeredményének megállapítására három lehet ség (szavazási séma) adódik: a) A szavazás pozitív, ha a többség szavazata 1, vagyis r > n / 2 . b) A szavazás pozitív, ha bármely szavazat 1, vagyis r > 0 . c) A szavazás pozitív, ha mindenki szavazata 1, vagyis r = n . A rendszerben található két szavazási eljárás összekapcsolható egymással, így a lehetséges döntések száma 32, ami ugyanennyi különböz végeredményt jelent. 58
A megfelel szavazási séma kiválasztásához mérlegelni kell az egyes szavazási sémák közti különbségeket. A rendszer szempontjából a hamis pozitív és hamis negatív döntések aránya a kérdéses, ezért az egyes lehet ségek vizsgálatát ebb l a szempontból kell elvégezni. Az a) esetben csak akkor pozitív a szavazás eredménye, ha a többség pozitív döntést hoz, ezért a lehetséges hamis pozitív illetve hamis negatív döntések aránya kiegyenlített, nem tolódik el egyik irányba sem. A b) esetben csak akkor negatív a szavazás eredménye, ha minden szavazat negatív, vagyis az egyik szavazó rossz pozitív döntése a rossz irányba viszi el a szavazást, ezáltal a hamis pozitív döntések aránya megn , viszont a hamis pozitív döntéseké csökken. A c) esetben az el z fordítottja történik, mivel az eredmény csak akkor pozitív, ha minden szavazat pozitív, így egy rossz negatív döntés a szavazás negatív eredményét hozza. A különböz párosítások esetén az egyes lehet ségek hatásai összeadódnak. A 4.6. táblázat mutatja a hamis pozitív és hamis negatív döntések változásának irányát az a)-a) párosításhoz képest. Ez a párosítás az az eset, amikor mindkét szavazás a többségi szavazás elvének megfelel en történik, így a rossz döntéseket tekintve egyensúlyt jelent a hamis pozitív és hamis negatív döntések arányában. A plusz és mínusz jelek a csökkenés illetve növekedés nagyságát jelzik. A különböz
szavazási sémák közül a megvalósított
rendszerben az a)-a) párosítás használata javasolt, azonban kiegészít
eredmények
képzésére a többi párosítás is felhasználható. Párosítás a) - b) a) - c) b) - a) b) - b) b) - c) c) - a) c) - b) c) - c)
Hamis negatív döntés aránya Csökken N + Csökken Csökken -Közel ugyanaz N + Közel ugyanaz N ++
Hamis pozitív döntések aránya N + Csökken -N + N ++ Közel ugyanaz Csökken -Közel ugyanaz Csökken --
4.6. táblázat – Szavazási típusok párosításai és hatásuk a hamis pozitív, és hamis negatív döntések arányára
59
4.8 Az egyedi mikrokalcifikációk helyének meghatározása A második szavazási eljárás pozitív kimenete aktiválja azt a modult, amely az egyedi mikrokalcifikációk detektálását végzi. Az eljárás azoknak a hálózatoknak a kimenetét veszi alapul, amelyek a mikrokalcifikációk detektálásában a legjobbak. Az eljárás az els
lépésben minden modul megfelel
hálózatának kimenetét átlagolja, amelynek
eredménye egy kimeneti kép lesz. Ezután a kimeneti képet egy vágási küszöb alkalmazásával bináris formára hozza, majd az egy illetve kép pontból álló, zajnak tekintett objektumokat eltávolítja a képr l. Az eredményül maradt objektumok a mikrokalcifikációk. Az egyedi mikrokalcifikációk elhelyezkedésének és alakjának meghatározása a kés bbi osztályozás során bír fontossággal, amikor a cél a jó- illetve rosszindulatúság eldöntése. Diagnosztikai értékkel f ként a mikrokalcifikáció csoportok bírnak, amelyek meghatározását az egyedi mikrokalcifikációk felismerésének jósága is befolyásolja. Fontos feladat tehát az egyedi mikrokalcifikációk majd a csoportok meghatározása, így az itt ismertetett eljárás nem tekinthet véglegesnek, amelyeket az elért eredmények is mutatnak, inkább egy kiindulási pontként tekintend a további fejlesztés szempontjából.
60
5 Eredmények A rendszer egyes összetev iben sok olyan paraméter van, amelyek megválasztása befolyásolhatja a rendszer m ködését. Minden paraméter lehetséges értékének megvizsgálása azonban reménytelen feladat, ezért közelítések alkalmazására van szükség. Az elméleti megfontolások és a paraméterek néhány értékére elvégzett vizsgálatok jelzik a változások irányát és nagyságát, ezek alapján pedig meghatározható az adott paraméter jelent sége. Nem feltétlenül a paraméterek optimális beállítása sem, f ként ha esetleg más téren, például a feldolgozás sebességét tekintve el nyösebb lehet egy szuboptimális megoldás. A rendszer felépítését és m ködését meghatározó f bb tényez k és paraméterek, illetve a bemutatásuk helyének felsorolása az 5.1. táblázatban található.
Mintahalmazok
Modulok
Lényegkiemelés Neurális hálózatok Döntési eljárások
képadatbázis összetétele képek paraméterei: térbeli felbontás, méret, színmélység tanító halmazok száma, mérete, összetétele
5.2 pont 5.2 pont 5.2 pont
modulok száma piramis szintjeinek száma hierarchikus neurális hálózatok száma bemeneti képrészletek mérete
5.3 pont 5.3 pont 5.3 pont 5.3 pont
paraméterek száma és jellege, paraméterhalmazok az alkalmazott vizsgálóablak mérete
4.6, 5.3.1 pontok 5.3 pont
az alkalmazott hálózatok típusa, mérete, tanítási algoritmusa bemeneti minták normalizálásának módja tanító halmazok összetétele, minták száma
4.5, 5.3.2 pontok 4.5 pont 5.2 pont
döntési fák tesztjei és egyéb paraméterei szavazási eljárások
4.7.1 pont 4.7.2 pont
5.1. táblázat – A rendszert felépítését és m ködését meghatározó f bb tényez k és paraméterek
A fejezet további részében el ször a végleges rendszer értékelési szempontjainak ismertetése következik az 5.1 pontban, ezt követi a rendszer kialakításához és teszteléséhez használt mintahalmazok bemutatása az 5.2 pontban. A rendszer egyes paramétereinek értékeit meghatározó algoritmusok és mérések eredményeinek, illetve a rendszer egyéb paramétereinek ismertetése következik az 5.3 pontban. Az 5.4 pontban található a megvalósított rendszer tesztelési eredményeinek bemutatása, majd az 5.5 pontban az eredmények rövid összefoglalása zárja a fejezetet.
61
5.1 Értékelési szempontok Egy rendszer értékelése során törekedni kell arra, hogy minél jobban becsülhet legyen a rendszer valós körülmények között várható teljesítménye, és hogy az értékelés összehasonlítható legyen más rendszerekkel. Az els szempont megköveteli, hogy a tesztkörnyezet a valós körülményeket minél jobban közelítse, ami sok esetben nehezen teljesíthet , hiszen nem láthatóak el re pontosan azok az események, amelyek a rendszer m ködését befolyásolhatják, vagy ha el re láthatóak is nem lehet a hatásukat pontosan felmérni. Ez természetesen nem csak a rendszer tesztelésekor, hanem kialakításakor is igaz. Követelmény az elvégzett mérésekkel szemben, hogy a rendszert minél részletesebben, minden részére kiterjed en vizsgálják, hogy annak er sségei és gyengeségei jól felmérhet ek legyenek. A különböz
rendszerek eredményeinek
összehasonlíthatósága nagymértékben attól függ, hogy a mérési környezet, a mérések folyamata mennyire reprodukálható. A következ kben a mikrokalcifikációk detektálását végz
rendszerek értékelésével
kapcsolatos problémák felvázolása, és néhány javasolt mérés ismertetése következik.
5.1.1 Mintahalmazok A valós körülményeket közelít tesztkörnyezet létrehozása ebben az esetben a rendszer kialakításánál és tesztelésénél alkalmazott mintahalmazok megfelel kialakítását jelzi. Van azonban néhány olyan probléma, amely ezt megnehezíti. Gyakorlatilag lehetetlen garantálni, hogy a mintahalmazok összetétele tükrözze a probléma valós statisztikai jellemz it, azaz a különböz
szövettípusok gyakoriságát, a különböz
típusú
mikrokalcifikációk el fordulási arányait, illetve a felvételek készítése során a röntgenés digitalizáló berendezésekben vagy a készítés módjában megjelen különbségeket. A rendszerek ezekre a problémákra többé-kevésbé felkészíthet ek, azonban így is sok probléma adódik a fentiekb l. Nagyobb problémát jelent, hogy a készít k számára rendszerint néhány publikus képadatbázis érhet el, amelyek viszonylag kevés és nem feltétlenül jó min ség képet tartalmaznak.
62
A megbízható értékeléshez tehát figyelembe kell venni a rendelkezésre álló mintahalmaz jellemz it, az összehasonlíthatóság pedig megkívánja, a felhasznált mintahalmazok minél pontosabb, reprodukálható ismertetését.
5.1.2 Mérések A mikrokalcifikációk detektálására alkalmas módszerek teljesítményének általános elemzésére alkalmas a hibásan felismert képrészletek arányának mérése. A hibás felismerések kép csoportra bonthatóak, a hibás pozitív felismerések a pozitívnak értékelt, de valójában negatív képeket jelentik, a hibás negatív felismerések pedig a negatívnak értékelt, de valóján pozitív képeket. Az els javasolt mérés tehát: 1) Képek/képrészletek hibás pozitív és hibás negatív felismeréseinek aránya További mérések javasoltak az eljárások teljesítményének meghatározására az egyedi mikrokalcifikációk felismerése szempontjából. Az egyes mérések az algoritmusok más és más jellemz ire kérdeznek rá. A javasolt mérések: 2) Hamis pozitív és hamis negatív mikrokalcifikációk aránya a mintahalmaz mikrokalcifikációt tartalmazó képei esetén. 3) Hamis pozitív és hamis negatív mikrokalcifikációhoz tartozó képpontok aránya a mintahalmaz mikrokalcifikációt tartalmazó képei esetén. 4) A felismert objektumok és képpontok átlagos száma a mintahalmazon, külön a mintahalmaz mikrokalcifikációt tartalmazó és azokat nem tartalmazó képeire Az a) mérés célja annak kiderítése, hogy a küszöbérték függvényében az eljárás a mikrokalcifikációk mekkora részét képes megtalálni, és ekkor mekkora a hibás pozitív eredmények aránya. A b) mérés célja a felismert mikrokalcifikációk alakh ségének megállapítása, vagyis az eljárás mennyire képes a mikrokalcifikációk pontos alakjának felismerésére. Ezek a mérések az eljárás által a további feldolgozáshoz szolgáltatott adatok min ségét vizsgálják. A c) mérés segítségével az eljárás azon képessége vizsgálható,
hogy
az
egyes
küszöbértékekre
milyen
mértékben
képes
a
mikrokalcifikációkat és az egyéb objektumokat megkülönböztetni.
63
5.1.3 Az eredmények ábrázolása Az eredmények összehasonlíthatósága szempontjából hasznos lehet egy széles körben elfogadott és az összehasonlítást gyorsan és egyszer en lehet vé tev ábrázolási mód. A diagnosztikai gyakorlatban használatos ROC (Receiver Operating Characteristic) analízis egy ilyen módszer, amelyet a diagnosztikai eljárások fejleszt i is átvettek. Az ROC görbe egy módszer adott küszöbérték szempontjából mérhet érzékenységét adja meg a fajlagosság függvényében. Az érzékenység ebben a megközelítésben a hamis negatív döntésekkel, vagyis a helytelenül negatívnak min sített, de valójában pozitív esetek számával van kapcsolatban, míg a fajlagosság a hamis pozitív döntésekkel. Az eljárások egy részénél egyértelm en meghatározhatók olyan küszöbértékek, amelyek alapvet en befolyásolják a hibás pozitív és hibás negatív döntések arányát. Az ROC görbe, vagy más néven döntési karakterisztika felrajzolása a küszöbértékekre meghatározott hamis negatív és hamis pozitív értékpárokkal lehetséges.
5.2 A használt képadatbázis, a kialakított mintahalmazok A rendszer felépítésénél és tesztelésénél használt képrészletek a MIAS [64] képadatbázis képeib l származnak. A képek jellemz i a 8 bites felbontás (256 szürkeségi árnyalat) és 1024x1024 pixel méret. Az adatbázis 322 képet tartalmaz, amelyek
közül
az
adatbázishoz
mellékelt
diagnózis
alapján
25
tartalmaz
mikrokalcifikációt (2 esetben nem egyértelm en meghatározható). Mivel a rendszer nem teljes képekkel foglalkozik, hanem feltételezi egy a kép gyanús részleteit meghatározó el feldolgozó eljárás meglétét, ezért a rendszer paramétereinek meghatározásához illetve a teszteléshez a teljes képekb l kivágott 430 darab, 64x64 pixel méret képrészletb l álló mintahalmaz szolgált. A teljes mintahalmaz képei közül 58 tartalmazott mikrokalcifikációt. A
kialakított mintahalmazok jellemz inek
összefoglalása az 5.2. táblázatban található. A neurális hálózatok tanításához három különböz (T1, T2, T3), de néhol egymást átfed tanító halmaz szolgált, amelyekhez három validációs halmaz is készült. Egy negyedik (T4), az el z ekhez képes jóval kevesebb számú mintát tartalmazó tanító és hozzá tartozó validációs halmaz is készült, néhány algoritmus gyorsabb futásának eléréséhez. A döntési fák tanítására egy az összes tanító mintát és néhány egyéb mintát
64
tartalmazó halmaz (Dh) szolgált, amely néhány esetben a teszthalmaz szerepét is betöltötte. A rendszer paramétereinek beállítására kizárólag a Dh halmaz, a tesztelésre pedig a maradék 330 képrészletb l álló Th halmaz szolgált.
Tth T1 V1 T2 V2 T3 V3 T4 V4
Képrészletek száma 430 25 25 35 35 35 35 10 12
Mikrokalcifikációt tartalmaz 58 (13,5%) 25 25 25 (71,4%) 25 (71,4%) 15 (42,9%) 15 (42,9%) 5 6
Mikrokalcifikációt nem tartalmaz 372 (86,5%) 0 0 10 (28,6%) 10 (28,6%) 20 (57,1%) 20 (57,1%) 5 6
Dh
100
26
74
Th
330
32 (9,7%)
298 (90,3%)
Mintahalmaz megnevezése
Jelölés
Teljes mintahalmaz Tanító halmaz 1. Validációs halmaz 1. Tanító halmaz 2. Validációs halmaz 2. Tanító halmaz 3. Validációs halmaz 3. Tanító halmaz 4. Validációs halmaz 4. Rendszerparaméterek beállításához használt halmaz Teszt halmaz
5.2. táblázat – Az egyes mintahalmazok jellemz i
A mintahalmazok összeállítása nem teljesen véletlenszer en történt, a lehet ségekhez képes megpróbálta tükrözni a teljes mintahalmaz statisztikai jellemz it, vagyis a különböz
szövettípusokat, valamint a nehezebben és könnyebben felismerhet
mikrokalcifikációk közül a kiválasztásnál a nehezebben felismerhet ek részesültek el nyben. Elegend adat hiányában azonban a választás némileg intuitív módon történt, így tekinthet véletlenszer nek is. A rendszer szempontjából nem csak az egyes képrészletek számítanak mintáknak, hanem az egyes képpontok is, mivel a tényleges feldolgozás képpontonként történik. A neurális hálózatok szempontjából így egy kép összesen 4096 feldolgozandó mintapontot tartalmaz, ami azt jelenti, hogy a hálózat szempontjából a tanuláshoz meglehet sen nagy számú minta áll rendelkezésre, még ha a képek száma alapján nem is t nik úgy. A tanító mintahalmazok esetében ez számszer leg azt jelenti, hogy a hálózatoknak 105 nagyságrend mintapont áll rendelkezésükre a tanuláshoz. Az 5.1 pontban meghatározott elvek szerint az összehasonlítható értékelés megköveteli a mintahalmazok pontos összetételének ismertetését, ami az M1 mellékletben található.
65
5.3 A megvalósított rendszer paraméterei A rendszer 5.1. táblázatban felsorolt paraméterek közül néhánynak a meghatározása az el zetes vizsgálatok alapján történt, a pontos mérések még nem történtek meg. Ezek a paraméterek és az értékeik az 5.3. táblázatban találhatóak. Paraméter modulok száma hierarchikus neurális hálózatok száma piramis szintjeinek száma bemeneti képrészletek mérete lényegkiemelésnél alkalmazott vizsgálóablak mérete
Érték 5 3 3 64x64 pixel 3x3 pixel
5.3. táblázat – A megvalósított rendszer paraméterei
5.3.1 A lényegkiemelés során alkalmazott paraméterhalmazok meghatározása A
4.6.3
pontban
ismertetett
paraméterhalmaz
kiválasztó
algoritmusban
a
kritériumfüggvényt a neurális hálózatok teljesítménye jelenti. Az algoritmus minden csomópont vizsgálata során megtanít, majd tesztel egy hálózatot. Két különböz futtatás történt az els
esetben a T3, a második esetben pedig a T4 tanító halmaz
felhasználásával. A hálózatok teljesítményének meghatározása mindkét esetben a Dh mintahalmaz mikrokalcifikációkat tartalmazó részén történt. A nagyobb T3 halmaz esetén kb. 9-szer olyan hosszú id t vett igényben az algoritmus futása, mint a T4 halmaz esetén. A legjobb öt paraméterhalmaz eredményei a két különböz futtatás esetére az 5.4. illetve 5.5. táblázatban láthatóak. Paraméterhalmaz variancia, szórás, átlagtól való eltérés, maximum-minimum különbsége, blokk aktivitás, gradiens irány, gradiens -45° irány, gradiens -90° irány variancia, szórás, átlagtól való eltérés, maximum-minimum különbsége, blokk aktivitás, gradiens -45° irány szórás, átlagtól való eltérés, maximum-minimum különbsége, blokk aktivitás szórás, átlagtól való eltérés, gradiens -45° irány, gradiens -90° irány szórás, átlagtól való eltérés, maximum-minimum különbsége, gradiens -45° irány
Hiba a teszthalmazon 0.0075754 0.0076111 0.0074893 0.007536 0.0075506
5.4. táblázat – A paraméterhalmazokat kiválasztó algoritmus legjobb öt eredménye a T3 tanító halmazzal végzett futtatás esetén
66
Paraméterhalmaz variancia, szórás, átlagtól való eltérés, maximum-minimum különbsége, gradiens irány, gradiens -45° irány átlagtól való eltérés, maximum-minimum különbsége, blokk aktivitás, gradiens 45° irány, gradiens -90° irány variancia, átlagtól való eltérés, maximum-minimum különbsége, gradiens -45° irány, gradiens -90° irány variancia, átlagtól való eltérés, maximum-minimum különbsége, gradiens -45° irány variancia, átlagtól való eltérés, gradiens -90° irány
Hiba a teszthalmazon 0.0073144 0.007628 0.0077451 0.0076954 0.0077912
5.5. táblázat – A paraméterhalmazokat kiválasztó algoritmus legjobb öt eredménye a T4 tanítóhalmazzal végzett futtatás esetén
Az algoritmus mindkét esetben 71 csomópontot fejtett ki a lehetséges 219-b l. Mivel mindkét esetben ugyanaz a halmaz szolgált a tesztelésre, és az 5.4. táblázat eredményei átlagosan jobbak, ezért az egyes modulokban a lényegkiemelés során használt paraméterhalmazokat az 5.4. táblázat paraméterhalmazai adták.
5.3.2 A hierarchikus neurális hálózatok méretének meghatározása A megfelel elméleti eredmények hiánya miatt a hálózatok méretének megállapítása a rendelkezésre álló tapasztalati eredményeken és az elvégzett méréseken alapult. Jelen esetben a hálózatoknak a nagy méret , viszonylag sok ellentmondó mintát tartalmazó tanító halmazzal, és f ként a feldolgozás magasabb szintjein a viszonylag sok bemenettel kell megküzdeniük, ezért várhatóan nagyobb neuronszám is szükséges lehet. A mérések megválasztásánál a rejtett rétegbeli neuronszámok a fentiek miatt viszonylag széles skálán mozogtak, a mérések 5, 10, 15, 20 illetve 25 rejtett rétegbeli neuronnal történtek. A lehetséges konfigurációk száma a háromszint
hierarchikus felépítést
tekintve 53. A hálózatok tanítása a sebesség miatt a T4 mintahalmazzal, a bemeneti adatok el állítása az el z pontban kiválasztott legjobb paraméterhalmazzal, a tesztelés pedig a Dh halmazzal történt. Az egyes hálózatok eredményét öt tanítás legjobb eredménye adta. Az elvégzett mérések alapján a tíz legjobban teljesít hálózati konfiguráció látható az 5.6. táblázatban. A táblázat három kategóriát mutat, az els a teljes mintahalmaz, a második a mintahalmaz mikrokalcifikációt tartalmazó képei, míg a harmadik a mikrokalcifikációt nem tartalmazó képek. A megadott hálózati konfigurációk els értéke a feldolgozás legalsó szintjén található neurális hálózat neuronjainak száma, míg az utolsó érték a legfels szinten található hálózaté. 67
Teljes Dh mintahalmaz Hiba 0,0025945 0,0026396 0,0026477 0,0026595 0,0026628 0,0026668 0,0026757 0,0026906 0,0026929 0,0027006
Konfiguráció [5 25 5] [15 15 25] [20 25 15] [5 20 20] [10 10 20] [15 25 25] [15 20 15] [5 20 5] [20 20 25] [25 25 20]
Dh halmaz mikrokalcifikációt nem tartalmazó mintái Hiba 0,00028735 0,00031307 0,00035233 0,00036466 0,00037194 0,00038086 0,00038845 0,00039622 0,00039684 0,00040465
Konfiguráció [20 10 15] [10 25 10] [25 5 5] [5 15 20] [15 10 10] [15 25 25] [5 15 15] [20 5 25] [10 20 20] [15 20 20]
Dh halmaz mikrokalcifikációt tartalmazó mintái Hiba 0,0074125 0,0075231 0,0075482 0,0075946 0,007614 0,0076211 0,0076614 0,0076762 0,0077045 0,0077362
Konfiguráció [15 15 20] [20 20 20] [15 20 15] [15 25 20] [15 5 20] [25 15 5] [25 20 5] [20 25 10] [25 5 10] [20 20 15]
5.6. táblázat – A mérések 10 legjobb eredménye
Az eredményekb l csak igen korlátozottan lehet következtetéseket levonni. Az tisztán látható, hogy a teljes halmazon vett jó eredmények nem jelentik automatikusan, hogy a mikrokalcifikációt tartalmazó illetve nem tartalmazó képek esetén ugyanolyan jól teljesít a hálózat, s t az a jellemz , hogy az egy esetben jól teljesít hálózatok a másik esetben nem teljesítenek jól. Szintén észrevehet , hogy a nagyobb méret hálózatok általában jobban teljesítenek. Az igen eltér eredmények arra is utalhatnak, hogy az öt különböz
tanítás
kevés
volt
ahhoz,
hogy
a
tanítás
során
el forduló
teljesítményingadozásokat teljesen kiküszöbölje, így nem minden hálózat tudta a legjobb eredményeit hozni. A rendelkezésre álló eredmények alapján a választás a [15 20 15] konfigurációra esett, amely egyaránt szerepel a teljes halmazon, illetve a mikrokalcifikációt tartalmazó mintákon legjobban teljesített hálózatok között.
5.3.3 A végleges neurális hálózatok Minden modul hierarchikus feldolgozást végz egységében három hierarchikus neurális hálózat található. A neurális hálózatok közti különbséget a tanításkor használt tanítóhalmazok közti különbségek jelentik. A használt tanítóhalmazok a T1 halmaz, amely csak mikrokalcifikációt tartalmazó képekb l áll, a T2 halmaz, amelyben nagyobb a mikrokalcifikációt tartalmazó képek aránya, és a T3 halmazban, amelyben a mikrokalcifikációt nem tartalmazó képek aránya a nagyobb.
68
A modulok különböznek a lényegkiemelés során alkalmazott paraméterhalmazok összetételében, amelyek a neurális hálózatok bemeneteit adják. A neurális hálózatok tehát modulonként is eltérnek, azaz az 5 modul mindegyikében 3 neurális hálózat tanítása szükséges, ami összesen 15 hierarchikus neurális hálózatot eredményez. A neurális hálózatok rejtett rétegeinek neuronszáma az el z pontbeli eredményeknek megfelel en [15 20 15] volt. A megtanított hierarchikus neurális struktúráknak a Dh halmazon mért eredményeit mutatja az 5.7. táblázat. Az eredmények öt tanítás legjobb eredményei. Láthatóak a különböz
mintahalmazokkal tanított hálózatok közötti
teljesítménybeli különbségek, amelyek f ként a mikrokalcifikációt nem tartalmazó képek esetén jelent sek.
Teljes Dh mintahalmaz Modul 1 Modul 2 Modul 3 Modul 4 Modul 5
T1 0,0098 0,0092 0,0091 0,0091 0,0097
T2 0,0027 0,0029 0,0028 0,0028 0,0029
T3 0,0023 0,0023 0,0023 0,0022 0,0023
Dh halmaz mikrokalcifikációt tartalmazó mintái T1 T2 T3 0,0052 0,0063 0,0075 0,0056 0,0064 0,0075 0,0059 0,0061 0,0077 0,0053 0,0069 0,0073 0,0055 0,0066 0,0076
Dh halmaz mikrokalcifikációt nem tartalmazó mintái T1 T2 T3 0,0120 0,0015 0,00042 0,0105 0,0017 0,00044 0,0102 0,0016 0,00045 0,0104 0,0014 0,00044 0,0112 0,0016 0,00043
5.7. táblázat – A végleges hierarchikus neurális hálózatok eredményei
5.3.4 Döntési fák A döntési fák kialakítása a 4.7.1 pontban bemutatott algoritmus segítségével történt. A fák építéséhez használt tanítóhalmaz a Dh halmaz volt. A kialakított döntési fák a tanítási algoritmus tulajdonságai miatt a tanítóhalmazt nem tanulták meg hibátlanul, noha erre képesek lennének. Az egyes modulokban alkalmazott döntési fák a Dh tanító halmazon elért eredményeit az 5.8. táblázat mutatja. A T1, T2, T3 jelzés oszlopok a modulokban található különböz tanítású hierarchikus neurális hálózatokat jelzik.
Modul 1 Modul 2 Modul 3 Modul 4 Modul 5
T1 2 2 1 0 2
Összes hiba T2 5 0 1 0 0
T3 7 3 0 0 0
T1 2 2 1 0 2
Hamis pozitív T2 5 0 1 0 0
T3 7 3 0 0 0
T1 0 0 0 0 0
Hamis negatív T2 0 0 0 0 0
T3 0 0 0 0 0
5.8. táblázat – Döntési fák teljesítménye a Dh tanító halmazon
69
A tanító halmazon vétett hibák az algoritmus azon viselkedésének tulajdoníthatóak, hogy egy csomópont particionálása csak abban az esetben történik meg, ha egy el re megadott értéknél nagyobb a particionálandó halmaz mérete, továbbá felosztható úgy, hogy legalább az egyik eredményül kapott halmaz levél legyen, vagyis csak pozitív, vagy csak negatív mintákat tartalmazzon. Ha a feltételek nem teljesülnek, akkor az els esetben az algoritmus pozitívnak min síti a halmazt, a második esetben pedig pozitívnak vagy negatívnak attól függ en, hogy melyik típusú mintából tartalmaz többet. Ez a megoldás a hamis negatív döntések arányát csökkenti, a hamis pozitív döntésekét pedig növeli.
5.4 A rendszer eredményei 5.4.1 Mikrokalcifikációt tartalmazó képek felismerése Annak eldöntése az egyes képekr l, hogy tartalmaznak-e vagy sem mikrokalcifikációt, a negatív felvételek kisz rése szempontjából fontos, mivel ez mentesítheti az orvost a negatív képek elemzésének felesleges munkája alól. A rendszerben három helyen történik döntés az adott bemenet pozitív, vagy negatív voltáról, a végs döntést pedig ezen döntések kombinációja adja. Az els
döntés a hierarchikus neurális hálózatok
kimenetére illesztett döntési fáktól származik, a második az egyes modulok kimenetét adó szavazási eljárástól, a harmadik pedig a teljes rendszer kimenetét adó szavazási eljárástól. A hamis pozitív és hamis negatív minták arányát a döntési fák paraméterei és az egyes szavazási eljárások is befolyásolják, így nem határozható meg egyértelm en egy olyan küszöbérték, amellyel a döntési karakterisztika (ROC) felrajzolható.
Döntési fák teljesítménye A döntési fák Th teszthalmazra adott eredményei az 5.9. táblázatban láthatóak. A teszthalmazon, ahogyan várható, a hibák aránya megn
(ld. 5.8. táblázat), a
legmagasabb hibázó mintegy 20%-os hibát vét a teljes halmazon, a legmagasabb hamis pozitív hibaarány szintén 20% körüli, hamis negatív hibák esetén ez kb. 3%. Észrevehet még az eredményekb l, hogy nagy eltérések vannak az egyes döntési fák eredményei között, ami arra utal, hogy a hálózatok a vártnak megfelel en egymástól eltér eredményeket adnak. Az eltérés csak a neurális hálózatok miatt lehetséges, a döntési fákat kialakító algoritmus ugyanis azonos bemenetek esetén azonos 70
eredményekre vezet. A hibás felismerések számában eltér túlságosan nagy eltérések azonban azt vetítik el re, hogy az egyes modulok teljesítménye a döntési fákhoz képest nem fog jelent sen n ni.
Modul 1 Modul 2 Modul 3 Modul 4 Modul 5
T1 31 32 19 23 45
Összes hiba T2 46 20 25 27 37
T3 65 51 57 39 34
T1 28 27 19 17 41
Hamis pozitív T2 40 12 20 23 34
T3 62 41 53 35 27
T1 3 5 0 6 4
Hamis negatív T2 6 8 5 4 3
T3 3 10 4 4 7
5.9. táblázat – Döntési fák teljesítménye a Th teszt halmazon
Modulok teljesítménye A modulok teljesítményét az alkalmazott szavazási séma befolyásolja. A szavazási sémák a 4.7.2 pontnak megfelel en a következ k: a) A szavazás pozitív, ha a többség szavazata 1. b) A szavazás pozitív, ha bármely szavazat 1. c) A szavazás pozitív, ha mindenki szavazata 1. A megbízhatóság miatt a rendszer az a) sémát használja, azonban a többi sémával kapott eredmény is felhasználható lehet. Az egyes modulok eredményeit mutatja az 5.10. táblázat a különböz szavazási sémák és a Th mintahalmaz esetére.
Modul 1 Modul 2 Modul 3 Modul 4 Modul 5
a) 38 28 27 20 28
Összes hiba b) 87 58 65 53 73
c) 17 17 9 16 15
a) 36 22 23 17 26
Hamis pozitív b) 86 56 65 52 71
c) 8 2 4 6 5
a) 2 6 4 3 2
Hamis negatív b) 1 2 0 1 2
c) 9 15 5 10 10
5.10. táblázat – A modulok eredményei a különböz szavazási sémák esetére
A vártnak megfelel en az egyes modulok eredménye közel hasonlóak az egyes döntési fák eredményeihez, viszont az egyes modulok hibás felismeréseinek száma közötti különbségek csökkentek, vagyis az egyes modulok között feltételezett eltérések eredményeképpen a rendszer eredménye jobb lesz, az egyes modulok eredményeinél.
71
A teljes rendszer eredményei A teljes rendszer Th mintahalmazon számított eredményeit mutatja az 5.11. táblázat a szavazási sémák lehetséges kombinációira. Az els jelölésnek megfelel szavazási séma szerint történt a modulok kimenetének, és a második szavazási séma szerint a teljes rendszer kimenetének megállapítása. Szavazási séma párosítások a) – a) a) – b) a) – c) b) – a) b) – b) b) – c) c) – a) c) – b) c) – c)
Összes hiba
Hamis pozitív
Hamis negatív
18 60 15 60 130 24 10 19 19
16 59 7 59 130 22 2 15 0
2 1 8 1 0 2 8 4 19
5.11. táblázat – A teljes rendszer eredményei a szavazási sémák összes lehetséges párosítása esetén
Az eredmények alapján a legjobb döntési fa 19 esetben hibázott, a legjobb modul 20 esetben, míg a rendszer legjobb eredménye 10 hiba volt. Ha azonban megnézzük a hamis pozitív, illetve hamis negatív felismerések számát ezekben az esetekben, akkor azt tapasztalhatjuk, hogy a legjobb döntési fa esetén nincs hamis negatív felismerés, a legjobb modulnál 3 hamis negatív eredmény fordul el , míg a rendszer legjobb eredményénél 8 a hamis negatív felismerések száma, ami a mikrokalcifikációt tartalmazó minták számát tekintve már 25%. A teljes rendszer esetében találhatunk ilyen szempontból kedvez bb eredményt is, amelynél a hibás felismerések száma 18, de abból csak 2 hamis negatív. Ezt az eredményt az a)-a) szavazási séma párosítás adja, ahogyan várható volt. A rendszer ezt a szavazási sémát használja els dlegesen, amely választást az eredmények is alátámasztanak. Összefoglalva az eredményeket a moduláris felépítés nem hoz nagy javulást a rendszer teljesítményében, néhány dolog azonban ennek ellenére a moduláris felépítés mellett szólnak. A modulok és így a teljes rendszer eredményeinek kialakításában nagy szerepet játszanak az egyes döntési fák, amelyek nagyon eltér eredményeket adnak a hibás felismerések számában a különböz neurális struktúrákra, különösen a T3 tanító halmazt tekintve. A döntési fát létrehozó algoritmus javítása tehát javíthat az egyes eredményeken, és így a modulok illetve a teljes rendszer eredményein is. A rendszer
72
egyes részeinek eltérései f ként a nehezen osztályozható minták esetén t nnek ki, ezért a moduláris felépítés ezen minták esetén lehet különösen hatékony. További méréseket igényel annak megállapítása, hogy a rendszer egyes részei jelenleg mely mintákra adnak eltér eredményeket, illetve hogyan teljesít a rendszer egy célzottan nehéz eseteket tartalmazó mintahalmazon. Figyelembe véve, hogy egy 1024x1024 pixel méret kép 256 darab 64x64-es képrészletre bontható fel, továbbá feltételezve, hogy az el feldolgozás végz algoritmus ennek csak 5%-át választja ki, mint gyanús terület, akkor képenként 12 képrészlet elemzésével lehet számolni, ami a 322 képet tartalmazó teljes adatbázisra már közel 4000 képrészlet elemzését jelenti. A tesztekhez használt adatbázis mérete ehhez képes csekélynek mondható a maga 330 mintájával. Ez azt jelenti, hogy feltételezve a rendszer egyes részeinek teljesítményei közötti különbségek állandóságát, a moduláris felépítés el nyei igazán a hosszú m ködés során mutatkozhatnak meg.
5.4.2 Egyedi mikrokalcifikációk felismerése Az egyedi mikrokalcifikációk felismerése a feldolgozás kés bbi fázisai miatt fontos, amikor a kérdés már a mikrokalcifikációk osztályozása, vagyis azok jó- illetve rosszindulatú voltának megállapítása. A 4.8 pontban ismertetett, az egyedi mikrokalcifikációk felismerését végz eljárás jelenlegi formájában nagyon egyszer így az eredményei várhatóan elmaradnak a kívánatostól, azonban az eredmények alapján felmérhet , hogy milyen mérték és típusú fejlesztésekre lehet szükség. A különböz
mérések az 5.1.3 pontban leírt mérésekkel egyeznek meg. Ennek
megfelel en az els
két mérés az egyes mikrokalcifikációk és az azokat alkotó
képpontok felismerésére vonatkozik, a harmadik mérés a felismert képpontok és objektumok átlagos számának alakulását mutatja külön a mikrokalcifikációt tartalmazó és nem tartalmazó képekre. Az els mérés esetén lehetséges az ROC görbék felrajzolása, minthogy az eredmények a neurális hálózatok kimenetén alkalmazott küszöbérték függvényei. A vizsgált küszöbértékek a következ ek voltak: (0,03; 0.05; 0.1; 0.2; 0.3; 0.4; 0.5; 0.6; 0.7; 0.8; 0.9). Az 5.2. ábra mutatja az egyedi mikrokalcifikációk felismerésének döntési karakterisztikáját
a
fenti
küszöbértékek
függvényében.
Az
5.3.
ábra
a
mikrokalcifikációkat alkotó képpontok hasonló eredményeit mutatja. 73
0.8
1 - Hamis negatív felismerések aránya
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3 0.4 Hamis pozitív felismerések aránya
0.5
0.6
0.7
5.2. ábra – Mikrokalcifikációk felismerése
0.9
0.8
1 - Hamis negatív felismerések aránya
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.2
0.4
0.6
0.8 1 1.2 Hamis pozitív felismerések aránya
1.4
1.6
1.8
2
5.3. ábra – Képpontok felismerése
74
Az értékek kiszámítása kizárólag a mikrokalcifikációt tartalmazó képekre történt meg. A mikrokalcifikációt nem tartalmazó képek hozzáadásával a hamis pozitív felismerések aránya mindkét esetben n ne, míg a hamis negatív felismeréseké változatlan maradna, így mind a két görbe laposabb lenne. A második mérés eredményeit, vagyis a felismert objektumok és képpontok átlagának alakulását mutatja az 5.12. táblázat külön a mikrokalcifikációt tartalmazó és nem tartalmazó képek esetére a küszöbértékek függvényében.
Küszöbérték 0,03 0,05 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
Felismert képpontok átlagos száma Mikrokalcifikációt Mikrokalcifikációt nem tartalmazó tartalmazó képek képek 296,4892 137,2759 198,9435 99,37931 112,0376 64,31034 58,03226 41,06897 36,26613 31,51724 24,3414 24,63793 16,37634 20,18966 10,53763 16,93103 6,379032 13,72414 3,255376 9,517241 1,016129 4,862069
Felismert objektumok átlagos száma Mikrokalcifikációt Mikrokalcifikációt nem tartalmazó tartalmazó képek képek 40,98925 15,27586 31,27151 12,44828 20,06989 9 11,41398 6,741379 7,537634 5,568966 5,290323 4,568966 3,653226 3,775862 2,357527 3,275862 1,475806 2,672414 0,771505 1,896552 0,255376 1,051724
5.12. táblázat – Felismert objektumok és képpontok átlagos száma
Az eredmények alapján megállapítható, hogy a kisebb küszöbértékekre az eljárás jóval több képpontot illetve objektumot talál a mikrokalcifikációt nem tartalmazó képek esetén, mint azokat tartalmazó képek esetén, ami azt mutatja, hogy a neurális rendszerek képesek
megtanulni
a
mikrokalcifikációkat,
azonban
sok
a
hasonlóság
a
mikrokalcifikációk és nem mikrokalcifikációk felismerése között.
75
5.5 Az eredmények összefoglalása A rendszer a mikrokalcifikációkat tartalmazó képek 5,45%-t osztályozta rosszul, amelyb l a teljes mintahalmazhoz képes 0,6% a hamis negatív és 4,85% a hamis pozitív felismerések aránya. A mikrokalcifikációt tartalmazó minták számát tekintve a hamis negatív felismerések aránya 6.25%, ami ugyan nagyobb, de még mindig jó eredménynek
tekinthet .
A
rendszer
tehát
nagy
biztonsággal
képes
a
mikrokalcifikációkat tartalmazó és az egyéb minták megkülönböztetésére, azonban az egyedi mikrokalcifikációk felismerése még nem éri el a kívánt mértéket. A moduláris felépítés indokoltságát az eredmények nem igazolták egyértelm en, de nem is cáfolták meg. Hosszú távon várhatóan el nyösebb az alkalmazása, azonban ezt további méréseknek kell alátámasztaniuk.
76
6 Összefoglalás Az el z fejezetekben egy mikrokalcifikációk detektálását végz moduláris felépítés , hierarchikus feldolgozást végz
neurális rendszer és annak eredményei kerültek
bemutatásra. A moduláris felépítés biztosítja a rendszer robusztusságát, ahogyan az eredményekb l is látható. A multirezolúciós feldolgozást és a neurális hálózatok alkalmazását az emberi feldolgozó rendszerek felismerési feladatokban való sikeressége indokolja. A bemutatott rendszer egyes paramétereinek hatása még nem kell en tisztázott és a rendszer néhány algoritmusa is további fejlesztésekre szorul. Az eredményekb l látható, hogy a rendszer sikeresen meg tudja különböztetni a mikrokalcifikációkat tartalmazó képrészleteket a többi képrészlett l, azonban az egyes mikrokalcifikációk felismerése még nem megbízható. A megoldás hátránya a lassú feldolgozás, ami a viszonylag bonyolult moduláris felépítésb l fakad, azonban mivel ugyanez a felépítés a magas fokú párhuzamosítás lehet ségét is biztosítja, megfelel körülmények esetén a rendszer sebessége egy modul sebességével lehet egyenl . Az eredmények elemzése más feladatok megoldása esetén is hasznos tanulsággal szolgálhat. Példának a neurális hálózatok bemenetinek kialakításához szükséges normalizáció hozható fel. Amint az a 4.5.1 pontban látható, a normalizálás eltér megközelítései különböz
eredményekre vezethetnek, amely a megoldások közti
divergenciát kihasználó moduláris rendszerek esetén hasznos lehet. Összefoglalva,
a
rendszer
képes
a
mikrokalcifikációk
felismerésére,
így
a
mikrokalcifikációt tartalmazó képek nagy biztonsággal való kisz résére, azonban az egyedi mikrokalcifikációk felismerése, amely a további analízis szempontjából szükséges, még finomításra szorul.
77
7 Továbbfejlesztési lehet ségek A rendszer továbbfejlesztése az eredmények alapján több irányban lehetséges. a) Paraméterek további vizsgálata Az 5 pontban leírt paraméterek közül néhány alapvet fontosságú paraméter vizsgálata megtörtént, azonban sok nyitott kérdés van még. Ilyen például a bemeneti képrészletek méretének hatása, vagy a hierarchikus feldolgozás szintjeinek száma. A várható eredménye megjósolhatóak, azonban a pontos mérések hiányában ezek csak feltételezések. b) Neurális hálózatok A rendszerben alkalmazott neurális hálózatok egyszer
perceptron hálózatok
voltak, azonban elképzelhet más struktúrák, például RBF, vagy ART hálózatok alkalmazása is. A különböz hálózattípusok eltér en teljesítenek a különböz osztályozási feladatokban, ezért más struktúrák vizsgálata esetleg jobb eredményre is vezethet. A neurális hálózatok tanítási algoritmusának és egyéb paramétereinek behatóbb vizsgálata szintén szükséges a pontos hatások elemzéséhez. A hálózatok bemenetére kerül adatok különböz módon való normalizálása eltér
viselkedést okozott. Ennek a hatásnak a további vizsgálata segíthet a
hálózatok közti különbségek növelésében. c) Lényegkiemelés paraméterei A lényegkiemelés során meghatározott paraméterek tovább b víthet k, így elképzelhet
az osztályozási teljesítmény növekedése is. Az irodalomban
találhatóak további paraméterek, például a wavelet analízis során, vagy a kookkurencia mátrix alapján meghatározott paraméterek.
78
d) Használt algoritmusok A rendszer algoritmusainak hatékonysága növelhet , illetve más algoritmusok fejlesztése is elképzelhet , f ként a döntési fák és a paraméterhalmazok kialakítása terén. A futási id csökkentése nem csak az egyes algoritmusok, hanem a teljes rendszer szempontjából is fontos. Az egyedi mikrokalcifikációk meghatározását végz algoritmus szintén további fejlesztésre szorul. Itt elképzelhet
lehet ség a küszöbérték adaptív, vagyis
képenként történ meghatározása. További fejlesztési lehet ség az eredmény verifikálása az eredeti kép, vagy a paraméter képek alapján, amely lehet séget nyújthat a mikrokalcifikációk alakjának és méretének minél pontosabb helyreállítására. e) El feldolgozás A rendszer bemenetére kerül
képrészleteket egy feltételezett algoritmus
szolgáltatja, amelynél követelmény, hogy nagy érzékenység legyen, vagyis az egyes képeken a mikrokalcifikációkat tartalmazó képrészleteket biztosan megtalálja. Az el feldolgozó algoritmus teljesítménye befolyásolhatja a rendszer teljesítményét is, hiszen nem mindegy, hogy milyen képrészletek kerülnek a rendszer bemenetére. Itt is alkalmazhatók a mikrokalcifikációk fényességére vonatkozó ismeretek, vagyis az algoritmus a nagyobb fényesség
pontokat
tartalmazó területeket sz rheti ki. Problémát jelenthet, hogy ha az el feldolgozó algoritmusnak az egész képet kell vizsgálnia, mivel a digitalizált képeken el forduló hibák befolyásolhatják a felismerés min ségét. Hasznos lehet egy olyan algoritmus alkalmazása, amely a képeken elkülöníti az eml területét a kép többi részét l [65]. f) Képadatbázis Tapasztalat, hogy a rendszerek eltér körülmények között eltér en viselkednek, noha a moduláris felépítés ezt képes lehet kompenzálni. Fontos tehát a rendszer teljesítményének vizsgálata különböz körülmények között készült képekre. A további vizsgálatokhoz rendelkezésre áll még két különböz adatbázis, illetve egy harmadik adatbázis elkészítésének el készületei is folyamatban vannak. 79
M1 melléklet A mintahalmazok részletes ismertetése A felhasznált MIAS képadatbázis letölthet a következ címr l: http://www.wiau.man.ac.uk/services/MIAS/MIASweb.html Az adatbázis f bb jellemz i: 1024x1024 pixel (200 mikron) méret 8 bit (256 szürkeségi árnyalat) színmélység 322 darab kép (25 tartalmaz mikrokalcifikációt) A kialakított mintahalmazok:
Tth T1 V1 T2 V2 T3 V3 T4 V4
Képrészletek száma 430 25 25 35 35 35 35 10 12
Mikrokalcifikációt tartalmaz 58 (13,5%) 25 25 25 (71,4%) 25 (71,4%) 15 (42,9%) 15 (42,9%) 5 6
Mikrokalcifikációt nem tartalmaz 372 (86,5%) 0 0 10 (28,6%) 10 (28,6%) 20 (57,1%) 20 (57,1%) 5 6
Dh
100
26
74
Th
330
32 (9,7%)
298 (90,3%)
Mintahalmaz megnevezése
Jelölés
Teljes mintahalmaz Tanító halmaz 1. Validációs halmaz 1. Tanító halmaz 2. Validációs halmaz 2. Tanító halmaz 3. Validációs halmaz 3. Tanító halmaz 4. Validációs halmaz 4. Rendszerparaméterek beállításához használt halmaz Teszt halmaz
1.1. táblázat - Mintahalmazok
Teljes mintahalmaz Fájlnév mdb209.bmp mdb211.bmp mdb213.bmp mdb216.bmp mdb218.bmp mdb219.bmp mdb222.bmp mdb223.bmp mdb226.bmp mdb227.bmp mdb231.bmp
Képrészletek koordinátái, (0, 0) - bal fels sarok Mikrokalcifikációt tartalmazó képek s1(583, 422), s2(550,474), s3(605,486), s4(668,496), s5(643,447), s6(606,545) s1(655, 669) s1(504, 439), s2(523, 499) s1(360, 230), s2(320, 212), s3(480, 171), s4(468, 111), s5(563, 362), s6(327, 481), s7(494, 521), s8(672, 371) s1(490, 366) s1(515, 239) s1(376, 558) s1(487, 506), s2(562, 463) s1(260, 386), s2(299, 443), s3(500, 276) s1(473, 525) s1(611, 437), s2(552, 466)
80
mdb233.bmp mdb236.bmp mdb238.bmp mdb239.bmp mdb241.bmp mdb245.bmp mdb248.bmp mdb249.bmp mdb252.bmp mdb253.bmp mdb256.bmp
s1(589, 550), s2(536, 604), s3(499, 660), s4(453, 741), s5(554, 645), s6(606, 643), s7(648, 794), s8(622, 833), s9(577, 787), s10(568, 712) s1(241, 172) s1(486, 443) s1(613, 253), s2(537, 184) s1(429, 300), s2(419, 333) s1(636, 687), s2(664, 718), s3(582, 748), s4(617, 818), s5(545, 832), s6(610, 865), s7(501, 835) s1(345, 393) s1(560, 324), s2(530, 379), s3(522, 478) s1(406, 624) s1(701, 432) s1(366, 498) Mikrokalcifikációt nem tartalmazó képek
mdb001.bmp mdb002.bmp mdb003.bmp mdb004.bmp mdb005.bmp mdb006.bmp mdb007.bmp mdb008.bmp mdb009.bmp mdb010.bmp mdb011.bmp mdb014.bmp mdb016.bmp mdb017.bmp mdb018.bmp mdb020.bmp mdb021.bmp mdb022.bmp mdb023.bmp mdb024.bmp mdb025.bmp mdb026.bmp mdb028.bmp mdb029.bmp mdb030.bmp mdb031.bmp mdb032.bmp mdb033.bmp mdb034.bmp mdb035.bmp mdb037.bmp mdb038.bmp mdb039.bmp mdb040.bmp mdb041.bmp mdb042.bmp mdb043.bmp mdb045.bmp mdb046.bmp mdb047.bmp mdb049.bmp mdb050.bmp mdb051.bmp
p1(445, 513), p2(547, 674) p1(328, 673), p2(255, 773) p1(502, 488), p2(688, 626) p1(344, 410), p2(296, 740) p1(560, 499), p2(298, 738) p1(421, 647), p2(356, 850) p1(603, 552), p2(623, 832) p1(349, 424), p2(252, 823) p1(657, 747), p2(690, 508) p1(417, 506), p2(379, 766) p1(690, 388), p2(619, 614) p1(387, 476), p2(307, 802) p1(426, 313), p2(434, 613) p1(473, 610), p2(633, 708) p1(454, 506), p2(343, 771) p1(340, 426), p2(346, 797) p1(467, 553), p2(489, 821) p1(341, 398), p2(496, 588) p1(605, 533), p2(468, 807) p1(407, 529), p2(298, 223) p1(457, 581), p2(679, 781) p1(453, 511), p2(356, 794) p1(289, 737), p2(257, 839) p1(609, 459), p2(614, 712) p1(316, 386), p2(451, 684) p1(499, 577), p2(583, 724) p1(364, 425), p2(651, 657) p1(525, 504), p2(611, 781) p1(347, 500), p2(376, 914) p1(560, 666), p2(634, 687) p1(465, 585), p2(570, 784) p1(354, 827), p2(516, 567) p1(578, 440), p2(613, 629) p1(357, 401), p2(316, 536) p1(678, 720), p2(667, 444) p1(401, 423), p2(256, 633) p1(441, 485), p2(490, 381) p1(466, 369), p2(516, 798) p1(362, 410), p2(364, 891) p1(692, 634), p2(648, 748) p1(391, 397), p2(656, 619) p1(280, 423), p2(326, 669) p1(514, 513), p2(728, 740)
81
mdb052.bmp mdb053.bmp mdb054.bmp mdb055.bmp mdb056.bmp mdb057.bmp mdb058.bmp mdb059.bmp mdb060.bmp mdb061.bmp mdb062.bmp mdb063.bmp mdb064.bmp mdb065.bmp mdb066.bmp mdb067.bmp mdb068.bmp mdb069.bmp mdb070.bmp mdb071.bmp mdb072.bmp mdb073.bmp mdb074.bmp mdb075.bmp mdb076.bmp mdb077.bmp mdb078.bmp mdb079.bmp mdb080.bmp mdb081.bmp mdb082.bmp mdb083.bmp mdb084.bmp mdb085.bmp mdb086.bmp mdb087.bmp mdb088.bmp mdb089.bmp mdb090.bmp mdb091.bmp mdb092.bmp mdb093.bmp mdb094.bmp mdb095.bmp mdb096.bmp mdb097.bmp mdb098.bmp mdb099.bmp mdb100.bmp mdb101.bmp mdb102.bmp mdb103.bmp mdb104.bmp mdb105.bmp mdb106.bmp mdb107.bmp mdb108.bmp mdb109.bmp
p1(463, 430), p2(361, 713) p1(595, 510), p2(571, 747) p1(322, 345), p2(334, 760) p1(462, 388), p2(655, 820) p1(351, 301), p2(327, 688) p1(563, 517), p2(601, 861) p1(606, 532), p2(250, 664) p1(502, 619), p2(540, 392) p1(380, 466), p2(358, 809) p1(628, 495), p2(628, 681) p1(404, 689), p2(537, 571) p1(632, 437), p2(596, 819) p1(419, 427), p2(347, 803) p1(671, 613), p2(590, 784) p1(357, 419), p2(324, 831) p1(485, 500), p2(669, 810) p1(361, 567), p2(251, 808) p1(495, 489), p2(417, 560) p1(351, 396), p2(227, 717) p1(564, 380), p2(626, 641) p1(330, 406), p2(510, 534) p1(517, 607), p2(466, 733) p1(355, 417), p2(370, 689) p1(640, 533), p2(371, 427) p1(354, 642), p2(528, 632) p1(304, 434), p2(370, 696) p1(373, 432), p2(531, 733) p1(590, 518), p2(530, 760) p1(407, 487), p2(482, 655) p1(443, 505), p2(522, 659) p1(534, 442), p2(384, 770) p1(540, 448), p2(581, 731) p1(354, 409), p2(306, 906) p1(570, 400), p2(489, 695) p1(348, 374), p2(444, 729) p1(590, 594), p2(612, 752) p1(407, 436), p2(557, 659) p1(621, 500), p2(528, 724) p1(384, 908), p2(459, 661) p1(591, 384), p2(474, 662) p1(286, 374), p2(419, 637) p1(601, 768), p2(426, 629) p1(322, 420), p2(416, 838) p1(465, 493), p2(540, 761) p1(399, 383), p2(311, 809) p1(605, 385), p2(351, 742) p1(259, 339), p2(379, 862) p1(459, 610), p2(568, 829) p1(597, 540), p2(503, 782) p1(559, 387), p2(389, 625), p3(597, 766), p4(680, 760) p1(347, 393), p2(447, 392), p3(298, 672), p4(330, 800) p1(484, 401), p2(386, 533), p3(413, 622), p4(687, 775) p1(323, 362), p2(312, 647), p3(444, 564), p4(275, 877) p1(456, 382), p2(694, 506), p3(425, 606), p4(511, 862) p1(262, 367), p2(409, 262), p3(276, 610), p4(549, 595) p1(530, 346), p2(706, 631), p3(428, 819), p4(335, 486) p1(229, 489), p2(491, 303), p3(506, 793), p4(305, 805) p1(664, 290), p2(377, 431), p3(463, 589), p4(578, 769)
82
mdb110.bmp mdb111.bmp mdb112.bmp mdb113.bmp mdb114.bmp mdb115.bmp mdb116.bmp mdb117.bmp mdb118.bmp mdb119.bmp mdb120.bmp mdb121.bmp mdb122.bmp mdb123.bmp mdb124.bmp mdb125.bmp mdb126.bmp mdb127.bmp mdb128.bmp mdb129.bmp mdb130.bmp mdb131.bmp mdb132.bmp mdb133.bmp mdb134.bmp mdb135.bmp mdb136.bmp mdb137.bmp mdb138.bmp mdb139.bmp mdb140.bmp mdb141.bmp mdb142.bmp mdb143.bmp mdb144.bmp mdb145.bmp mdb146.bmp mdb147.bmp
p1(428, 355), p2(374, 598), p3(272, 870), p4(570, 658) p1(509, 354), p2(617, 400), p3(423, 757), p4(471, 824) p1(481, 234), p2(326, 404), p3(360, 657), p4(651, 642) p1(470, 353), p2(612, 603), p3(516, 742), p4(618, 786) p1(339, 436), p2(484, 400), p3(422, 668), p4(323, 774) p1(468, 442), p2(331, 627), p3(510, 813), p4(707, 876) p1(479, 372), p2(288, 487), p3(255, 759), p4(453, 833) p1(470, 180), p2(419, 499), p3(601, 321), p4(556, 715) p1(354, 312), p2(533, 433), p3(348, 681), p4(232, 554) p1(567, 389), p2(717, 517), p3(528, 765), p4(702, 799) p1(487, 371), p2(226, 563), p3(485, 713), p4(380, 558) p1(519, 398), p2(698, 403), p3(632, 623), p4(522, 766) p1(449, 458), p2(201, 406), p3(251, 764), p4(402, 745) p1(491, 384), p2(471, 610), p3(567, 793), p4(641, 865) p1(401, 398), p2(349, 604), p3(288, 854), p4(517, 595) p1(601, 372), p2(730, 465), p3(478, 806), p4(684, 697) p1(306, 313), p2(496, 406), p3(654, 573), p4(245, 660) p1(514, 417), p2(553, 502), p3(473, 698), p4(624, 781) p1(287, 331), p2(491, 355), p3(394, 541), p4(335, 742) p1(605, 283), p2(304, 643), p3(695, 568), p4(470, 849) p1(300, 185), p2(222, 397), p3(336, 626), p4(524, 561) p1(515, 422), p2(744, 534), p3(390, 712), p4(639, 853) p1(279, 291), p2(177, 607), p3(201, 859), p4(532, 657) p1(413, 441), p2(358, 907), p3(817, 618), p4(561, 891) p1(390, 217), p2(63, 623), p3(366, 504), p4(661, 796) p1(398, 359), p2(787, 308), p3(534, 752), p4(778, 825) p1(298, 123), p2(51, 560), p3(435, 783), p4(356, 848) p1(696, 736), p2(528, 424), p3(351, 508), p4(495, 717) p1(542, 612), p2(239, 523), p3(368, 759), p4(400, 908) p1(493, 359), p2(830, 411), p3(614, 707), p4(368, 635) p1(177, 348), p2(486, 195), p3(246, 566), p4(483, 805) p1(373, 337), p2(745, 320), p3(376, 776), p4(592, 911) p1(147, 383), p2(447, 326), p3(417, 729), p4(208, 876) p1(464, 379), p2(694, 518), p3(332, 770), p4(663, 882) p1(235, 325), p2(475, 224), p3(353, 501), p4(197, 678) p1(366, 660), p2(774, 597), p3(422, 801), p4(586, 600) p1(280, 365), p2(448, 380), p3(67, 647), p4(332, 681) p1(561, 567), p2(381, 799), p3(718, 791), p4(774, 635) 1.2. táblázat – Teljes mintahalmaz
Mintahalmazok összetétele Halmaz
T1
T2
Képrészlet mdb209s1.bmp, mdb209s3.bmp, mdb209s5.bmp, mdb209s6.bmp, mdb211s1.bmp, mdb216s1.bmp, mdb216s3.bmp, mdb216s4.bmp, mdb216s5.bmp, mdb216s8.bmp, mdb223s1.bmp, mdb223s2.bmp, mdb227s1.bmp, mdb236s1.bmp, mdb238s1.bmp, mdb239s1.bmp, mdb239s2.bmp, mdb245s1.bmp, mdb245s2.bmp, mdb245s4.bmp, mdb245s5.bmp, mdb245s7.bmp, mdb249s1.bmp, mdb249s2.bmp, mdb249s3.bmp mdb209s1.bmp, mdb209s3.bmp, mdb209s5.bmp, mdb209s6.bmp, mdb211s1.bmp, mdb216s1.bmp, mdb216s3.bmp, mdb216s4.bmp, mdb216s5.bmp, mdb216s8.bmp, mdb223s1.bmp, mdb223s2.bmp, mdb227s1.bmp, mdb236s1.bmp, mdb238s1.bmp, mdb239s1.bmp, mdb239s2.bmp, mdb245s1.bmp, mdb245s2.bmp, mdb245s4.bmp, mdb245s5.bmp, mdb245s7.bmp, mdb249s1.bmp, mdb249s2.bmp, mdb249s3.bmp, mdb005p2.bmp, mdb007p2.bmp, mdb009p2.bmp, mdb011p1.bmp, mdb011p2.bmp, mdb020p2.bmp, mdb023p2.bmp, mdb024p2.bmp, mdb025p2.bmp, mdb026p1.bmp
83
T3
T4 V1
V2
V3
V4
Dh
Th
mdb209s1.bmp, mdb209s4.bmp, mdb211s1.bmp, mdb216s1.bmp, mdb216s5.bmp, mdb216s8.bmp, mdb223s1.bmp, mdb227s1.bmp, mdb236s1.bmp, mdb238s1.bmp, mdb239s1.bmp, mdb245s2.bmp, mdb245s4.bmp, mdb245s5.bmp, mdb249s1.bmp, mdb005p2.bmp, mdb007p2.bmp, mdb009p2.bmp, mdb010p2.bmp, mdb011p1.bmp, mdb011p2.bmp, mdb020p2.bmp, mdb023p2.bmp, mdb024p2.bmp, mdb025p1.bmp, mdb025p2.bmp, mdb026p1.bmp, mdb045p2.bmp, mdb046p2.bmp, mdb055p2.bmp, mdb056p1.bmp, mdb059p1.bmp, mdb060p1.bmp, mdb063p1.bmp, mdb070p2.bmp mdb209s1.bmp, mdb216s8.bmp, mdb223s1.bmp, mdb239s1.bmp, mdb245s4.bmp, mdb005p2.bmp, mdb011p1.bmp, mdb020p2.bmp, mdb024p2.bmp, mdb025p2.bmp mdb209s2.bmp, mdb213s1.bmp, mdb213s2.bmp, mdb216s2.bmp, mdb216s6.bmp, mdb216s7.bmp, mdb218s1.bmp, mdb219s1.bmp, mdb222s1.bmp, mdb226s1.bmp, mdb226s2.bmp, mdb226s3.bmp, mdb231s1.bmp, mdb231s2.bmp, mdb233s1.bmp, mdb233s2.bmp, mdb233s3.bmp, mdb233s5.bmp, mdb233s7.bmp, mdb233s8.bmp, mdb233s10.bmp, mdb248s1.bmp, mdb241s1.bmp, mdb241s2.bmp, mdb256s1.bmp mdb209s2.bmp, mdb213s1.bmp, mdb213s2.bmp, mdb216s2.bmp, mdb216s6.bmp, mdb216s7.bmp, mdb218s1.bmp, mdb219s1.bmp, mdb222s1.bmp, mdb226s1.bmp, mdb226s2.bmp, mdb226s3.bmp, mdb231s1.bmp, mdb231s2.bmp, mdb233s1.bmp, mdb233s2.bmp, mdb233s3.bmp, mdb233s5.bmp, mdb233s7.bmp, mdb233s8.bmp, mdb233s10.bmp, mdb248s1.bmp, mdb241s1.bmp, mdb241s2.bmp, mdb256s1.bmp, mdb026p2.bmp, mdb028p1.bmp, mdb029p2.bmp, mdb031p2.bmp, mdb032p1.bmp, mdb033p1.bmp, mdb034p1.bmp, mdb035p1.bmp, mdb035p2.bmp, mdb037p1.bmp mdb209s2.bmp, mdb213s1.bmp, mdb216s2.bmp, mdb216s6.bmp, mdb218s1.bmp, mdb219s1.bmp, mdb222s1.bmp, mdb226s2.bmp, mdb231s1.bmp, mdb231s2.bmp, mdb233s1.bmp, mdb233s7.bmp, mdb241s1.bmp, mdb248s1.bmp, mdb256s1.bmp, mdb026p2.bmp, mdb001p2.bmp, mdb003p1.bmp, mdb006p1.bmp, mdb016p1.bmp, mdb017p2.bmp, mdb025p1.bmp, mdb028p1.bmp, mdb029p2.bmp, mdb031p2.bmp, mdb032p1.bmp, mdb033p1.bmp, mdb034p1.bmp, mdb035p1.bmp, mdb035p2.bmp, mdb037p1.bmp, mdb051p1.bmp, mdb058p2.bmp, mdb065p1.bmp, mdb068p2.bmp mdb213s1.bmp, mdb218s1.bmp, mdb219s1.bmp, mdb222s1.bmp, mdb233s7.bmp, mdb241s1.bmp, mdb016p1.bmp, mdb017p2.bmp, mdb025p1.bmp, mdb051p1.bmp, mdb058p2.bmp, mdb065p1.bmp mdb209s1.bmp, mdb209s3.bmp, mdb209s4.bmp, mdb209s5.bmp, mdb209s6.bmp, mdb211s1.bmp, mdb216s1.bmp, mdb216s3.bmp, mdb216s4.bmp, mdb216s5.bmp, mdb216s8.bmp, mdb223s1.bmp, mdb223s2.bmp, mdb227s1.bmp, mdb236s1.bmp, mdb238s1.bmp, mdb239s1.bmp, mdb239s2.bmp, mdb245s1.bmp, mdb245s2.bmp, mdb245s4.bmp, mdb245s5.bmp, mdb245s7.bmp, mdb249s1.bmp, mdb249s2.bmp, mdb249s3.bmp, mdb005p2.bmp, mdb007p2.bmp, mdb009p2.bmp, mdb010p2.bmp, mdb011p1.bmp, mdb011p2.bmp, mdb020p2.bmp, mdb023p2.bmp, mdb024p2.bmp, mdb025p1.bmp, mdb025p2.bmp, mdb026p1.bmp, mdb045p2.bmp, mdb046p2.bmp, mdb055p2.bmp, mdb056p1.bmp, mdb059p1.bmp, mdb060p1.bmp, mdb063p1.bmp, mdb070p2.bmp, mdb001p2.bmp, mdb002p1.bmp, mdb014p1.bmp, mdb016p2.bmp, mdb017p1.bmp, mdb018p1.bmp, mdb028p2.bmp, mdb029p1.bmp, mdb029p2.bmp, mdb030p1.bmp, mdb032p2.bmp, mdb033p2.bmp, mdb034p1.bmp, mdb035p1.bmp, mdb035p2.bmp, mdb037p1.bmp, mdb037p2.bmp, mdb038p1.bmp, mdb038p2.bmp, mdb039p1.bmp, mdb039p2.bmp, mdb040p2.bmp, mdb041p1.bmp, mdb041p2.bmp, mdb042p1.bmp, mdb042p2.bmp, mdb043p2.bmp, mdb049p2.bmp, mdb050p1.bmp, mdb050p2.bmp, mdb051p1.bmp, mdb052p2.bmp, mdb053p1.bmp, mdb053p2.bmp, mdb054p1.bmp, mdb054p2.bmp, mdb057p1.bmp, mdb057p2.bmp, mdb058p1.bmp, mdb061p2.bmp, mdb062p1.bmp, mdb062p2.bmp, mdb064p1.bmp, mdb064p2.bmp, mdb065p1.bmp, mdb065p2.bmp, mdb066p1.bmp, mdb066p2.bmp, mdb067p1.bmp, mdb067p2.bmp, mdb068p1.bmp, mdb068p2.bmp, mdb069p1.bmp, mdb070p1.bmp mdb001p1.bmp, mdb002p2.bmp, mdb003p1.bmp, mdb003p2.bmp, mdb004p1.bmp, mdb004p2.bmp, mdb005p1.bmp, mdb006p1.bmp, mdb006p2.bmp, mdb007p1.bmp, mdb008p1.bmp, mdb008p2.bmp, mdb009p1.bmp, mdb010p1.bmp, mdb014p2.bmp, mdb016p1.bmp, mdb017p2.bmp, mdb018p2.bmp, mdb020p1.bmp, mdb021p1.bmp, mdb021p2.bmp, mdb022p1.bmp, mdb022p2.bmp, mdb023p1.bmp, mdb024p1.bmp, mdb026p2.bmp, mdb028p1.bmp, mdb030p2.bmp, mdb031p1.bmp, mdb031p2.bmp, mdb032p1.bmp, mdb033p1.bmp, mdb034p2.bmp, mdb040p1.bmp, mdb043p1.bmp, mdb045p1.bmp, mdb046p1.bmp, mdb047p1.bmp, mdb047p2.bmp, mdb049p1.bmp, mdb051p2.bmp, mdb052p1.bmp, mdb055p1.bmp, mdb056p2.bmp, mdb058p2.bmp,
84
mdb059p2.bmp, mdb060p2.bmp, mdb061p1.bmp, mdb063p2.bmp, mdb069p2.bmp, mdb071p1.bmp, mdb071p2.bmp, mdb072p1.bmp, mdb072p2.bmp, mdb073p1.bmp, mdb073p2.bmp, mdb074p1.bmp, mdb074p2.bmp, mdb075p1.bmp, mdb075p2.bmp, mdb076p1.bmp, mdb076p2.bmp, mdb077p1.bmp, mdb077p2.bmp, mdb078p1.bmp, mdb078p2.bmp, mdb079p1.bmp, mdb079p2.bmp, mdb080p1.bmp, mdb080p2.bmp, mdb081p1.bmp, mdb081p2.bmp, mdb082p1.bmp, mdb082p2.bmp, mdb083p1.bmp, mdb083p2.bmp, mdb084p1.bmp, mdb084p2.bmp, mdb085p1.bmp, mdb085p2.bmp, mdb086p1.bmp, mdb086p2.bmp, mdb087p1.bmp, mdb087p2.bmp, mdb088p1.bmp, mdb088p2.bmp, mdb089p1.bmp, mdb089p2.bmp, mdb090p1.bmp, mdb090p2.bmp, mdb091p1.bmp, mdb091p2.bmp, mdb092p1.bmp, mdb092p2.bmp, mdb093p1.bmp, mdb093p2.bmp, mdb094p1.bmp, mdb094p2.bmp, mdb095p1.bmp, mdb095p2.bmp, mdb096p1.bmp, mdb096p2.bmp, mdb097p1.bmp, mdb097p2.bmp, mdb098p1.bmp, mdb098p2.bmp, mdb099p1.bmp, mdb099p2.bmp, mdb100p1.bmp, mdb100p2.bmp, mdb101p1.bmp, mdb101p2.bmp, mdb101p3.bmp, mdb101p4.bmp, mdb102p1.bmp, mdb102p2.bmp, mdb102p3.bmp, mdb102p4.bmp, mdb103p1.bmp, mdb103p2.bmp, mdb103p3.bmp, mdb103p4.bmp, mdb104p1.bmp, mdb104p2.bmp, mdb104p3.bmp, mdb104p4.bmp, mdb105p1.bmp, mdb105p2.bmp, mdb105p3.bmp, mdb105p4.bmp, mdb106p1.bmp, mdb106p2.bmp, mdb106p3.bmp, mdb106p4.bmp, mdb107p1.bmp, mdb107p2.bmp, mdb107p3.bmp, mdb107p4.bmp, mdb108p1.bmp, mdb108p2.bmp, mdb108p3.bmp, mdb108p4.bmp, mdb109p1.bmp, mdb109p2.bmp, mdb109p3.bmp, mdb109p4.bmp, mdb110p1.bmp, mdb110p2.bmp, mdb110p3.bmp, mdb110p4.bmp, mdb111p1.bmp, mdb111p2.bmp, mdb111p3.bmp, mdb111p4.bmp, mdb112p1.bmp, mdb112p2.bmp, mdb112p3.bmp, mdb112p4.bmp, mdb113p1.bmp, mdb113p2.bmp, mdb113p3.bmp, mdb113p4.bmp, mdb114p1.bmp, mdb114p2.bmp, mdb114p3.bmp, mdb114p4.bmp, mdb115p1.bmp, mdb115p2.bmp, mdb115p3.bmp, mdb115p4.bmp, mdb116p1.bmp, mdb116p2.bmp, mdb116p3.bmp, mdb116p4.bmp, mdb117p1.bmp, mdb117p2.bmp, mdb117p3.bmp, mdb117p4.bmp, mdb118p1.bmp, mdb118p2.bmp, mdb118p3.bmp, mdb118p4.bmp, mdb119p1.bmp, mdb119p2.bmp, mdb119p3.bmp, mdb119p4.bmp, mdb120p1.bmp, mdb120p2.bmp, mdb120p3.bmp, mdb120p4.bmp, mdb121p1.bmp, mdb121p2.bmp, mdb121p3.bmp, mdb121p4.bmp, mdb122p1.bmp, mdb122p2.bmp, mdb122p3.bmp, mdb122p4.bmp, mdb123p1.bmp, mdb123p2.bmp, mdb123p3.bmp, mdb123p4.bmp, mdb124p1.bmp, mdb124p2.bmp, mdb124p3.bmp, mdb124p4.bmp, mdb125p1.bmp, mdb125p2.bmp, mdb125p3.bmp, mdb125p4.bmp, mdb126p1.bmp, mdb126p2.bmp, mdb126p3.bmp, mdb126p4.bmp, mdb127p1.bmp, mdb127p2.bmp, mdb127p3.bmp, mdb127p4.bmp, mdb128p1.bmp, mdb128p2.bmp, mdb128p3.bmp, mdb128p4.bmp, mdb129p1.bmp, mdb129p2.bmp, mdb129p3.bmp, mdb129p4.bmp, mdb130p1.bmp, mdb130p2.bmp, mdb130p3.bmp, mdb130p4.bmp, mdb131p1.bmp, mdb131p2.bmp, mdb131p3.bmp, mdb131p4.bmp, mdb132p1.bmp, mdb132p2.bmp, mdb132p3.bmp, mdb132p4.bmp, mdb133p1.bmp, mdb133p2.bmp, mdb133p3.bmp, mdb133p4.bmp, mdb134p1.bmp, mdb134p2.bmp, mdb134p3.bmp, mdb134p4.bmp, mdb135p1.bmp, mdb135p2.bmp, mdb135p3.bmp, mdb135p4.bmp, mdb136p1.bmp, mdb136p2.bmp, mdb136p3.bmp, mdb136p4.bmp, mdb137p1.bmp, mdb137p2.bmp, mdb137p3.bmp, mdb137p4.bmp, mdb138p1.bmp, mdb138p2.bmp, mdb138p3.bmp, mdb138p4.bmp, mdb139p1.bmp, mdb139p2.bmp, mdb139p3.bmp, mdb139p4.bmp, mdb140p1.bmp, mdb140p2.bmp, mdb140p3.bmp, mdb140p4.bmp, mdb141p1.bmp, mdb141p2.bmp, mdb141p3.bmp, mdb141p4.bmp, mdb142p1.bmp, mdb142p2.bmp, mdb142p3.bmp, mdb142p4.bmp, mdb143p1.bmp, mdb143p2.bmp, mdb143p3.bmp, mdb143p4.bmp, mdb144p1.bmp, mdb144p2.bmp, mdb144p3.bmp, mdb144p4.bmp, mdb145p1.bmp, mdb145p2.bmp, mdb145p3.bmp, mdb145p4.bmp, mdb146p1.bmp, mdb146p2.bmp, mdb146p3.bmp, mdb146p4.bmp, mdb147p1.bmp, mdb147p2.bmp, mdb147p3.bmp, mdb147p4.bmp''mdb209s2.bmp, mdb213s1.bmp, mdb213s2.bmp, mdb216s2.bmp, mdb216s6.bmp, mdb216s7.bmp, mdb218s1.bmp, mdb219s1.bmp, mdb222s1.bmp, mdb226s1.bmp, mdb226s2.bmp, mdb226s3.bmp, mdb231s1.bmp, mdb231s2.bmp, mdb233s1.bmp, mdb233s10.bmp, mdb233s2.bmp, mdb233s3.bmp, mdb233s4.bmp, mdb233s5.bmp, mdb233s6.bmp, mdb233s7.bmp, mdb233s8.bmp, mdb233s9.bmp, mdb241s1.bmp, mdb241s2.bmp, mdb245s3.bmp, mdb245s6.bmp, mdb248s1.bmp, mdb252s1.bmp, mdb253s1.bmp, mdb256s1.bmp 1.3. táblázat – Az egyes mintahalmazok összetétele
85
M2 melléklet
Matlab programkódok
LÉNYEGKIEMELÉS ..............................................................................................................................87
gradientFeature .................................................................................................................................87 varianceFeature .................................................................................................................................87 stdevFeature .......................................................................................................................................88 localdiffFeature .................................................................................................................................88 localmeandiffFeature.......................................................................................................................88 spectralf ...............................................................................................................................................88 spectralFeature ..................................................................................................................................89 create_featuremaps ..........................................................................................................................89 HIERARCHIKUS NEURÁLIS HÁLÓZATOK TANÍTÁSA...............................................................89
makesamples ......................................................................................................................................89 trainnets ...............................................................................................................................................91 PARAMÉTERHALMAZOKAT KIVÁLASZTÓ ALGORITMUS .....................................................92
select_features2 .................................................................................................................................92 make_samples ...................................................................................................................................93 train_nets.............................................................................................................................................94 test_nets...............................................................................................................................................95 process_image ...................................................................................................................................95 DÖNTÉSI FÁK ÉPÍTÉSÉT ÉS M KÖDTETÉSÉT VÉGZ
ALGORITMUS ................................96
decision_tree_builder2 ....................................................................................................................96 process_decision_tree2 .................................................................................................................100 A RENDSZER ALGORITMUSA .........................................................................................................102
processImage ...................................................................................................................................102 detect_calcifications ......................................................................................................................103 sign_calcifications..........................................................................................................................104
86
Lényegkiemelés function [features] = gradientFeature(im, nfilter, norm) f{1} = nfilter; f{2}(1, 1) = nfilter(4); f{2}(2, 1) = nfilter(1); f{2}(3, 1) = nfilter(2); f{2}(1, 2) = nfilter(7); f{2}(2, 2) = nfilter(5); f{2}(3, 2) = nfilter(3); f{2}(1, 3) = nfilter(8); f{2}(2, 3) = nfilter(9); f{2}(3, 3) = nfilter(6); f{3} = rot90(nfilter); f{4} = rot90(f{2}); f{5} = rot90(nfilter, 2); f{6} = rot90(f{2}, 2); f{7} = rot90(nfilter, 3); f{8} = rot90(f{2}, 3); for i = 1:8 J(:, :, i) = filter2(f{i}, im, 'valid'); end J = J.^2; [f ind] = max(J, [], 3); a = [8 1:7]; ind1 = a(ind); ind2 = sub2ind(size(J), repmat([1:size(f, 1)]',size(f, 2), 1), ceil([1:size(f, 1) * size(f, 2)]' / size(f, 2)), ind1(:)); f45 = reshape(J(ind2), size(f)); a = [7 8 1:6]; ind1 = a(ind); ind2 = sub2ind(size(J), repmat([1:size(f, 1)]',size(f, 2), 1), ceil([1:size(f, 1) * size(f, 2)]' / size(f, 2)), ind1(:)); f90 = reshape(J(ind2), size(f)); feature = zeros(size(im)); feature(2 : size(im, 1) - 1, 2 : size(im, 2) - 1) = f; feature45 = zeros(size(im)); feature45(2 : size(im, 1) - 1, 2 : size(im, 2) - 1) = f45; feature90 = zeros(size(im)); feature90(2 : size(im, 1) - 1, 2 : size(im, 2) - 1) = f90; if (norm == 1) maxvalue = double(max(feature(:))); maxvalue1 = double(max(feature45(:))); maxvalue2 = double(max(feature90(:))); feature = 0.8 * double(feature) / maxvalue + 0.1; feature45 = 0.8 * double(feature45) / maxvalue1 + 0.1; feature90 = 0.8 * double(feature90) / maxvalue2 + 0.1; end; features{1} = feature; features{2} = feature45; features{3} = feature90; function [variance] = varianceFeature(im, fsize, norm) f = fspecial('average', fsize); n = fsize * fsize; m = filter2(f, im, 'valid'); temp = filter2(f, double(im) .^ 2, 'valid') - m .^ 2; z = find(temp < 0); temp(z) = 0; variance = zeros(size(im)); pad = floor(fsize / 2); variance(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad) = temp; if (norm == 1) maxvalue = double(max(variance(:))); variance = 0.8 * double(variance) / maxvalue + 0.1; end;
87
function [stdev] = stdevFeature(im, fsize, norm) f = fspecial('average', fsize); n = fsize * fsize; m = filter2(f, im, 'valid'); variance = filter2(f, double(im) .^ 2, 'valid') - m .^ 2; z = find(variance < 0); variance(z) = 0; temp = sqrt(variance); stdev = zeros(size(im)); pad = floor(fsize / 2); stdev(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad) = temp; if (norm == 1) maxvalue = double(max(stdev(:))); stdev = 0.8 * double(stdev) / maxvalue + 0.1; end; function [diff] = localdiffFeature(im, fsize, norm) pad = floor(fsize / 2); a = ordfilt2(im, 1, ones(fsize)); b = ordfilt2(im, fsize * fsize, ones(fsize)); temp = double(b) - double(a); diff = zeros(size(im)); diff(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad) = temp(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad); if (norm == 1) maxvalue = double(max(diff(:))); diff = 0.8 * double(diff) / maxvalue + 0.1; end; function [diff] = localmeandiffFeature(im, fsize, norm) pad = floor(fsize / 2); f = fspecial('average', fsize); temp = double(im) - filter2(f, im); x = find(temp < 0); temp(x) = 0; diff = zeros(size(im)); diff(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad) = temp(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad); if (norm == 1) maxvalue = double(max(diff(:))); diff = 0.8 * double(diff) / maxvalue + 0.1; end; function [x] = spectralf(window) temp = abs(fft2(window)); x = sum(temp(:)) - temp(1, 1);
88
function [diff] = spectralFeature(im, fsize, norm) pad = floor(fsize / 2); temp = nlfilter(im, [fsize fsize], @spectralf); diff = zeros(size(im)); diff(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad) = temp(pad + 1 : size(im, 1) - pad, pad + 1 : size(im, 2) - pad); if (norm == 1) maxvalue = double(max(diff(:))); diff = 0.8 * double(diff) / maxvalue + 0.1; end; function [pyramid] = create_featuremaps(im, windowsize, pyramidsize, current_node) for i = 1:pyramidsize sizemod = 2^(i - 1); clear imc; imc = imresize(im, 1/sizemod, 'bicubic'); rp = size(imc, 1) ^2; fstrings{1} = 'temp{1}(:)'; fstrings{2} = 'temp{2}(:)'; fstrings{3} = 'temp{3}(:)'; fstrings{4} = 'reshape(varianceFeature(imc, windowsize, 1), [1 rp])'; fstrings{5} = 'reshape(stdevFeature(imc, windowsize, 1), [1 rp])'; fstrings{6} = 'reshape(localmeandiffFeature(imc, windowsize, 1), [1 rp])'; fstrings{7} = 'reshape(spectralFeature(imc, windowsize, 1), [1 rp])'; fstrings{8} = 'reshape(localdiffFeature(imc, windowsize, 1), [1 rp])'; gradcomputed = 0; for j = 1 : size(current_node, 2) if (current_node(j) == 1 | current_node(j) == 2 | current_node(j) == 3) & gradcomputed == 0; temp = gradientFeature(imc, [5 5 5; -3 0 -3; -3 -3 -3], 1); gradcomputed = 1; end; level{i}(j, :) = eval(fstrings{current_node(j)}); end; pyramid{pyramidsize - i + 1, 1} = level{i}; end;
Hierarchikus neurális hálózatok tanítása function [traininputs, trainoutputs, validationinputs, validationoutputs] = makesamples(windowsize, pyramidsize, setnum, config) pad = floor(windowsize / 2); if setnum == 1 % A T1 tanító- és validációs halmazok képek %traininputimages, trainoutputimages, validationinputimages, validationoutputimages elseif setnum == 2 % A T2 tanító- és validációs halmazok képek %traininputimages, trainoutputimages, validationinputimages, validationoutputimages elseif setnum == 3
89
% A T3 tanító- és validációs halmazok képek %traininputimages, trainoutputimages, validationinputimages, validationoutputimages elseif setnum == 4 % A T4 tanító- és validációs halmazok képek %traininputimages, trainoutputimages, validationinputimages, validationoutputimages end; imnum = size(traininputimages, 2); for i = 1:imnum im = imread(strcat('_samples\', traininputimages{i})); imout = imread(strcat('_samples\', trainoutputimages{i})); pyramid = create_featuremaps(im, windowsize, pyramidsize, config); for k = 1:pyramidsize traininputs{k}{i} = pyramid{k}; end; J = zeros(size(imout)); J(pad + 1:size(imout, 1) - pad, pad + 1:size(imout, 1) - pad) = imout(pad + 1:size(imout, 1) - pad, pad + 1: size(imout, 1) - pad); for k = 1:pyramidsize sizemod = 2^(k-1); J1 = imresize(eval(strcat(class(imout), '(J)')), 1/sizemod, 'bicubic'); maxvalue = double(max(J1(:))); if (maxvalue == 0) maxvalue = 1; end; trainoutputs{pyramidsize - k + 1}{i} = ceil(double(J1(:)') / maxvalue); end; end; imnum = size(validationinputimages, 2); for i = 1:imnum im = imread(strcat('_samples\', validationinputimages{i})); imout = imread(strcat('_samples\', validationoutputimages{i})); pyramid = create_featuremaps(im, windowsize, pyramidsize, config); for k = 1:pyramidsize validationinputs{k}{i} = pyramid{k}; end; J = zeros(size(imout)); J(pad + 1:size(imout, 1) - pad, pad + 1:size(imout, 1) - pad) = imout(pad + 1:size(imout, 1) - pad, pad + 1: size(imout, 1) - pad); for k = 1:pyramidsize sizemod = 2^(k-1); J1 = imresize(eval(strcat(class(imout), '(J)')), 1/sizemod, 'bicubic'); maxvalue = double(max(J1(:))); if (maxvalue == 0) maxvalue = 1; end; validationoutputs{pyramidsize - k + 1}{i} = ceil(double(J1(:)') / maxvalue); end; end;
90
function [nets] = trainnets(layers, inputsamples) load(inputsamples); % a „makesamples” függvény kimeneteit tartalmazó .mat fájl maximagesize = sqrt(size(traininputs{size(traininputs, 2)}{1}, 2)); pyramidsize = size(layers, 2); failparam = {2000, 1000, 200, 100, 50}; imnum = size(traininputs{1}, 2); imnum2 = size(validationinputs{1}, 2); for i = 1:pyramidsize nets{i} = newff([0 1], layers{i}, {'logsig', 'logsig'}, 'trainrp'); nets{i}.inputs{1}.size = size(traininputs{i}{1}, 1); nets{i}.trainParam.show = 1000; nets{i}.trainParam.goal = 0; nets{i}.trainParam.min_grad = 1e-40; nets{i}.trainParam.epochs = 10000; nets{i}.trainParam.mu_max = 1e20; nets{i}.trainParam.max_fail = failparam{size(failparam, 2) - pyramidsize + i}; nets{i} = init(nets{i}); clear VV; VV.P = validationinputs{i}; VV.T = validationoutputs{i}; nets{i} = train(nets{i}, traininputs{i}, trainoutputs{i}, [], [], VV); if i < pyramidsize nets{i}.outputConnect = [1 0]; clear out; out = sim(nets{i}, traininputs{i}); clear validationout; validationout = sim(nets{i}, validationinputs{i}); sizemod = 2^(pyramidsize - i); sizemod2 = maximagesize / sizemod; for k = 1:imnum clear input3; for j = 1:size(out{1}, 1) clear input; clear input2; input = reshape(out{k}(j, :), [floor(sizemod2) floor(sizemod2)]); input2 = imresize(input, [floor(sizemod2 * 2) floor(sizemod2 * 2)]); input3(j, :) = input2(:)'; end; traininputs{i + 1}{k} = cat(1, traininputs{i + 1}{k}, input3); end; for k = 1:imnum2 clear input3; for j = 1:size(validationout{1}, 1) clear input; clear input2; input = reshape(validationout{k}(j, :), [floor(sizemod2) floor(sizemod2)]); input2 = imresize(input, [floor(sizemod2 * 2) floor(sizemod2 * 2)]); input3(j, :) = input2(:)'; end; validationinputs{i + 1}{k} = cat(1, validationinputs{i + 1}{k}, input3); end; end; end;
91
Paraméterhalmazok kiválasztása function [nodes_processed, best_nodes] = select_features2 load nodes_processed; % az algoritmus futása alatt elmentett már kiszámított csomópontok current_node = 1:8; level = 1; num_to_process = 3; [perf nodes_processed] = compute_node_perf(current_node, nodes_processed); nodes_to_process{level} = generate_successors(current_node); for j = 1 : num_to_process best_nodes{level}{j} = cell(1, 2); best_nodes{level}{j}{1} = zeros(1, size(current_node, 2) - 1); best_nodes{level}{j}{2} = inf; end; while level < 6 for i = 1:size(nodes_to_process{level}, 2) current_node = nodes_to_process{level}{1}; [perf nodes_processed] = compute_node_perf(current_node, nodes_processed); for j = 1 : num_to_process if (nnz(best_nodes{level}{j}{1} - current_node) == 0) break; end; if perf <= best_nodes{level}{j}{2} for k = num_to_process : -1 : j + 1 best_nodes{level}{k} = best_nodes{level}{k - 1}; end; best_nodes{level}{j} = {current_node, perf}; break; end; end; nodes_to_process{level} = nodes_to_process{level}(2:size(nodes_to_process{level}, 2)); end; level = level + 1; nodes_to_process{level} = {}; for j = 1 : num_to_process current_node = best_nodes{level - 1}{j}{1}; nodes_to_process{level} = cat(2, nodes_to_process{level}, generate_successors(current_node)); end; for j = 1 : num_to_process best_nodes{level}{j} = cell(1, 2); best_nodes{level}{j}{1} = zeros(1, size(current_node, 2) - 1); best_nodes{level}{j}{2} = inf; end; save('nodes_processed', 'nodes_processed'); end; function [successors] = generate_successors(current_node) for i = 1 : size(current_node, 2) successors{i} = cat(2,current_node(1:i-1), current_node(i+1:size(current_node,2))); end; return;
92
function [perf, nodes_processed] = compute_node_perf(current_node, nodes_processed) perf = 0; for i = 1 : size(nodes_processed, 2) if (size(nodes_processed{i}{1}, 2) == size(current_node, 2)) if nnz(nodes_processed{i}{1} - current_node) == 0 perf = nodes_processed{i}{2}; break; end; end; end; if perf == 0 [traininputs, trainoutputs, validationinputs, validationoutputs] = make_samples(current_node); save('temp', 'traininputs', 'trainoutputs', 'validationinputs', 'validationoutputs'); for i = 1:5 nets = train_nets('temp', current_node); perfs(i) = test_nets(nets, current_node); end; perf = min(perfs); nodes_processed{size(nodes_processed, 2) + 1} = {current_node, perf}; end; return; function [traininputs, trainoutputs, validationinputs, validationoutputs] = make_samples(current_node) windowsize = 3; pyramidsize = 3; pad = floor(windowsize / 2); % a paraméterhalmaz min ségének megállapításához használt tanító minták % traininputimages, validationinputimages, trainoutputimages, validationoutputimages imnum = size(traininputimages, 2); for i = 1:imnum im = imread(strcat('_samples\', traininputimages{i})); imout = imread(strcat('_samples\', trainoutputimages{i})); pyramid = create_featuremaps(im, windowsize, pyramidsize, current_node); for k = 1:pyramidsize traininputs{k}{i} = pyramid{k}; end; J = zeros(size(imout)); J(pad + 1:size(imout, 1) - pad, pad + 1:size(imout, 1) - pad) = imout(pad + 1:size(imout, 1) - pad, pad + 1: size(imout, 1) - pad); for k = 1:pyramidsize sizemod = 2^(k-1); J1 = imresize(eval(strcat(class(imout), '(J)')), 1/sizemod, 'bicubic'); maxvalue = double(max(J1(:))); if (maxvalue == 0) maxvalue = 1; end; trainoutputs{pyramidsize - k + 1}{i} = ceil(double(J1(:)') / maxvalue); end; end;
93
imnum = size(validationinputimages, 2); for i = 1:imnum im = imread(strcat('_samples\', validationinputimages{i})); imout = imread(strcat('_samples\', validationoutputimages{i})); pyramid = create_featuremaps(im, windowsize, pyramidsize, current_node); for k = 1:pyramidsize validationinputs{k}{i} = pyramid{k}; end; J = zeros(size(imout)); J(pad + 1:size(imout, 1) - pad, pad + 1:size(imout, 1) - pad) = imout(pad + 1:size(imout, 1) - pad, pad + 1: size(imout, 1) - pad); for k = 1:pyramidsize sizemod = 2^(k-1); J1 = imresize(eval(strcat(class(imout), '(J)')), 1/sizemod, 'bicubic'); maxvalue = double(max(J1(:))); if (maxvalue == 0) maxvalue = 1; end; validationoutputs{pyramidsize - k + 1}{i} = ceil(double(J1(:)') / maxvalue); end; end; function [nets] = train_nets(samples, current_node) load(samples); % a „make_samples” függvény elmentett kimenetei layers = {[15 1], [20 1], [15 1]}; pyramidsize = 3; maximagesize = sqrt(size(traininputs{size(traininputs, 2)}{1}, 2)); imnum = size(traininputs{1}, 2); imnum2 = size(validationinputs{1}, 2); failparam = {2000, 1000, 200, 100, 50}; for i = 1:pyramidsize nets{i} = newff([0 1], layers{i}, {'logsig', 'logsig'}, 'trainrp'); nets{i}.inputs{1}.size = size(traininputs{i}{1}, 1); nets{i}.trainParam.show = 1000; nets{i}.trainParam.goal = 0; nets{i}.trainParam.min_grad = 1e-40; nets{i}.trainParam.epochs = 10000; nets{i}.trainParam.mu_max = 1e20; nets{i}.trainParam.max_fail = failparam{size(failparam, 2) - pyramidsize + i}; nets{i} = init(nets{i}); clear VV; VV.P = validationinputs{i}; VV.T = validationoutputs{i}; nets{i} = train(nets{i}, traininputs{i}, trainoutputs{i}, [], [], VV); if i < pyramidsize nets{i}.outputConnect = [1 0]; clear out; out = sim(nets{i}, traininputs{i}); clear validationout; validationout = sim(nets{i}, validationinputs{i}); sizemod = 2^(pyramidsize - i); sizemod2 = maximagesize / sizemod; for k = 1:imnum
94
clear input3; for j = 1:size(out{1}, 1) clear input; clear input2; input = reshape(out{k}(j, :), [floor(sizemod2) floor(sizemod2)]); input2 = imresize(input, [floor(sizemod2 * 2) floor(sizemod2 * 2)]); input3(j, :) = input2(:)'; end; traininputs{i + 1}{k} = cat(1, traininputs{i + 1}{k}, input3); end; for k = 1:imnum2 clear input3; for j = 1:size(validationout{1}, 1) clear input; clear input2; input = reshape(validationout{k}(j, :), [floor(sizemod2) floor(sizemod2)]); input2 = imresize(input, [floor(sizemod2 * 2) floor(sizemod2 * 2)]); input3(j, :) = input2(:)'; end; validationinputs{i + 1}{k} = cat(1, validationinputs{i + 1}{k}, input3); end; end; end; function perf = test_nets(nets, current_node) windowsize = 3; pyramidsize = 3; inputimages = outputimages = for i=1:size(inputimages, 2) inputpath = strcat('_samples\', inputimages{i}); outputpath = strcat('_samples\', outputimages{i}); perfs(i) = process_image(inputpath, outputpath, nets, current_node); end; perf = mean(perfs); function [netperf] = process_image(inputimagepath, outputimagepath, nets, current_node) im = imread(inputimagepath); imout = imread(outputimagepath); pyramidsize = 3; windowsize = 3; pyramid = create_featuremaps(im, windowsize, pyramidsize, current_node); for i = 1:pyramidsize netinputs{i} = pyramid{i}; end; pad = floor(windowsize / 2); for i = 1:pyramidsize sizemod = 2^(pyramidsize - i);
95
temp = imresize(imout, 1/sizemod, 'bicubic'); maxvalue = double(max(temp(:))); if (maxvalue == 0) maxvalue = 1; end; netoutputs = zeros(size(temp)); netoutputs(pad + 1:size(temp, 1) - pad, pad + 1:size(temp, 1) - pad) = temp(pad + 1:size(temp, 1) - pad, pad + 1: size(temp, 1) - pad); netoutputs = ceil(double(netoutputs(:)') / maxvalue); nets{i}.outputConnect = [0 1]; [out pf af e perf] = sim(nets{i}, netinputs{i}, [], [], netoutputs); if (i ~= pyramidsize) nets{i}.outputConnect = [1 0]; out = sim(nets{i}, netinputs{i}); imagesize = size(im); clear input3; for j = 1:size(out, 1) clear input; clear input2; input = reshape(out(j, :), floor(imagesize / sizemod)); input2 = imresize(input, floor(imagesize / (sizemod / 2))); input3(j, :) = input2(:)'; end; netinputs{i + 1} = cat(1, netinputs{i + 1}, input3); end; end; netperf = perf;
Döntési fák építése és m ködtetése function tree = decision_tree_builder2(y, div, sample_num) t = div / sample_num; node_info = - t * log2(t) - (1 - t) * log2(1 - t); level = 0; nodes = 0; parent = 0; branches{1} = {0, level, parent, -1}; while level < 15 & size(branches, 2) > 0 nodes = nodes + 1; level = branches{1}{2}; parent = branches{1}{3}; branch_processed = branches{1}{4}; [testresults, test_choosen] = choose_test(branches{1}{1}, node_info, y, div, sample_num); branches = branches(2:size(branches, 2)); if test_choosen > 0 if size(testresults{test_choosen}{1}, 2) <= 5 pbranch = {testresults{test_choosen}{1}, 1, -1}; elseif size(find(testresults{test_choosen}{1} <= div), 2) == 0 pbranch = {testresults{test_choosen}{1}, 0, -1}; elseif size(find(testresults{test_choosen}{1} > div), 2) == 0
96
pbranch = {testresults{test_choosen}{1}, 1, -1}; else if size(find(testresults{test_choosen}{1} > div), 2) > size(find(testresults{test_choosen}{1} <= div), 2) pbranch = {testresults{test_choosen}{1}, 0, -1}; else pbranch = {testresults{test_choosen}{1}, 1, -1}; end; branches{size(branches, 2) + 1} = {testresults{test_choosen}{1}, level + 1, nodes, 3}; end; if size(testresults{test_choosen}{2}, 2) <= 5 nbranch = {testresults{test_choosen}{2}, 1, -1}; elseif size(find(testresults{test_choosen}{2} <= div), 2) == 0 nbranch = {testresults{test_choosen}{2}, 0, -1}; elseif size(find(testresults{test_choosen}{2} > div), 2) == 0 nbranch = {testresults{test_choosen}{2}, 1, -1}; else if size(find(testresults{test_choosen}{2} > div), 2) > size(find(testresults{test_choosen}{2} <= div), 2) nbranch = {testresults{test_choosen}{2}, 0, -1}; else nbranch = {testresults{test_choosen}{2}, 1, -1}; end; branches{size(branches, 2) + 1} = {testresults{test_choosen}{2}, level + 1, nodes, 4}; end; if parent(1) > 0 tree{branch_processed, parent}{3} = nodes; end; tree{1, tree{2, tree{3, tree{4, tree{5,
nodes} nodes} nodes} nodes} nodes}
= = = = =
level; parent; pbranch; nbranch; test_choosen;
end; if size(branches, 2) > 0 sample_num = size(branches{1}{1}, 2); t = size(find(branches{1}{1} <= div), 2) / sample_num; node_info = - t * log2(t) - (1 - t) * log2(1 - t); end; end; function [testresults, test_choosen] = choose_test(branch, node_info, y, div, sample_num) probs = [0.03 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; if branch == 0 out = y; branch = 1:size(y, 2); else
97
for i = 1:size(branch, 2) out{i} = y{branch(i)}; end; end; testresults = cell(2, size(y, 2)); count = size(probs, 2); max_info_gain = 0; test_choosen = 0; max_points = 1000; max_regions = 50; counter = 0; for i = 1:count for k = 10:10:max_points t = counter + k / 10; testvalues{t} = {probs(i), k, 'points'}; pbranch{t} = []; nbranch{t} = []; end; counter = counter + floor(max_points / 10); end; for i = 1:count counter = counter + 1; testvalues{counter} = {probs(i), probs(i), 'probs'}; pbranch{counter} = []; nbranch{counter} = []; end; for i = 1:count for k = 1:max_regions t = counter + k; testvalues{t} = {probs(i), k, '2-regions'}; pbranch{t} = []; nbranch{t} = []; t = counter + k + max_regions; testvalues{t} = {probs(i), k, '3-regions'}; pbranch{t} = []; nbranch{t} = []; end; counter = counter + max_regions * 2; end; for j = 1:size(out, 2) disp(['Image: ' num2str(branch(j))]); counter = 0; for i = 1 : count temp = size(find(out{j} > probs(i)), 1); for k = 10 : 10 : max_points t = counter + k / 10; if temp > k pbranch{t}(size(pbranch{t}, 2) + 1) = branch(j); else nbranch{t}(size(nbranch{t}, 2) + 1) = branch(j);
98
end; end; counter = counter + floor(max_points / 10); end; for i = 1 : count counter = counter + 1; if max(max(out{j})) > probs(i) pbranch{counter}(size(pbranch{counter}, else nbranch{counter}(size(nbranch{counter}, end; end; for i = 1 : count z = find(out{j} > probs(i)); im1 = zeros(size(out{j})); im1(z) = 1; [L num] = bwlabel(im1, 8); num1 = num; num2 = num; for n = 1:num if size(find(L == n), 1) < 2 num1 = num1 - 1; end; if size(find(L == n), 1) < 3 num2 = num2 - 1; end; end; for k = 1 : max_regions t = counter + k; if num1 > k pbranch{t}(size(pbranch{t}, 2) + 1) else nbranch{t}(size(nbranch{t}, 2) + 1) end; t = counter + k + max_regions; if num2 > k pbranch{t}(size(pbranch{t}, 2) + 1) else nbranch{t}(size(nbranch{t}, 2) + 1) end; end; counter = counter + 2 * max_regions; end;
2) + 1) = branch(j); 2) + 1) = branch(j);
= branch(j); = branch(j);
= branch(j); = branch(j);
end; for i = 1 : counter test_info = 0; sp = size(pbranch{i}, 2);
99
tp1 = size(find(pbranch{i} <= div), 2); tp2 = size(find(pbranch{i} > div), 2); sn = size(nbranch{i}, 2); tn1 = size(find(nbranch{i} <= div), 2); tn2 = size(find(nbranch{i} > div), 2); if (sp > 0 & (tp1 == 0 | tp2 == 0)) | (sn > 0 & (tn1 == 0 | tn2 == 0)) if tp1 == 0 | tp2 == 0 infop = 0; else infop = - tp1 / sp * log2(tp1 / sp) - tp2 / sp * log2(tp2 / sp); end; if tn1 == 0 | tn2 == 0 infon = 0; else infon = - tn1 / sn * log2(tn1 / sn) - tn2 / sn * log2(tn2 / sn); end; test_info = sp / sample_num * infop + sn / sample_num * infon; info_gain = node_info - test_info; if info_gain > max_info_gain max_info_gain = info_gain; test_choosen = i; end; testresults{i} = {pbranch{i}, nbranch{i}, info_gain}; else testresults{i} = {pbranch{i}, nbranch{i}, -1}; end; end; return; function result = process_decision_tree2(y, windowsize, pyramidsize, featureMapConfig, tree) probs = [0.03 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; maxvalue = max(max(y)); maxlevel = max([tree{1, :}]); count = size(probs, 2); node = 1; max_points = 1000; max_regions = 50; resultwords = {'negative', 'positive'}; result = round(rand(1)); for level = 0 : maxlevel test_choosen = tree{5, node}; counter = 0; for i = 1:count temp = size(find(y > probs(i)), 1); for k = 10 : 10 : max_points if test_choosen == counter + k / 10 if temp > k branch_choosed = 3; break; else branch_choosed = 4; break;
100
end; end; end; counter = counter + floor(max_points / 10); end; for i = 1 : count counter = counter + 1; if test_choosen == counter if max(max(y)) > probs(i) branch_choosed = 3; break; else branch_choosed = 4; break; end; end; end; for i = 1 : count z = find(y > probs(i)); im1 = zeros(size(y)); im1(z) = 1; [L num] = bwlabel(im1, 8); num1 = num; num2 = num; for n = 1:num if size(find(L == n), 1) < 2 num1 = num1 - 1; end; if size(find(L == n), 1) < 3 num2 = num2 - 1; end; end; for k = 1 : max_regions if test_choosen == counter + k if num1 > k branch_choosed = 3; break; else branch_choosed = 4; break; end; end; if test_choosen == counter + k + max_regions if num2 > k branch_choosed = 3; break; else branch_choosed = 4; break; end; end; end; counter = counter + max_regions * 2; end;
101
node_saved = node; node = tree{branch_choosed, node}{3}; if node == -1 result = tree{branch_choosed, node_saved}{2}; return; end; end; result = tree{branch_choose, node}{2};
A teljes rendszer m ködtetése function [probimage, netperf] = processImage(inputimagepath, outputimagepath, netstoload, windowsize, silent, outputtype, config) im = imread(inputimagepath); if size(outputimagepath, 2) > 0 imout = imread(outputimagepath); end; load(netstoload); % neurális hálózatokat tartalmazó .mat fájl pyramidsize = size(nets, 2); pyramid = create_featuremaps(im, windowsize, pyramidsize, config); for i = 1:pyramidsize netinputs{i} = pyramid{i}; end; pad = floor(windowsize / 2); for i = 1:pyramidsize sizemod = 2^(pyramidsize - i); if size(outputimagepath, 2) > 0 temp = imresize(imout, 1/sizemod, 'bicubic'); maxvalue = double(max(temp(:))); if (maxvalue == 0) maxvalue = 1; end; netoutputs = zeros(size(temp)); netoutputs(pad + 1:size(temp, 1) - pad, pad + 1:size(temp, 1) - pad) = temp(pad + 1:size(temp, 1) - pad, pad + 1: size(temp, 1) - pad); netoutputs = ceil(double(netoutputs(:)') / maxvalue); if (outputtype == -1) netoutputs(netoutputs == 0) == -1; end; nets{i}.outputConnect = [0 1]; [out pf af e perf] = sim(nets{i}, netinputs{i}, [], [], netoutputs); netperf(i, 1) = perf; probimage{i} = reshape(out, floor(size(im) / sizemod)); end; if (silent == 0) disp(['Level ' num2str(pyramidsize - i + 1) ' network performance: ' num2str(perf)]); end; if (i ~= pyramidsize) nets{i}.outputConnect = [1 0]; out = sim(nets{i}, netinputs{i}); imagesize = size(im); clear input3;
102
for j = 1:size(out, 1) clear input; clear input2; input = reshape(out(j, :), floor(imagesize / sizemod)); input2 = imresize(input, floor(imagesize / (sizemod / 2))); input3(j, :) = input2(:)'; end; netinputs{i + 1} = cat(1, netinputs{i + 1}, input3); end; end; if size(outputimagepath, 2) == 0 probimage = reshape(out, floor(size(im) / sizemod)); netperf = -1; end; function [systemvote, results] = detect_calcifications(inputpath, outputpath); modul1config = [1 2 3 4 5 6 7 8]; modul1 = {'modul1nett1', 'modul1nett2', 'modul1nett3'}; % neurális hálózatokat tartalmazó .mat fájlok nevei modul2config = [5 6 7 8]; modul2 = {'modul2nett1', 'modul2nett2', 'modul2nett3'}; modul3config = [2 3 5 6]; modul3 = {'modul3nett1', 'modul3nett2', 'modul3nett3'}; modul4config = [2 5 6 8]; modul4 = {'modul4nett1', 'modul4nett2', 'modul4nett3'}; modul5config = [2 4 5 6 7 8]; modul5 = {'modul5nett1', 'modul5nett2', 'modul5nett3'}; load decision_trees; %a „decision_tree_builder2” függvény elmentett kimenete, a kialakított döntési fák windowsize = 3; pyramidsize = 3; limits = [0.03 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; resultwords = {'negative', 'positive'}; [y1a perf] = processImage(inputpath, outputpath, modul1{1}, windowsize, 1, 0, modul1config); vote1a = process_decision_tree2(y1a{pyramidsize}, windowsize, pyramidsize, modul1config, tree01a); [y1b perf] = processImage(inputpath, outputpath, modul1{2}, windowsize, 1, 0, modul1config); vote1b = process_decision_tree2(y1b{pyramidsize}, windowsize, pyramidsize, modul1config, tree01b); [y1c perf] = processImage(inputpath, outputpath, modul1{3}, windowsize, 1, 0, modul1config); vote1c = process_decision_tree2(y1c{pyramidsize}, windowsize, pyramidsize, modul1config, tree01c); modul1vote = round((vote1a + vote1b + vote1c) / 3); [y2a perf] = processImage(inputpath, outputpath, modul2{1}, windowsize, 1, 0, modul2config); vote2a = process_decision_tree2(y2a{pyramidsize}, windowsize, pyramidsize, modul2config, tree02a); [y2b perf] = processImage(inputpath, outputpath, modul2{2}, windowsize, 1, 0, modul2config); vote2b = process_decision_tree2(y2b{pyramidsize}, windowsize, pyramidsize, modul2config, tree02b); [y2c perf] = processImage(inputpath, outputpath, modul2{3}, windowsize, 1, 0, modul2config); vote2c = process_decision_tree2(y2c{pyramidsize}, windowsize, pyramidsize, modul2config, tree02c); modul2vote = round((vote2a + vote2b + vote2c) / 3); [y3a perf] = processImage(inputpath, outputpath, modul3{1}, windowsize, 1, 0, modul3config); vote3a = process_decision_tree2(y3a{pyramidsize}, windowsize, pyramidsize, modul3config, tree03a); [y3b perf] = processImage(inputpath, outputpath, modul3{2}, windowsize, 1, 0, modul3config); vote3b = process_decision_tree2(y3b{pyramidsize}, windowsize, pyramidsize, modul3config, tree03b); [y3c perf] = processImage(inputpath, outputpath, modul3{3}, windowsize, 1, 0, modul3config); vote3c = process_decision_tree2(y3c{pyramidsize}, windowsize, pyramidsize, modul3config, tree03c); modul3vote = round((vote3a + vote3b + vote3c) / 3); [y4a perf] = processImage(inputpath, outputpath, modul4{1}, windowsize, 1, 0, modul4config); vote4a = process_decision_tree2(y4a{pyramidsize}, windowsize, pyramidsize, modul4config, tree04a);
103
[y4b perf] = processImage(inputpath, outputpath, modul4{2}, windowsize, 1, 0, modul4config); vote4b = process_decision_tree2(y4b{pyramidsize}, windowsize, pyramidsize, modul4config, tree04b); [y4c perf] = processImage(inputpath, outputpath, modul4{3}, windowsize, 1, 0, modul4config); vote4c = process_decision_tree2(y4c{pyramidsize}, windowsize, pyramidsize, modul4config, tree04c); modul4vote = round((vote4a + vote4b + vote4c) / 3); [y5a perf] = processImage(inputpath, outputpath, modul5{1}, windowsize, 1, 0, modul5config); vote5a = process_decision_tree2(y5a{pyramidsize}, windowsize, pyramidsize, modul5config, tree05a); [y5b perf] = processImage(inputpath, outputpath, modul5{2}, windowsize, 1, 0, modul5config); vote5b = process_decision_tree2(y5b{pyramidsize}, windowsize, pyramidsize, modul5config, tree05b); [y5c perf] = processImage(inputpath, outputpath, modul5{3}, windowsize, 1, 0, modul5config); vote5c = process_decision_tree2(y5c{pyramidsize}, windowsize, pyramidsize, modul5config, tree05c); modul5vote = round((vote5a + vote5b + vote5c) / 3); systemvote = round((modul1vote + modul2vote + modul3vote + modul4vote + modul5vote) / 5); if systemvote == 1 results = sign_calcifications({y1a{pyramidsize}, y2a{pyramidsize}, y3a{pyramidsize}, y4a{pyramidsize}, y5a{pyramidsize}}); else im = imread(outputpath); for j = 1 : size(limits, 2) results{j}{1} = zeros(size(im)); results{j}{2} = 0; end; end; function [results] = sign_calcifications(netoutputs) y = zeros(size(netoutputs{1})); for i = 1:size(netoutputs, 2) y = y + netoutputs{i}; end; y = y / 3; limits = [0.03 0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; for i = 1 : size(limits, 2) res = zeros(size(y)); z = find(y > limits(i)); res(z) = 1; [L num] = bwlabel(res, 8); num1 = num; for j = 1 : num if size(find(L == j), 1) < 3 res(find(L == j)) = 0; num1 = num1 - 1; end; end; results{i}{1} = res; results{i}{2} = num1; end;
104
Referenciák és irodalomjegyzék [1] Stuart J. Russell, Peter Norvig. Mesterséges Intelligencia modern megközelítésben. Panem–Prentice Hall, Budapest, 2000 [2] Horváth Gábor (szerkeszt ). Neurális hálózatok és m szaki alkalmazásaik. M egyetemi Kiadó, Budapest, 1998. [3] Phil Picton. Neural Networks. Palgrave, 2000. [4] J. Ferlay, F. Bray, P. Pisani and D.M. Parkin. GLOBOCAN 2000: Cancer Incidence, Mortality and Prevalence Worldwide, Version 1.0. IARC CancerBase No. 5. Lyon, IARCPress, 2001. Limited version available from: URL: http://www-dep.iarc.fr/globocan/globocan.htm [5] World Health Statistics Annual, World Health Organisation (WHO) Databank Geneva, Switzerland http://www.who.int/whosis/ [6] P. Sajda, C. Spence, and J. Pearson, "A Hierarchical Neural Network Architecture that Learns Target Context: Applications to Digital Mammography," pp. 149-155, Proc. 2nd IEEE Intern. Conference on Image Processing, Washington, D.C., 1995. [7] P. Sajda and C. Spence. Learning Contextual Relationships in Mammograms using a Hierarchical Pyramid Neural Network, IEEE Transactions on Medical Imaging 21 (3) (2002) [8] L.K. Hansen and P. Salamon, "Neural network ensembles", IEEE Transactions on Pattern Analysis and Machine Intelligence, 12, pp. 993-1001, 1990. [9] J. Krogh, A. Vedelsby. Neural network ensembles, cross validation, and active learning. In Proceedings of NIPS'94, pages 231--238, 1995. [10] Bernd Jähne. Digital Image Processing. Springer-Verlag, 1993. [11] Opitz, D. and Maclin, R. "Popular Ensemble Methods: An Empirical Study", Journal of Artificial Intelligence Research, Volume 11, pages 169-198. 1999 [12] Lakhmi Jain, Ph.D., Anna Maria Fanelli, Ph.D. (ed). Recent Advances In Artificial Neural Networks, Design And Applications. CRC Press, 2000 [13] Bernard Widrow, Samuel D. Stearns. Adaptive Signal Processing. Prentice-Hall, Englewood Cliffs, N.J., 1985 [14] D.E. Rumelhart, G.E. Hinton, R.J. Williams, Learning internal representations by error propagation, in: D.E. Rumelhart, J.L. McClelland (Eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1, MIT Press, Cambridge, MA, 1986, pp. 318-362. [15] Maclin, R. and Shavlik, J. W. (1995). Combining the predictions of multiple classifiers: Using competitive learning to initialize neural networks. Proceedings of the Fourteenth International Joint Conference on Artificial Intelligence, Montreal, Canada. [16] Opitz, D.. Feature Selection for Ensembles. Sixteenth National Conference on Artificial Intelligence (AAAI), (379-384). Orlando, FL. 1999 [17] Robert E. Schapire. The boosting approach to machine learning: An overview. In MSRI Workshop on Nonlinear Estimation and Classification, 2002. [18] Leo Breiman: Bagging Predictors. Machine Learning 24(2): 123-140 (1996) [19] Opitz, D. W. & Shavlik J. W. (1996). Actively Searching for an Effective Neural-Network Ensemble. Connection Science, (pp. 337-353), 8. (3,4). [20] Anil K. Jain. Fundamentals of Digital Image Processing. Prentice-Hall International, 1989. [21] Rafael C. Gonzalez, Richard E. Woods. Digital Image Processing. Addison-Wesley Publishing Company, 1992. [22] Molina Félix, Luis Carlos; Belanche Muñoz, Lluís and Nebot, Angela, Feature Selection Algorithms: A Survey and Experimental Evaluation. In Proc. of the International Conference on Data Mining (ICDM'02), Maebashi City, Japan, Dec. 2002. ISBN 0-7695-1754-4, pp. 306-313, IEEE Computer Society. [23] Kenneth R. Castleman. Digital Image Processing. Prentice-Hall, Inc., Englewood Cliffs, N.J. 07632, 1979 [24] G. Krell, A. Herzog, B. Michaelis. Real-Time Image Restoration with an Artificial Neural Network. Proceedings of the International Conference on Neural Networks (ICNN '96), 03-06 June 1996, Washington, p. 1552-1557. [25] Nadia Zenati, Karim Achour. Restoration Method Using a Neural Network Model. ACS/IEEE International Conference on Computer Systems and Applications (AICCSA'01), 25-29 June 2001, Beirut, Lebanon, p. 122-125. [26] Special Issue On Applications Of Artificial Neural Networks To Image Processing, IEEE Transactions.On Image Processing 7 (8) 1998.
105
[27] B. Zheng,W. Qian, and L. P. Clarke, “Digital mammography: Mixed feature neural network with spectral-entropy decision for detection of microcalcifications,” IEEE Trans. Med. Imag., vol. 15, pp. 589– 597, Oct. 1996. [28] I. Koren, A. Laine and F. Taylor, "Enhancement via Fusion of Mammographic Features," in Proceedings of the IEEE International Conference on Image Processing, Chicage, IL, October, 1998, vol. 2, pp. 722-726. [29] D. Sersic and S. Loncaric. Enhancement of Mammographic Images for detection of Microcalcifications. Proceedings of the IX European Signal Processing Conference, Vol. 2, pp. 693-696, Island of Rhodos, Greece, 1998. [30] A. Laine, J. Fan, and S. Schuler, "A framework for contrast enhancement by dyadic wavelet analysis," in Digital Mammography, Proceedings of the 2nd International Workshop on Digital Mammography, York, England, 10-12 July 1994, A. G. Gale, S. M. Astley, D. R. Dance, and A. Y. Cairns, Editors, Amsterdam, The Netherlands: Elsevier, 1994, pp. 91-100. [31] H. Li, K.J.R. Liu, and S.-C.B. Lo, "Fractal modeling and segmentation for the enhancement of microcalcifications in digital mammograms," IEEE Trans. Med. Imaging 16, pp. 785-798, 1997. [32] H. D. Cheng and Huijuan Xu, A novel fuzzy logic approach to mammogram contrast enhancement, Information Sciences, Volume 148, Issues 1-4, December 2002, Pages 167-184 [33] Karssemeijer N. 1993. Adaptive noise equalization and recognition of micro-calcification clusters in mammograms. International Journal of Pattern Recognition and Artificial Intelligence 7. 1357-1376. [34] Moti Melloul, Leo Joskowicz. Segmentation of microcalcification in X-ray mammograms using entropy thresholding. Technical Report, May 2002, Hebrew University, Leibniz Center [35] San-Kan Lee, Chien-Shun Lo, Chuin-Mu Wang, Pau-Choo Chung, Chein-I Chang, Ching-Wen Yang and Pi-Chang Hsu, A computer-aided design mammography screening system for detection and classification of microcalcifications, International Journal of Medical Informatics, Volume 60, Issue 1, October 2000, Pages 29-57 [36] Giuseppe Boccignone, Angelo Chianese and Antonio Picariello, Computer aided detection of microcalcifications in digital mammograms, Computers in Biology and Medicine, Volume 30, Issue 5, 1 September 2000, Pages 267-286 [37] T. Shubhachint and A.P. Dhawan, "Wavelet Based Multi-resolution Algorithm for Detection of Mammographic microcalcifications", Proceedings IEEE 21th International Conference of Engineering in Medicine & Biology, October 13-16, 1999. [38] A.Bazzani, A.Bevilacqua , D.Bollini, R.Brancaccio, R.Campanini, N.Lanconelli, D.Romani, System for automatic detection of clustered microcalcifications in digital mammograms, International Journal of Modern Physics C - Computing and Physics, Vol.11, No. 5 (July 2000) 901-912. [39] Cristiane Bastos Rocha Ferreira and Díbio Leandro Borges, Analysis of mammogram classification using a wavelet transform decomposition, Pattern Recognition Letters, Volume 24, Issue 7, April 2003, Pages 973-982 [40] H. D. Cheng, J. R. Chen, R. I. Freimanis and X. H. Jiang, A novel fuzzy logic approach to microcalcification detection, Information Sciences, Volume 111, Issues 1-4, November 1998, Pages 189205 [41] Murk J. Bottema and John P. Slavotinek, Detection and classification of lobular and DCIS (small cell) microcalcifications in digital mammograms, Pattern Recognition Letters, Volume 21, Issues 13-14, December 2000, Pages 1209-1214 [42] P. Bakic and D. Brzakovic, "Applications of Neural Networks to Diagnosing Breast Cancer," invited, Proc. of 5-th Seminar on Neural Network Applications, NEUREL, Belgrade, Yugoslavia, 1997. [43] B. Zheng,W. Qian, and L. P. Clarke, “Digital mammography: Mixed feature neural network with spectral-entropy decision for detection of microcalcifications,” IEEE Trans. Med. Imag., vol. 15, pp. 589– 597, Oct. 1996. [44] J.K. Kim, J.M. Park, K.S. Song, and H.W. Park, "Detection of Clustered Microcalcification on Mammograms using Artificial Neural Network and Surrounding Region Dependence Method," J. of VLSI Signal Processing Systems, Vol. 18(3), pp.251-262, 1998. [45] Meersman D., Scheunders P., Van Dyck D.. - Detection of microcalcifications using neural networks. - In: Digital mammography '96 / Doi K. [edit.], e.a., s.l., 1996, p. 287-290 [46] L. Zhang, R. Sankar and W. Qian, Advances in micro-calcification clusters detection in mammography, Computers in Biology and Medicine, Volume 32, Issue 6, November 2002, Pages 515528 [47] A. Papadopoulos, D. I. Fotiadis and A. Likas, An automatic microcalcification detection system based on a hybrid neural network classifier, Artificial Intelligence in Medicine, Volume 25, Issue 2, June 2002, Pages 149-167
106
[48] Shih-Chung B. LoChan Heang-PingLin Jyh-ShyanLi HuaiMatthew T. FreedmanSeong K. Mun, Artificial Convolution Neural Network for Medical Image Pattern Recognition, Neural Networks, Volume 8, Issues 7-8, 1995, Pages 1201-1214 [49] Massimo De Santo, Mario Molinara, Francesco Tortorella and Mario Vento, Automatic classification of clustered microcalcifications by a multiple expert system, Pattern Recognition, Volume 36, Issue 7, July 2003, Pages 1467-1477 [50] San-Kan Lee, Pau-choo Chung, Chein-I Chang, Chien-Shun Lo, Tain Lee, Giu-Cheng Hsu and Chin-Wen Yang, Classification of clustered microcalcifications using a Shape Cognitron neural network, Neural Networks, Volume 16, Issue 1, January 2003, Pages 121-132 [51] Osamu Tsujii, Matthew T. Freedman and Seong K. Mun, Classification of microcalcifications in digital mammograms using trend-oriented radial basis function neural network, Pattern Recognition, Volume 32, Issue 5, May 1999, Pages 891-903 [52] Sorantin, E., Schmidt, F., Mayer, H., Winkler, P., Szepesvari, C., Graif, E., Schuetz, E.: Automated detection and classification of microcalcifications in mammograms using artificial neural nets. In: Karssemeijer, M., Thijssen, M., Hendriks, J., van Erning, L. (eds.): Digital Mammography. Kluwer Academic Publishers, Nijmegen (1998) 225-232. [53] W. T. Ho and P. W. T. Lam, Clinical Performance of Computer-assisted Detection (CAD) System in Detecting Carcinoma in Breasts of Different Densities, Clinical Radiology, Volume 58, Issue 2, February 2003, Pages 133-136 [54] Christos Markopoulos, Efstratios Kouskos, Konstantinos Koufopoulos, Vasiliki Kyriakou and John Gogas, Use of artificial neural networks (computer analysis) in the diagnosis of microcalcifications on mammography, European Journal of Radiology, Volume 39, Issue 1, July 2001, Pages 60-65 [55] R. M. Nishikawa, R. A. Schmidt, R. B. Osnis, M. L. Giger, K. Doi, and D. E. Wolverton, “Two-year evaluation of a prototype clinical mammographic workstation for computer-aided diagnosis,” Radiology, vol. 201, p. 256, 1996. [56] Rachel F. Brem and Joelle M. Schoonjans, Radiologist Detection of Microcalcifications With and Without Computer-Aided Detection: A Comparative Study, Clinical Radiology, Volume 56, Issue 2, February 2001, Pages 150-154 [57] M.I. Jordan and R.A. Jacobs, "Hierarchical Mixtures of Experts and the EM Algorithm", Neural Computation, vol.6, 1994, pp. 181-214. [58] Gasser Auda, Cooperative Modular Neural Network Classifiers, PhD thesis, University of Waterloo, Ontario, Canada, 1996. [59] Douglas Zongker and Anil K. Jain. Algorithms for Feature Selection: An Evaluation. In Proceedings of the 13th International Conference on Pattern Recognition, 1996. [60] Haleh Vafaie and Kenneth A. De Jong (1993) Robust Feature Selection Algorithms. In Proceedings of the International Conference on Tools with AI, Boston, MA, pages 356-364. IEEE Computer Society Press. [61] Y.Shinano, M.Higaki and R.Hirabayashi, A Generalized Utility for Parallel Branch and Bound Algorithms, Proc. of the 7nd IEEE Symposium on Parallel and Distributed Processing (SPDP '95), pp. 858-865, 1995. [62] Riedmiller M., Braun H., "A direct adaptive method for faster backpropagation learning: The RPROP algorithm", in Proc. IEEE Intl. Conf. Neural Networks, San Francisco, CA,1993,pp 586-591 [63] M. Craven. Extracting Comprehensible Models from Trained Neural Networks. PhD thesis, Department of Computer Sciences, University of Wisconsin-Madison. 1996. [64] J. Suckling et al. "The Mammographic Image Analysis Society Digital Mammogram Database" Exerpta Medica. International Congress Series 1069, pp. 375-378, 1994. http://www.wiau.man.ac.uk/services/MIAS/MIASweb.html [65] Lasztovicza László, Mammográfiás röntgenfelvételek el feldolgozását végz eljárások fejlesztése, BME VIK TDK KONFERENCIA, 2002
107