Coder Social home page Coder Social logo

kong614 / ebsd-indexing Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nu-cucis/ebsd-indexing

0.0 0.0 0.0 41 KB

Extracting Grain Orientations from EBSD Patterns of Polycrystalline Materials Using Convolutional Neural Networks.

License: Other

Python 100.00%

ebsd-indexing's Introduction

EBSD-indexing

This repository provides a deep learning approach to the indexing of Electron Backscatter Diffraction (EBSD) patterns. It contains a deep convolutional neural network architecture to predict crystal orientation from the EBSD patterns. We design a differentiable approximation to the disorientation function between the predicted crystal orientation and the ground truth; the deep learning model optimizes for the mean disorientation error between the predicted crystal orientation and the ground truth using stochastic gradient descent. It also contains modules for doing benchmark comparison with other machine learning models (using 1-NN clustering).

Installation Requirements

Pyton 2.7

numpy 1.15.4

TensorFlow 1.12

Theano 1.0.1

h5py 2.9.0

Source Files

  • benchmark_batch.py - implementation of a benchmark system 1-NN method with batch sizes based on dictionary look-up. Algorithm:

  • dictionary.py - data loading and preprocessing for labeling and benchmarking.

  • load_data.py - data loading and preprocessing for training the CNN model from the .h5 files.

  • model.py - code for training CNN model.

  • compute_disorientation.py - implementation of a differential approximation to the disorientation function between two pairs of orientations using TensorFlow with minibatch processing for speed up.

  • train_utils.py - utility code for training the model.

  • training-data - Please follow the README file inside the folder to download the required dataset.

  • sample - contains log file from running the model on the dataset used in the paper [1].

To Run

The CNN model can be run by using the following command:

python model.py

The training files and test/validation files are hard coded in the code along with the CNN model architecture and hyperparameters. The training dataset is a collection of 60x60 EBSD images with orientation angles in Euler angles. The code contains the required preprocessing and scaling done before the actual training of the model. The expected output log from running the CNN model on the training dataset used in the paper is provided in the sample/sample.log file.

Publications

Please cite the following paper if you are using this model and code:

  1. Dipendra Jha, Saransh Singh, Reda Al-Bahrani, Wei-keng Liao, Alok Choudhary, Marc De Graef, and Ankit Agrawal, "Extracting "Extracting grain orientations from ebsd patterns of polycrystalline materials using convolutional neural networks." Microscopy and Microanalysis 24, no. 5 (2018): 497-502 [DOI:10.1017/S1431927618015131] [PDF].

Questions/Comments

email: [email protected] or [email protected]
Copyright (C) 2019, Northwestern University.
See COPYRIGHT notice in top-level directory.

Funding Support

This work is supported primarily by the AFOSR MURI award FA9550-12-1-0458. Partial support is also acknowledged from the following grants: NIST award 70NANB14H012; NSF award CCF-1409601; DOE awards DE-SC0007456 and DE-SC0014330.

ebsd-indexing's People

Contributors

dipendra009 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.