Skip to content

XXI. Other Java Deep‐Learning engines

carlosuc3m edited this page Sep 13, 2023 · 1 revision

Initially, we developed JDLL to support Deep-Learning techniques, and in particular the use of BMZ models, in a scientific image analysis platform we develop, Icy. There are other Deep-Learning Java libraries, and we initially tried to rely on them before starting the development of JDLL. But we found out that either they don't address the needs of imaging-based research, or have limited compatibility with the modern Deep-Learning engine ecosystem.

We list briefly some them below, as long with some differences with JDLL. This list discuss libraries that are maintained and with features as of now (August 2023).

DL4J

DL4J is a large project focusing on business settings, mainly built on a client/server architecture. It offers training capabilities in Java, does not focus on compatibility with other engines, and offers only a limited ability to use existing models. Only Tensorflow 1.x and Keras are supported.

CSBDeep_fiji

In our scientific community, a first attempt was made with the CSBDeep_fiji java library. It fuels, for instance, the CARE image restoration pipeline and the StarDist 2D implementation in Fiji. However, its compatibility is limited to Tensorflow 1.x.

DJL

DJL is the library closest to JDLL in terms of features. It also offers access to models trained on predominant engines. But one could not achieve the goals of the BMZ, nor fulfill its requirements with it, as detailed below.

The BMZ is the only existing bioimage processing deep learning model repository tailored for life scientists. Its model format is designed to ensure the correct image processing using a trained model, i.e., details about pre/post-processing, axes organization & shape, and the relationship between the input and output axes (essential in bioimaging) are explicitly given. This format is the one by default for reference open-source tools such as Ilastik, ZeroCostDL4Mic, StarDist, QuPath, deepImageJ and Icy.

DJL can consume the static version of a trained model in the BioImage Model Zoo and use it to perform image processing. However, it will still need to parse and interpret those parameters to ensure a correct model deployment. JDLL aims at providing these functionalities by being fully synchronized with the BMZ specifications, and maintaining them over time.