Top 10 Most Downloaded Games on Play Store in 2024
Â
ConvNetJS & CaffeJS
1. ConvNetJS & CaffeJS
Deep Learning in the Browser
Christoph KĂśrner
Slides available on bit.ly/294OFxk 1
2. About me
⢠Visual Computing at Vienna University of Technology
⢠Intern in the Big Data Team at T-Mobile Austria
⢠Author of Data Visualizations with D3 and AngularJS
⢠Author of Learning Responsive Data Visualization
⢠Contributor at n3-line-chart
⢠Organizer of Vienna Kaggle Meetup
⢠LinkedIn: at.linkedin.com/in/christophkoerner
⢠Twitter: @ChrisiKrnr
⢠Google+: +ChrisiHififm
⢠Github: github.com/chaosmail
2
23. Convolutional Neural Nets in the Browser
⢠Network and Layers
â including Conv, Pool, etc.
⢠Network Training
â Including SGD, momentum, etc.
⢠Visualization of Activations
⢠JSON import and export
⢠Cool demos: MNIST Train, CIFAR Train, CIFAR
23Source: ConvNetJS
28. convnetjs.Vol
⢠Volumes stored as Typed Arrays (column vectors)
â Vol.get(x, y, d)
â Vol.set(x, y, d, value)
⢠Dimensions
â Vol.sx
â Vol.sy
â Vol.depth
⢠Weights and Gradients
â Vol.w
â Vol.dw
28
29. ⢠Float32Array, Float64Array, âŚ
⢠Typed arrays are fast for storing large blobs
⢠Plays nicely with ArrayBuffer
29
Array Float64Array Float32Array
Create zero filled 0.624 0.266 0.139
Fill iter. / method 0.228 0.228 / 0.817 0.270 / 0.954
Copy array 5.425 0.050 0.024
Typed Arrays
30. ⢠Slow, due to sequential computation
⢠Array layer structure (no Inception modules)
⢠No Recurrent Networks
⢠Inefficient Dropout and activations
⢠Limited memory in the browser, JSON
⢠I donât want to train models in the browser
Problems of ConvNetJS
30
31. ⢠Offline training (many GPUs, long time)
⢠Export weights
⢠Perform only forward pass (no BP needed)
Using pre-trained Models
31
32. Finding pre-trained Models
⢠Popular pre-trained models are available
â Caffe
â Model-Zoo
â FCN Berkley Vision
⢠Structure in ProtoBuf files *.prototxt
⢠Weights in binary files *.caffemodel
32
33. CaffeJS - Caffe Models in the Browser
⢠Work in progressâŚ
⢠Based on ConvNetJS
⢠Transforms *.caffemodel weights into bin files
(one file per layer) - Thanks to #1669 in Keras
⢠Updates weights in ConvNetJS models
33
34. CaffeJS - Caffe Models in the Browser
⢠Graph structure for layers + layerIterator
⢠Abstractions for Visualizations
⢠New Layers (Concat, AVG Pool, etc.)
34
35. ⢠Visualize models and structure
⢠Demo using Webcam and DNN
⢠DeepDream ported to JS
Demos with CaffeJS
35
36. ⢠Teaching & Learning
â No requirements (but a browser)
â Understand & analyze Deep Nets
â Debugging of Deep Nets (FF and BP)
â Visualize the filters, layers, activations, etc.
â Feed webcam stream into Deep Nets
Why CaffeJS
36
37. ⢠Forward pass still slow
â 6s for GoogLeNet
â Most time spend in early convolutions
⢠Too much overhead for weights (fc6 and fc7)
⢠Uses only layers, no blobs
⢠Memory issues (above 200MB) - can we convert
weights into images?
Problems of CaffeJS
37
38. Whats next
⢠Network in a Network (NIN)
⢠Fully Convolutional Nets (FCN)
⢠WebCL: Heterogeneous parallel computing
⢠WebAssembly: Compilation to the web
⢠Deep Compression: AlexNet on 7MB
⢠More Layers!
38
39. Some more useful resources
⢠Tensorflow Playground: Neural Nets
⢠CS231n: Lecture, Github, and videos
⢠CS231n: Caffe Tutorial
⢠Udacity Tensorflow
⢠DeepDream
39