cuDNN is Nvidia’s official machine learning driver for their processors: NVIDIA cuDNN | NVIDIA Developer
Tensorflow is Google’s open-source, optimized, and constantly-updated machine learning API built on top of those drivers. It has unofficial plugin support here: GitHub - getnamo/tensorflow-ue4: TensorFlow plugin for Unreal Engine 4
However, this plugin lacks things like Lite support and only gets updated with the free time of its contributors. I want to make an argument that this is an essential feature for the future of this medium, for research purposes and for the creative and gaming end. I won’t focus on game AI as that’s an obvious one, including things like speech/dialogue generation or planning against you.
Graphics Optimization
Ray tracing is just one thing. The new tensor processors on the market and the vast number of graphical applications for tensor-based models make machine learning the next computing frontier including, say, shader optimization. The official Nvidia example of shader optimization is the ray tracing, however that’s a very basic example. Compute shaders like for particle generation may also be implemented to increase visual fidelity while drastically increasing speed: FluidNet example You can generate unique shaders that use minimal computations so that a phone could run it real-time: Universal Style Transfer example This math is applicable to a very wide set of problems, this is just one implementation (thus the “Universal” tag).
These models are fine-tunable and you can switch out neural net architectures that might be better for the job (e.g. a Capsule net vs a CNN, numbers of layers, layer resolution, activation functions, encoders & decoders / different signal analysis methods, etc.).
Art Generation
You can generate rough 3D models from datasets: CNN example, 3DR2N2 example, ShapeNet database
You can generate segmented 3D scenes from point cloud data: PointNet example
ARCore uses a sparse point cloud to do its job, and there’s open source photogrammetry software like Meshroom that could integrate pointNet or 3DR2N2. It has many AR applications, too.
You can generate animations: Mode-Adaptive Neural Nets, Motion Transfer,Phase Functioned NNs, FastMotion Transfer based off Universal Style Transfer
Hell, you can even generate a whole game: Nvidia example - Same team that did the first Motion Transfer example linked above.
Research Visualization
I know that people at NASA, people in universities, and people like me like to use Unreal for visualization and engineering application purposes. It’s easy to make UIs, toy with physics, and leverage C++ with blueprints. With protein modeling, tumor identification, drone navigation, etc., 3D visualization is growing to be an essential part of how the researcher understands, interacts with, and communicates their work. Most of ML is going into helping with simulation and optimization, something Unreal is made for.
In Conclusion
So while people are out there building these plugins and research implementations in bits and pieces across many frameworks, why not unify and optimize the effort with the studio’s resources?
The above research shows modern hardware is capable of running much of this real-time for any application. When you’re decoding a learned data set, say for shaders, then that can be much faster than traditional linear and differential equations. A few more years of hardware updates and there won’t be any performance issues. I cannot express enough what kind of doors this could open for the creative, research, and gaming world. You really have to learn a bit about the 2018 ML field to see the vast applications and where it’s all going, and for all the little details in game and simulation and real-world systems.
Functions to Add/Optimize
Neural nets are more or less just pipelines for regression and data comparison that can be plugged and unplugged. This isn’t comprehensive so help me add on. Consider this the dream list.
Data Structures:
Tensors - these are just n-dimensional matrices. Options for padding, dynamic typing, GPU or CPU-based (i.e. single vs double precision), etc.
General Functions:
Summing/Averaging/Masking/Dot/Cross Product/Other basic matrix math (already present) but extended for tensors, including tensor products
Covariance/Cross-correlation
Autocorrelation
Convolution
Eigenvalues/Eigenvectors
Feature Transforms e.g. WCT,Wavelet Transforms, Affine Transforms
Regression Statistics & Weighting
Gradient Descent
Noise Reduction/Loss Functions:
Max Ent
Cross Ent
L1/L2 Loss
SSIM
Mean Square Error
Margin/Soft Margin
NLL
log(cosh(x))
Squashing
Gradient Boosting
Activation Functions:
ReLU
LReLU
tanh
sigmoid
Identity
Softmax
NN Templates:
Examples
Other:
Renormalization Groups - fundamental but uncommonly used by the ML scene (because y’all need to keep up).