Giter VIP home page Giter VIP logo

cgtuebingen / jannik-hofmann-master-thesis Goto Github PK

View Code? Open in Web Editor NEW
2.0 5.0 0.0 22.51 MB

DNN Visualization in the Unreal Engine for Interactive Fly-through Exploration, an extensible framework for visualizing feed-forward TensorFlow/Keras DNNs. It calculates a force-based layout and displays kernels, kernel activations, saliency maps, and integrated gradients. Published under GNU GPLv3.

License: GNU General Public License v3.0

C# 0.36% C++ 3.60% Python 33.10% C 43.69% Jupyter Notebook 18.96% Cython 0.30%

jannik-hofmann-master-thesis's Introduction

NeuralVisUAL

NeuralVisUAL (Deep Neural Network Visualization in the Unreal Engine for Interactive Fly-through Exploration) is the first step towards an extensible framework for neural network visualization, facilitating a better understanding of these networks through exploration. It is a modular application, written in python, C++, and Unreal Engine blueprints, that visualizes any feed-forward deep neural network developed in TensorFlow and Keras.

NeuralVisUE utilizes the force-based algorithm ForceAtlas 2 with some modifications to calculate a meaningful layout of the given network on a two-dimensional plane. This layout determines where to spawn objects in a virtual game environment, which the user can freely explore, interacting with the network through this application. Furthermore, the application visualizes the kernels of convolution layers in convoluational neural networks, the corresponding kernel activations, saliency maps, and integrated gradients according to user-defined preferences.

NeuralVisUE consists of several distinct modules connected by precisely defined interface interactions. Its python server runs on the same machine that hosts the neural network; it is responsible for directly loading and interacting with the network, processing retrieved data into visualizations. The client contains a custom UE4 C++ plugin for WebSocket interactions, Unreal Engine blueprints to interpret responses, cache data and spawn objects, and the Unreal Engine 4 game environment that renders these visualizations in an interactive world, to be freely explored by the user. Among other advantages, this allows for a separation between a server interacting with the neural network and an Unreal Engine 4 client that renders the visualization for the user to explore freely.

This project is published under the GNU GPLv3 license.

Jannik Hofmann master thesis

NeuralVisUAL was developed by Jannik Hofmann as part of his master thesis for the university of Tübingen (Eberhard-Karls-Universität Tübingen).

The theoretical background of this project as well as more detailed information about the implementation can be found in the pdf-file of the thesis itself. A compressed version of this pdf file is available in this repository. The full high-quality version of the thesis is here.

Setup

Due to the huge size of UE4 (Unreal Engine 4) projects, only part of the project structure has been uploaded to this repo.

UE4 Client

To recreate the NeuralVisUAL project, please create a new UE4 project on your own, then overwrite the Content, Plugins, and Source folders of that project with the ones found in the NeuralVisUE folder of this repo.

Then, please navigate to NeuralVisUE/Plugins/NeuralInteractionClient/Source/ThirdParty and create a folder BoostLibrary, containing the boost_1_75_0 folder with the library from boost.org. NeuralVisUE/Plugins/NeuralInteractionClient/Source/ThirdParty/BoostLibrary/boost_1_75_0 should now contain files such as boost.png, README.md and folders boost, doc, more, among others. You also need to "prepare to use a boost library binary", as described in step 5 of the guide for Windows or Unix. The complete UE4 project can now be run to start the NeuralVisUAL client.

Server

For the server, simply execute the Python Interaction Scripts/centralController.py file in python. If python throws errors due to missing libraries, please install the relevant libraries to your python environment.

Any configuration for the server or visualization settings can be made in serverSettings.py and visualizationSettings.py. To disable features, please set the variables to 0 or False instead of removing or commenting out code lines in the settings.

For further information on how to use the python server, please refer to the thesis pdf or type the commands help or server status in the console of the running UE4 client.

jannik-hofmann-master-thesis's People

Contributors

jannikh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.