Video Dev Geeks

Enrique Ruiz-Velasco's blog about video technologies and software development.

Monday, February 28, 2011

Is Netflix, Amazon, Vudu, Hulu and other online video providers heading to a differentiation war cable channels went through at the end of the 90s?

With more companies like Amazon and Hulu joining the monthly subscription model that made Netflix online a huge success it seems that the industry is heading towards a war for the $10 or less a month subscriber. As studios license the same content to everyone online streamers will need new ways to differentiate their offers. Amazon opted for bundling video service with their Amazon Prime offer. Others like Youtube have been busy trying to ink deals with NBA and NHL to offer live sports and Youtube also recently acquired Next New Networks an online video production company. It's just a matter of time before one of the streaming services signs a deal with a major production company like DreamWorks or maybe hire an A-star actor or famous writer  and off they go creating exclusive online content that will be watched by millions worldwide. The cable industry went through this cycle already around 1999 when HBO launched the Sopranos rewriting the rules of "exclusive" content and passed from being just another movie aggregatorto the series powerhouse it is today. Other channels like Showtime and A&E followed along. Nowadays pretty much every channel has some form of exclusive content. Going back to the online streamers if we assume it's like 90s for them what we will see in the next decade it's the birth of a new multi-billion dollar online-first content industry that will flip upside down the famous true-and-tried Hollywood release windows to something where online content will precede all other distribution channels.

Tuesday, February 08, 2011

Using CUDA for Neural Network-based Image Enhancing Filter

By end of last year I started looking into NVidia's CUDA technology. I downloaded the SDK here and quickly realized that the parallelism supported by the GPUs is ideal for some of the work I've done before experimenting  with Neural Networks (NN) to enhance images. I quickly ported my previous filter implementation to CUDA and I was able to reduce the processing time quite a lot I would say about 10 times faster. It turns out that CUDA is ideal for NNs because normally NN requires you to perform the same operation on every single block of data so I was able to take advantage of the parallelism (1024 threads or so) to quickly process the data. I'm currently running into some issues associated with accessing the same memory location from multiple threads and in a way parallel programing forces you to stop thinking in terms of sequential loop and figure out how to structure the data in such a way so the operations can be perform simultaneously on all the blocks at once. I expect to solve this issues very soon.

This is a screenshot of the Neural filter in action so far. On the left hand side is the original heavily compressed image. On the right hand side is the NN processed image. As you can see the filter tries to remove some of the blockiness of the original image. I'm still need to fine tune the momentum constant I think, I see that the bias is not reacting as quickly as I would like thus creating some low frequency streaks across.

Overall it looks very promising. Once I add color information the overall perceived quality of the image should improve.