图像分析的高斯过程
gpim的Python项目详细描述
什么是GPim
GPim是一个python包,它提供了一种简单的方法来将Pyro和Gpytorch中的高斯过程(GP)应用于图像和高光谱数据,并对网格数据执行基于GP的贝叶斯优化。目标读者是领域科学家(例如,显微镜学家),他们对如何使用Python中的numpy数组有基本的了解。
使用GPim的科学论文:
- 三维高光谱显微镜数据的GP:npj Comput Mater 6, 21 (2020)
- 4D高光谱显微镜数据的GP:Journal of Applied Physics 128, 055101 (2020)
- 伊辛模型的GP和基于GP的BO:Journal of Applied Physics 128, 164304 (2020)
- 铁电体磁滞回线工程的GP基BO:Journal of Applied Physics 128, 024102 (2020)
安装
首先安装PyTorch。然后使用安装GPim
pip install gpim
如何使用
GP重建
下面是一个应用GPim重建稀疏2D图像的简单示例。它同样适用于三维和四维高光谱数据。稀疏数据中缺少的数据点必须表示为NaNs。在没有观测缺失的情况下,GPim可以同时用于图像和光谱数据的各个维度的清洗/平滑,以及提高分辨率。
^{pr2}$基于GP的贝叶斯优化
在进行测量(真实或模拟)时,可以利用GP重建中的期望函数值和不确定度信息来选择下一个测量点。这通常被称为贝叶斯优化环境下的探索开发方法。下面是一个带有“dummy”函数的简单示例。
importgpimimportnumpyasnpnp.random.seed(42)# Create a dummy 2D functiondeftrial_func(idx):""" Takes a list of indices as input and returns function value at these indices """deffunc(x0,y0,a,b,fwhm):returnnp.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)returnZ1+Z2+Z3# Create an empty observation matrixgrid_size=25Z_sparse=np.ones((grid_size,grid_size))*np.nan# Seed it with several random observationsidx=np.random.randint(0,grid_size,size=(4,2))foriinidx:Z_sparse[tuple(i)]=trial_func(i)# Get full and sparse grid indices for GPX_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 functionboptim=gpim.boptimizer(X_sparse,Z_sparse,X_full,trial_func,acquisition_function='ei',exploration_steps=30,use_gpu=False,verbose=1)# Run Bayesian optimizationboptim.run()# Plot exploration historygpim.utils.plot_query_points(boptim.indices_all,plot_lines=True)
在云端运行GPim笔记本
- 可执行Google Colabnotebook,举例说明将GP应用于压电响应力显微镜(PFM)中的稀疏螺旋二维扫描、电子显微镜中的模拟二维原子图像和带内激励PFM中的高光谱三维数据。在
- 可执行googlecolabnotebook,以应用并行GP方法分析鳗鱼数据为例。在
- 可执行googlecolabnotebook,并以接触式Kelvin探针力显微镜(cKPFM)中4D光谱数据集的GP应用为例。在
- 可执行googlecolabnotebook,其中有一个在玩具数据集上执行基于GP的探索开发的简单示例。在
要求
强烈建议使用GPU硬件加速器(如NVIDIA的P100或V100 GPU)运行代码。如果本地计算机上没有GPU,可以从Google Cloud AI Platform租用云GPU。使用一个标准的深度学习虚拟机实例(一个p100gpu和15gb的RAM),从上到下运行一次example notebooks将花费大约1美元。
- 项目
标签: