冯书庆,王志勇,谌志新,徐志强
(中国水产科学研究院渔业机械仪器研究所,上海 200092)
消费市场除对鱼的品种品质有要求外,还对鱼的规格质量等有消费细分需求,商品成鱼配送报告除需详列成鱼的质量、规格外,也有条数信息登记要求,这有助于开展成鱼安全配送、出库核对等管理工作[1]。近年来鱼类舱养发展蓬勃,单位体积舱养鱼类的放养条数与密度影响着商品成鱼的品质与健康,也是计算饲料投喂量的依据[2]。以上相关工作流程开展时,都需要对鱼种的条数进行计数和统计,是现代渔业作业任务的分支。
随着计算机科技的发展,基于图像处理的目标检测技术取得了很大进展[3],一些场合目标检测算法应用效果表现较好,而高性能计算机GPU硬件供给等也为视觉检测工程应用部署提供了更多方案[4]。
针对渔业计数需要,结合常用数字图像处理目标检测技术与方法,本研究设定了基于图像特征的鱼类图像信息提取与标注研究内容、特征检测研究内容等,并编制验证程序测试实际效果,以探索基于机器视觉的目标识别检测方法在渔业计数方面的应用。
为提升机器视觉处理速度及应用效果,在对图像做识别处理之前常对原始图片做图像灰度化、干扰滤除[5]等系列预处理。
图像灰度化处理时,原始图像的光照强度差异会影响图像灰度化后的灰度值分布区[6]、灰度值的整体升降会影响图像特征向量的计算结果等。本研究的成鱼检测实际应用环境单一、改造难度小,可采用遮光棚附加人工光照的方法预设光照为统一光照,使灰度化后的图像灰度值分布近似一致,以达到兴趣目标突出显示效果。
实际应用中,若有环境光线难以设定和控制情况发生时,可采取人工调整观测统计最佳灰度阈值在图片整体灰度值分布位置的方式,制定动态阈值计算算法对图片实行自适应灰度化处理,也可提升和改善识别算法应用效果。
图像背景干扰特征与目标特征相似时会影响目标识别判别效果及成功率,例如使用图像角点特征对鱼尾进行检测时,成鱼照片附近可能存在的交叉草叶等会对识别结果造成干扰。实际应用中若有此类情况发生时,可在算法预处理环节适当增加基于干扰颜色特征的滤波处理、语义分割滤波处理[7]等滤除干扰。考虑本研究现场可布置特性,如使用对称重框(转运框)不锈钢板单一喷色的方法,可人为去除背景色及杂物(杂草)干扰,故在本算法验证中,不过多讨论此类干扰滤除算法。
同类鱼种各个体头部花纹纹理特征及尾部几何特征几乎相似一致,对鱼体整体进行特征提取和识别无疑是最有优势的。但在活鱼装箱时,因密度大或装载倾倒等原因,常有个别鱼部分身体被其他鱼倾轧覆盖现象,不能完整展现鱼体整体,故基于完整鱼体几何特征的检测算法难以应用于本研究中。
观察鱼类生物特性,鱼体沥水平放时,两条近似圆柱状的鱼身不能完全重叠;而活鱼个体也有不忍受双眼同时(其上方眼睛)被遮挡的生物特性,鱼群在从骚动到安静的状态调整过程中,遮挡方式往往表现为本鱼鱼头遮挡了其他鱼鱼尾(各鱼都可忍受)的平衡状态。
基于以上场景特性,拟应用目标局部描述子特征方法对成鱼进行目标检测,目标局部截取区为鱼类眼睛、鳃线等鱼头部位,目标区域在鱼类各个体上分布唯一、鱼群全体个体都检测可达。
目标鱼群在倾入转运框后,各个体动态姿态调整适应中,会出现鱼头朝向随机分布特性,故在算法设计时应考虑目标旋转时的泛化检测效能。设想鱼群的品种一致、单体规格也经分级一致[8]、相机位置及焦距等参数设定一致,算法对目标的尺度一致性效能可不做过高要求。
技术推广时,若检测目标在图像中全部完整可达,则调整局部目标描述区为整体目标描述区,可完成新的应用部署,如检测封闭环境中品种一致、规格相近的游鱼时,可选用鱼体整体做目标区。增加图像区域自动定位和分割选取算法后,可拓展算法应用至类似场景如指纹识别、车牌识别等。
结合上述环境和目标设定结论,根据实际应用需求,选用鲢鱼图像作为试验图像,侧重对目标识别进行旋转及泛化匹配验证。
根据图像灰度纹理变化及线条形状几何分布,可设计多种图像特征描述算法,实现图像特征提取和信息综合演绎及稀疏化处理,减小计算工作量,提升算法应用效果[9]。
一副图像中,目标的花纹、凸起等纹理和边角形状都以图像相邻像素的灰度值变化来表现。对图像灰度值变化及变化梯度方向进行归纳与统计汇总,就能以一种特征格式的数据表格描述一副图像的线条及区域变化信息[10]。取图1内整鱼的鱼鳃部位进行灰度特征分析,截取鳃线部图像如图1左下分图所示。
图1 图像灰度值排列图Fig.1 Arrangement diagram of image gray value
统计鳃线部图像细胞(CELL)区中心像素点的4个临近像素灰度值如图1右下分图所示(蓝色区为该中心点)。则该鱼鳃图区中心点的图像灰度梯度大小特征GM及梯度方向特征GA分别以公式1和公式2进行计算。
(1)
(2)
该鱼鳃图区中心点的一种图像特征为灰度变化GM大小 60.2、灰度变化梯度方向GA为41°40′。
依据图像灰度特征分析理论,选择目前主流的几种算法,对鱼类图像进行特征提取和可视化标注,以观察选优、应用于本研究中。
Dalal等[11]提出一种基于像素变化梯度及方向的特征提取HOG算法。HOG算法以如下步骤对灰度图像进行信息特征提取:1)图像灰度Gamma矫正,使得图像灰度变化均衡分布,利于图像特征均匀展开。2)计算每个像素周边像素的梯度信息。3)以8×8像素组合为细胞(CELL),依梯度方向分类统计梯度直方图及梯度值。4)使用2×2细胞的面积组建块区(BLOG),使用块区依次划过细胞,并计算块区的向量值。5)统计图像中所有块区的梯度值和向量值,列为该幅图片的HOG向量特征值。
依据研究预设,选取鲢鱼成鱼图像为目标,编制程序对目标图像进行HOG特征提取和可视化标注,软件运行界面截图如图2所示。
图2中,截图左区的条纹图像是对鲢鱼图像进行HOG特征提取和可视化单独显示的图像,截图右区是HOG特征可视化复加原始图像标注的图像。由图2可知,HOG特征算法有效地提取了图像纹理和边缘部分的灰度变化速率及梯度方向,还原了算法所设想的图像特征提取,但在图像纹理层次信息复杂的鱼头部分,特征标注不够明显细致。
Lowe[12]提出了一种对目标图像全局和脉络主体特征描绘的尺度不变特征变换SIFT(Scale Invariant Feature Transform)特征提取算法。该类算法首先对目标图像进行图像金字塔立体扩展,方法为以原始图像及原始图像(4种)不同正态标准差(σ)的高斯模糊图像进行堆叠为图像金字塔的第一层(Octave 1);以原始图像隔点采样的降维图像及降维图像的高斯模糊图像进行堆叠作为图像金字塔的第二层(Octave 2);及使用对第二层图像再次降维和高斯模糊方式,扩展堆叠图像金字塔的更上层数据等。
对各层图像像素灰度值做对应两两相减计算,建立图像差值金字塔,最后计算图像差值金字塔中各像素位置在金字塔立体空间内的梯度变化和向量,作为该点的SIFT特征。
SIFT图像差值金字塔构建的理论依据见公式3和公式4所示。
(3)
(4)
因SIFT算法扩展包含了原图像的高斯模糊图片、隔点降维采样图片等,故该类算法在目标尺度变化检测、旋转变化检测等能力泛化上表现优秀,为该类图像应用特征提取及检测的优选算法[13]。
依据研究预设,编制程序对鱼类目标图像进行SIFT特征提取和可视化标注。软件运行界面截图如图3所示。图3中,截图左区为原始鱼头图像,截图右区是SIFT特征可视化复加原始图像标注的图片。可知,SIFT特征算法对图像纹理和边缘部分的特征提取和标注还是很清楚的,线条灰度变化明显的鱼鳃和纹理线条部分,特征值计算结果也相对较大。
图3 图像SIFT特征标注Fig.3 Image SIFT feature annotation
Haar[14]算法是一种常用的图像纹理线条特征检测算法。设计算法矩阵对图像进行卷积,实现图4中各对应橙色区域与绿色区域像素的差值计算,可完成图像在算法矩阵指定方向上的边缘变化特征检测、线变化特征检测、中心变化特征检测及对角线变化特征检测等。
图4 Haar特征检测算法原理Fig.4 Principle of Haar feature algorithm
依据Haar算法原理,Herbert等[15]提出加速稳健特征SURF(Speed Up Robust Feature)算法,也在图像特征提取与检测的应用中备受关注。
SURF算法基于Haar原理构建黑森(Hessian)矩阵实现对目标图像的线条和边缘特征提取。为了增加算法的泛化特性,算法在黑森矩阵前预加高斯滤波器,完成图像的细节模糊功能。
黑森矩阵的常规表达式见式5所示。
(5)
混合高斯滤波后的黑森矩阵表达式见公式6所示。
(6)
尺度空间处理方面,SURF采用不同尺度的黑森矩阵模板完成图像不同层次的特征泛化,而不对不同层次的图像做尺寸调整。图像SURF的特征值和特征方向计算处理上与SIFT方法相似。
SURF特征提取算法所定义的黑森矩阵大小也是可以设定的。若需要提取图像细节纹理时,需要选择较小维度的黑森矩阵;而倾向于轮廓、角点类特征提取时,应增大黑森矩阵的维度。
编制程序对鱼类目标图像进行SURF特征提取和可视化标注。软件运行界面截图如图5所示。图5中,截图左区为原始鱼头图像,截图右区是SURF特征可视化复加成鱼图像标注的图片。可知,相对于SIFT特征提取和标注,SURF特征关注点更为广泛和细致,不单纯聚焦于图像纹理线条层次变化明显的地方。
图5 图像SURF特征标注Fig.5 Image SURF feature annotation
根据以上特征可视化标注效果,选用SIFT特征和SURF特征作为成鱼图像特征提取算法,进一步开展目标特征提取与目标匹配寻找的相关研究。
基于图像特征的匹配算法有暴力匹配算法BF_Matcher(Brute Force Matcher)和快速近邻匹配算法FLANN_Matcher(Fast Approximate Nearest Neighbor Search Library)等,基本原理都是将目标图像各特征向量与搜索图像的所有特征向量进行欧氏距离匹配,并统计排序最为接近的特征向量为当前最佳匹配向量点[16]。
参考邵进达等[17]基于SIFT特征和FLANN_Matcher匹配算法设计等,设计和编制SIFT+FLANN匹配检测算法对成鱼目标图像和搜索区图像进行SIFT特征提取,然后再对双方特征提取结果进行FLANN搜索匹配和匹配点可视化标注,软件界面截图如图6所示。
图6 FLANN_Matcher匹配及标注Fig.6 FLANN_ Matcher matching and labeling
图6中,截图左区左上角为目标图像鱼头部分(该图像截取于三鱼图像中的最右鱼头部分),截图右区是目标图像复加被搜索图像及目标特征匹配可视化的图像,界面清晰地表述了目标图像与被搜索图像的匹配结果,可直观地观察了解算法应用效果。
结合2.1节所述特征提取算法,选用FLANN_Matcher匹配算法,分别设计SIFT特征提取+ FLANN_Matcher匹配的目标检测算法、SURF特征提取+FLANN_Matcher匹配的目标检测算法等,对预设的成鱼搜索图像进行旋转匹配测试和泛化匹配测试,以比对测试效果、选择最优目标检测识别方案。
编制基于SIFT特征和FLANN_Matcher匹配算法程序,截取三鱼图像中的最右鱼鱼头作为目标图像,分别对三鱼目标的原图、旋转90°图、旋转180°图、旋转270°图进行算法匹配识别和匹配点统计,测试该型算法对鱼头目标旋转检测的容忍效果及旋转泛化检测效果。汇总检测结果如图7所示。
图7 SIFT特征目标旋转检测及标注Fig.7 SIFT feature object rotation detection and annotation
分别对三鱼目标的原图、单目标原图、单泛化目标1图、单泛化目标2图进行算法匹配识别和匹配点统计,测试该型算法对泛化目标的识别效果。汇总检测结果如图8所示。
图8 SIFT特征目标泛化检测及标注Fig.8 SIFT feature target generalization detection and annotation
统计基于SIFT特征和FLANN_Matcher匹配的测试点结果如表1所示。
表1 SIFT特征检测符合性统计Tab.1 SIFT feature detection compliance statistics
据SIFT特征检测符合性统计表,测试匹配点大多都在目标区域或泛化区域(即其他鱼头图像区)中(除项目4图像的非ROI区命中点数最多为8个外),这验证了大部分SIFT特征还是真实地描述了目标图像向量特征的,表明该类算法在鱼头图像识别中整体可靠有效。
项目3、4、6、7中SIFT特征在泛化目标上的匹配点数评分较高,说明SIFT特征在相似目标的检测上有较强的泛化功能,也即对具有相似特征的同类目标有较好的识别能力。
参考周志伟等[18]所提及的算法设计,编制基于SURF特征和FLANN_Matcher匹配算法程序,截取三鱼图像中的中间鱼鱼头作为目标图像,分别对三鱼目标的原图、旋转90°图、旋转180°图、旋转270°图进行算法匹配识别和匹配点统计,测试该型算法对鱼头目标旋转检测的容忍效果及旋转泛化检测效果。汇总检测结果如图9所示。
图9 SURF特征目标旋转检测及标注Fig.9 SURF feature target rotation detection and annotation
分别对三鱼目标的原图、单目标原图、单泛化目标1图、单泛化目标2图进行算法匹配识别和匹配点统计,测试该型算法对泛化目标的识别效果。汇总检测结果如图10所示。
图10 SURF特征目标泛化检测及标注Fig.10 SURF feature target generalization detection and annotation
统计基于SURF特征和FLANN_Matcher匹配的测试点结果如表2所示。
表2 SURF特征检测符合性统计Tab.2 SURF feature detection compliance statistics
据SURF特征检测符合性统计表,但凡有原始目标出现的项目1、2、3、4、5中,所统计的最优匹配点都落在了原始图像内,这证明SURF特征严谨而忠实地描述了目标图像特征,且泛化误差小,这在指纹匹配、(车牌)字符等个体识别应用场景中无疑是有巨大优势的。
而在只有泛化目标的第6、7项中,其识别有效点分别为18和27点,对应的非ROI区的落点数则分别为26和22点,这在区域裁剪类模式识别应用方面,也是具有应用优势的。
综合分析可知,基于SIFT特征和FLANN_Matcher匹配算法应用于成鱼目标识别和统计中时更有优势。
FLANN_Matcher特征匹配算法是基于特征向量片段匹配的算法,在模板加深泛化特性处理后更容易出现图像碎片化匹配[19],即模板的特征向量可能匹配到搜索图像的各个区域,而非平行映射到目标所在区,从而造成错误评分和目标误配;此外,FLANN_Matcher匹配算法在搜索区域中只匹配一组最佳组合,而对多目标检测需要时该类算法不能有效工作。
传统基于模板匹配的目标搜索算法为模板图像Tx,y在被搜索图像上Sw,h上逐步进行右移及下移,卷积计算模板图像与当前扫描位置图像的灰度值,通过卷积值判断模板与目标相关性并判断是否为搜索目标[20]。
传统模板匹配的算法弊端主要在于对搜索区域关于尺度变化、旋转变化及整体灰度偏移二值化图像适应性差,实际应用中的检测效果鲁棒性弱、效果欠佳。模板匹配目标检测运算时,模板数据是以一种数据集的方式,去搜索图像各局部区域数据集并卷积计算两则相关性的,而这种(二值化值)数据集也是目标图像数据所具有的特征,也是可以利用的信息。
朱鸣镝[21]提出了一种基于特征点匹配的改进模板匹配算法,但该种算法在多目标搜索匹配应用中效果未知。
借用模板匹配的数据集算法优势,应用SIFT特征检测在目标尺度、旋转、灰度偏移等变化上的强适应性,设计了一种基于图片局部扫描裁取的模板匹配特征检测算法,完成图像SIFT特征模板聚类匹配及评分,以复现图像数据集合特性,实现多目标检测功能。
对于基于SIFT特征的FLANN_Matcher模板匹配检测,可定义单点检测值的计算公式如下式7所示。
FS(i,j)=FM(Ty,x,Si,j,l)
(7)
式中:FM为FLANN_Matcher算法,FS(i,j)为搜索图像中第i行第j列所在坐标区域与模板图像SIFT特征的FLANN关联评分,l为模板图像的长边Ty。
特征模板匹配扫描检测如图11所示。
图11 模板扫描特征检测Fig.11 Template scanning feature detection
图11中,目标图像的区域长宽为Tx和Ty,以长边Ty取正方形区在被搜索区域Sw,h以固定步长向右及向下扫描滑动截取缓冲区,对截取的局部目标图像使用SIFT特征+FLANN_Matcher算法提取目标特征匹配评分,并保存于评分区对应的截取滑动计数坐标中,直至图像扫描完成,保存为特征匹配评分图。
图中缓冲区正方形的边长取为特征目标图像的长边,设计目的是为了适应目标图像在被搜索图中的旋转,以截取较为完整的目标图像。
算法应用时,应注意被搜索实际图像尺寸不能小于模板目标图像太多,否则容易造成缓存区同时截取多个目标的情况,造成图片碎片化匹配检测乃至目标多检。被搜索图像相邻两个目标距离不能过近,防止缓存区同时包含了两个半幅图像的情况发生。参数设置时,可根据情况调整模板图像尺寸或相机拍摄图像的大小。
根据模板匹配算法可知:当被搜索区接近目标所在位置时,目标与模板的相关性逐步递增、目标确认置信度逐渐提升;当搜索区恰好完整覆盖目标时,模板与目标取得相关极值、目标确认置信度最高。故理论上,模板与目标及周边区域的匹配相关值(置信度)为峰坡分布状态,并非为完整阶跃特性,且各目标匹配处的极值数值也未必一致。若简单使用阈值法来确认目标覆盖匹配时,阈值判定值设定过低时可能发生周边区域重复认定、设定过高可能发生目标漏选错误等,有应用弊端。
被检索目标与被搜索区匹配置信度值在二维展开时可如图12所示。
图12 多重识别示例Fig.12 Multiple identification example
M1和M2为两处目标所在区域(相关极值点),当阈值判定值选择为L1时,M1目标及所在区周边识别为3次,M2为2次,有多次识别现象发生;当阈值选择为L2时,目标M2漏选。
为防止上述错误统计现象发生,基于分水岭最大稳定极值区域MSER(Maximally Stable Extremal Regions)图像斑点分割算法[22]、非极大值抑制NMS(Non Maximum Suppression)多重包含剔除算法[23],分析参考了王静等[24]、汪从敏等[25]及邢延超等[26]提出的MSER + NMS算法基础等,设计了基于评分灰度图图像分割及目标聚类算法,统计连通区域为单个目标(图12中,阈值选择为L1时,m1位置蓝线上方3段黄线为连通区,m2位置蓝线上方2段横坐标黄线为连通区),完成m1和m2目标识别与计数。
MSER + NMS的判断算法设计优势在于:1)对判定阈值的低值设定有较大包容性;算法为连通区判断,只要能对目标波峰实现有效分割,就能有效判断目标所在。2)连通区有支路连接有效特性,可以减少目标图像局部被污染造成的低分相关值干扰,提高了目标判定算法的适应性和鲁棒性。
经测试,上述算法在对图中图像进行识别匹配时,正确有效地识别并标注了目标,见下图13所示。
图13 模式识别Fig.13 Pattern Recognition
除传统特征匹配模式识别外,目前流行的目标识别与分类算法还有支持向量机SVM目标识别与分类智能网络算法[27]、基于TensorFlow框架的卷积神经网络CNN算法[28]及基于Darknet的YOLOv3图像目标识别分类算法[29]等,其基本理论和流程都是先构建多层神经元网络层、选取激活函数和损失函数等,然后通过喂入大量已标注好类别的图像对网络进行多代训练,直至将参数拟合至最优、测试验证数据集效果最佳时,再将模型投放和进行实际的图像分类识别应用等。
神经网络类算法鲁棒性强,适应能力高,在对复杂未知环境目标的检测应用上,较传统算法更有优势。神经网络类算法都需要依赖巨量的(数百幅以上)图片整理和材料标注等[30],且考察在特定环境中实际检测效果较传统算法优势不明显,故未被选用。
根据渔业转运及鱼类入舱视觉识别统计需要,分析了HOG、SIFT和SURF特征提取算法及FLANN_Matcher、BF_Matcher匹配算法原理,测试证明SIFT特征+ FLANN_Matcher匹配识别算法在本研究上有应用优势;针对匹配算法特征比对单一且碎片化应用弊端,设计使用模板扫描提取区域的方法扩展匹配算法为多重应用,满足单图多目标识别需要;应用MSER图像连通分析方法对匹配结果进行统计滤波,保证了所述算法目标识别的准确性。经程序验证,本研究的鱼类图像识别算法在图像多目标检测试验中正确有效。该算法正规划在千岛湖某处码头开展部署调试和应用验证,以期完成用户成鱼出库识别和计数工作。