{ "cells": [ { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import skimage\n", "import scipy\n", "import scipy.signal\n", "from torchvision import datasets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2D Convolution using ajacency matrix" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data = datasets.MNIST('../data', train=False, download=True)\n", "images = (data.data.numpy() / 255.)\n", "X = images[0].astype(np.float32) # 28x28 MNIST image\n", "\n", "# Create and plot the Gabor filter\n", "N = X.shape[0]\n", "x, y = np.meshgrid(np.arange(-float(N), N), np.arange(-float(N), N))\n", "y = skimage.transform.rotate(y, 35)\n", "x2 = skimage.transform.rotate(x, -35)\n", "sigma = 0.75 * np.pi\n", "lmbda = 1.5 * sigma\n", "gamma = 1.3\n", "gabor = np.exp(-(x**2 + gamma*y**2)/(2*sigma**2))*np.cos(2*np.pi*x2/lmbda)\n", "\n", "# Create the adjacency matrix based on the Gabor filter without any zero-padding\n", "A = np.zeros((N ** 2, N ** 2))\n", "for i in range(N):\n", " for j in range(N):\n", " A[i*N + j, :] = gabor[N - i:N - i + N, N - j:N - j + N].flatten()\n", " \n", "plt.figure(figsize=(12,5))\n", "plt.subplot(121)\n", "plt.title('Gabor filter')\n", "plt.imshow(gabor, cmap='gray')\n", "plt.subplot(122)\n", "ax = plt.imshow(A)\n", "plt.title('Adjacency matrix')\n", "plt.colorbar(ax, fraction=0.046, pad=0.04)\n", "plt.show()\n", "\n", "# Perform 2d convolution as matrix multiplication\n", "Y_adj = A.dot(X.reshape(-1, 1)).reshape(N, N)\n", "\n", "# Plot the results and compare to the SciPy result\n", "plt.figure(figsize=(15,5))\n", "plt.subplot(131)\n", "plt.title('Input image')\n", "plt.imshow(X, cmap='gray')\n", "plt.subplot(132)\n", "plt.imshow(Y_adj, cmap='gray')\n", "plt.title('Result of 2d convolution using ajacency matrix')\n", "plt.subplot(133)\n", "Y = scipy.signal.convolve2d(X, gabor, mode='same')\n", "plt.imshow(Y, cmap='gray')\n", "plt.title('Result of 2d convolution using SciPy')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2D Convolution using circulant matrices" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "filter_width = 10 # effective width of a Gabor filter\n", "\n", "# If you set 'pad' to 0, then A will be 784x784 and can be interpreted as an adjacency matrix\n", "pad = filter_width * 2 - 1\n", "\n", "# Create and plot the Gabor filter\n", "N = X.shape[0]\n", "x, y = np.meshgrid(np.arange(-float(N), N), np.arange(-float(N), N))\n", "y = skimage.transform.rotate(y, 35)\n", "x2 = skimage.transform.rotate(x, -35)\n", "sigma = 0.75 * np.pi\n", "lmbda = 1.5 * sigma\n", "gamma = 1.3\n", "gabor_filt = np.exp(-(x**2 + gamma*y**2)/(2*sigma**2))*np.cos(2*np.pi*x2/lmbda)\n", "\n", "# Create and plot doubly circuland matrix for the defined Gabor filter\n", "gabor = gabor_filt[filter_width:X.shape[0]+filter_width, X.shape[0]-filter_width:-filter_width]\n", "gabor = np.pad(gabor, ((pad, 0), (0, pad)), 'constant')\n", "A = [scipy.linalg.circulant(gabor[i, :]) for i in range(gabor.shape[0])]\n", "blocks = []\n", "for i in range(gabor.shape[0]):\n", " blocks.append([])\n", " for j in range(gabor.shape[0]):\n", " blocks[-1].append(A[i - j]) \n", "A = np.block(blocks)\n", "\n", "plt.figure(figsize=(12,5))\n", "plt.subplot(121)\n", "plt.title('Gabor filter')\n", "plt.imshow(gabor_filt, cmap='gray')\n", "plt.subplot(122)\n", "ax = plt.imshow(A)\n", "plt.title('Doubly circuland matrix')\n", "plt.colorbar(ax, fraction=0.046, pad=0.04)\n", "plt.show()\n", "\n", "X_pad = np.pad(X[:, :], ((int(np.ceil(pad / 2)), pad // 2), \n", " (int(np.ceil(pad / 2)), pad // 2)), 'constant')\n", "\n", "# Perform 2d convolution as matrix multiplication\n", "n = int(np.sqrt(A.shape[0]))\n", "offset = np.max((0, (pad - filter_width * 2) // 2))\n", "Y_circulant = A.dot(X_pad.reshape(-1, 1)).reshape(n, n)\n", "\n", "# Cut the valid part of the convolution\n", "Y_circulant = Y_circulant[offset: offset + X.shape[0], \n", " -X.shape[1] - offset: n - offset]\n", "\n", "# Plot the results and compare to the SciPy result\n", "plt.figure(figsize=(15,5))\n", "plt.subplot(131)\n", "plt.title('Input image')\n", "plt.imshow(X, cmap='gray')\n", "plt.subplot(132)\n", "plt.imshow(Y_circulant, cmap='gray')\n", "plt.title('Result of 2d convolution using circulant matrices')\n", "plt.subplot(133)\n", "Y = scipy.signal.convolve2d(X, gabor_filt, mode='same')\n", "plt.imshow(Y, cmap='gray')\n", "plt.title('Result of 2d convolution using SciPy')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }