Playful Palette: An Interactive Parametric Color Mixer for Artists
Playful Palette is a color picker interface for digital paint programs that derives intuition from oil and watercolor palettes, but extends them with digital features. The palette is compactly parameterized as a set of color blobs that blend together to create gradients and gamuts. They can be directly manipulated to explore arrangements and harmonies. All edits are non-destructive, and an infinite history allows previous palettes to be revisited and modified, recoloring the painting. This design is motivated by a pilot study of how artists use paint palettes, and is evaluated with another group of traditional and digital artists to demonstrate Playful Palette's effectiveness at enabling artists’ color tasks, and at amplifying their creativity.
Fab Forms: Customizable Objects for Fabrication with Validity and Geometry Caching
We propose a scalable solution for enabling interactive customization of paramatric models by unskilled users, while maintaining their valid state as 3D-printable functional objects. The input to our method is a parametric design and a set of automated tests, and the output is an object representation and a Web user interface that restricts the user to only the valid regions of the design space and provides real-time preview even for computationally expensive geometry. Our method includes adaptive design space sampling, valid region representation and an optimized hierarchical geometry cache.
Large Scale Language Modeling in Automatic Speech Recognition
Google Technical Report
Large language models have been proven quite beneficial for a variety of automatic speech recognition tasks at Google. We summarize results on Voice Search and a few YouTube speech transcription tasks to highlight the impact that one can expect from increasing both the amount of training data, and the size of the language model estimated from such data.
Formatting Time-aligned ASR Transcripts for Readability
The output of an Automatic Speech Recognition (ASR) system typically has no capitalization or punctuation, and has numbers written as words (e.g. "twelve thirty five"). For the Google Voice transcription engine I independently designed, implemented and deployed a statistical system for formatting transcripts with capitalization, punctuation, properly written dates, times and other numbers. The system combines hand-written grammars with statistical language modeling, and is based on my original research.
An Audio Indexing System for Election Video Material
With the help of our speech recognition technologies, videos from YouTube's Politicians channels are automatically transcribed from speech to text and indexed. Using this tool, political speeches from US Elections 2008 could be searched for spoken content with the ability to jump exactly to the point where the search query was mentioned by the candidates.
Empathic Painting: Interactive Stylization through Observed Emotional State
We built a system that allows a user to control the result of non-photorealistc rendering (NPR) using only facial expression. The system incorporates a real time facial expression recognition system and a mapping from emotional space to the space of NPR parameters.
In the Press:
Rasterized Image Databases with LSH for Compression
This group class project includes a novel strategy for patch-based lossy compression, exploiting redundancy found in large image collections. Our Java implementation based on PostresSQL stores each image in the database as a collection of reusable image patches, using a variant of locality-sensitive hashing (LSH) for fast retrieval of similar patches. As the database grows, each new image results in fewer new patches. We evaluate the system on the SUN 2012 database.
Fast Structural Analysis for Deforming Objects Using Machine Learning
When customizing 3D models for fabrication, it is desirable to visualize structurally problematic areas of the model in real time. However, analysis to estimate structural integrity are often time-consuming. We investigate creating a fast update algorithm for per-vertex model fragility using machine learning. We propose and analyze a new feature vector formulation and present preliminary classification results.
Closest Pair Algorithm Demonstration
A web-based interactive demonstration of the divide and conquer algorithm for finding the closest pair of points in 2D.
Approximate Packing Algorithm Demonstration
A web-based interactive demonstration of the (1-ε) approximate packing algorithm, where the goal is to find the largest disjoing subset of circles [Hochbaum and Maass 1985].
Monte Carlo Cipher Breaking Project
Information and Inference
A Mote-Carlo based approach for recovering the original text from a ciphertext produced using an unknown substitution cipher.
Using Large WWW Corpora to Enrich Language Models for Speech Recognition
Fundamentals of Machine Learning
Large scale language modeling experiments for Speech Recognition using Web Corpora and distributed topic-based (using Latent Dirichlet Allocation) Language Models.
Procedural Blossom Animation using L-Systems
This work applies the dl-systems, developed by the Algorithmic Botany group for modeling the continuous growth of plants given only a few discretized rules, to creating a decorative blossom animation.
Implementation of the Radiosity Illumination Model
This is an implementation of the Progressive Radiosity Algorithm for modeling diffuse lighting within a closed 3D environment with finite emmitting surfaces and quadrilateral geometric primitives. The Radiosity method models the interaction of light reflected from each patch in the scene to every other patch; smooth shading ensures seamless transitions from one patch to the next.
Developed a custom Cookbook website RecipeStudio using Google App Engine. The website hosts old recipes from my family as well as new creations posted by my mom Nadia Shugrina and myself.
Crowdsourcing for Google Maps
There is on average a 15% yearly churn in local businesses, and keeping this information up to date is a constant challenge. We developed a number of experiments for collecting lightweight feedback from users about the correctness of local listings on Google Maps. Initially, I was the Product Manager for the team, and later transitioned to a Tech Lead role.