基于机械臂的化学物品定位与分类

2021-10-18 09:56马兴录张兴强
计算机与现代化 2021年10期
关键词:试管标签文字

马兴录,张兴强,王 涛

(青岛科技大学信息科学技术学院,山东 青岛 266061)

0 引 言

机械臂技术经过近几年的快速发展,已经成为一种融合多学科的现代化工业技术。机械臂的抓取能力是机械臂的一项基本能力。在机械臂的视觉抓取研究中,物体目标检测识别技术是机械臂视觉抓取的关键。但是对于化学试管、烧杯、玻璃瓶等透明物体,由于其具有折射性与高光性,不符合经典视觉算法中的几何光路假设,这使得深度相机很难对透明物体进行精确的深度估算,从而难以获知其三维空间中的坐标[1]。对于透明物体的识别定位,Chen等人[2]提出了使用SIFT特征从提取的RGB图像与IR图像中识别透明物体的候选分类算法。Seib等人[3]提出了一种利用深度图像中的传感器故障用CNN进行透明物体定位的方法。Sajjan等人[4]提出了通过建立大规模合成的RGB-D数据集使用Clear Grasp算法推断透明物体表面法线、透明表面的掩模和边界的方法。虽然现阶段有研究致力于使用3D数据识别透明物体,但这些算法不能立即应用于透明物体上。针对化学实验场景下化学试管等透明玻璃仪器贴有标签的现状,本文提出先通过YOLOv3算法识别深度相机拍的RGB图像上的化学试管上贴纸标签,获取其在图像坐标系的二维坐标(u,v),与此同时获取其在深度图像中贴纸标签的深度值(即相机与试管之间的距离值),然后通过相机成像原理公式完成坐标转换,即可得到化学试管在空间中的三维坐标,机械臂抓手即可运动至化学试管处。针对化学试管内装有不同的化学试剂,本文通过CTPN+BLSTM+CTC Loss算法对试管标签上的文字进行文字识别从而完成对试管的分类。

1 系统整体设计

1.1 系统运作流程

系统的主要运作流程如下:首先深度相机的RGB图像识别实验桌上的化学试管上的贴纸标签,确定其二维坐标,然后通过深度相机的深度图获取其深度值,之后通过相机成像公式完成坐标转换从而得到各个化学仪器在世界坐标系下的三维坐标。由于深度相机与标签距离较远且标签上的化学物质名文字较小,难以通过深度相机上的RGB图像进行文字识别,所以本文在机械臂末端抓手处放置一个单目高清相机。末端抓手运动至化学试管水平方向处拍摄高清图像用以识别贴纸上的手写化学物质名从而获取化学试管内的试剂类别。最后机械臂对指定类别的化学试剂进行抓取。抓取过程如图1所示。

图1 系统抓取方案图

1.2 系统总体架构

系统总体架构如图2所示。

图2 系统总体架构

1.2.1 硬件层

1)深度相机。采用奥比中光的Astra深度相机。深度图像与RGB图像分辨率均为640×480,30 fps,探测距离在0.4 m~8 m。单目高清相机分辨率为1280×720,用于手写文字识别。

2)服务器端。采用Nvidia Titan XP显卡,用于获取目标检测算法的位置信息与手写文字识别的计算。

3)搭载ROS(Robot Operating System)的六轴机械臂,控制板为树莓派3B+,ROS系统集成各种机器人开发工具包,方便机械臂视觉抓取开发。

1.2.2 驱动层

驱动层包括深度相机驱动、高清相机驱动、电机驱动以及可编程逻辑。

1.2.3 操作系统层

ROS机器人操作系统主要用于功能实现与数据采集。功能实现主要是目标检测算法与文字检测识别算法的实现。

2 算法研究与设计

实现视觉抓取的关键是获取被抓物体的位置信息与类别信息。对于透明物体而言,由于其具有折射性与透光性以及仪器内的部分化学溶液试剂无色透明,从而导致其难以被深度相机获取深度信息。如图3所示,黑色部分无法获取深度信息,白色部分可以获取深度信息。

(a) 无标签的试管

(b) 有标签的化学试管

在化学实验场景下,烧杯、试管、溶液瓶等仪器上都贴有标签以区分不同溶液,故本文用基于深度学习YOLOv3 Tiny算法训练一个化学标签目标检测模型以获取其在RGB图像下的位置信息,从而获得其在深度图像下的深度信息。

2.1 化学标签贴纸目标检测算法

化学标签的检测识别采用YOLOv3 Tiny[5]算法。对于传统的目标检测算法,一般需要首先在给定的图像上进行区域选择,然后再利用SIFT或ORB等特征描述子对这些区域进行特征提取,最后使用训练好的分类器进行分类,这种方法一般过程繁琐,识别效果也不好,鲁棒性较差[6]。常见的基于深度学习的目标检测算法有2类:一类是两阶段(two stage)的目标检测算法,主要代表有R-CNN、Fast R-CNN、Mask R-CNN等;另一类是端到端(one stage)的目标检测算法,主要代表有SSD、YOLO系列等[7]。

YOLO[8]是基于卷积神经网络的目标检测算法,YOLOv3[9]将单个CNN用于整张图像,利用图像全局信息进行评估,并通过多级预测,解决原始YOLO算法中检测小型目标不佳的问题,对于本文要解决的化学标签这种小目标具有良好的适用性。与此同时YOLO的检测速度相较于Faster R-CNN、SSD等也更快[10]。

YOLOv3 Tiny相比YOLOv3虽然检测精度下降,但是运行速度大幅提高。本文在YOLOv3 Tiny目标检测算法的基础上进行改进,从而提高对化学标签贴纸的检测精度。

2.1.1 算法改进

本文算法具体改进过程如下:

1)本文主要使用目标检测算法检测化学标签贴纸,考虑到化学标签贴纸在图像中的尺寸较小,所以需要提高对标签贴纸这样的小目标的检测准确率。本文对网络浅层的特征提取阶段进行改进,提高对浅层特征图的特征提取能力。前几层的卷积的特征图相比后边几层卷积后的特征图包含更多的小目标的边界以及纹理特征,更适合对小目标进行特征提取。去掉原有网络中的第二个最大池化层。在第三层卷积之后增加一个卷积层,作为第四层卷积,卷积核尺寸为3×3,步长为1,保持特征通道维度。

2)增加残差单元模块。为了能够提高目标检测的精度,同时减少卷积层的计算量,对原有的网络结构增加残差单元,本残差单元由3个CBM(Conv+BN+Mish)结构组成,即卷积层、批量归一化、激活函数,如图4所示。改进的网络增加了网络的深度,提高了检测的精度,网络的轻量化也得以保持。

图4 残差单元结构

3)激活函数更换为Mish[11]。Mish函数是非单调函数,这可以使得输出保持小的负值,进而稳定网络的梯度流,使神经元得到有效更新。

改进后的网络结构如图5所示。

图5 改进后的YOLOv3 Tiny网络结构图

2.1.2 数据集采集与制作

由于未发现公开的带有化学标签的化学仪器的数据集,所以需要自建数据集。数据来源分2类,一类是在化学实验室场景用相机拍摄的化学标签的图片,另一类是人工自建的化学标签数据集。为提高实验准确率,需要在不同的颜色背景、不同的光照强度、不同数量的化学标签等自然场景条件下进行拍摄。数据采集完成后用LabelImg软件进行标注,软件输出为Pascal VOC格式的XML标注数据文件。XML文件都放置到VOC数据集里面的Annotations文件夹中,最后转换为YOLO格式的txt文件。

2.1.3 模型训练

本次实验在TensorFlow框架进行,机器的配置如下:Ubuntu 16.04、Nvidia Titan XP 8 GB内存显存。训练流程如下:训练采用迁移学习的思想,实验在VOC2007数据集上训练好的预训练模型上进行初始化训练,采用Adam优化器优化参数,初始学习率为1e-4,根据计算机GPU和内存的使用设置batch_size为16。学习率随着每次迭代更新而下降。实验训练1600步取得较好效果,total loss降低为0.3165,GIoU loss降低为0.5421。最终训练平均准确率为90.87%。训练损失函数曲线如图6所示,随着实验迭代次数增加,损失值最终趋于平稳。

图6 损失函数曲线

由于光照对于物体识别的影响较大,所以在测试时需要先对图片进行处理。本文采用伽马校正对光照明亮与黑暗场景的图片进行处理。伽马校正用来对照相机等电子设备传感器的非线性光电转换特性进行校正。如果图像原样显示在显示器等设备上,画面就会显得很暗。伽马校正通过预先增大RGB的值来排除影响,达到对图像校正的目的。伽马校正公式为:

(1)

其中,c为常数,一般设为1。修改参数g,g>1时,图像相比原图就会显得越亮,g<1时,图像相比原图表现得越暗。经过伽马校正的图像检测模型AP提升到了91.58%,目标检测效果如图7所示。

图7 目标检测效果图

通过与深度图像结合可检测出化学标签在深度图像下的深度值,完成相机的内参标定以及机械臂的手眼标定。通过相机成像原理公式可求得化学标签在机械臂世界坐标系下的三维坐标。至此机械臂可运动到化学标签处。

2.2 手写文字检测与识别

上一节实现了化学标签的识别、定位,但是不能区分不同的化学试剂。由于部分溶液的颜色特性会相同,比如水与硫酸都表现为无色透明,但是硫酸具有腐蚀性,属于危险物品。在化学实验室试剂瓶一般都贴有标签以区分不同溶液,所以为了区分化学溶液以获取其类别信息,本文利用深度学习算法CTPN+CRNN+CTC Loss框架训练自然场景下中文手写文字识别模型,通过识别标签上的化学名称以区分不同化学溶液。

对于自然场景下的文字识别一般分为2步:1)文字检测,就是先定位文字的位置、文字的范围;2)文字识别,对定位的文字进行识别,将图像信息转化为字符信息。

2.2.1 文字检测

常见的物体检测算法直接应用于文本检测效果不明显,主要原因有文本行有方向性,常规物体的BBox的四元组描述方法信息量不足,另外相较于常规的物体,文字行长度、长宽比例变化范围很大。针对以上问题,现在比较流行的文本检测模型有CTPN、DMPNet[12]、Seglink[13]、FTSN[14]、WordSup[15]等方案。以上方案在文本检测上都有较高的准确率。CTPN对于自然场景下水平文字的检测效果不错,能够检测水平或者稍微倾斜的文本行。CTPN[16]模型选择VGG-16[17]作为基础网络提取各字符的局部图像特征,最后经过Faster R-CNN的RPN网络,获取text proposals。

1)数据集。

数据集采用Reading Chinese Text in the Wild (RCTW-17)。RCTW-17[18]数据集用于ICDAR2017阅读中文竞赛,包含8000张训练图像,4000多张测试图片,其中中文数据占大部分。

2)模型训练。

由于已有的基于CTPN训练模型的文字检测准确度很高,对于手写化学物质名称的文本检测能力也有一定的准确度,所以本文在其预训练权重基础上进行训练。试验在Keras框架进行。实验训练进行10000次,实验准确率为97.12%,实验测试效果如图8所示。

图8 化学物质名文字检测效果

2.2.2 文字识别

对于文字识别阶段,由于化学物质名称长度不定,即不定长,故本文采用CNN+BLSTM+CTC Loss的方法进行识别。CNN使用卷积与池化层堆叠得到特征图之后将提取的特征送进BLSTM得到文字的序列特征。最后利用CTC Loss转录得到字符。整个系统采用随机梯度下降进行端到端训练,文字检测识别基础框架如图9所示。

图9 化学物质名文字检测识别基础框架

LSTM[19](Long Short-Term Memory)是一种特殊的循环神经网络,能够有效解决RNN的长期依赖问题。针对普通RNN易出现的“梯度消失”或“梯度爆炸”问题,LSTM可有效解决。对于文本识别,前后文的序列信息对于文字预测有重要作用,所以采用双向LSTM(Bidirectional LSTM, BLSTM)[20]网络。

CTC[21](Connectionist Temporal Classification) Loss函数主要解决的是输入的特征与输出的标签的对齐问题,由于不能保证每处手写文字都无空白且连续,故相邻文字之间可能存在间隔以及变形,这就会导致相同的文字有不同的表现形式,但本质是同一个字符,引入空格字符解决空白位置的问题。

1)数据集。

手写字体识别数据集采用的数据是由中国国家科学研究院国家模式识别实验室采集的手写数据集HWDB1.0、HWDB1.2[22]。HWDB1.0中有420位书写者,每个书写者的书写内容为3866个不重复的汉字字符以及171个字母及符号,HWDB1.2包括3319个中文字符以及171个字母及符号。2个数据集的汉字字符集是不重合的。2个数据集一共包括7185类中文字符,已包括了GB2312字符集中的全部中文字符。

