New: Preprint on Arxiv: https://arxiv.org/abs/1905.13105
ImJoy is a plugin powered hybrid computing platform for deploying deep learning applications such as advanced image analysis tools.
ImJoy runs on mobile and desktop environment cross different operating systems, plugins can run in the browser, localhost, remote and cloud servers.
With ImJoy, delivering Deep Learning tools to the end users is simple and easy thanks to its flexible plugin system and sharable plugin URL. Developer can easily add rich and interactive web interfaces to existing Python code.
Checkout the documentation for how to get started and more details for how to develop ImJoy plugins: ImJoy Docs
-
Minimal and flexible plugin powered web application
-
Server-less progressive web application with offline support
-
Support mobile devices
-
Rich and interactive user interface powered by web technologies
- use any existing web design libraries
- Rendering multi-dimensional data in 3D with webGL, Three.js etc.
-
Easy-to-use workflow composition
-
Isolated workspaces for grouping plugins
-
Self-contained plugin prototyping and development
- Built-in code editor, no extra IDE is needed for development
-
Powerful computational backend powered by the Python ecosystem
- Support Javascript, native Python and web Python
- Concurrent plugin execution through asynchronous programming
- Run Python plugins in the browser with Webassembly
- Browser plugins are isolated with secured sandboxes
- Support
async/await
syntax for Python3 and Javascript - Support Conda virtual environments and pip packages for Python
- Support libraries hosted on Github or CDNs for javascript
- Easy plugin deployment and sharing through GitHub or Gist
- Deploying your own plugin repository to Github
-
Native support for n-dimensional arrays and tensors
- Support ndarrays from Numpy for data exchange
ImJoy greatly accelerates the development and dissemination of new tools. You can develop plugins in ImJoy, deploy the plugin file to Github, and share the plugin URL through social networks. Users can then use it by a single click, even on a mobile phone
The easiest way to try ImJoy is to start with a plugin running directly in the browser.
For example, you can install our Image Recognition
plugin with this link.
Clicking the link will open the ImJoy Web App and show a dialog to confirm the
installation of the plugin. Once installed, you can launch the plugin by clicking
the button Image Recognition
in the plugin menu on the left. The demo plugin
will run a trained deep neural network model (MobileNet) to perform image
classification (e.g. identifying an elephant in an image).
This plugin uses your browser as its computational backend, so all computation is done locally, no data will be sent to a remote server.
Besides running plugins in the browser, ImJoy provides the flexibility to keep the GUI locally in your browser, and perform computational tasks with Python. These computations can be performed on your computer utilising the full power of the local GPU/CPU. The computational backend can also be launched on remote servers including cloud servers on Amazon, Google Compute, or an institutional computing cluster.
To learn more details about ImJoy, please go to ImJoy Docs.
Currently, ImJoy consists of the following repositories:
-
ImJoy Web App (core) (this repository)
- We provide a detailed ImJoy Docs. This includes a section with frequently asked questions.
- For further help and questions for how to use ImJoy and process data with ImJoy, you can post on image.sc.
- To report bugs or suggest enhancements for ImJoy itself, please file a GitHub issue.
This is a non-exhaustive list of the open-source tools and libraries we used in ImJoy:
- Joy.js (This is where the name
ImJoy
comes from!) - Jailed (This helps ImJoy to isolate plugins)
- Vue.js (The main ImJoy App is written in Vue.js)
- vue-grid-layout (For window management)
- python-socketio (This how the plugin engine talk with the ImJoy app)
- pyodide (Enables web python mode with WebAssembly)
- conda (The plugin engine uses Conda for managing virtual env. and packages)
- docsify (The ImJoy documentation is created with docsify)
We thank all the authors for offering these excellent work to the open-source community.
Please star the ImJoy GitHub repository to support ImJoy.
We would like ImJoy to be a community driven framework, everyone is welcome to contribute your idea, feedback, plugins and code to the project.
We don't have a guideline for that yet, for now please feel free to use the issues and fork the project.
Please cite our preprint on Arxiv (https://arxiv.org/abs/1905.13105):
@article{ouyang2019imjoy,
title={ImJoy: an open-source computational platform for the deep learning era},
author={Wei Ouyang and Florian Mueller and Martin Hjelmare and Emma Lundberg and Christophe Zimmer},
year={2019},
eprint={1905.13105},
archivePrefix={arXiv},
primaryClass={cs.LG}
}