{ "cells": [ { "cell_type": "markdown", "id": "ce720e69", "metadata": {}, "source": [ "# Object segmentation on OpenCL-compatible GPUs\n", "APOC is based on [pyclesperanto](https://github.com/clEsperanto/pyclesperanto_prototype) and [sklearn](https://scikit-learn.org/stable/). For object segmentation, it uses a pixel classifier and connected components labeling.\n", "\n", "Let's start with loading an example image and some ground truth:" ] }, { "cell_type": "code", "execution_count": 1, "id": "030613f9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from skimage.io import imread, imshow, imsave\n", "import pyclesperanto_prototype as cle\n", "import numpy as np\n", "import apoc\n", "\n", "image = imread('blobs.tif')\n", "imshow(image)" ] }, { "cell_type": "code", "execution_count": 2, "id": "85d92c3b", "metadata": {}, "outputs": [], "source": [ "if False: # you can use this to make manual annotations\n", " import napari\n", "\n", " # start napari\n", " viewer = napari.Viewer()\n", " napari.run()\n", "\n", " # add image\n", " viewer.add_image(image)\n", "\n", " # add an empty labels layer and keep it in a variable\n", " labels = np.zeros(image.shape).astype(int)\n", " viewer.add_labels(labels)\n", "else:\n", " labels = imread('annotations.tif')" ] }, { "cell_type": "code", "execution_count": 3, "id": "f9ce5403", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\rober\\miniconda3\\envs\\bio_39\\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": [ "" ] }, "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": [ "#imsave('annotations.tif', labels)\n", "manual_annotations = labels\n", "\n", "from skimage.io import imshow\n", "imshow(manual_annotations, vmin=0, vmax=3)" ] }, { "cell_type": "markdown", "id": "f0299779", "metadata": {}, "source": [ "## Training\n", "We now train a ObjectSegmenter, which is under the hood a [scikit-learn RandomForestClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html). After training, the classifier will be converted to [clij-compatible OpenCL code](https://github.com/clEsperanto/clij-opencl-kernels) and save to disk under a given filename." ] }, { "cell_type": "code", "execution_count": 4, "id": "8c162a7f", "metadata": {}, "outputs": [], "source": [ "# define features\n", "features = apoc.PredefinedFeatureSet.medium_quick.value\n", "\n", "# this is where the model will be saved\n", "cl_filename = 'my_model.cl'\n", "\n", "apoc.erase_classifier(cl_filename)\n", "clf = apoc.ObjectSegmenter(opencl_filename=cl_filename, positive_class_identifier=2)\n", "clf.train(features, manual_annotations, image)" ] }, { "cell_type": "markdown", "id": "5e231f60", "metadata": {}, "source": [ "## Prediction / segmentation\n", "The classifier can then be used to classify all pixels in the given image. Starting point is again, the feature stack. Thus, the user must make sure that the same features are used for training and for prediction. Prediction can be done on the CPU using the original scikit-learn code and on the GPU using the generated OpenCL-code. OCLRFC works well if both result images look identical." ] }, { "cell_type": "code", "execution_count": 5, "id": "efe2721c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "segmentation_result = clf.predict(features=features, image=image)\n", "cle.imshow(segmentation_result, labels=True)" ] }, { "cell_type": "markdown", "id": "7f4ba4f6", "metadata": {}, "source": [ "# Segmentation from a loaded segmenter" ] }, { "cell_type": "code", "execution_count": 6, "id": "40f890ea", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "clf = apoc.ObjectSegmenter(opencl_filename=cl_filename)\n", "\n", "segmentation_result = clf.predict(image=image)\n", "cle.imshow(segmentation_result, labels=True)" ] }, { "cell_type": "code", "execution_count": 7, "id": "7300cb8b-28a0-4d7c-a1c0-8f1c927bbd5d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'gaussian_blur=5': 0.7543628505155221,\n", " 'sobel_of_gaussian_blur=5': 0.245637149484478}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.feature_importances()" ] }, { "cell_type": "markdown", "id": "d4baa0e4", "metadata": {}, "source": [ "## Next: Object classification" ] }, { "cell_type": "code", "execution_count": 8, "id": "1e352aeb", "metadata": {}, "outputs": [], "source": [ "annotation = cle.push(imread('label_annotation.tif'))" ] }, { "cell_type": "code", "execution_count": 9, "id": "7d968488", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\rober\\miniconda3\\envs\\bio_39\\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": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "features = 'area,mean_max_distance_to_centroid_ratio,standard_deviation_intensity'\n", "\n", "# Create an object classifier\n", "cl_filename_object_classifier = \"object_classifier.cl\"\n", "apoc.erase_classifier(cl_filename_object_classifier)\n", "classifier = apoc.ObjectClassifier(cl_filename_object_classifier)\n", "\n", "# train it\n", "classifier.train(features, segmentation_result, annotation, image)\n", "\n", "# determine object classification\n", "classification_result = classifier.predict(segmentation_result, image)\n", "\n", "imshow(classification_result)" ] }, { "cell_type": "code", "execution_count": null, "id": "949b5e4d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "f57c9ea3", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 5 }