Skip to content

Latest commit

 

History

History
128 lines (109 loc) · 3.77 KB

File metadata and controls

128 lines (109 loc) · 3.77 KB

Changelog

v2025.02.20-17.29

  • Fixed a pyinstaller build bug for linux causing crash

v2025.02.19-14.17

  • Change GitHub build NumPy requirements to specific version to fix a crash when creating a new model.

Developers notes 💻

Requirements explained

  • Python 3.8 - 3.11
    • Python version compatible with TensorFlow
  • TensorFlow 2.10.1
    • pip install tensorflow==2.10.1 : deep learning framework
    • TensorFlow 2.10 is the last TensorFlow release that supported GPU on native-Windows.
  • Python packages
    • General
      • numpy : linear algebra and arrays
      • matplotlib : view outside user interface, may be used for debug
      • tqdm : command line progress view
      • edt : euclidean distance transform
    • Data
      • h5py : read and write HDF5 files (our dataset format)
      • tifffile : read and write .tif and .tiff files
      • imagecodecs : codecs for compressed images
    • Graphical user interface
      • PyQt5 : Qt5 Python bindings for GUI
      • pyqt5-tools : PyQt5 tools (designer)
        • required to run pyqt5-tools designer
    • Install everything pip install edt h5py imagecodecs PyQt5 pyqt5-tools tifffile tqdm matplotlib numpy
  • PyInstaller
    • Packaged DeepSCEM app without installing a Python interpreter or any modules
    • pip install pyinstaller : only for binary release

Work in progress

Essential modules

  • data
    • data I/O
    • dataset creation
  • train
    • model creation
    • model training
      • patch generation
  • inference (predict)
    • model load
    • predict
    • image prediction with overlap
  • test
    • metrics

Tested

  • Models
    • 2D binary (256 x 256 patches)
    • 2D multiclass (256 x 256 patches)
    • 3D binary (32 x 128 x 128 patches, 16-4 model)
    • 3D multiclass (32 x 128 x 128 patches, 16-4 model)
  • Loss
    • Dice (binary and multiclass)
    • CrossEntropy (binary)
  • Activation
    • sigmoid
    • softmax

User Interface

  • CLI
    • data
    • create model
    • train
    • predict
    • test
  • UI
    • data
      • rename
    • view
    • create model
    • train
    • predict
    • test
    • safe mode

Refactoring

  • data
    • choice to load data as float16 or float32
    • alert when label is not in {0, 1}
    • need to set number of labels in the dataset file attribute
      • added, but not checked yet
  • train
    • number of labels in data and model can be different and cause problems
    • validation steps set to 0 is not tested yet
    • better early stopping parameters
  • prediction
    • use infer without pad when it's possible
  • test
    • user can do a lot of bad choice and this will result in crash
    • related to previous, user cannot compare dataset if it is not label and pred
  • Current code is prone to user input error

Documentation

  • user manual for gui (list of functionality)
  • user manual for cli (list of functionality)
  • good practice and how to train models effectively
  • tutorials
    • Create a dataset
    • Train your first model
    • Use your model to produce automatic segmentation
    • Evaluate your segmentation on a test set
  • video tutorials

Know bugs

  • prediction padding when matching shapes
    • usage of pred.infer_pad should be replaced with a infer when precondition are met.
  • unexpected nan loss with large 3D patches (dice and bce experimented) 3D models are most time very bad or does not converge, this may not be a bug.
    • create 3D model (default but 16 filter at start)
    • python ../run.py --train-model i3-unet-3d-bin-mito.h5 i3-unet-3d-bin-mito-train.h5 I3-MITO-BIN.hdf5 I3-MITO-BIN.hdf5 Dice 1 96 192 192 128 32 64
    • after a few steps, you get a nan loss
      • 4/128 [..............................] - ETA: 1:13 - loss: nan