{ "cells": [ { "cell_type": "markdown", "id": "seasonal-maryland", "metadata": {}, "source": [ "# Connected component labeling\n", "Here we compare performance connected component labeling algorithms implemented in [cupy](https://cupy.dev), [scikit image](https://scikit-image.org) and clEsperanto.\n", "\n", "Note: benchmarking results vary heavily depending on image size, kernel size, used operations, parameters and used hardware. Use this notebook to adapt it to your use-case scenario and benchmark on your target hardware. If you have different scenarios or use-cases, you are very welcome to submit your notebook as pull-request!" ] }, { "cell_type": "code", "execution_count": 1, "id": "forward-shuttle", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pyclesperanto_prototype as cle\n", "from skimage import filters\n", "import time\n", "\n", "# to measure kernel execution duration properly, we need to set this flag. It will slow down exection of workflows a bit though\n", "cle.set_wait_for_kernel_finish(True)\n", "\n", "# selet a GPU with the following in the name. This will fallback to any other GPU if none with this name is found\n", "cle.select_device('RTX')" ] }, { "cell_type": "code", "execution_count": 2, "id": "constant-democracy", "metadata": {}, "outputs": [], "source": [ "# test data\n", "import numpy as np\n", "\n", "sigma = 10\n", "pointlist = np.random.random([3, 200]) * 400\n", "\n", "image = cle.create((400, 400, 400))\n", "cle.set(image, 0)\n", "\n", "cle.pointlist_to_labelled_spots(pointlist, image)\n", "\n", "blobs = cle.maximum_sphere(image, radius_x=10, radius_y=10, radius_z=10)\n", "\n", "binary_blobs = cle.greater_constant(blobs, constant=0)\n", "\n", "binary_image = cle.pull(binary_blobs)" ] }, { "cell_type": "code", "execution_count": 3, "id": "british-charger", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "from skimage.io import imshow\n", "imshow(binary_image[50])" ] }, { "cell_type": "markdown", "id": "closing-archives", "metadata": {}, "source": [ "# scikit-image" ] }, { "cell_type": "code", "execution_count": 4, "id": "spread-cincinnati", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "skimage label duration: 0.5534896850585938\n", "skimage label duration: 0.5589733123779297\n", "skimage label duration: 0.5973742008209229\n", "skimage label duration: 0.5525546073913574\n", "skimage label duration: 0.5963160991668701\n", "skimage label duration: 0.6306900978088379\n", "skimage label duration: 0.5712888240814209\n", "skimage label duration: 0.6745197772979736\n", "skimage label duration: 0.5723729133605957\n", "skimage label duration: 0.6139242649078369\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Programs\\miniconda3\\envs\\beetlesafari\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Low image data range; displaying image with stretched contrast.\n", " lo, hi, cmap = _get_display_range(image)\n" ] }, { "data": { "text/plain": [ "188" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# label with scikit-image\n", "from skimage.measure import label\n", "\n", "result_image = None\n", "\n", "for i in range(0, 10):\n", " start_time = time.time()\n", " result_image = label(binary_image)\n", " print(\"skimage label duration: \" + str(time.time() - start_time))\n", " \n", "imshow(result_image[50])\n", "np.max(result_image)" ] }, { "cell_type": "markdown", "id": "enabling-comment", "metadata": {}, "source": [ "# clEsperanto" ] }, { "cell_type": "code", "execution_count": 5, "id": "amber-genome", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "clEsperanto label duration: 0.15620994567871094\n", "clEsperanto label duration: 0.12492918968200684\n", "clEsperanto label duration: 0.11988615989685059\n", "clEsperanto label duration: 0.10935020446777344\n", "clEsperanto label duration: 0.1263105869293213\n", "clEsperanto label duration: 0.11313104629516602\n", "clEsperanto label duration: 0.1284477710723877\n", "clEsperanto label duration: 0.10721683502197266\n", "clEsperanto label duration: 0.12795710563659668\n", "clEsperanto label duration: 0.09817790985107422\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Programs\\miniconda3\\envs\\beetlesafari\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Float image out of standard range; displaying image with stretched contrast.\n", " lo, hi, cmap = _get_display_range(image)\n" ] }, { "data": { "text/plain": [ "188.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ocl_binary_image = cle.push(binary_image)\n", "\n", "result_image = None\n", "\n", "for i in range(0, 10):\n", " start_time = time.time()\n", " result_image = cle.connected_components_labeling_box(ocl_binary_image, result_image)\n", " print(\"clEsperanto label duration: \" + str(time.time() - start_time))\n", "\n", "result = cle.pull(result_image)\n", "imshow(result[50])\n", "np.max(result)" ] }, { "cell_type": "markdown", "id": "interested-neutral", "metadata": {}, "source": [ "# cupy" ] }, { "cell_type": "code", "execution_count": 6, "id": "logical-blanket", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cupy label duration: 0.2186901569366455\n", "cupy label duration: 0.0\n", "cupy label duration: 0.01562047004699707\n", "cupy label duration: 0.0\n", "cupy label duration: 0.015591859817504883\n", "cupy label duration: 0.0\n", "cupy label duration: 0.0\n", "cupy label duration: 0.01565861701965332\n", "cupy label duration: 0.0\n", "cupy label duration: 0.015621662139892578\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Programs\\miniconda3\\envs\\beetlesafari\\lib\\site-packages\\skimage\\io\\_plugins\\matplotlib_plugin.py:150: UserWarning: Float image out of standard range; displaying image with stretched contrast.\n", " lo, hi, cmap = _get_display_range(image)\n" ] }, { "data": { "text/plain": [ "190.0" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import cupy\n", "from cupyx.scipy import ndimage as ndi\n", "\n", "cuda_binary_image = cupy.asarray(binary_image)\n", "\n", "cuda_labeled = cupy.ndarray(image.shape)\n", "for i in range(0, 10):\n", " start_time = time.time()\n", " ndi.label(cuda_binary_image, output=cuda_labeled)\n", " cupy.cuda.stream.get_current_stream().synchronize() # we need to wait here to measure time properly\n", " print(\"cupy label duration: \" + str(time.time() - start_time))\n", " \n", "result = cupy.asnumpy(cuda_labeled)\n", "imshow(result[50])\n", "np.max(result)" ] }, { "cell_type": "code", "execution_count": null, "id": "funny-ozone", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "guided-pharmacy", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }