All Projects → ziatdinovmax → GPim

ziatdinovmax / GPim

Licence: MIT license
Gaussian processes and Bayesian optimization for images and hyperspectral data

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to GPim

Ts Emo
This repository contains the source code for “Thompson sampling efficient multiobjective optimization” (TSEMO).
Stars: ✭ 39 (+34.48%)
Mutual labels:  gaussian-processes, bayesian-optimization
Gpstuff
GPstuff - Gaussian process models for Bayesian analysis
Stars: ✭ 106 (+265.52%)
Mutual labels:  gaussian-processes, bayesian-optimization
Bayesianoptimization
A Python implementation of global optimization with gaussian processes.
Stars: ✭ 5,611 (+19248.28%)
Mutual labels:  gaussian-processes, bayesian-optimization
hyper-engine
Python library for Bayesian hyper-parameters optimization
Stars: ✭ 80 (+175.86%)
Mutual labels:  gaussian-processes, bayesian-optimization
Cornell Moe
A Python library for the state-of-the-art Bayesian optimization algorithms, with the core implemented in C++.
Stars: ✭ 198 (+582.76%)
Mutual labels:  gaussian-processes, bayesian-optimization
Nasbot
Neural Architecture Search with Bayesian Optimisation and Optimal Transport
Stars: ✭ 120 (+313.79%)
Mutual labels:  gaussian-processes, bayesian-optimization
Bayesian Machine Learning
Notebooks about Bayesian methods for machine learning
Stars: ✭ 1,202 (+4044.83%)
Mutual labels:  gaussian-processes, bayesian-optimization
approxposterior
A Python package for approximate Bayesian inference and optimization using Gaussian processes
Stars: ✭ 36 (+24.14%)
Mutual labels:  gaussian-processes, bayesian-optimization
Limbo
A lightweight framework for Gaussian processes and Bayesian optimization of black-box functions (C++-11)
Stars: ✭ 157 (+441.38%)
Mutual labels:  gaussian-processes, bayesian-optimization
Pysot
Surrogate Optimization Toolbox for Python
Stars: ✭ 136 (+368.97%)
Mutual labels:  gaussian-processes, bayesian-optimization
pyrff
pyrff: Python implementation of random fourier feature approximations for gaussian processes
Stars: ✭ 24 (-17.24%)
Mutual labels:  gaussian-processes, bayesian-optimization
mango
Parallel Hyperparameter Tuning in Python
Stars: ✭ 241 (+731.03%)
Mutual labels:  gaussian-processes, bayesian-optimization
Tensorflow2-ObjectDetectionAPI-Colab-Hands-On
Tensorflow2 Object Detection APIのハンズオン用資料です(Hands-on documentation for the Tensorflow2 Object Detection API)
Stars: ✭ 33 (+13.79%)
Mutual labels:  colab-notebook
interactive-gp-visualization
Interactive visualization of Gaussian processes
Stars: ✭ 133 (+358.62%)
Mutual labels:  gaussian-processes
random-fourier-features
Implementation of random Fourier features for kernel method, like support vector machine and Gaussian process model
Stars: ✭ 50 (+72.41%)
Mutual labels:  gaussian-processes
peps-torch
Solving two-dimensional spin models with tensor networks (powered by PyTorch)
Stars: ✭ 44 (+51.72%)
Mutual labels:  lattice-models
LLSpy
Lattice light-sheet post-processing utility.
Stars: ✭ 19 (-34.48%)
Mutual labels:  microscopy
Deep-Learning-Experiments-implemented-using-Google-Colab
Colab Compatible FastAI notebooks for NLP and Computer Vision Datasets
Stars: ✭ 16 (-44.83%)
Mutual labels:  colab-notebook
micromanager-samples
Python samples for Micro-Manager: image acquisition and microscope control system
Stars: ✭ 19 (-34.48%)
Mutual labels:  microscopy
ESNAC
Learnable Embedding Space for Efficient Neural Architecture Compression
Stars: ✭ 27 (-6.9%)
Mutual labels:  bayesian-optimization

Downloads PyPI version

build Documentation Status Codacy Badge

Colab Gitpod ready-to-code

What is GPim

GPim is a python package that provides an easy way to apply Gaussian processes (GP) in Pyro and Gpytorch to images and hyperspectral data and to perform GP-based Bayesian optimization on grid data. The intended audience are domain scientists (for example, microscopists) with a basic knowledge of how to work with numpy arrays in Python.

