Skip to content

Instantly share code, notes, and snippets.

@tjlane
Last active July 29, 2019 01:42
Show Gist options
  • Save tjlane/35a84123e3df73cea014ff082a5ad0a8 to your computer and use it in GitHub Desktop.
Save tjlane/35a84123e3df73cea014ff082a5ad0a8 to your computer and use it in GitHub Desktop.
Simple simulations showing the performance of different sensing matrices, using and not using sparsity
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"from scipy.linalg import hadamard, lstsq\n",
"from scipy.signal import medfilt\n",
"from scipy.fftpack import dct, idct\n",
"from scipy.optimize import linprog\n",
"from skimage import data\n",
"from sklearn import linear_model"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def row_normalize(X):\n",
" X = X.astype(np.float)\n",
" rs = X.sum(1)\n",
" X /= rs[:,None]\n",
" return X\n",
"\n",
"\n",
"def multi_matrix(A, m, randomize=False):\n",
" \"\"\"\n",
" Takes a sensing matrix of size n x n and generates one\n",
" of size m x n, where m > n.\n",
" \n",
" Does this by simply repeating the rows of the old matrix,\n",
" in order.\n",
" \"\"\"\n",
" \n",
" n = A.shape[0]\n",
"\n",
" if m < n:\n",
" mA = A[:m,:]\n",
"\n",
" else:\n",
" t = int(np.ceil(np.float(m) / n))\n",
" mA = np.tile(A, t).T\n",
" mA = mA[:m,:]\n",
"\n",
" assert mA.shape == (m, n)\n",
" \n",
" if randomize:\n",
" np.random.shuffle(mA.T)\n",
" \n",
" return mA\n",
" \n",
"\n",
"def S_matrix(size, normalize=False):\n",
" \"\"\"\n",
" Construct an Hadamars S matrix as prescribed by Sloane\n",
" \n",
" size must be 2^k - 1, with k positive integer\n",
" \"\"\"\n",
" \n",
" Hnp = hadamard(size + 1)\n",
" Sn = Hnp[1:,1:] # omit first row & col of 1s\n",
" Sn[Sn == 1] = 0 # +1 --> 0\n",
" Sn[Sn == -1] = 1 # -1 --> 1\n",
" \n",
" assert Sn.shape == (size, size)\n",
" \n",
" if normalize:\n",
" Sn = row_normalize(Sn)\n",
" \n",
" return Sn\n",
"\n",
"\n",
"def A_halfgauss(m, n, normalize=False):\n",
" A = np.abs(np.random.randn(m, n))\n",
" if normalize:\n",
" A = row_normalize(A)\n",
" return A\n",
"\n",
"\n",
"def A_bern(m, n, normalize=False):\n",
" A = np.random.binomial(1, 0.5, size=(m, n))\n",
" if normalize:\n",
" A = row_normalize(A)\n",
" return A\n",
"\n",
"\n",
"def MSE(test, truth):\n",
" assert test.shape == truth.shape\n",
" return np.sqrt(np.sum( np.square( test - truth ) )) / np.product(truth.shape)\n",
"\n",
"\n",
"def correlative_reconstruction(A, r):\n",
" \"\"\"\n",
" The \"traditional\" ghost imaging algorithm\n",
" \"\"\"\n",
" n1 = float(A.shape[1]) / np.square(np.linalg.norm(A))\n",
" xhat = np.dot(A.T, r) * n1\n",
" xhat -= xhat.mean()\n",
" return xhat\n",
"\n",
"\n",
"def ols_reconstruction(A, r):\n",
" \"\"\"\n",
" The ordinary least squares algorithm\n",
" \"\"\"\n",
" # gelsy fastest in my tests...\n",
" return lstsq(A, r, lapack_driver='gelsy')[0] \n",
"\n",
"\n",
"def basis_persuit(A, psi, r, r_bounds=None):\n",
" \"\"\"\n",
" INPUT\n",
" A is a matrix (m x n)\n",
" psi is a matrix (n x n)\n",
" r is a vector (n x 1)\n",
" \n",
" SOLVES\n",
" min || x_s ||_l1\n",
" st r = A psi x_s\n",
" \n",
" RETURNS\n",
" x = psi x_s\n",
" x_s\n",
" \"\"\"\n",
" \n",
" assert len(r) == A.shape[0]\n",
" assert A.shape[1] == psi.shape[0]\n",
" assert psi.shape[0] == psi.shape[1]\n",
" \n",
" c = np.ones(A.shape[1])\n",
" X = np.dot(A, psi)\n",
" ret = linprog(c, A_eq=X, b_eq=r, bounds=r_bounds, options={'tol' : 1e-10})\n",
" \n",
" if 'status' in ret.keys():\n",
" assert ret['status'] == 0\n",
" else:\n",
" print(ret)\n",
" x_s = ret['x']\n",
" x = np.dot(psi, x_s)\n",
" \n",
" return x, x_s\n",
"\n",
"\n",
"def LASSO(A, psi, r, alpha=1e-9):\n",
" \"\"\"\n",
" INPUT\n",
" A is a matrix (m x n)\n",
" psi is a matrix (n x n)\n",
" r is a vector (n x 1)\n",
" \n",
" SOLVES\n",
" min || A psi x_s - r ||_2 \n",
" + alpha *|| x_s ||_1\n",
" \n",
" RETURNS\n",
" x = psi x_s\n",
" x_s\n",
" \"\"\"\n",
" \n",
" # NOTE: l1_ratio = 1.0 turns off the L2 regularization\n",
" # makes this LASSO only (not elastic net)\n",
" \n",
" X = np.dot(A, psi)\n",
" m = linear_model.ElasticNet(alpha=alpha, \n",
" l1_ratio=1.0, \n",
" fit_intercept=False, \n",
" selection='random', \n",
" max_iter=20000)\n",
" m.fit(X, r)\n",
" \n",
" x_s = m.coef_\n",
" x = np.dot(psi, x_s)\n",
" \n",
" return x, x_s\n",
"\n",
"\n",
"def cs_coherence(A, Psi):\n",
" \n",
" n = A.shape[1]\n",
" m = A.shape[0]\n",
" assert Psi.shape == (n, n)\n",
" \n",
" row_nrm = lambda a : np.sqrt( np.sum( np.square(a), axis=1) )\n",
"\n",
" Anorm = row_nrm(A)\n",
" Pnorm = row_nrm(Psi.T)\n",
" \n",
" Arn = A / Anorm[:,None]\n",
" \n",
" mu = 0.0\n",
" for i in range(1,n): # skip first col, which is DC component\n",
" \n",
" psi_col = Psi[:,i] / Pnorm[i]\n",
" t = np.sqrt( np.sum( np.square(psi_col) ) )\n",
" assert np.abs(t - 1.0) < 1e-8, t\n",
" corrs = np.abs(np.sum(Arn * psi_col[None,:], axis=1))\n",
" assert len(corrs) == m\n",
" mu_i = np.max(corrs)\n",
"\n",
" assert mu_i <= 1.0, mu_i\n",
"\n",
" if mu_i > mu:\n",
" mu = mu_i\n",
" \n",
" return np.sqrt(n) * mu"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reconstructions with different sensing matrices ##"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# here is an example of the dummy signal we will reconstruct\n",
"# could be anything...\n",
"test_wvfm = medfilt(np.random.randn(1023), 15)\n",
"\n",
"figure()\n",
"plot(test_wvfm)\n",
"show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# test fwd model\n",
"\n",
"x = test_wvfm - test_wvfm.mean()\n",
"\n",
"n = len(x)\n",
"\n",
"A = A_bern(n, n)\n",
"#A = np.eye(n)\n",
"r = np.dot(A, x)\n",
"\n",
"xp1 = ols_reconstruction(A, r)\n",
"xp2 = correlative_reconstruction(A, r)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"figure()\n",
"\n",
"plot(x, 'k')\n",
"plot(xp1)\n",
"plot(xp2)\n",
"\n",
"legend(['ground_truth', 'LSQ-OLS', 'traditional GI'], loc=1)\n",
"\n",
"show()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m = [ 10 22 51 116 264 599 1359 3082 6989 15848]\n"
]
}
],
"source": [
"# run the reconstruction process for both the OLS and traditional GI algos\n",
"# use different sensing matrices: identity, half-gaussian, bernoulli, hadamard\n",
"\n",
"\n",
"# -------------------------------------------------------------------\n",
"# PARAMETERS\n",
"samples = np.logspace(1,4.2,10).astype(np.int)\n",
"print('m = ', samples)\n",
"\n",
"n = 1023 # signal size\n",
"sigma = 0.2 # additive (per-measurement) noise\n",
"rounds = 10 # how many random repeats to perform and average\n",
"# -------------------------------------------------------------------\n",
"\n",
"\n",
"ols_errors = np.zeros(( len(samples), 4, rounds )) # samples x matrix\n",
"tgi_errors = np.zeros(( len(samples), 4, rounds )) # samples x matrix\n",
"dose = np.zeros(( len(samples), 4, rounds )) # samples x matrix\n",
"\n",
"for k in range(rounds):\n",
" \n",
" test_wvfm = medfilt(np.random.randn(n), 15)\n",
" x = test_wvfm - test_wvfm.mean()\n",
"\n",
" for i, m in enumerate(samples):\n",
"\n",
" I = multi_matrix( np.eye(n), m, randomize=True )\n",
" Ab = A_bern(m, n)\n",
" Ag = A_halfgauss(m, n)\n",
" Sn = multi_matrix( S_matrix(n), m )\n",
"\n",
" for j, A in enumerate([I, Ag, Ab, Sn]):\n",
" r = np.dot(A, x) + sigma * np.random.randn(m)\n",
" xp1 = ols_reconstruction(A, r)\n",
" xp2 = correlative_reconstruction(A, r)\n",
"\n",
" ols_errors[i,j,k] = MSE(xp1, x)\n",
" tgi_errors[i,j,k] = MSE(xp2, x)\n",
" dose[i,j,k] += np.sum(A)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"saving: recovery_0.20sigma_10rounds.pdf\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x216 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, axes = subplots(1, 3, figsize=(12,3))\n",
"\n",
"ax = axes[0]\n",
"ax.set_title('LSQ-OLS Algorithm')\n",
"for i in range(ols_errors.shape[1]):\n",
" ax.plot(samples, ols_errors[:,i].mean(axis=1))\n",
"ax.set_xscale('log')\n",
"ax.set_xlabel('number of measurements $m$')\n",
"ax.set_ylabel('error (MSE)')\n",
"ax.vlines(n, 0, 0.012, lw=0.75)\n",
"ax.set_ylim([-0.001, 0.015])\n",
"\n",
"ax = axes[1]\n",
"ax.set_title('Dose * Error')\n",
"for i in range(tgi_errors.shape[1]):\n",
" ax.plot(samples, ols_errors[:,i].mean(axis=1) * dose[:,i].mean(axis=1))\n",
"ax.set_xscale('log')\n",
"ax.set_yscale('log')\n",
"ax.set_xlabel('number of measurements $m$')\n",
"ax.set_ylabel('Dose * Error')\n",
"ax.vlines(n, 1e-3, 5e4, lw=0.75)\n",
"ax.set_ylim([1e-3, 1e5])\n",
"\n",
"ax = axes[2]\n",
"ax.set_title('Traditional GI Algorithm')\n",
"for i in range(tgi_errors.shape[1]):\n",
" ax.plot(samples, tgi_errors[:,i].mean(axis=1))\n",
"ax.set_xscale('log')\n",
"ax.set_xlabel('number of measurements $m$')\n",
"ax.set_ylabel('error (MSE)')\n",
"ax.legend(['raster', 'half-Gaussian', 'Bernoulli', 'Hadamard'])\n",
"ax.vlines(n, 0, 0.012, lw=0.75)\n",
"ax.set_ylim([-0.001, 0.015])\n",
"\n",
"tight_layout()\n",
"fn = 'recovery_%.2fsigma_%drounds.pdf' % (sigma, rounds)\n",
"print('saving:', fn)\n",
"savefig(fn)\n",
"show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Use compressed sensing with different sensing matrices##"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# create a dummy signal that is sparse in the DCT domain\n",
"\n",
"s = 16 # number of sparse elements\n",
"n = 2**10-1 # size of signal\n",
"\n",
"psi = idct(np.eye(n), norm='ortho', axis=0)\n",
"psi_inv = dct(np.eye(n), norm='ortho', axis=0)\n",
"\n",
"fsignal = np.zeros(n)\n",
"for i in range(s):\n",
" k = np.random.randint(2,n-1)\n",
" fsignal[k] = np.random.random()\n",
"\n",
"signal = 10.0 * idct(fsignal, norm='ortho', axis=0)\n",
" \n",
"figure(figsize=(8,3))\n",
"subplot(121)\n",
"title('time domain')\n",
"plot(signal)\n",
"subplot(122)\n",
"title('fourier domain')\n",
"plot(dct(signal, norm='ortho', axis=0))\n",
"savefig('sparse_signal.pdf')\n",
"show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m = 110\n"
]
}
],
"source": [
"# test the different reconstruction algorithms on a single problem\n",
"# NOTE: basis_persuit is not working well for me at the moment\n",
"\n",
"n = 1023\n",
"s = 16\n",
"m = int(s * np.log(n))\n",
"print('m =', m)\n",
"\n",
"psi = idct(np.eye(n), norm='ortho', axis=0)\n",
"psi_inv = dct(np.eye(n), norm='ortho', axis=0)\n",
"\n",
"fsignal = np.zeros(n)\n",
"for i in range(s):\n",
" w = np.random.randint(2,n-1)\n",
" fsignal[w] = np.random.random()\n",
"signal = 10.0 * np.dot(psi, fsignal)\n",
"\n",
"A = multi_matrix( np.eye(n), m, randomize=True ) ; alpha = 2e-5\n",
"#A = A_bern(m, n) ; alpha = 1e-2\n",
"\n",
"r = np.dot(A, signal)\n",
"\n",
"x_hat_ols = ols_reconstruction(A, r)\n",
"x_hat, x_s_hat = LASSO(A, psi, r, alpha=alpha)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"LASSO error: 1.5e-04\n",
"OLS error: 1.9e-02\n"
]
}
],
"source": [
"figure()\n",
"plot(signal)\n",
"plot(x_hat)\n",
"plot(x_hat_ols - 2)\n",
"legend(['original signal', 'LASSO', 'OLS'])\n",
"show()\n",
"\n",
"print('LASSO error: %.1e' % MSE(x_hat, signal))\n",
"print('OLS error: %.1e' % MSE(x_hat_ols, signal))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m = [ 10 22 51 116 264 599 1359 3082 6989 15848]\n"
]
}
],
"source": [
"# perform reconstructions of a Fourier-sparse signal\n",
"# with different sensing matrices using LASSO and OLS\n",
"\n",
"# -------------------------------------------------------------------\n",
"# PARAMETERS\n",
"samples = np.logspace(1,4.2,10).astype(np.int)\n",
"print('m = ', samples)\n",
"\n",
"s = 16 # number of non-sparse elements\n",
"n = 1023 # signal size\n",
"rounds = 10 # how many random repeats to perform and average\n",
"# -------------------------------------------------------------------\n",
"\n",
"psi = idct(np.eye(n), norm='ortho', axis=0)\n",
"psi_inv = dct(np.eye(n), norm='ortho', axis=0)\n",
"\n",
"ols_errors = np.zeros(( len(samples), 4, rounds )) # samples x matrix\n",
"cs_errors = np.zeros(( len(samples), 4, rounds )) # samples x matrix\n",
"\n",
"for k in range(rounds):\n",
" \n",
" fsignal = np.zeros(n)\n",
" for i in range(s):\n",
" w = np.random.randint(2,n-1)\n",
" fsignal[w] = np.random.random()\n",
" signal = 10.0 * np.dot(psi, fsignal)\n",
"\n",
" for i, m in enumerate(samples):\n",
"\n",
" I = multi_matrix( np.eye(n), m, randomize=True )\n",
" Ab = A_bern(m, n)\n",
" Ag = A_halfgauss(m, n)\n",
" Sn = multi_matrix( S_matrix(n), m )\n",
"\n",
" for j, A in enumerate([I, Ab, Ag, Sn]):\n",
" r = np.dot(A, signal)\n",
"\n",
" xp1 = ols_reconstruction(A, r)\n",
" \n",
" if j == 0: # for identity matrix only\n",
" xp2,_ = LASSO(A, psi, r, alpha=1e-5)\n",
" else:\n",
" xp2,_ = LASSO(A, psi, r, alpha=1e-2)\n",
"\n",
" ols_errors[i,j,k] = MSE(xp1, signal)\n",
" cs_errors[i,j,k] = MSE(xp2, signal)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sparse-recovery_10rounds_identity-up.pdf\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, axes = subplots(2, 2, figsize=(8,6))\n",
"\n",
"\n",
"ax = axes[0,0]\n",
"ax.set_title('time domain')\n",
"ax.plot(signal)\n",
"\n",
"ax = axes[0,1]\n",
"ax.set_title('Fourier domain')\n",
"ax.plot(dct(signal, norm='ortho', axis=0))\n",
"\n",
"\n",
"ax = axes[1,0]\n",
"ax.set_title('LSQ-OLS Algorithm')\n",
"for i in range(ols_errors.shape[1]):\n",
" ax.plot(samples, ols_errors[:,i].mean(axis=1))\n",
"ax.set_xscale('log')\n",
"ax.set_xlabel('number of measurements $m$')\n",
"ax.set_ylabel('error (MSE)')\n",
"ax.vlines(n, 0, 0.023, lw=0.75)\n",
"ax.vlines(s * np.log(n), 0, 0.023, lw=0.75)\n",
"ax.set_ylim([-0.0001, 0.030])\n",
"\n",
"\n",
"ax = axes[1,1]\n",
"ax.set_title('Lasso Regression')\n",
"for i in range(cs_errors.shape[1]):\n",
" ax.plot(samples, cs_errors[:,i].mean(axis=1))\n",
"ax.set_xscale('log')\n",
"ax.set_xlabel('number of measurements $m$')\n",
"ax.set_ylabel('error (MSE)')\n",
"ax.legend(['raster', 'Bernoulli', 'half-Gaussian', 'Hadamard'], loc='upper right')\n",
"ax.vlines(n, 0, 0.023, lw=0.75)\n",
"ax.vlines(s * np.log(n), 0, 0.023, lw=0.75)\n",
"ax.set_ylim([-0.0001, 0.030])\n",
"\n",
"tight_layout()\n",
"fn = 'sparse-recovery_%drounds_identity-up.pdf' % (rounds,)\n",
"print(fn)\n",
"savefig(fn)\n",
"show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1023 1024\n",
"raster :\t1.41\n",
"Bernoulli:\t3.48\n",
"half-Gaussian:\t3.01\n",
"Hadamard:\t20.35\n",
"Max Possible: 31.984371183438952\n"
]
}
],
"source": [
"# compute coherence estimates\n",
"\n",
"rounds = 10 # 10\n",
"n = 1023\n",
"m = 1024\n",
"print(n, m)\n",
"\n",
"psi = idct(np.eye(n), norm='ortho', axis=0)\n",
"\n",
"names = ['raster ', 'Bernoulli', 'half-Gaussian', 'Hadamard']\n",
"\n",
"mus = np.zeros((4, rounds))\n",
"\n",
"for i in range(rounds):\n",
" \n",
" I = multi_matrix( np.eye(n), m )\n",
" Ab = A_bern(m, n)\n",
" Ag = A_halfgauss(m, n)\n",
" Sn = multi_matrix( S_matrix(n), m )\n",
"\n",
" for j, A in enumerate([I, Ab, Ag, Sn]):\n",
" # note we skip first column of psi, which is DC component\n",
" mu = cs_coherence(A, psi)\n",
" mus[j,i] = mu\n",
" \n",
"for j, A in enumerate([I, Ab, Ag, Sn]):\n",
" print('%s:\\t%.2f' % (names[j], mus.mean(1)[j]))\n",
"print('Max Possible:', np.sqrt(n))"
]
},
{
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment