## 3 Results and Discussion
When water was added into the water tank, CuDNNLSTM still achieved 6.6 kbit/s, satisfying the HD-FEC, while the PPSNN only achieved 4.2 kbit/s. When water turbulence was introduced, the BER performance of the OCC system became higher. The proposed CuDNNLSTM algorithm still achieved 6 kbit/s, satisfying the HD-FEC. We also compared the model training times needed when using CuDNNLSTM and LSTMNN running in Python on the same computer. The time required for CuDNNLSTM was 264.89 s, while that for LSTMNN was 2120.13 s (-eight times larger). The laptop computer used was an ASUS(r) TUF Gaming A17 FA706 ICB with Nvidia(r) GeForce RTX3050 GPU GDDR6@4 GB (128 bits), CPU: AMD(r) Ryzen 5 4600H, RAM: 16 GB. Finally, we evaluated the stability of our trained CuDNNLSTM model. Figure 10a,b show the measured loss and accuracy over time when using the CuDNNLSTM at a data rate of 7.2 kbit/s under 100 cm transmission distance through wavy water. We can observe in Figure 10a that the losses of the training and validation data are a good match with each other. The losses decrease rapidly after a few epochs, and become nearly zero after 200 epochs. It is also worth mentioning that when CuDNNLSTM was used, the processing latency was significantly reduced when compared with the traditional LSTMNN model. Hence, the valuation to 2000 epochs can be completed within several minutes. Similarly, as shown in Figure 10b, the accuracies of training and validation data are a good match with each other. The accuracies increase rapidly after a few epochs, and become nearly 100% after 200 epochs. It is worth noting that CuDNNLSTM is optimized for GPU performance,  
Figure 8: Measured BER curves of the air-to-water OCC system at 100 cm transmission distance (**a**) without water, (**b**) with water and no turbulence, (**c**) with water turbulence. supporting only Tanh and Sigmoid activation functions, which limits flexibility compared to typical LSTM. The advantage of CuDNNLSTM is that it is more memory-efficient than typical LSTM, as it uses optimized memory allocation for faster computation in the GPU. Other self-defined structures are basically the same as the basic LSTM model. Here, we provide an analysis of the variation in performance when the distance between the LED panel and the CMOS camera changes. As shown in Figure 11a-c, when the distance between the LED panel and the CMOS camera increases, the LED panel captured by the CMOS sensor becomes smaller and smaller. Since the RS effect is produced by the CMOS camera, increasing the distance will not affect the RS pattern's bright and  
Figure 10: Measured (**a**) loss and (**b**) accuracy over time when using the CuDNNLSTM at a data rate of 7.2 kbit/s at 100 cm transmission distance through wavy water. Figure 9: Measured BER curves of the air-to-water OCC system at 180 cm transmission distance (**a**) without water, (**b**) with water and no turbulence, (**c**) with water turbulence. dark stripe pixel-widths captured in the CMOS sensor, but it will affect whether a complete OCC packet can be received or not. When the distance is not long, as shown in Figure 11a, several complete OCC packets (i.e., including a packet header and a packet payload) can be observed. When the distance is very long, as shown in Figure 11c, a complete OCC packet cannot be observed; hence, data decoding cannot be performed. In order to receive a complete OCC packet over a long transmission distance, the OCC data rate should be decreased; this, in turn, increases the pixel-per-symbol (PPS) value for better RS decoding.