Using convolutional neural network (CNN) to identify plant diseases in-situ is a hot research topic in smart agriculture. Due to the memory-intensive and compute-intensive characteristics of CNN algorithm, it is difficult to implement CNN on edge terminals with limited memory and computational resources. In this paper, Field Programmable Gate Array (FPGA) is used to accelerate CNN to identify plant diseases. First, a 7-layer simple-structured network called “LiteCNN”, with only 176 K parameters and 78.47 M floating point operations (FLOPs) was designed. And knowledge distillation method was used to train LiteCNN, making that the accuracy reaches 95.24 %. Secondly, the acceleration circuit of LiteCNN was designed and implemented on “ZYNQ Z7-Lite 7020″ FPGA board. To compress the network and speed up plant disease identification, the following methods were applied: 1) Separable convolution took place of regular convolution, and a low-redundancy block convolution approach was used to load data; 2) The Batch Normalization (BN) layer was fused into the previous convolutional layer (or fully-connected layer); 3) Feature data and model parameters were expressed by half float data. As the basic function of the circuit achieved, methods including unrolling the for-loop, pipelining the for-loop, loop flattening and array partitioning were used to optimize the parallelism of the circuit. Finally, LiteCNN on the FPGA board was verified. The plant disease identification accuracy was 95.71 %, the inference speed was 0.071 s per frame, and the power consumption was 2.41 W. The results show that this paper proposed a low-power, high-accuracy and fast-speed plant disease identification terminal, which can be well applied for real-time plant disease identification in the field.
Read full abstract