The Intuition Behind Image Watermarking

mainThis is a continuation of my blog post on intro to digital watermarking. In that post, we discussed what digital watermarking is and how it can be achieved. Here, we will discuss the intuition behind image watermarking and a few techniques that can be used. If you look at enough number of images, you will realize that not all of them are equally suited for watermarking. At least, we cannot use the same criteria to watermark all the images. How do we know where to watermark an image? Are there any rules or do we just place some watermark randomly in an image? Does it make a difference?   Continue reading “The Intuition Behind Image Watermarking”

Digital Watermarking

mainLet’s say you want to verify the authenticity of a signal. The signal can take any form like an image, audio, video, or any other kind of bit stream. By now, everybody would have heard the term “watermark” being used in the general sense. The most common example would be currency notes. Watermarks are embedded to verify the authenticity of the notes. But how do we achieve that with more complicated signals? As things move into the virtual world, where the threats are elevated to a much higher and abstract level, we need a way to verify the authenticity of different forms of digital signals. How do we do it?   Continue reading “Digital Watermarking”

Image Steganography

mainAs discussed in my previous post, steganography is the art of hiding the fact that communication is taking place. We achieve this by hiding original information inside other information known as carrier files. Many different carrier file formats can be used, but digital images are the most popular because of their frequency of occurrence on the internet. For hiding secret information in images, there exists a large variety of steganographic techniques, some are more complex than others, and all of them have respective strong and weak points. Different applications have different requirements of the steganography technique used. For example, some applications may require absolute invisibility of the secret information, while others require a larger secret message to be hidden. How do we achieve this? How robust is it?   Continue reading “Image Steganography”

Steganography

mainLet’s say that we want to communicate with someone secretly. We prefer that only the intended recipient have the ability to decode the contents of the communication. We obviously want to keep the message secret. Sounds familiar? A common solution to this problem is to use encryption. An encryption scheme takes a message and transforms it into an unreadable format so that an eavesdropper can’t read it. Now what if we don’t want anyone to find out that there is communication going on? As in, if the attackers don’t know that something is going on, then there are lesser chances of getting attacked right? How do we achieve this? Are there techniques to that allow us the hide this information?   Continue reading “Steganography”

Bayes Point Machines

Point machineIn machine learning, we use a lot of supervised learning models to analyze data and recognize patterns. If we consider the basic problem of binary classification, a machine learning algorithm takes a set of input data and predicts which of two possible classes a particular input belongs to. Kernel-classifiers comprise a powerful class of non-linear decision functions for binary classification. These classifiers are very useful when you cannot draw a straight line to separate two classes. The support vector machine (SVM) is a good example of a learning algorithm for kernel classifiers. It looks at all the boundaries and picks the one with the largest margin. It is widely used in many different fields and it has a very strong mathematical foundation. Now it is being claimed that Bayes Point Machine (BPM) is an improvement over SVM. Pretty bold claim! So what exactly is a BPM? How is it better than SVM?   Continue reading “Bayes Point Machines”

How To Install Valgrind On Mac OS X

mainAs your code gets bigger, keeping track of memory becomes critical. These things often become the source of huge crashes and annoying bugs. Detecting them manually is a very tedious process. So we need a tool to manage all this for us. This is where Valgrind comes into picture. Valgrind is a programming tool for memory debugging, memory leak detection, and profiling. It can be used to keep track of all the memory allocated at all stages in your program. Although it was initially meant to be a memory debugger, it has grown to become a generic framework for building dynamic analysis tools. You can use Valgrind to build new tools as well. There are Valgrind tools like Memcheck that can automatically detect many memory management and threading bugs, and profile your programs in detail. Valgrind is widely used in the industry and it’s well respected within the coding community. Let’s see how we can get it up and running on Mac OS X.   Continue reading “How To Install Valgrind On Mac OS X”

What Are Conditional Random Fields?

main nodesThis is a continuation of my previous blog post. In that post, we discussed about why we need conditional random fields in the first place. We have graphical models in machine learning that are widely used to solve many different problems. But Conditional Random Fields (CRFs) address a critical problem faced by these graphical models. A popular example for graphical models is Hidden Markov Models (HMMs). HMMs have gained a lot of popularity in recent years due to their robustness and accuracy. They are used in computer vision, speech recognition and other time-series related data analysis. CRFs outperform HMMs in many different tasks. How is that? What are these CRFs and how are they formulated?   Continue reading “What Are Conditional Random Fields?”

Why Do We Need Conditional Random Fields?

main question markThis is a two-part discussion. In this blog post, we will discuss the need for conditional random fields. In the next one, we will discuss what exactly they are and how do we use them. The task of assigning labels to a set of observation sequences arises in many fields, including computer vision, bioinformatics, computational linguistics and speech recognition. For example, consider the natural language processing task of labeling the words in a sentence with their corresponding part-of-speech tags. In this task, each word is labeled with a tag indicating its appropriate part of speech, resulting in annotated text. To give another example, consider the task of labeling a video with the mental state of a person based on the observed behavior. You have to analyze the facial expressions of the user and determine if the user is happy, angry, sad etc. We often wish to predict a large number of variables that depend on each other as well as on other observed variables. How to achieve these tasks? What model should we use?   Continue reading “Why Do We Need Conditional Random Fields?”

Asymmetric Dominance Effect

mainLet’s consider a situation. There is a company with two products, A and B. Both these products have their own merits and demerits. Product A has relatively less features, but it’s price is low. Product B, on the other hand, has more features but it’s more expensive. Consumers tend to pick both these products depending on their needs. Now the company introduces a third product, C. The asymmetric dominance theory says that you can affect the consumer behavior using this third product. You can make the consumers shift towards product A or product B by designing product C in different ways. Now how is that possible? How can we change consumer preference between A and B without even modifying these products?   Continue reading “Asymmetric Dominance Effect”

Derandomization Of RANSAC

mainLet’s say you are a clothes designer and you want to design a pair of jeans. Since you are new to all this, you go out and collect a bunch of measurements from people to see how to design your jeans as far as sizing is concerned. One aspect of this project would be to see how the height of a person relates to the size of the jeans you are designing. From the measurements you took from those people, you notice a certain pattern that relates height of a person to the overall size of the jeans. Now you generalize this pattern and say that for a given height, a particular size is recommended. To deduce the pattern, you just took a bunch of points and drew a line through them so that it is close to all those points. Pretty simple right! What if there are a few points that are way off from all the other points? Would you consider them while deducing your pattern? You will probably discard them because they are outliers. This was a small sample set, so you could notice these outliers manually. What if there were a million points?   Continue reading “Derandomization Of RANSAC”