There are extremely large amounts of hardware based implementations. Any more complicated TV upscaler (Sony 4K TVs certainly) probably has a neural network embedded in it.
Any algorithms working with images need FPGA implementations to be quick enough, and there are a lot of convnets in use there.
Wow, I was completely unaware that consumer products like TV upscalars were utilizing neural networks. I assume that the upscalar uses the result of a prior training session and doesn't need periodic retraining.
Yeah, I was surprised too when I heard that, but if you had a huge database of HD movies, you could train a NN yourself, see how it upscales, use some algorithms or different error functions to correct weird artifacts and put the trained weights on an FPGA.
Any links to TV upscaler chips using NN algorithms? I couldn't find any.
Also, my impression was that FPGAs are much slower than GPUs for neural nets. Unless you're talking about really high end chips like Stratix 10 from Altera, which cost over $30k. Power consumption is a different matter though.
They won't tell you it's NNs but it is. Sony distributes a lot of movies, they use their database of movies to train the upscaling models (which is obviously NNs https://github.com/nagadomi/waifu2x ) and then put the chip in the TV.
It's something almost equivalent to storing Pride and Prejudice and Zombies in your TV in 4K, and then reproducing it when they match it with what's playing on TV.
It does not mention anything about neural networks in that link. How do you know? I looked up that Sony chip, and I can't find anything "neural" about it either.
I don't quite understand what you mean by: "It's something almost equivalent to storing Pride and Prejudice and Zombies in your TV in 4K, and then reproducing it when they match it with what's playing on TV."
Can you explain? What exactly do they have to store in the TV?
Well, Sony Pictures is huge. Their database of movies is enormous. (Pride and Prejudice and Zombies is one of the movies distributed by Sony)
Imagine they stored all of the movies they distribute in 4K in your TV. Whenever the movie is displayed they just find it in the database and reproduce the 4K version.
Of course, that is very much infeasible, it requires too large of a storage.
What they do is something like Waifu2x I linked, they train a neural network to learn how to properly upscale movies. They put the "algorithm" on the chip, and its fast enough for real time usage.
I don't have to be familiar, you can know state of the art deterministic upscalers and their image quality, and know state of the art statistical upscalers and their image quality.
When you see side-by-side for these upscalers, it's obvious they aren't that good in deterministic upscaling.
> We implemented a RNN with 2 layers and 128 hidden units in hardware and it has been tested using a character level language model. The implementation is more than 21× faster than the ARM CPU embedded on the Zynq 7020 FPGA.
I'm left curious on the performance gain factor when scaling the network in terms of layers and units.
Would the performance gap widen as the RNN grows?
> Figure 8: The execution time is projected to decrease with the increase of number of LSTM cells running in parallel. This can lead to significant performance improvement.
They do say in the text that "Figure 8 shows the expected speed up, assuming the data throughput is high enough to handle the parallel processing" so take it with a grain of salt. There could and most likely will be (as there always is) other factors that prevent ideal scaling.
Seems like an interesting approach. However the 21x speedup seems a little underwhelming considering the speed of the Zynq's programmble logic fabric and how parallizable NNs are. They're quoting a 21x speedup over the ARM processor on the Zynq 7020, which is on par with what powers the RaspberryPi 2.
My guess is they didn't pipeline their design enough or appropriately causing one of the datapaths to significantly limit their throughput.
16 comments
[ 2.5 ms ] story [ 38.4 ms ] threadAny algorithms working with images need FPGA implementations to be quick enough, and there are a lot of convnets in use there.
There's a chapter on convnets here: http://www.cambridge.org/us/academic/subjects/computer-scien...
RNNs are nothing special in particular, at least these with small number of layers and nodes.
HMMs or CRFs are easier to handle for sequences, and would probably work well, and there are FPGAs all over the place of these models.
Also, my impression was that FPGAs are much slower than GPUs for neural nets. Unless you're talking about really high end chips like Stratix 10 from Altera, which cost over $30k. Power consumption is a different matter though.
They won't tell you it's NNs but it is. Sony distributes a lot of movies, they use their database of movies to train the upscaling models (which is obviously NNs https://github.com/nagadomi/waifu2x ) and then put the chip in the TV.
It's something almost equivalent to storing Pride and Prejudice and Zombies in your TV in 4K, and then reproducing it when they match it with what's playing on TV.
I don't quite understand what you mean by: "It's something almost equivalent to storing Pride and Prejudice and Zombies in your TV in 4K, and then reproducing it when they match it with what's playing on TV."
Can you explain? What exactly do they have to store in the TV?
Imagine they stored all of the movies they distribute in 4K in your TV. Whenever the movie is displayed they just find it in the database and reproduce the 4K version.
Of course, that is very much infeasible, it requires too large of a storage.
What they do is something like Waifu2x I linked, they train a neural network to learn how to properly upscale movies. They put the "algorithm" on the chip, and its fast enough for real time usage.
When you see side-by-side for these upscalers, it's obvious they aren't that good in deterministic upscaling.
I'm left curious on the performance gain factor when scaling the network in terms of layers and units. Would the performance gap widen as the RNN grows?
They do say in the text that "Figure 8 shows the expected speed up, assuming the data throughput is high enough to handle the parallel processing" so take it with a grain of salt. There could and most likely will be (as there always is) other factors that prevent ideal scaling.