Scientific papers that use GPim:

Installation

First install PyTorch. Then install GPim using

pip install gpim

How to use

GP reconstruction

Below is a simple example of applying GPim to reconstructing a sparse 2D image. It can be similarly applied to 3D and 4D hyperspectral data. The missing data points in sparse data must be represented as NaNs. In the absense of missing observation GPim can be used for image and spectroscopic data cleaning/smoothing in all the dimensions simultaneously, as well as for the resolution enhancement.

import gpim
import numpy as np

# # Load dataset
R = np.load('sparse_exp_data.npy') 

# Get full (ideal) grid indices
X_full = gpim.utils.get_full_grid(R, dense_x=1)
# Get sparse grid indices
X_sparse = gpim.utils.get_sparse_grid(R)
# Kernel lengthscale constraints (optional)
lmin, lmax = 1., 4.
lscale = [[lmin, lmin], [lmax, lmax]] 

# Run GP reconstruction to obtain mean prediction and uncertainty for each predictied point
mean, sd, hyperparams = gpim.reconstructor(
    X_sparse, R, X_full, lengthscale=lscale,
    learning_rate=0.1, iterations=250, 
    use_gpu=True, verbose=False).run()

# Plot reconstruction results
gpim.utils.plot_reconstructed_data2d(R, mean, cmap='jet')
# Plot evolution of kernel hyperparameters during training
gpim.utils.plot_kernel_hyperparams(hyperparams)

GP-based Bayesian optimization

When performing measurements (real or simulated), one can use the information about the expected function value and uncertainty in GP reconstruction to select the next measurement point. This is usually referred to as exploration-exploitation approach in the context of Bayesian optimization. A simple example with a "dummy" function is shown below.

import gpim
import numpy as np
np.random.seed(42)

# Create a dummy 2D function
def trial_func(idx):
    """
    Takes a list of indices as input and returns function value at these indices
    """
    def func(x0, y0, a, b, fwhm): 
        return np.exp(-4*np.log(2) * (a*(idx[0]-x0)**2 + b*(idx[1]-y0)**2) / fwhm**2)
    Z1 = func(5, 10, 1, 1, 4.5)
    Z2 = func(10, 8, 0.75, 1.5, 7)
    Z3 = func(18, 18, 1, 1.5, 10)
    return Z1 + Z2 + Z3

# Create an empty observation matrix
grid_size = 25
Z_sparse = np.ones((grid_size, grid_size)) * np.nan
# Seed it with several random observations
idx = np.random.randint(0, grid_size, size=(4, 2))
for i in idx:
    Z_sparse[tuple(i)] = trial_func(i) 

# Get full and sparse grid indices for GP
X_full = gpim.utils.get_full_grid(Z_sparse)
X_sparse= gpim.utils.get_sparse_grid(Z_sparse)
# Initialize Bayesian optimizer with an 'expected improvement' acquisition function
boptim = gpim.boptimizer(
    X_sparse, Z_sparse, X_full, 
    trial_func, acquisition_function='ei',
    exploration_steps=30,
    use_gpu=False, verbose=1)
# Run Bayesian optimization
boptim.run()

# Plot exploration history
gpim.utils.plot_query_points(boptim.indices_all, plot_lines=True)

Running GPim notebooks in the cloud

  1. Executable Google Colab notebook with the examples of applying GP to sparse spiral 2D scans in piezoresponse force microscopy (PFM), simulated 2D atomic image in electron microscopy, and hyperspectral 3D data in Band Excitation PFM.
  2. Executable Google Colab notebook with the example of applying "parallel" GP method to analysis of EELS data.
  3. Executable Google Colab notebook with the example of applying GP to 4D spectroscopic dataset for smoothing and resolution enhancement in contact Kelvin Probe Force Microscopy (cKPFM).
  4. Executable Google Colab notebook with a simple example of performing GP-based exploration-exploitation on a toy dataset.

Requirements

It is strongly recommended to run the codes with a GPU hardware accelerator (such as NVIDIA's P100 or V100 GPU). If you don't have a GPU on your local machine, you may rent a cloud GPU from Google Cloud AI Platform. Running the example notebooks one time from top to bottom will cost about 1 USD with a standard deep learning VM instance (one P100 GPU and 15 GB of RAM).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].