npainter icon indicating copy to clipboard operation
npainter copied to clipboard

Artistic patterns using recurrent neural network

Npainter

Artistic patterns using recurrent neural network. We use recurrent neural network that takes coordinate (x, y) and outputs RBG value to generate the patterns. We have added non linearity functions to recurrent.js and by randomly assigning weights to neural network.

Try Npainter AI

Gallery

High res available here

Different non linearity functions used to generate patterns.

Parameters of styling network

1.Number of neurons per layer

2.Number of hidden layers

3 Stroke strength

Full implementation [neuralpaint.js] (https://github.com/rupeshs/npainter/blob/master/js/neuralpaint.js)

Style Non linearity function Stroke Strength
out.w[i] = Math.log10(Math.abs(m.w[i]) + sstrength) 1e-1 to 1e-10
out.w[i] = Math.tanh(Math.abs(m.w[i]))
out.w[i] = Math.log(Math.abs(m.w[i]) + 0.1)
out.w[i] = out.w[i] = Math.tanh(Math.abs(m.w[i]))
out.w[i] = Math.abs(m.w[i] * m.w[i])
out.w[i] = m.w[i] * Math.abs(1 / m.w[i])
out.w[i] = m.w[i] * Math.log10(Math.abs(m.w[i] * m.w[i]) + sstrength); 1e-1 to 1e-10
out.w[i] = Math.abs(1 / m.w[i]) * m.w[i] * Math.log(Math.abs(m.w[i]) + 9e-1)
out.w[i] = Math.log(Math.abs(m.w[i]) + 1)
out.w[i] = Math.abs(1 / Math.tanh(m.w[i])) * m.w[i] * Math.log10(Math.abs(m.w[i]) + 8.5e-1)
out.w[i] = Math.abs(1 / m.w[i]) * m.w[i] * Math.log10(Math.abs(m.w[i]) + 1e-1)

References

Neural Network Generative Art

[The Unreasonable Effectiveness of Recurrent Neural Networks] (http://karpathy.github.io/2015/05/21/rnn-effectiveness/)

Web worker