Code Monkey home page Code Monkey logo

ptychonn's Introduction

PtychoNN: Deep learning of ptychographic imaging

PtychoNN is a two-headed encoder-decoder network that simultaneously predicts sample amplitude and phase from input diffraction data alone. PtychoNN is 100s of times faster than iterative phase retrieval and can work with as little as 25X less data.

Companion repository to the paper at: https://aip.scitation.org/doi/full/10.1063/5.0013065

The strucuture of the network is shown below: alt text

Requires:

git lfs

Tensorflow 1.14

Keras 2.2.4

Tensorflow 2.x version:

Tf2 folder contains notebooks compatible with TF 2.x

-- NOTE: notebooks were run in Google Colab, modify as required for local runtimes

Mixed precision training

Newest version also contains notebooks that use PyTorch and TF2 mixed precision frameworks for faster training. The original PyTorch version is likely using float64, and the mixed precision mode therefore provides substantial acceleration. It looks like the original TF2 code might be using float32, so the mixed precision code only offers slight improvement in runtime. The test results remain unchanged.

ptychonn's People

Contributors

danielzt12 avatar mcherukara avatar saugatkandel avatar vbanakha avatar yudongyao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ptychonn's Issues

Add support for saving trained models as ONNX

ONNX is a cross-platform model representation and inference runtime that is used by the NVidia Jetson (for example). While the idea of an open model representation sounds good. There is not official support for converting back to pytorch from ONNX. i.e. You cannot use pytorch as the inferene runtime after saving as ONNX.

Errors In PyTorch - Multi-GPU

In order to get accurate training on the multi-GPU instance of PyTorch one must keep the batch size the same. Please see explanation here (https://discuss.pytorch.org/t/accuracy-difference-on-multi-gpu-with-nn-dataparallel/65481/12)

As for the model saving for the multi-GPU instance, one must chance the code to the following (see the following for more information https://discuss.pytorch.org/t/save-checkpoints-trained-on-multi-gpus-for-load-on-single-gpu/97881/9):

#Function to update saved model if validation loss is minimum
def update_saved_model(model, path):
    if not os.path.isdir(path):
        os.mkdir(path)
    for f in os.listdir(path):
        os.remove(os.path.join(path, f))
    if (NGPUS>1):    
        
        if isinstance(model, nn.DataParallel):
            torch.save(model.module.state_dict(), path+'best_model.pth')
        else:
            torch.save(model.state_dict(), path+'best_model.pth')
    else:
        torch.save(model, path+'best_model.pth')

Make a mechanism for querying the input and output sizes of the model

Could you please provide a mechanism for querying the NN input and output sizes? (currently everything is 128x128, but it sounds like people want to move to 512x512). PtychoNN only supports square detectors at the moment, but it might be good to design the API with support for rectangular detectors.

This should probably be a parameter of the Tester/model classes.

Project needs an open source license

In order to distribute this package on conda-forge, this codebase needs a license. @mcherukara, should determine who is the copywrite owner and have them/himself add a the appropriate open-source license to the repo. (ANL-1032 if this is Argonne-owned software)

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.