22/04/2015

An evening in the beer garden

Diorama
For the fan of Community, my cake - a modified version of the classic "gateau au yaourt" with blueberries and a tiny bit of coco nuts flakes - with the candles on the top looks pretty much like an attempt of diorama where it would been asked to the students to illustrate the Vesuvius eruption. The cake almost exploded, "a brillé de mille feux" said some people and was delicious.

I swear I'm telling the truth
Alcohol makes you more confident. The proof? Being able to tell in a conversation to an American, a Japanese and a Portuguese that yes there is often big snowstorm in Cap Verde. To help my listeners were also drinking, but at some point I could see the confusion on their faces until I realize that the wrong word was coming out of my mouth. I meant sandstorm but said snowstorm, probably the charm of  French people speaking English...


19/04/2015

Run forest, run and don't forget to drink water

10:33am wake up with the feeling maybe you drunk one or two beers too much yesterday evening, this despite the good evening. Without a good evening the morning would have been terrible. It was a classic international Friday: meet the spotters from Berlin plus the spotters bosses from Amsterdam plus a visiting spotter from Vilnius and later re-meeting for the first time in 14 years a fellow from Ecole Polytechnique de Montréal and Polyscope. All and all a blast :-)

Some statistic for Friday evening: talked with 10 people, 8 different nationalities. Take that morons.

3:33pm getting some rest in order to give to my body the time to reload before the run. I register for the airport night run in Berlin. They do it regularly and after some years I finally did register, not for the 10km but for the half-marathon.

7:01pm  in night run there is night. The half-marathon group starts now and the 10km group one hour later. The feeling you have for this run is pretty cool. The new airport BER is there but empty and you are running on the landing area and tarmac. Two loops to do of 11km something and 10km and the first line is toward the East, the sun is going down, there is nothing miles around you, just some clouds, look to the North and you can see the top of the tv tower and you keep running.

Passing the sign 7km is nice, a third of the run is down! The group is now stretched, I'm running alone, my time after 5km is in my range (below 25min), but sadly I'n not fast enough to keep the same speed of the few jogging babes... my first attempt to drink water without stopping is a big failure as I only manage to spread water in my face.

8:00pm First loop done, meaning for me 11km something in less than an hour, I'm in my time track. As we reach 8:00pm the second group of runners is launched and soon two speed groups are mixing. It's a bit like in zombies movie when a crowd of zombies are all running in the same direction. If you have seen War Z and remember the scene with airplanes chased then it's the same, except there are no planes as the airport is still not open...

8:55pm I'm crossing the arrival line. I'm relieved, less than two hours as I was planning/hoping to do! The temperature is freaking cold, near 4 degrees Celsius only, so fast changing clothes and I leave.

11:04pm S-Bahn, tramway and bike later and I enter the Studios-ID in the middle of Alt-Hohenschönhausen. It's their open studio evening event where I know some the artists (check the website of Kyle Fitzpatrick).

I'm a bit destroyed but I managed to stand on my legs. I talk with many people, once again it's über international, Americans from Miami and Chicago, Russian, German, Portuguese and many more. English, French and German in the same conversation, after my legs it's my brain which is working. And at the question so you are an artist too the response is always or becomes complicated. Well I say, I'm working with color, I'm a color and imaging scientist bla bla bla... but it's usually a good start.

1:04am time to go home, I jump on my bike, 7km to do to reach my bed. The night is fresh but the stars visible. Another full day full of new images in my head.



15/04/2015

Clash of the titans - optimization vs. machine learning

In the beginning 

What is important to know about machine/deep learning problems? First remark to myself is "what are we trying to solve in general?" and then "which method/technique do we choose?" or "which approach is most appropriate to answer a given problem?".

Optimization for the people

Optimization is widely used to solve complex problems that don't have an analytic expression. But this doesn't mean that problems that have an analytic expression couldn't be solved using optimization.

Optimization relies on a provided model that "model" with reasonable efficiency a phenomenon (e.g. find the colorant combination of cyan, magenta, yellow and more for a give red, green, blue pixel) or anything you want. You may hear about derivatives, gradient, local minimum, cost function, quadratic form, linearity, non-linearity, iteration and more when you start messing around with optimization.

And it's completely possible to use optimization techniques as applied mathematics tools without knowing exactly how they work (e.g. you provide your model and the tools will perform the derivatives for you). In an engineering world you are connecting boxes, each one trying to solve a simple task taking for starting point what the previous is having for output.

Deep learning for the people

Deep learning and neural networks let you do something clever with the way to solve your problem. First of all your problem has been defined and described, but optimization techniques did not provide expected results: it's not fast enough or it's simply not working. One possibility is that your model isn't good enough or way to complex.

The simple idea is to let a system to learn about an ecosystem. To do so we let the algorithms mimicking how our brain is working. The concept of learning is very important here because it is really what we want to achieve. We want that our algorithm learns in a first step by obtaining representative parameters/weights before giving us a result. Then once the learning is finished, for a given entree and with the help of the parameters the algorithm can give us answers. For example is this image an image of a car, an elephant and this with different degrees of confidence.

