Skip to content

Instantly share code, notes, and snippets.

@jaidevd
Last active December 31, 2015 09:29
Show Gist options
  • Save jaidevd/7967600 to your computer and use it in GitHub Desktop.
Save jaidevd/7967600 to your computer and use it in GitHub Desktop.
\documentclass{beamer}
%
% Choose how your presentation looks.
%
% For more themes, color themes and font themes, see:
% http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html
%
\mode<presentation>
{
\usetheme{Warsaw} % or try Darmstadt, Madrid, Warsaw, ...
\usecolortheme{default} % or try albatross, beaver, crane, ...
\usefonttheme{default} % or try serif, structurebold, ...
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}[numbered]
}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{quoting}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{amsmath}
\usepackage{hyperref}
\lstset{language=Python}
\title[CS Solvers in Python]{Compressed Sensing Solvers in Python}
\author{Jaidev Deshpande}
\institute{Enthought, Inc}
\date{December 15, 2013}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
% Uncomment these lines for an automatically generated outline.
%\begin{frame}{Outline}
% \tableofcontents
%\end{frame}
\section{Introduction}
\begin{frame}{Introduction - What is Compressed Sensing?}
\begin{itemize}
\item The very fact that data can be compressed means that too many measurements were taken.
\item Problem: Compressing White Noise
\item What would be the sampling rate?
\item No compression possible when $F_{s} \to \infty$
\item Most real signals are not white noise!
\end{itemize}
\vskip 1cm
\end{frame}
\section{Sampling Theorem}
\begin{frame}{Nyquist Sampling Theorem}
\begin{quotation}
In order to accurately reconstruct an analog signal having a finite bandwidth $W$, it must have been sampled with atleast twice that bandwidth.
\end{quotation}
$$F_{s} >= 2W$$
\end{frame}
\begin{frame}{Nyquist Sampling Theorem}
\includegraphics[trim=2in 0 0 0,clip=True,scale=0.25,width=5in]{nyquist}
\end{frame}
\subsection{Magic Reconstruction}
\begin{frame}{The Magic Reconstruction Problem}
\begin{itemize}
\item Appeared in Cleve Moler's blog\footnote{\url{http://www.mathworks.in/company/newsletters/articles/clevescorner-compressed-sensing.html}} in 2010
\item Sequel to "The World's Simplest Impossible Problem"\footnote{\url{http://www.mathworks.in/company/newsletters/articles/the-worlds-simplest-impossible-problem.html}} from 20 years ago.
\end{itemize}
$$
\left[\begin{smallmatrix} m & n \end{smallmatrix}\right]
\left[\begin{smallmatrix} \frac{1}{2} \\ \frac{1}{2}\end{smallmatrix}\right]
= 3
$$
$$
Ax = b
$$
\end{frame}
\begin{frame}{Underdetermined system of equations}
\lstinputlisting[language=Python, frame=single]{pinv_demo.py}
\end{frame}
\begin{frame}{Underdetermined system of equations}
\lstinputlisting[language=Python, frame=single]{pinv_demo2.py}
\end{frame}
\begin{frame}{Sparsity and the $L_{1} norm$}
\begin{itemize}
\item Why is the $L_{2}$ norm not sufficient?\footnote{\url{http://scikit-learn.org/stable/auto_examples/applications/plot_tomography_l1_reconstruction.html}}
\item LASSO = Least Absolute Shrinkage and Selection Operator
\item Also known as $L_{1}$ magic.
\item Implementations in Python:
\begin{itemize}
\item \href{http://cvxopt.org}{cvxopt} - many experimental implementations
\item \href{https://bitbucket.org/liubenyuan/pybsbl}{PyBSBL} - Amazing use of the scipy.sparse module
\item \href{http://code.soundsoftware.ac.uk/projects/pycsalgos}{PyCSAlgos} - WIP, simple adaptations of experimental MATLAB code.
\item \href{http://aspics.krzakala.org/}{ASPICS} - Badly documented, very unreadable.
\item \href{https://sites.google.com/site/stephanegchretien/twostage}{Two Stage $L_{1}$ approach} - Stephane Chreitin
\item \href{https://sites.google.com/site/stephanegchretien/twostage}{SPAMS} (SParse Modeling Software) - Alexandre Gramfort - Best of the lot, sparsely documented, seems short-lived.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Summary}
\begin{itemize}
\item Compressed sensing software remains largely inaccessible to Pythonistas
\item Too much bad code
\item Very hot topic in signal processing / data compression
\item Perfect opportunity to dive in!
\item How?
\end{itemize}
\end{frame}
\begin{frame}{Come, contribute to scikit-signal}
\begin{itemize}
\item \url{http://github.com/scikit-signal}
\item Started by David Cournapeau and yours truly in mid 2012
\item Most work focuses on time-frequency analysis, need to diversify
\item Looking for developers!
\end{itemize}
\end{frame}
\begin{frame}
Slides hosted at \url{https://gist.github.com/jaidevd/7967600}
\end{frame}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment