1. 引言
水果图像识别在智慧农业领域中具有重要地位,通过对水果图像的识别可以实现复合型果园果树的精准培育以及水果的自动化采摘。目前,图像分类识别技术已相对成熟并在CPU和GPU平台上实现了部署,但是高功耗的缺陷使得CPU和GPU无法应用于目前的嵌入式移动终端场景中 [1] ,因此,如何在嵌入式平台上实现实时视频捕捉和视频处理以及优化,是目前的热门研究方向。
本文采用使用软硬协同的设计方法,结合上位机与AX7020开发板实现嵌入式水果识别系统。系统主要包括四大部分,即图像采集部分、图像预处理部分、图像传输部分与图像识别部分 [2] 。其中图像采集、图像预处理与视频数据传输功能在FPGA平台上完成,水果图像识别功能由上位机完成。
在FPGA部分,采用OV5640双目摄像头对水果图像进行采集,采集到的图像通过HLS工具设计自定义IP核进行锐化预处理,经过预处理后的视频数据通过千兆以太网口自定义UDP协议发送至上位机,该与上位机的互联操作可用于后续进一步完成图像识别算法,利用传统软件或FPGA完成处理均可,可操作性强。
近年来,各学者针对目标识别问题引入了不同的深度学习算法 [3] 。例如Girshick等人 [4] 在2014年首次使用R-CNN网络进行目标识别后,继而出现Fast RCNN、Faster R-CNN等目标检测模型,但由于该类算法分类速度慢、类别不均衡等问题,Redmon等人提出YOLO (You Only Look Once)系列算法 [5] [6] [7] ,并因其检测速度与精度的优越性被广泛运用在医疗、安防、交通、农业等领域。但以往的目标检测算法仍存在速度低、无法迁移至嵌入式设备中等问题,为满足检测方法在嵌入式设备和移动设备上使用和时效性要求,本文以YOLOv3模型为基本框架展开对水果识别算法的研究,并对该模型的网络结构进行轻量化改进,为后续算法的移植奠定基础。本文其余部分内容如下:第二节主要介绍在zynq硬件系统上搭建水果图像采集与传输系统;第三节提出改进后的轻量化水果识别算法;第四节在硬件平台上搭建不同的水果识别算法,并对其实验结果进行对比。
2. 基于zynq的水果识别系统设计
在FPGA部分设计图像采集及优化并利用以太网传输硬件系统。硬件平台采用Xilinx公司的zynq7020开发板,ZYNQ7020芯片可分成处理器系统部分(PS端)和可编程逻辑部分(PL端),底板为核心板扩展了丰富的外围接口。实验采用OV5640摄像头模块采集视频图像,图像预处理部分使用HLS工具设计图像锐化IP核,将经过锐化处理后的视频数据传输至VDMA模块,VDMA通过写通道将视频数据写入PS端DDR3中缓存,最后通过千兆以太网口自定义UDP协议将实时视频数据传输至上位机,在上位机采用改进后的MobileNetV3-YOLOv3网络进行水果识别操作并获取水果位置信息,整体系统框图如图1所示。

Figure 1. The overall system block diagram of fruit recognition
图1. 水果识别整体系统框图
2.1. 图像锐化IP核设计
为了实现水果的准确识别,增强图像的边缘和细节,提高图像的对比度,本系统在FPGA部分进行图像的锐化预处理操作,使用VIVADO HLS (High-Level Synthesis)工具实现图像预处理算法功能,HLS支持C/C++语言设计图像预处理IP核,克服传统硬件描述语言设计难度大、效率低、开发周期长等缺陷。
图像锐化通过增加图像中的高频分量来减少模糊,同时增强图像的细节边缘与轮廓,增强灰度反差,与图像平滑为相反的操作,有助于后期对目标进行识别和处理。主要的图像锐化方法有微分法和高通滤波法。本系统中选用拉普拉斯锐化法设计图像预处理IP核。拉普拉斯锐化法的基本原理为:当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像锐化处理 [8] 。二维图像函数拉普拉斯变换定义式如(1)所示:
(1)
其对应的离散方程表示如(2)所示:
(2)
拉普拉斯算子具有旋转不变性。即针对某个角度时,利用拉普拉斯算子计算得出的图像再进行旋转和先进行旋转后再进行滤波得到的结果相同。旋转不变性使得该算子在各个方面的锐化增强效果平滑,不突兀。
使用HLS工具自定义拉普拉斯锐化预处理IP核资源评估如图2所示。由图2可知,拉普拉斯锐化预处理IP核在ZYNQ上的BRAM_18K占用率为2%,DSP48E、FF占用率为1%,LUT占用率为3%。

Figure 2. Image sharpening IP core resource consumption
图2. 图像锐化IP核资源耗用
使用LCD屏测试预处理IP核对图像优化功能对比如图3所示,由对比可知,在经过锐化预处理后,采集图像相对于预处理前对比度增强。
(a) 预处理前效果
(b) 预处理后效果
Figure 3. Comparison of image preprocessing effects
图3. 图像预处理效果对比
2.2. VDMA的介绍与配置
AXI VDMA (AXI Video Direct Memory Access),是Xilinx提供的软核IP。其功能和AXI DMA类似,都可以为存储器或者AXI4-Stream类目标外设之间提供高带宽直接存储器存取。和DMA相比,VDMA增加了帧缓存的缓冲机制和同步锁相(GenLock)等功能,是为了针对视频图像应用而做的升级版的DMA。VDMA中集成了如帧同步和2D DMA传输等视频专用功能,有助于在ZYNQ平台架构上进行图像和视频处理,极大缩短了开发周期 [9] 。DMA和VDMA的对比如表1所示。

Table 1. Comparison of DMA and VDMA
表1. DMA与VDMA对比
在本系统中,使用一个VDMA模块。摄像头采集视频数据后,传送至预处理IP核,将处理后的数据通过读通道传输至VDMA模块,VDMA的写通道再将视频数据写入DDR内存中缓存,为了完成视频数据的读写功能,使能VDMA的读通道和写通道,并同时使能不对齐传输。Memory Map接口采用AXI4接口,与ZYNQ HP口进行数据交互,读取PS端DDR中的图像数据。使能Frame Buffers为3,即3帧图像缓存,避免采集后的图像割裂,由于本系统需要对帧缓存进行频繁的写入和读出,为了避免读通道和写通道同时访问同一帧,我们将VDMA配置成动态同步锁相模式。VDMA模块配置如下图4所示。

Figure 4. VDMA IP core configuration
图4. VDMA IP核配置情况
2.3. 图像采集控制模块
2.3.1. 图像采集系统硬件设计
本系统采用ZYNQ开发板上的摄像头扩展接口,连接OV5640摄像头模块,由于需对摄像头进行初始化后才能正常使用,因此将CMOS_SCL信号和CMOS_SDA信号连接上拉电阻,SCCB端口是通过EMIO连接至PS中,SCCB的驱动由PS实现。原理图如图5所示。
OV5640摄像头数据的图像数据由PS端向VDMA IP核的帧缓存中写入,采用Xilinx提供的Video in to AXI4-Stream IP核实现数据转换,通过VDMA IP核中的写通道将AXI4 Memory Map格式的数据流转换成AXI4-Stream类数据流并写入帧缓存中。系统数据流向如图6所示。

Figure 5. OV5640 hardware schematic
图5. OV5640硬件原理图

Figure 6. System data flow process diagram
图6. 系统数据流向过程图
系统数据流向过程可总结如下:
1) OV5640采集模块为自定义IP核,负责将数据转换成视频流数据;
2) 视频流数据经过Video in to AXI4-Sream IP核转换成AXI4-Stream IP格式数据流,然后通过VDMA的写通道转成AXI4-Stream Map格式,并最终写入DDR内存中;
3) VDMA通过AXI Smartconnect IP核与AXI-HP端口进行连接,从而高效访问DDR3,进行视频数据的读写 [9] ;
4) 自定义udp协议将视频数据打包为数据包通过以太网口传输至上位机。
整体系统框图如下图7所示。
至此,系统硬件部分设计完毕,完成硬件设计后生成比特流文件,导出到SDK,进行SDK程序开发。在SDK工程中主要分为图像控制部分和以太网数据传输部分。系统资源占用情况如下图8所示。

Figure 8. ZYNQ7020 resource occupancy
图8. ZYNQ7020资源占用情况
2.3.2. LWIP以太网视频传输
以太网是一种应用广泛的局域网,也是目前最常用、最通用的通信协议。由于以太网拥有通信速率高、使用成本低、抗干扰性强等一系列优点,被广泛应用在交换机、网络远程监控、工业自动化等对通信速率要求较高的场合。如今最常用的两种以太网为千兆以太网(1000 Mbit/s)与万兆以太网(10 Gbit/s),本系统实现的为千兆以太网。
以太网通信中数据是以数据包的形式传输,单包数据量可达到几十上百甚至上千个字节,而在串口通信中,单次数据传输仅为一个字节。UDP (User Datagram Protocol,用户数据报协议)为以太网数据传输协议的一种,协议中数据包对各层协议的逐层封装来实现数据传输。数据格式如图9所示。
为了实现视频数据的实时传输,本系统自定义UDP数据包协议,主要步骤为获取板卡信息和获取数据两部分,如表2,表3所示。
(a) 控制命令
(b) 应答命令
每个UDP包都包含由Header,在第一个字节,其格式如表4所示。
开发板与上位机通信工作流程为:
1) 上位机发送询问命令;
2) 开发板应答询问;
3) 上位机发送控制命令请求数据;
4) 开发板发送数据;
5) 步骤3与4循环。
在完成硬件设计后,生成比特流文件,导出到SDK,进行SDK程序开发。在SDK工程中主要分为图像控制部分和以太网数据传输部分。
图像控制部分操作主要包括初始化中断控制器、初始化三帧缓存、初始化中断、配置分辨率、初始化vdma通道和设置回调参数。
以太网数据传输部分代码编写过程大致如下:
1) 进行lwip的初始化,设置板卡的MAC地址,IP地址,子网掩码,网关信息,并进行DHCP设置;
2) 填入IP地址,绑定回调函数,回调函数接受回调函数后判断命令种类并发送udp数据;
3) 利用sendpic发送图像,在主函数中产生循环,至此,图像数据的发送完成。
至此,FPGA部分图像的采集、预处理与传输功能完成。开发板硬件连接如图10所示。

Figure 10. ZYNQ7020 hardware connection diagram
图10. ZYNQ7020硬件连接图
3. 基于YOLO-v3的水果识别算法
YOLO (you only look once)是由Redmon [5] 等人在2015年提出的端到端的目标检测系列模型,自此之后学界陆续推出更新换代的数个版本,包括YOLOv1、YOLOv2 [6] 和YOLOv3 [7] 等,其中YOLOv3以YOLOv2算法为基础,对多个部分融入了改进内容。借鉴特征金字塔网络的思路,利用三级尺度做预测 [3] ,能较好地满足实时检测任务的精度和速度要求,检测小物体的能力也得到很大提升。
3.1. YOLO-v3识别算法研究
YOLOv3检测模型主要由骨干网络和检测网络两部分构成,引用Darknet-53网络的前52层作为用于特征提取的主干网络,去掉Darknet-53的全连接层,构成全卷积网络,引入了ResNet残差网络结构,缓解深层次神经网络中梯度消失的问题,去除全连接层,降低池化对梯度的影响,下采样采用步长为2的卷积层实现。采用Faster R-CNN中的特征金字塔结构作为检测网络,尽可能减少特征损失,提高检测精度。YOLOv3的网络结构如图11所示,相对于YOLOv2具有更深的卷积层。其中Convulutional由卷积层、批量归一层和leaky RELU激活层构成,residual表示残差结构,conv2d表示卷积操作,up sampling表示上采样,concatenate表示两组进行拼接操作 [3] 。
3.2. 轻量级网络MobileNetV3
轻量级网络的核心是对卷积神经网络设计出更加高效的网络计算方式,通过此方法可在不损失网络性能的情况下减少网络参数数量 [3] ,提升网络识别速度,以便后续研究中实现在移动终端或嵌入式设备中的应用。
目前主流的轻量级网络有SqueezeNet,MobileNetV3以及ShuffleNet网络,能够很好的在移动端和嵌入式设备中运用,通过比较目前主流的轻量级网络,选择了MobileNetV3网络对YOLOv3算法的网络架构进行修改。MobileNetV3网络是由MobileNetV1和MobileNetV2改进所得到的网络,主要技术包括以下六点:
1) 引入深度可分离卷积;
2) 使用激活函数RELU6;
3) 引入线性瓶颈的倒残差结构;
4) 引入基于SE结构的轻量级注意力模型;
5) 使用激活函数h-swish(x);
6) 利用了关于网格结构搜索的方法,在此方法中可发现由于中间几层开销较大,针对此问题将平均池化层进行前移,将特征图升维,节省了大量计算时间,并避免了瓶颈层中的升维操作,减少计算量。修改后的结构如图12所示。
(a) 原始结构图
(b) 改进后结构图
Figure 12. Network structure diagram comparison
图12. 网络结构图对比
3.3. YOLO-v3算法的改进
本系统采用YOLOv3算法作为水果识别技术的基础算法,但由于YOLOv3模型体积大且参数量多,仍然存在速度较低、无法迁移至嵌入式设备中等问题。为适应水果识别机器人的应用场景,在实际应用中根据实际抓取过程中获得果实的真实坐标,解决目前水果识别与分类算法的局限性,本设计通过对比目前主流的轻量级网络,选择将MobileNet轻量级网络引入YOLO-v3目标检测网络中,得到MobileNetV3-YOLOv3模型,MobileNetV3使用深度可分离卷积来构建模型,采用SE注意力机制提升模型的特征表达能力,因此MobileNetV3-YOLOv3模型不仅具有YOLOv3模型的优点,模型计算量与参数量也大大减少,能够应用在多数嵌入式设备中。
改进后的MobileNetV3-YOLOv3算法
通过将YOLOv3中Darknet-53网络修改为MobileNetV3网络,模型识别速度得到一定提升,但由于存在部分信息丢失的情况,因此继续对MobileNetV3-YOLOv3网络做进一步的改进。
根据MobileNetV3-YOLOv3的网络结构,增加更深层的网络,提高果实识别的准确率。利用大特征图可以更好的检测小目标的特点,将第三级卷积结果继续进行上采样,将尺度由52 × 52扩大为104 × 104,再将得到的结果与104 × 104尺寸的特征图拼接,从小目标中得到更细粒度的特征及位置信息 [3] 。增加的部分作为第四级预测,其中包含104 × 104,52 × 52,26 × 26,13 × 13四个预测尺度,通过多尺寸预测,能够加强对果实的识别与定位效果。同时通过对先验框策略进行选择,得到适合果实数据集的先验框,并对学习率、批大小进行调优,以获得最佳的训练效果 [3] 。

