# HoloForkNet: Digital Hologram Reconstruction via Multibranch Neural Network
## 3 Numerical Experiments  
### Numerical Experiment Conditions  
The neural network was trained on sets of 3D computer-generated holograms. The scenes consisted of different numbers of object planes (3D scene sections). From 2 to 20 planes were used. The size of each object plane was 1024 \(\times\) 1024 pixels. Two types of phase images were used. The first type (object 1) were digits from the MNIST dataset [73]. In this case, each plane contains one object (one digit) in the center of the field. Examples of object planes are shown in Figure 4a,b. The phase range was from \(-\pi/2\) (black dots) to \(\pi/2\) (white dots). The other type of object (object 2) were images of circles, which can be considered similar to various biomedical microparticles. Examples of the objects are shown in Figure 4c,d. The radius of the circles in these cases was 32 (Figure 4c) and 64 (Figure 4d) pixels.  
Figure 3: Example of image partitioning by pixel position.  
These specific object examples were chosen because they represent several large groups of objects and illustrate the ability of a neural network to handle them. Randomly distributed particles have great variability in their mutual arrangement, which makes them great data for a neural network to train on. In addition, they can be seen as model examples for biomedical particles or fine particles in gas. Images of numbers are examples of large grayscale shapes, so it is possible to estimate the applicability of a neural network to other grayscale images.  
The propagation from each object plane was calculated using the Fast Fourier Transform (FFT)-based Fresnel approximation method (single-FFT approach) [14; 15]:  
\[O_{H}(\xi,\eta,z)=\frac{\exp(ikz)}{i\lambda z}\exp\left(\frac{i\pi\big{(}\xi^{2 }+\eta^{2}\big{)}}{\lambda z}\right)\cdot FFT\Bigg{\{}O(x,y,0)\exp\left(\frac{ i\pi\big{(}x^{2}+y^{2}\big{)}}{\lambda z}\right)\Bigg{\}}, \tag{2}\]  
where \(FFT\)[... ]-the fast Fourier transform, \(\lambda\)-wavelength, \(k\)-wavenumber, \(z\)-the distance from the object plane to the hologram, (\(\xi\), \(\eta\), \(z\))-the coordinates in the hologram plane, (\(x\), \(y\), 0)-the coordinates in the object plane, \(O(x\), \(y\), 0)-object plane, where \(O_{H}(\xi,\eta,z)\)-object wave distribution in the hologram plane. The distance between the hologram plane and the nearest plane was usually 23 cm. The distance between neighboring object planes was usually 1 \(\upmu\)m. The wavelength \(\lambda\) was 532 nm. SLM pixel size was 9 \(\times\) 9 \(\upmu\)m\({}^{2}\).  
Inline Fresnel holograms with a resolution of 1024 \(\times\) 1024 pixels were generated. The hologram was calculated as:  
\[H(\xi,\eta)=\left|O_{H}(\xi,\eta,z)+R(\xi,\eta)\right|^{2}, \tag{3}\]  
where \(R(\xi,\eta)\)-the reference beam in the hologram plane. The object beam in the hologram plane was the sum of waves from each object plane. The images were also reconstructed using the single-FFT approach [14; 15].  
The HoloForkNet was trained in a way where each hologram was matched with a set of corresponding object planes. This neural network was implemented in the Python programming language using the TensorFlow library. The model was trained with Nvidia RTX 3060 and Nvidia RTX 3070 GPUs.