Code Monkey home page Code Monkey logo

deepbornfno's Introduction

Learned Born Operator for Reflection Tomographic Imaging

This repository includes source code for training and using the Born Fourier Neural Operator (BornFNO) model proposed in our ICASSP 2023 paper, Deep Born Operator Learning for Reflection Tomographic Imaging by Qingqing Zhao, Yanting Ma, Petros Boufounos, Saleh Nabi, Hassan Mansour.

Please click here to read the paper.

If you use any part of this code for your work, we ask that you include the following citation:

@InProceedings{Zhao_2023ICASSP,
  author =	 {Qingqing Zhao and Yanting Ma and Petros Boufounos and Saleh Nabi and Hassan Mansour},
  title =	 {Deep Born Operator Learning for Reflection Tomographic Imaging},
  booktitle =	 {Proc. IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
  year =	 2023,
  month =	 June
}

Table of contents

  1. Environment Setup
  2. Download the Dataset and Pretrained Models
  3. Training and Evaluating the Forward Models
  4. Training the Autoencoder Prior Network
  5. Solving the Inverse Problem

Environment Setup

To setup a conda environment use these commands

conda env create -f environment.yml
conda activate deepGPR

Download the Dataset and Pretrained Models

Dataset and the pretrained model can be download here. Unzip the data.zip and place v1 it in the data folder. In this dataset, we consider two layer structures with two cylinders of various radius embedded completely in the second layer. More setup detail could be found in the paper, section 4.1.
The structure of h5 file:

data_frequency.h5
    ├── 0
    │   └── eps
        └── f_field
    ├── 1
        └── eps
        └── f_field
    ├── ...

Unzip the model_zoo.zip and place it in the ./ folder.

Training and Evaluating the Forward Models

To start multiple training in parallel, run following commends. The default setting includes FNO/BornFNO with 1/5 layers.

cd forward_model
python run_fno.py

To train one BornFNO model only, use following commands. Modify layer_num, type if necessary,

cd forward_model
python train_fno.py --type="born" --layer_num=5 --modes=12 --width=128 --lr=1e-3 --batch_size=64 --dataset=v1 --add_noise=0 --step_size=700

The log and the trained model will be saved in model_zoo/forward_model/. To evaluate the trained model, run forward_model/eval.ipynb.

Training the Autoencoder Prior Network

cd prior
python experiment_prior.py --sig=0.001 --latent_size=64 --gpu=6

The log and the trained model will be saved in model_zoo/priors/.

Solving the Inverse Problem

cd inverse_problem
python run_results_no_prior.py # solve inverse problem without learned autoencoder prior
python run_results_with_prior.py # solve inverse problem with learned autoencoder prior

Run inverse_problem/demo.ipynb for a quick demo and visualization.

Contributing

See CONTRIBUTING.md for our policy on contributions.

License

Released under AGPL-3.0-or-later license, as found in the LICENSE.md file.

All files, except as noted below:

Copyright (C) 2022-2023 Mitsubishi Electric Research Laboratories (MERL).

SPDX-License-Identifier: AGPL-3.0-or-later

forward_model/Adam.py was adapted from an earlier release of neuraloperator https://github.com/neuraloperator/neuraloperator and forward_model/model.py contains functions that were adapted and modified from an earlier release of neuraloperator https://github.com/neuraloperator/neuraloperator (MIT license as found in LICENSES/MIT.txt):

Copyright (C) 2022-2023 Mitsubishi Electric Research Laboratories (MERL)
Copyright (C) 2023 NeuralOperator developers

SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: MIT

prior/encoder_model.py was adapted and modified from https://github.com/AntixK/PyTorch-VAE/ (Apache-2.0 license as found in LICENSES/Apache-2.0.md)

Copyright (C) 2022-2023 Mitsubishi Electric Research Laboratories (MERL)
Copyright (C) 2020 Anand Krishnamoorthy Subramanian

SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0

deepbornfno's People

Contributors

mansourgithub avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.