Figure 13. The improved MobileNetV3-YOLOv3 network structure
图13. 改进后的MobileNetV3-YOLOv3网络结构
最终改进后的网络架构不仅模型参数大量减少,均值识别精度达到92%,相较于原算法有所提升,识别帧数达到34 f/s,且利用摄像机拍摄果实得到内参、外参、像素坐标深度信息,转化为水果的三维坐标,实现果实的精准定位,改进后的网络结构图如图13所示。
4. 实验与结果分析
收集苹果、橘子、香蕉三类水果图片,并以8:2的比例划分训练集,验证集,制作成COCO模式,并利用COCO评价指标对模型效果进行评价。在COCO数据集上进行预测并搭建基于卷积神经网络的YOLOv3模型,Faster R-CNN模型和MobileNetV3-YOLOv3模型,并对改进后网络精度、网络大小和识别速度与改进前网络、传统识别网络进行对比,其中mAP50为IOU取0.5时的AP值。由表5可知,改进后的模型AP50可达到92%,识别帧数可达34 f/s,网络参数量为235.61 M,相较于传统目标识别网络不仅检测精度与识别速度有所提高,且减少模型参数量,有助于后续实现在嵌入式平台的部署。

Table 5. Comparison of accuracy and speed of different network models
表5. 不同网络模型精度与速度对比
最后,我们以苹果作为实验对象以实现水果的识别效果,上位机接收板卡采集视频图像,进行识别处理,实验结果及水果坐标展示如图14,图15所示。

Figure 14. The experimental results of the video acquisition and transmission system
图14. 视频采集传输系统实验效果

Figure 15. Fruit recognition and coordinate return effect
图15. 水果识别与坐标回传效果
5. 结语
本文介绍了一种基于ZYNQ的水果识别系统,通过软硬协同的方式,在FPGA部分完成对水果图像的采集与传输,在上位机使用改进后的YOLOv3网络进行水果图像的种类与位置信息检测与识别。实验结果显示,本系统可实现实时的水果种类及位置信息识别,且改进后的网络模型AP50可达到92.4%,模型大小仅为235.61 M。本文研究联合软件算法与硬件平台实现水果识别,并对算法进行轻量级改进,未来的研究中,可尝试对系统进行改进并移植至嵌入式设备中,实现水果图像的实时采集与识别。
基金项目
西南民族大学中央高校基本科研业务费专项资金项目(No.2021NYYXS81);四川省科技厅重点研发项目(No.2022YFG0377)。
参考文献
NOTES
*通讯作者。