Skip to content
No description, website, or topics provided.
Jupyter Notebook MATLAB
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Display of en face maps
Figures-for-readme
Matlab statistical analysis
CNN_uncertainty_map_so2_14_27_16_o2.mat
CNN_uncertainty_map_so2_14_48_16_o2.mat
CNN_uncertainty_map_so2_14_53_00_o2.mat
CNN_uncertainty_map_val_14_27_16_o2.mat
CNN_uncertainty_map_val_14_48_16_o2.mat
CNN_uncertainty_map_val_14_53_00_o2.mat
CNN_uncertainty_so2.mat
CNN_uncertainty_val.mat
Model_CNN_uncertainty_100a_9.h5
Model_NN_uncertainty_100c_9.h5
NN_uncertainty_map_so2_14_27_16_o2.mat
NN_uncertainty_map_so2_14_48_16_o2.mat
NN_uncertainty_map_so2_14_53_00_o2.mat
NN_uncertainty_map_val_14_27_16_o2.mat
NN_uncertainty_map_val_14_48_16_o2.mat
NN_uncertainty_map_val_14_53_00_o2.mat
NN_uncertainty_so2.mat
NN_uncertainty_val.mat
README.md
So2_FNN_CNN_rolling_avg_100_9_O2Norm_Finaldemo.ipynb
data_all_LSF_optimization.csv
data_test_rolling_avg_whole_pixels_100_4Lsn_Light_revised_shuffled_LSF2.csv
data_test_rolling_avg_whole_pixels_SYC_100_3Bsn_Light_revised_shuffled_LSF2.csv
data_train_rolling_avg_whole_pixels_100_random5_Light_revised_shuffled_LSF2.csv
least_square_test_so2.mat
log1_CNN_uncertainty_avg_100a_9.txt
log1_NN_uncertainty_avg_100c_9.txt
log2_CNN_uncertainty_avg_100a_9.txt
log2_NN_uncertainty_avg_100c_9.txt
log3_CNN_uncertainty_avg_100a_9.txt
log3_NN_uncertainty_avg_100c_9.txt
log4_CNN_uncertainty_avg_100a_9.txt
log4_NN_uncertainty_avg_100c_9.txt

README.md

Deep-spectral-learning-oxygen-saturation

Python (Keras) implementation of paper:

Deep spectral learning for label-free optical imaging oximetry with uncertainty quantification.

We provide models (a fully connected neural network and a convolutional neural network) with pre-trained weights, input spectra for model training, results of test data, statistical analysis, and reconsturction of en face maps of oxygen saturation & uncertainty.

Citation

If you find this project useful in your research, please consider citing our paper: Deep spectral learning for label-free optical imaging oximetry with uncertainty quantification, Rongrong Liu, Shiyi Cheng, Lei Tian, Ji Yi

Abstract

Measurement of blood oxygen saturation (sO2) by optical imaging oximetry provides invaluable insight into local tissue functions and metabolism. Despite different embodiments and modalities, all label-free optical imaging oximetry techniques utilize the same principle of sO2-dependent spectral contrast from haemoglobin. Traditional approaches for quantifying sO2 often rely on analytical models that are fitted by the spectral measurements. These approaches in practice suffer from uncertainties due to biological variability, tissue geometry, light scattering, systemic spectral bias, and variations in the experimental conditions. Here, we propose a new data-driven approach, termed deep spectral learning (DSL), to achieve oximetry that is highly robust to experimental variations and, more importantly, able to provide uncertainty quantification for each sO2 prediction. To demonstrate the robustness and generalizability of DSL, we analyse data from two visible light optical coherence tomography (vis-OCT) setups across two separate in vivo experiments on rat retinas. Predictions made by DSL are highly adaptive to experimental variabilities as well as the depth-dependent backscattering spectra. Two neural-network-based models are tested and compared with the traditional least-squares fitting (LSF) method. The DSL-predicted sO2 shows significantly lower mean-square errors than those of the LSF. For the first time, we have demonstrated en face maps of retinal oximetry along with a pixel-wise confidence assessment. Our DSL overcomes several limitations of traditional approaches and provides a more flexible, robust, and reliable deep learning approach for in vivo non-invasive label-free optical oximetry.

Requirements

python 3.7.1

keras 2.2.4

numpy 1.16.4

matplotlib 3.1.0

scikit-learn 0.21.2

ipython 7.5.0

Work Flow:

Network Structure:

The fully connected neural network (FNN) model and the convolutional neural network (CNN) model

Training and testing data from two literatures:

How to run the demo:

  1. The demo code is written by Ipython Notebook and in the file: So2_FNN_CNN_rolling_avg_100_9_O2Norm_Finaldemo.ipynb

  2. The input spectra are in csv files:

    data_test_rolling_avg_whole_pixels_100_4Lsn_Light_revised_shuffled_LSF2

    data_test_rolling_avg_whole_pixels_SYC_100_3Bsn_Light_revised_shuffled_LSF2

    data_train_rolling_avg_whole_pixels_100_random5_Light_revised_shuffled_LSF2

    You can make different splits of training and testing data in the demo.

  3. Results of so2 predictions and uncertainties in saved in:

    NN_uncertainty_map_so2_XX_XX_XX_o2 for so2 predicted by FNN model

    NN_uncertainty_map_val_XX_XX_XX_o2 for so2 uncertainty by FNN model

    CNN_uncertainty_map_so2_XX_XX_XX_o2 for so2 predicted by CNN model

    CNN_uncertainty_map_val_XX_XX_XX_o2 for so2 uncertainty by CNN model

  4. Statistical analysis for test data as explained in the paper are in the file: Matlab statistical analysis, with code (Statistical_Analysis.m) written in Matlab

  5. Reconstruction of en face maps of so2 and uncertainty as explaied in the paper are in the file: Display of en face maps, with code (Display_so2_uncertainty_maps.m) written in Matlab

Results:

Predictions by the FNN and the CNN models:

Reconstrcuted sO2 en face maps at hypoxia, nomaxia, and hyperxoia:

Reconstrcuted sO2 uncertainty en face maps at hypoxia, nomaxia, and hyperxoia:

You can’t perform that action at this time.