A big part of the learning is to prepare the training sample. You can't just give images to the algorithm. Applied to computer vision, deep learning methods try to extract features from images in a similar way of how we human recognize information in images. This step of features extraction goes by applying multiple filtering on the images and the resulting filtered images, using convolution and tile approaches. At the end you obtain classes of features and it's very similar to the filters used for face recognition. Only difference is the features that describe a human face are now almost standard and doesn't need to computed or extracted again.

There exist competitions where for a given large database full of images and  keywords, people can submit their algorithms. Pretty interesting results are obtained and as in sport faster solutions are appearing often coming with new tools to handle large databases.

Breaking the machine

Hopefully there is always something to improve. Because images can contain more than one object, you could have a bike and an elephant in the same picture. In that case what should reply our algorithm first? There is room for subjectivity here.

These algorithms have to deal with the constant stream of information we are processing, meaning that we are always learning - in theory of course because the world is full of lazy bastards which keeps the marketing and sales people happy making us predictable and therefore easy targets but I digress - and we have to find a way to give this ability to our algorithms or there is the risk for them to over-learn. I really like the metaphor of trying to make an algorithm able to forget part of what he is deep learning to be able to adjust its judgement.

The interesting problems are those that overcome the first limitations encountered. You could try to distinguish what are the elements in a picture (e.g. there is an elephant and a bike) or "simply" give to the image a score. If you take an artist, he will have the tendency not only to make the same picture but to add to its images something that defines the way he perceive the world around him, something pretty unique. A similarity factor or score can be very helpful when you are browsing a large image databases or "just" the internet.


09/04/2015

Deep learning (ou deep learning in French)

What was your question already?
How to explain deep learning to your friends, family members, neighbors, random stranger, dog? A very good question indeed. Rather than going deeply into neural networks and other festivities let's start with describing the problem(s) we want to solve. Or least let's give an example of what we are trying to do here.

Over the years I had to come with strategies if I wanted to explain what I do for living. Giving keywords such "color science", "computer vision", "image processing", "digital photography" is usually not enough or saying "I do work with images" neither. I always found interesting to answer the question "why to you want to do that?" or "which problem do you want to solve?". So to explain what I can do I try to give an idea of the tasks I have to solve.

What is the problem you are trying to solve already?
In some way asking these questions is already machine learning/deep learning-ish approach of solving a problem. In theory if someone asks you to solve a problem he knows the kind of results he want to obtain for a given input or starting point. What he doesn't know is what is happening between these two stages. Applied mathematics and optimization are a reasonable standard solution: you develop of model that recreate more-less accurately what is happening between these two stages, then for a new entree point your model will predict what an output will be.

I'm sure "big data" is an expression you have heard in the past years or months. It has of course different meaning depending who to is giving a definition. But, coming back to images and the incredible amount of images we are producing daily there is a need to develop solutions, tools to be able to interact with these images. You have in your hand an extremely large image database and using keyword as a search query isn't enough anymore. So here is the problem: how to navigate, how to browse into large image database in a more natural way? There is a bit of database here but that is not the main point of my article, check my past post on graph and database if you are interested.

Face recognition to recognition of everything
Working with images is fascinating, you see one image and automatically you extract some of its  information. Of course there is a long learning curve, when you see a tree, a car, a known object in a picture you don't even realize it, you know, you have learned over the years you spent on earth to recognize, categorize, organize the continuous stream of visual information that come to your eyes and is later processed in your brain.

If you think of face recognition, the mathematical tools are now pretty standard. We can with high probability find out faces in images, classification comes after the recognition. And if you train your model you will be able to recognize semi automatically in a database faces of different persons as the tools/filters can be tuned for a given target. It can be scary of course if the threshold that decide for a true recognition/classification isn't verified by a real human and that action lead to a rocket launch. Actually any automatic action issued from an algorithm decision having impact on a human being is pretty bad (hello mass surveillance and hello Terminator). You want help from robots not to help robots or it's too late anyway.

An idea behind deep learning is to be able to learn what are into images - in a similar way as we human do - to extract features and to perform tasks on other images based on a trained neural network. I'm making shortcuts but that's the idea. To understand and to later mimic how information is circulating into the brain has been a dream of many researchers. Neural networks go into that direction. If a few years ago the algorithms were limited because of computer power the global picture is different now.

What is also interesting is that new strategies had to be developed to overcome the overload of data. In a way the system were "over learning" and people talked about over-fitting the data. And it makes sens. If I'm not too mistaken our brain is not indefinitely expandable, meaning we are sorting information continuously. One big part of these tools is to perform drop-out which can be explained as "now that our system can learn we have to teach him to forget part of what he knows in real time".

Cross disciplines 
A chance I see - for me - is the need in some industries for expert being not only expert in one field. Specially for this kind of large scale problems involving images, computer vision, real time and fancy applied research projects. To know only about machine learning or statistic is not enough, to know both about computer and machine learning tools is better.

[We talk later about existing and possible applications.]