跳转到主要内容

使用OpenCL在Python中实现GPU加速的图像处理

项目描述

py-clesperanto

Image.sc forum website PyPI Anaconda-Server Badge Contributors PyPI - Downloads GitHub stars GitHub forks License Python Version tests codecov Development Status DOI

py-clesperanto是clesperanto的原型 - 一个多平台多语言的GPU加速图像处理框架。我们主要在生命科学领域使用它来分析3维和4维显微镜数据,例如,在发育生物学中分割细胞并研究其个体属性以及构成组织的细胞复合物的属性。

图像数据来源:Daniela Vorkel,Myers实验室,MPI-CBG,使用napari渲染

clesperanto使用来自CLIJOpenCL内核

为了用户的方便,还提供了napariFiji的代码生成器。还可以查看napari工作流程优化器,用于半自动调整clesperanto函数的参数。

参考文献

初步API参考文档可在此处找到。此外,CLIJ2文档中也可找到部分参考内容

安装

  • 获取一个conda/python环境,例如通过mamba-forge
  • 如果您之前从未使用过python/conda环境,请先按照这些说明操作。
conda create --name cle_39 python=3.9
conda activate cle_39
  • 使用mamba / conda安装pyclesperanto-prototype
mamba install -c conda-forge pyclesperanto-prototype

或者使用pip

pip install pyclesperanto-prototype

故障排除:显卡驱动程序

如果错误信息包含"ImportError: DLL load failed while importing cl: The specified procedure could not be found" 查看这里 或 "clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR",请安装显卡和/或OpenCL设备的最新驱动程序。根据您的硬件从以下列表中选择正确的驱动程序源

有时,mac用户需要安装此软件

mamba install -c conda-forge ocl_icd_wrapper_apple

有时,Linux用户需要安装此软件

mamba install -c conda-forge ocl-icd-system

Linux用户可能需要根据他们的GPU安装诸如intel-opencl-icdrocm-opencl-runtime之类的包。

在中央处理器(CPU)上计算

如果没有可用的OpenCL兼容GPU,pyclesperanto-prototype可以使用CPU进行计算。只需安装oclgrindpocl,例如使用mamba / conda。Oclgrind推荐用于Windows系统,PoCL用于Linux。MacOS通常自带OpenCL对CPU的支持。

mamba install  oclgrind -c conda-forge

或者

mamba install  pocl -c conda-forge

兼容的Intel Xeon CPU的所有者也可以安装驱动程序以用于计算

示例代码

一个基本的图像处理工作流程加载blobs.gif并计算对象数量

import pyclesperanto_prototype as cle

from skimage.io import imread, imsave

# initialize / select GPU with "TX" in their name
device = cle.select_device("TX")
print("Used GPU: ", device)

# load data
image = imread('https://imagej.nih.gov/ij/images/blobs.gif')

# process the image
inverted = cle.subtract_image_from_scalar(image, scalar=255)
blurred = cle.gaussian_blur(inverted, sigma_x=1, sigma_y=1)
binary = cle.threshold_otsu(blurred)
labeled = cle.connected_components_labeling_box(binary)

# The maximium intensity in a label image corresponds to the number of objects
num_labels = labeled.max()
print(f"Number of objects in the image: {num_labels}")

# save image to disc
imsave("result.tif", labeled)

示例画廊

选择GPU

在Jupyter Notebooks中进行图像处理

计数blob

基于Voronoi-Otsu的标记

3D图像分割

基于膜的细胞分割

根据多通道中的表达计数细胞核

根据信号强度区分细胞核

检测珠子和测量其大小

标签统计

参数图

沿线测量强度

裁剪和粘贴图像

检查3D图像数据

旋转、缩放、平移、仿射变换

去倾斜

乘向量和矩阵

矩阵乘法

质心之间的网格

相邻邻居之间的网格

具有距离的网格

最近邻网格

导出到igraph和networkx

邻域定义

组织邻域量化

邻居的邻居

沃罗诺伊图

基于邻域图的形状描述符

测量两个标签图像中标签之间的距离

Tribolium形貌测量 + Napari

Tribolium形貌测量 (存档版本)

napari+dask时间序列处理

技术洞察

浏览操作

交互式小部件

自动工作流程优化

在NVIDIA GPU上跟踪内存消耗

探索和切换GPU

与cupy互操作

使用cupy后端

使用Dask GPU集群处理大数据

相关项目

napari-pyclesperanto-assistant:napari中通用GPU加速图像处理和分析的图形用户界面。

napari-accelerated-pixel-and-object-classification:用于像素和标记对象分类的GPU加速随机森林分类器

napari-clusters-plotter:根据对象的定量属性进行聚类

基准测试

我们实现了一些基本的基准测试笔记本,可以查看pyclesperanto与其他一些图像处理库之间的性能差异,通常使用CPU。这些基准测试结果因图像大小、核大小、使用的操作、参数和使用的硬件而异。请随意使用这些笔记本,根据您的用例场景进行调整,并在目标硬件上进行基准测试。如果您有其他场景或用例,我们非常欢迎您以拉取请求的形式提交您的笔记本!

另请参阅

还有其他用于代码加速和图像处理的GPU加速库。

欢迎反馈!

clesperanto是在开源中开发的,因为我们相信开源社区。请参阅我们的社区指南。请随意将反馈作为GitHub问题或通过image.sc提交。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pyclesperanto_prototype-0.24.5.tar.gz (208.5 kB 查看哈希值)

上传时间

构建分布

pylesperanto_prototype-0.24.5-py3-none-any.whl (624.0 kB 查看散列值)

上传时间 Python 3

由以下提供支持