陈治成,孙浩杰,谭展鸿
(佛山科学技术学院,广东佛山,528231)
中草药的使用可以追溯到几千年前,是我们中华民族的宝贵财富。在现代医学发展的今天,草药依然发挥着不可替代的作用。据《中华本草》记载,共有8980 种中药,还有其他少数民族用药,最新统计是12800 余种[1],专业医药人员利用自身丰富经验,观察草药的外部形态特征进行种类识别,但这种方法难以被普通人掌握。所以探索出一条对中草药的种类分类识别以及用途科普的可靠、快速、便捷的途径,对中草药的研究发展以及推动中医的推广发展规划有着重要意义。
通过开发中草药种类智能识别的嵌入式图像分类器,可以很大程度地解决以上问题。通过仪器设备,可以让零经验的人都可以识别出中草药的种类,可以快速获得该中草药的基本信息和药用价值,降低中草药识别门槛,并且可以减少时间成本、节约人力资源和缩短人才培养周期。
本设备硬件设计主要由主控模块、图像识别模块、显示模块三大板块组成。基于边缘智能计算芯片Kendryte K210 进行电路设计与系统开发。主控模块采用K210 芯片作为主控芯片,控制其他模块的设备的运行。其中图像模块是利用摄像头模块和K210 芯片其内部集成的神经网络处理器,由机器视觉算法进行图像处理。
软件程序系统是设备驱动的核心。在本设计中图像识别是中草药智能识别的核心模块,是整个系统的大脑。其中深度学习框架是识别器设计的基础,YOLO 算法是本文深度学习的核心算法,模型的预测将影响中草药识别的准确率。将系统部署到硬件设备上,即可实现识别器的设计。整体设计框图如图1 所示。
图1 中草药识别器整体框图
主控模块的核心为Sipeed M1 芯片加上电源与串口电路。图像识别模块的核心为K210 芯片和摄像头采集电路。显示模块的核心为LCD 显示电路,相关电路设计具体如下。
主芯片Sipeed M1 搭载了高性能的AI 处理器K210。K210 芯片是基于RISC-V 开源指令集架构设计的一款64 位双核处理器,主频高达400MHz,拥有强大的性能和低功耗表现。同时,K210 芯片支持多种神经网络算法,包括本设计所使用的Tensorflow。除此之外,Sipeed M1 还融合了多个硬件加速模块,如FPU、FFT、DMA、SPI 等,以及多个标准接口,如UART、SPI、I2C、GPIO 等,方便我们进行使用和开发。
电源部分选择现在最常用的Type-C 接口。Type-C 接口多种多样,为满足供电及下载的需要,本设计采用了16Pin 的Type-C 接口。通过查看规格书,设计VBUS 口通过一个F1 保险丝后接5V 电源。CC1、CC2 作为配置端,用Rd=5.1k 下拉电阻接地。另外,用一个被电阻串联的LED 灯作为接通电源的指示灯。
串口是诸多数据传输方式中较为简单的一种方式,常被用于嵌入式设备中,为保证整体电路的轻量化,串口是不二之选。通过串口芯片把上位机的USB 口映射为串口使用,方便烧录程序进行调试。
串口芯片我们选择CH340 系列中的CH340C 芯片,该芯片内置晶振,并且采用SOP16 封装,体积小,适合小型化、便携化应用场景。为了方便下载烧录程序,还需要加上BOOT 和RST 的功能按键,用于加载BOOT 和复位。
实时采集图像是实现图像处理的关键之一,本设计采用CMOS 数字图像传感器,型号为OV2640。其使用总线协议SCCB,通过帧同步信号和PCLK 上升沿触发依次读取像素。由于OV2640 所需电压种类有1.2V、1.8V 和2.8V 三种,其中仅1.8V 可通过M1 芯片进行输出,所以另外需要两个降压芯片XC6206-1V2 和XC6206-2V8 来产生OV2640 所需的电压。将OV2640摄像头模块先集成出来到另一块电路板上,通过杜邦线与主板相连。
在图像显示方面,采用的是TFT-LCD,全称为薄膜晶体管液晶显示器(Thin-Film Transistor Liquid Crystal Display),是用薄膜晶体管(TFT)作为电子开关,控制液晶分子的方向并使其显示图像的一种显示技术。本文使用的是一款以ILI9341 芯片作为主控芯片的TFT-LCD 显示屏,通过CS(片选)、RST(复位)、RS(显示数据/指令数据)、WR(读写)、LEDB(背光)等控制引脚来控制LCD 的显示,并接上8 位数据线实现图像数据的传输。由于该显示屏使用的是软排线,所以在电路板上需要使用FPC 连接器进行连接。
本设计采用双层板结构,顶层和底层均进行GND 敷铜,增大地线面积,提高板子抗干扰能力。电阻电容等封装选用是0805 贴片封装。对于VCC 等电流线采用15mil 线宽,其余信号线采用10mil 线宽,全部接线完成后加上泪滴,使得导线与焊盘间接触面积增大。电路板如图2 所示。
图2 硬件电路板预览
软件系统设计主要包括深度学习框架的搭建,制作数据集进行模型训练,集成环境开发,并将模型和程序搭载到中草药识别器的硬件设备上。
TensorFlow Lite 是基于TensorFlow 框架的轻量级版本,它专注于在小型设备上进行高效的机器学习预测。为此,TensorFlow Lite提供了更加轻量级的模型结构和推理引擎,并且提供了专门的优化策略和工具[3]。例如权重量化、捆绑运行时等,能够大幅减小模型大小和提升预测速度。支持在嵌入式设备上部署,可以方便地进行开发和部署。因此,选择TensorFlow Lite 部署深度学习模型,能够很好地在微小型嵌入式设备实现机器视觉功能。
YOLO(You Only Look Once)是一种基于针对目标检测任务设计的CNN 进行特征提取的物体检测算法[2],其主要特点是采用了多个卷积层和池化层,同时在较深的网络层次上增加了跳跃连接,使用端到端的训练方式,使得更高层次的特征能够更好地融合和传递到后续的目标检测网络中,使得模型更加紧凑轻量化、检测速度更优,能够在实际应用中实现实时的目标检测。
YOLO 网络的预测流程设计如下:
(1)输入图像归一化:将输入的图像归一化处理,使其像素值在0~1 之间。
(2)特征提取:将归一化后的图像送入深度卷积神经网络中,在网络的底层提取出图像的特征。
(3)特征处理:通过多层卷积、池化层和全连接层,将特征图像转化成固定大小的网格,每个网格负责预测一个或多个物体。
(4)对每个网格进行预测:对于每个网格,使用多个先验框(anchor boxes)预测该网格内可能存在的物体。每个框包含物体的边界框位置(x、y、w、h)、物体类别以及该物体存在的概率得分。
(5)置信度筛选:对于每个预测框,计算其置信度得分,该得分基于框的能力、属性和定位精度等综合考虑,得分越高表示该框内可能存在物体的概率越大。
(6)非极大值抑制:将重叠度较高的框进行筛选,保留得分最高的框,并且删除和其他框重叠度较高的低置信度框。
(7)输出预测结果:输出预测结果,通常为预测出物体的概率、物体类别、边框坐标和置信度,以及通过非极大值抑制之后保留的最优边框。
YOLO 网络的预测流程[4]如图3 所示。
图3 YOLO 网络预测流程
总的来说,YOLO 算法引入了anchor boxes 及卷积特征层,能够检测更多尺度的物体,并且能够处理倾斜物体的检测。同时,通过对特征图像的处理和增加卷积层,使得YOLO 在检测速度和准确性方面都有所提升。
中草药目标检测的验证模型训练流程如下:
第一步:数据集准备。需要将数据集划分为训练集、验证集和测试集,并进行类别标注、图像预处理等操作。为保证训练模型的准确性,必须有足够的数据集样本,每类图片不少于800 张,采用labelimg 对图像进行对数据集进行类别标注。图像的类别标注如图4 所示。
图4 labelimg 对图像的类别标注
第二步:模型的训练。根据数据集和验证集,在Anaconda 中搭建Tensorflow 深度学习框架,采用YOLO算法模型并进行优化调参对数据集进行训练。
第三步:模型的评估与调优。模型训练完成后,需要将其在验证集和测试集上进行评估。通过计算平均精度(mAP)等指标,评估模型的性能和准确性。为了获得更高的泛化能力,需要对模型进行适当的正则化和优化算法,对模型进行优化,重复调整和训练过程,直至满足预期的检测效果。将训练最优模型通过Tensorflow Lite 转化为tfl 格式。搭载到中草药识别嵌入式设备上。
MaixPy IDE 是一个集成开发环境,可以使用MicroPython 编写嵌入式系统,用于开发以K210芯片为基础的硬件设备。通过编写程序实现各个功能模块的功能,驱动硬件的运行来实现识别器的系统开发。
训练指标是检测训练模型性能优劣的重要参考指标,主要有损失值、平均准确度、预测正确率。观察模型训练生成的训练指标曲线,损失值指损失函数计算后所得的值,再下降说明模型训练仍然可以收敛。平均精准度代表在训练集上的正确率,再上升说明模型正在训练集上收敛。预测正确率代表在验证集上的预测结果正确率,用来作为判断模型训练效果的依据,实际应用效果则取决于验证集和实际场景的差距。训练曲线指标如图5 所示。
图5 训练指标曲线
整体硬件实物图如图6 所示。
图6 整体硬件电路
对中草药进行分类检测测试并且在LCD 屏幕打印其置信度如图7 所示。
图7 目标识别检测
实验结果表明,本文设计的中草药识别器能够很好地实现预想功能,能够达到比较高的识别精度,硬件设计简约高效,代码编写清晰明了。
尽管本文设计的识别器已经取得了一定的成果,但是我们仍然面临着很多挑战和问题,这些问题需要我们在未来的研究和应用中不断探索和解决,以实现更好地服务中药材行业和消费者的目标。