DP - Segmentace intrakardiálních záznamů

Řešení segmentující intrakardiální záznamy ve 2D za využití konvoluční neuronové sítě a metod zpracování obrazů
Bc. Jan Řehoř, 195747, xrehor05@vutbr.cz
---------------------------------------
1) Úvodní informace
2) Postup
3) Důležité upozornění
---------------------------------------
1) Úvod informace
Práce byla vytvořena v prostředí Spyder
Pythonu 3.8
Práce vyžaduje nainstalované následující knihovy:
    Pandas
    NumPy
    natsort
    pathlib
    OpenCV
    Matplotlib
    TensorFlow
    scikit-learn
    scikit-image

Kromě zdrojových kódu jsou k dispozici trénovací (118) i testovací (7) data (obrazy). Pro oba modely byl použitý stejný trénovací a testovací dataset (pro porovnání)
Trénovací data byla použita pro natrénování U-net (model uložený v unet_nodel.h5) a SegNet (model uložený v segnet_nodel.h5) a následně se provedlo otestovaní na testovacích datech (výstupy v diplomové práci).

Struktura:
    segmentation_of_intracardial_signal.py - hlavní soubor, který se spouští.
    imageprocessing.py - soubor, který obsahuje pro potřeby diplomové práce třídu ImageProcessing, která například vytváří z 1D signálů obrazy, prahování, oříznutí obrazu, či dilataci.
    networkmodel.py - soubor, která obsahuje pro potřeby diplomové práce třídu NetworkModel. Obsahuje metody pro vytvoření U-net a Segnet
    stats.py - soubor, která obsahuje pro potřeby diplomové práce třídu Stats. Obsahuje metody pro zhodnocení modelu, jako určení dice koeficientu, či určení TP, TN, FP, FN, senzitivity a precission-
    signals/ - adresář, kde se nacházely .csv a .json soubory signálů - prázdné (byly odstraněny - více v Důležité upozornění)
    annotations/ - adresář, kde se nacházely .sel soubory (anotace) - prázdné (byly odstraněny - více v Důležité upozornění)
    train/ - adresář, kde se nachází trénovací data (obrazy signálů a příslušných masek - label, rozdělené v adresářích images a masks)
    test/ - adresář, kde se nachází trénovací data (obrazy signálů a příslušných masek, rozdělené v adresářích images a masks)
    .h5 soubory - soubory, kde jsou uloženy parametry naučených modelů (unet_nodel.h5, segnet_model.h5, dle kterých jsou v textu práce výstupy)
2)
Postup:
   - proces vytvoření obrazů vyžaduje .csv a .sel soubory, nicméně, v adresářích train/ a test/ se již nachází obrazy,  
     na kterých lze model vyzkoušet (.csv a .sel soubory zde slouží pouze pro vytvoření obrazů)
     trénovací a testovací data jsou v poměru 118 trénovacích obrazů (a tím pádem 118 obrazů příslušných masek) ku 7 testovacím obrazům signálu (a tím pádem 7 obrazů přislýšných masek)
   - pro vyzkoušení modelu lze tak využít tyto testovací data.
   - Kroky:
          1) import knihoven a tříd -> pokud by nahrání, import či vytváření objektů z vytvořených tríd nefungovalo (Například, hláška 'No module named...') přes spouštění po sekci, je možné řešení spustit celý program a pak ho hned ukončit (pak spouštění po sekcích funguje).
          2) Nastavení konfigurace, řádky 65-109. Je doporučeno konfiguraci ponechat a změnit pouze cesty k adresářům
          2.5) Na řádcích 114-116 je třeba spustit tyto řádky pro vytvoření objektů z vytvořených tříd (i v případě vyzkoušení predikce)
          3) 
              I) v připadě vyzkoušení predikce - přepsat v řádku 324 cestu k požadovanému .h5 souboru (unet_nodel.h5 nebo segnet_model.h5) a spustit vše od sekce predikce až po konec. 
              Pokud je .h5 soubor ve stejném adresáři, jako segmentation_of_intracardical_signal.py, lze zapsat jen název s koncovkou
              Pokud by se spustilo i trénování a na ř. 297 by byl buď unet_nodel.h5 a segnet_model.h5 (místo model.h5), budou parametry po trénování přeuloženy, proto...
              ...II) v případě vyzkoušení i trénování je vhodné na řádcích 297 a 324  ponechat zadaný model.h5 v metodě save()
              III) V případě vyzkoušení vytvoření modelu je na ř.264 možnost volání vytvořené metody buď create_unet() nebo create_segnet()

3)
Důležité upozornění: 
    - V adresářich signals/ a annotations/ se nenachází žádné soubory, jelikož nemohou být mnou zveřejněny 
      (tyto soubory ale v rámci tohoto řešení služí pouze k vytvoření obrazů - zbytek je založen na obrazech, které v adresářích train/ a test/ jsou)
    - Pokud se spustí proces vytváření obrazů, budou všechny obrazy v adresářích train/test nahrazeny novými obrazy (pokud jich bude stejné množství nebo více)         			
    - Pokud se spustí trénování i uložení na ř.297, a bude a na ř. 297 a .ř 324 jeden z těchto souborů: unet_nodel.h5 a segnet_model.h5, hrozí jejich přeuložení. Pro vyzkoušení trénování je doporučeno použít model.h5, ktery je v základu v metode save (297 ř.) definován 