2)模型训练。

本文在Keras深度学习计算平台进行搭建,使用随机梯度下降进行算法优化,设置动量参数w为0.9,权值衰减设置为1e-4,训练batch size大小设置为10,初始学习率设置为1e-1,训练第一阶段迭代10000步后学习率设置为1e-2,第二阶段迭代5000步后学习率下降为1e-3。最后再经过5000步迭代停止训练,得到模型最后识别准确率为90.4%。

3 实验结果

3.1 目标检测算法对比

本文选取YOLOv3、YOLOv3 Tiny以及本文改进的YOLOv3 Tiny目标检测算法在本文自建的带有标签的化学容器的图片数据集上进行目标检测任务的训练与测试,选取平均精度与检测速度2项指标进行对比分析评价,速度测试在GTX960显卡的计算机上进行。表1展示了不同目标检测算法的对比实验结果。

表1 不同目标检测算法结果对比

通过表1对比可以发现在检测精度方面YOLOv3在本文数据集下与其他算法相比精度最高,但是在检测速度方面却不如YOLOv3 Tiny以及本文改进算法。考虑到若将模型部署到嵌入式设备硬件设备,对算力有要求,所以更轻量化的本文改进的YOLOv3 Tiny具有更好的实用性。本文改进的算法相比原算法虽然速度有下降但是在精度方面有了较大提升,可以保证其检测准确性。综合考虑,本文改进的算法在速度与精度方面取得一定平衡,为今后部署到嵌入式设备打下了基础。

3.2 文字识别算法对比

本文通过将文本检测算法与文本识别算法结合进行对比测试,选取4种不同组合方案的文本检测识别算法进行训练与测试。主要有CTPN+CNN+RNN+CTC、CTPN+CNN+LSTM+CTC、CTPN+CNN+GRU+CTC、CTPN+CNN+BLSTM+CTC。本文的测试数据选择中学常见的化学物质的手写汉字,包含17人手写的14类常见物质。实验结果选择平均精度与识别速度2项作为主要评价指标。实验测得各类文字识别准确率如表2所示。

表2 不同手写文字检测识别方案对比

通过表2在不同算法之间的文字识别准确率对比可以看出,在自建数据集上的测试结果表明本文所用方法识别精度最高,识别速度也相对较快。

3.3 抓取实验测试

本测试硬件设备如第2章所述,包括六轴机械臂、深度相机、机械抓手处的单目相机、贴有化学标签的化学试管。实验开始前已完成相机的内外参数标定,机械臂的D-H参数已集成至机械臂ROS系统的urdf文件中,可通过正逆运动学运算得坐标转换关系[23]。化学实验场景机械臂抓取如图10所示。

图10 实验测试平台

实验测试选取14类贴有不同名称的标签的试管进行抓取实验以验证机械臂定位准确度以及文字识别准确度。抓取实验结果准确率如表3所示。

表3 抓取实验测试

实验结果表明深度相机能通过识别化学标签以获取其深度值,进而获取试管在世界坐标系下的三维坐标,机械臂抓手运动至标签水平前方以识别化学标签的文字信息,从而完成抓取。但是实验对于名称过长的化学标签抓取成功率较差,主要原因在文字首尾边缘的曲面部分的文字信息产生形变导致识别率较差。接下来的主要工作在于提高文字识别准确率。

4 结束语

本文提出了一种在化学实验场景下基于化学标签定位与文字识别的机械臂抓取化学试管等仪器的方法,采用YOLOv3 Tiny目标检测算法识别化学标签贴纸,深度相机探测深度信息,从而完成三维定位,通过CTPN+BLSTM+CTC Loss文字识别算法识别标签上的文字以区分不同化学物质。实验能在小样本环境下对目标进行识别和定位,机械臂可以对指定类别的化学试管进行抓取。下一阶段需要提高文字识别准确率,以提高分类准确率从而提高机械臂抓取准确率。

猜你喜欢
试管标签文字
文字的前世今生
无土栽培在试管苗移栽中的应用探讨
热爱与坚持
当我在文字中投宿
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
试管难题
标签化伤害了谁
科学家的标签
异型试管在微型化学实验中的应用