
Show HN: TensorFire - antimatter15
https://tenso.rs/demos/fast-neural-style/
======
antimatter15
Hey HN!

We're really excited to finally share this with you all! This is the first of
a series of demos that we're working to release this week, and we're hoping
you'll keep us to that promise :)

Sorry if it doesn't work on your computer! There's still a few glitches and
browser compatibility problems that we need to iron out, and we're collecting
some telemetry data with LogRocket
([https://logrocket.com/](https://logrocket.com/)) to help us do so (so you
all know what kind of data is being collected).

We'll open source the library under an MIT license once we finish writing up
the API docs, and fixing these bugs.

~~~
ZeroCool2u
Just wanted to note, I ran the kitten demo in Chrome on my Nexus 6P (Android O
Beta) and it worked perfectly.

Extremely impressed. Keep it up!

~~~
ehsankia
It's quite unreal. I remember when the paper and initial implementations came
out less than 2 years ago, you had to go through this really long setup
process that only worked on certain operating system and was a huge fuss. A
few services came out online that would do it for you, but they were slow and
limited, with huge queues.

Now, as you mention, you can run it in a few seconds on your phone, or in my
case, on my Chromebook, right in the browser, with zero installation. Truly
amazing.

~~~
SimbaOnSteroids
It really had trouble with the portraits in my experience.

------
danicgross
TensorFire was a finalist of AI Grant. Applications for the next batch are
open now! Get $2,500 to work on your AI project:
[https://aigrant.org](https://aigrant.org).

It should only take five minutes or so to apply.

~~~
backpropaganda
Does it make sense for an active PhD student to apply?

~~~
badlogic
Yes!

------
zitterbewegung
Really cool demo. How does this compare to
[https://github.com/transcranial/keras-
js](https://github.com/transcranial/keras-js) ? Do the authors have a licence
in mind?

~~~
bijection
TensorFire is up to an order of magnitude faster than keras-js because it
doesn't have to shuffle data back and forth between the gpu and cpu. Also
TensorFire can run on browsers and devices that don't support
OES_TEXTURE_FLOAT.

We will probably release it under an MIT license.

~~~
espadrine
How does it compare to WebDNN[0]? It seems like a closer comparison,
especially with WebGPU.

It would be good if you had a comparative benchmark on the website.

[0]: [https://mil-tokyo.github.io/webdnn/](https://mil-
tokyo.github.io/webdnn/)

~~~
bijection
At the moment WebDNN only runs models on the GPU in Safari Technology Preview,
falling back to CPU on all other platforms / browsers: [https://mil-
tokyo.github.io/webdnn/#compatibility](https://mil-
tokyo.github.io/webdnn/#compatibility)

------
mholt
This is amazing. I can't use GPU Tensorflow (natively) on my Macbook Pro
because it doesn't have an NVIDIA graphics card. But I can... in the browser!
Honestly didn't see that one coming.

~~~
dgacmu
To be clear, you can use it - just without GPU acceleration. The CPU-only
build is supported and should work for you. If it's not, please let (me, us)
know. Be sure to compile with AVX2 if you're on haswell or later; it helps
quite a bit with some models.

------
smaili
Well done! Also important to note this project is one of the 10 recipients of
the Spring 2017 AI Grants[1].

[1] [https://aigrant.org/#finalists](https://aigrant.org/#finalists)

------
motoboi
Could someone explains whats is going on here? What are the steps? Why those
colorful artifacts appear before the final result?

~~~
antimatter15
It's showing a visualization of all the intermediate activations of the style
transfer network. The intermediate pictures are 4D, so they're visualized as a
sequence of tiles.

The network being run is defined here [https://github.com/lengstrom/fast-
style-transfer/blob/master...](https://github.com/lengstrom/fast-style-
transfer/blob/master/src/transform.py#L5)

This post provides a pretty good explanation of what's happening:
[https://shafeentejani.github.io/2017-01-03/fast-style-
transf...](https://shafeentejani.github.io/2017-01-03/fast-style-
transfer/#image-transformation-network)

There's a sequence of 9x9 and 3x3 convolutions that transforms that one big
input image into a bunch of smaller images. They're processed by a sequence of
residual convolutions. Finally, these tiny tiles are merged together back into
a stylized image of the same size as the original input with a few
deconvolution operations.

------
rjeli
Really cool - just want to point out that the flashing rectangles might
trigger epilepsy. I'm not sure if they're intended, but on Chrome on Linux I
get a bunch of 1 frame brightly colored rectangles flashing before the result.
Might want to disable that or put a warning to avoid an accident.

That said, well done, very impressive project!

------
nametube
"running networks in the browser with TensorFire can be faster than running it
natively with TensorFlow."

could you elaborate on this statement ?. What kinds of architectures does this
hold true for ?.

~~~
plingamp
From the github issue referenced in the FAQ, I think they mean that because
TensorFlow only natively supports CUDA, TensorFire may outperform TensorFlow
on computers that have non Nvidia GPUs, such as the new MacBook Pro.

------
caio1982
Kudos for providing a minimum experience on mobile! I was afraid I would have
to wait until I got home :-)

------
fabian2k
I've played around with doing some computation in WebGL, but it was rather
tedious and difficult with my limited knowledge about the topic. It's
possible, but you can't even rely on floating point texture to be available on
all systems, especially mobile. And for anything more complicated, you
probably need to be able to render to floating point textures, which is even
more rare than support for plain floating point textures.

This only makes it more impressive when people do cool computational stuff in
WebGL, but I'd wish there were some easier ways for non-experts in shader
programming to do some calculations in WebGL.

~~~
fulafel
WebGL 2 provides a much nicer base feature set and has been shipping & enabled
in browsers since January or so.

------
hughes
Hmm, this seems to lock up & crash my whole browser (Chrome 59, windows,
nvidia graphics) when I try to run any of the examples. It gets past
Downloading Network, then gets about 5% through Compiling before getting
stuck.

~~~
singularity2001
Crashed my Firefox as well

------
Dowwie
It is with great pleasure that I may present to you, Denali:

[https://imgur.com/gallery/ASRQg](https://imgur.com/gallery/ASRQg)

------
tambourine_man
Didn't work here, just a bunch of colored squares on Safari, Chrome or
Firefox. The latter actually managed to hang my machine. I could ssh to it but
kill -9 wouldn't terminate Firefox. Had to force reboot the machine, haven't
done that in years.

Amazing and scary, this WebGL thing is.

iMac 2011, latest OS

Edit: worked on MacBookAir

~~~
spartanatreyu
Sounds like some dodgy graphics driver on your old iMac

~~~
tambourine_man
> _old_ iMac

I object that qualifier, if you don't mind :)

~~~
ChristianBundy
It's not old for a computer, but it _is_ old for an Apple product (which is
very unfortunate).

~~~
tambourine_man
How so? In my experience Apple products outlast their competitor by a long
margin. All my Macs have lasted about 6/7 years, meaning, being used everyday
with latest software for paid work. Most still boot and work today, but are
impractical.

Same with iPhones, usually stop using because lithium batteries have a 4/5
years life span.

~~~
sharkoz
For a 2011 product I guess we're arriving in the 6/7 year zone :)

~~~
tambourine_man
Yes we are. I have another already configured in a tab just waiting for me to
have the courage to press buy :)

------
sonofaragorn
This is really cool! Great work!

I wanted to download the resulting image but got a "Failed - Network" error :(

------
batmansmk
This is awesome!

Quick question: is the code compiled from js to webgl in browser as well, or
do I need to compile beforehand?

I see this as a great way to learn and teach AI without having to bring a
large toolchain.

Edit : it seems it is just a runtime for now for Tensorflow models!

------
uyoakaoma
Failed when I uploaded an image

>> framebuffer configuration not supported, status = undefined

------
fletchowns
I get an SSL error SEC_ERROR_UNKNOWN_ISSUER when I try to load this page. I
tried removing https from the URL but then it's blocked by OpenDNS with
message "This domain is blocked due to a security threat"

~~~
slenk
I am receiving the same error when going to it on my companies DNS. Apparently
we use OpenDNS for some anti-malware and it was flagged by that

------
martinmusio7
Whenever I click on an image in the lower left corner it compiles the kittens.
This shouldn't be like this, right? The NN is supposed to take example I'm
choosing. (?)

And, as everyone else mentioned already: f __*ing wow!

~~~
hobarrera
The lower bottom one shows different "filters" (that's surely not the right
term) from what I've understood. The upper left corner let you pick different
images.

------
hackpert
Inference speed looks brilliant. Eager to read the source!

(Also, somehow I had a feeling before even reading that this project was by
the people who made Project Naptha etc. Have you written/talked about this
anywhere earlier?)

------
iXce
> as fast as CPU TensorFlow on a desktop

> You can learn more about TensorFire and what makes it fast (spoiler: WebGL)

Does this mean that using a GPU in a browser through WebGL yields the same
speed than a desktop CPU?

~~~
symlinkk
Actually it seems like WebGL is doing it even faster. Which makes sense -
machine learning involves a lot of matrix math, which GPUs are made for and
CPUs aren't.

~~~
iXce
This is actually what I'd expect, but the website feels quite misleading.
Advertising that a GPU-based approach can outbeat a CPU for neural nets is not
a very strong commercial claim :)

------
jstsch
Seriously cool. Great work. I did get a glitch every now and then in the
rendered output (say 1 out of 5 times) using Safari 10.1.2, MBP touchbar 2016
15", Radeon Pro 460 4096 MB.

------
arnioxux
Is the end goal to allow people to donate computing power for training? (a la
Folding@home or SETI@home except just by visiting a webpage)

If so that's amazingly clever!

~~~
nametube
I think the goal is to allow people to develop webapps with models built using
neural network libraries like keras and tensorflow. This would greatly improve
the distribution of applications that are powered by deep learning because you
wont have to install a bunch of dependencies in order to use the app.

------
narrator
I guess WebGL is now the "good enough" cross-platform vendor neutral
replacement for CUDA.

Tensorflow should add a WebGL backend that runs in NodeJS.

~~~
binarymax
Not quite. Training is not really supported in WebGL. For running a trained
model this is cutting edge, and still has varying browser quirks.

------
realworlddl
Nice demo! I made a shop where you can buy images like these
(www.deepartistry.com). Would be happy to see more designs coming in.

------
zo1
>"Could not initialize WebGL, try another browser".

Happening in both Firefox and Chrome on Ubuntu. What exactly am I missing
here?

~~~
SXX
For instance you might run on LLVMPipe or use some very old driver blacklisted
in both browsers.

Firefox: about:support

Chrome: chrome://gpu

------
cpcarey
Amazing work! That was incredibly fast (2013 MBA 13" 1.7 GHz i7, Intel HD
Graphics 5000 1536 MB, Chrome 59).

------
dizzy3gg
So I could build a model using the Google Detection API then do the actual
inference within the browser?

------
shams93
This would be an interesting way to generate a self-updating blog or an
automated news site.

------
fulafel
Very nice to see webgl gpgpu apps, they have been slow in coming. Any plans
for webgl 2?

------
udia
Lots of potential here. Looking forward to seeing the source once it's
released.

------
jacquesm
Awesome demo. Happy to report it works without a hitch on Firefox/Ubuntu.

------
ruste
Nice, Leonid Afremov is a great choice of input art.

------
aluhut
Respect. This pretty much killed the PC I'm on now. Wasn't even able to get to
the task manager :D

Windows7, Firefox 54(64bit)

------
ccheever
This is amazing. Very cool.

------
draaglom
This is really cool!!

------
cs702
Where is the repo?

~~~
bijection
We're still finishing up a few things (documentation etc) and planning on
releasing more stuff tomorrow.

You can also sign up for the mailing list if you'd like us to email you when
the repo goes live!

~~~
ldenoue
Would be great to port YOLO on your library; always an impressive visual
demonstration

------
gilbertstein
is there a way to download and play with it?

------
GChevalier
No GitHub?

------
setgree
I love it

------
synt
hey, stop it.

i'm running 55.0b13 (64-bit) firefox on windows 10 and clicking on that demo
froze the browser, froze my box - hard reboot.

whatever you're doing some of it's wrong. bad wrong.

~~~
usefulcat
I could see plausibly assigning blame any combination of the browser (a beta
version at that), the OS, or video drivers, but instead you're seriously going
to blame a _web page_ for locking up your machine? Is that really how low we
want to set that bar?

