一种基于深度学习的椭圆识别方法

文档序号:1738165 发布日期:2019-12-20 浏览:4次 >En<

阅读说明:本技术 一种基于深度学习的椭圆识别方法 (Ellipse identification method based on deep learning ) 是由 徐静 陈恳 刘炽成 于 2019-08-09 设计创作,主要内容包括:本发明提出一种基于深度学习的椭圆识别方法,属于模式识别技术领域。该方法在深度学习训练阶段,首先采集包含椭圆的图像并标注边缘后构建训练数据集;然后建立深度神经网络,利用训练数据集对深度经网络进行迭代训练,得到训练完毕的网络;在边缘跟踪识别椭圆阶段,将需要识别的图像输入训练完毕的网络,网络输出预测的边缘图像;然后采用边缘跟踪算法识别边缘图像中的椭圆,完成识别。本发明利用深度学习算法预测图像边缘,通过边缘跟踪算法识别椭圆,实现了基于深度学习的椭圆识别。(The invention provides an ellipse recognition method based on deep learning, and belongs to the technical field of pattern recognition. In the deep learning training stage, firstly, acquiring an image containing an ellipse, marking edges, and then constructing a training data set; then establishing a deep neural network, and performing iterative training on the deep neural network by using a training data set to obtain a trained network; in the stage of edge tracking and ellipse identification, inputting an image to be identified into a trained network, and outputting a predicted edge image by the network; and then, identifying the ellipse in the edge image by adopting an edge tracking algorithm to finish the identification. The invention utilizes the deep learning algorithm to predict the image edge and identifies the ellipse through the edge tracking algorithm, thereby realizing the ellipse identification based on the deep learning.)

一种基于深度学习的椭圆识别方法

技术领域

本发明属于模式识别技术领域,尤其涉及一种基于深度学习的椭圆识别方法。

背景技术

由于椭圆是最常见的几何图形之一,椭圆识别成为了许多计算机视觉应用的基础。例如椭圆识别可以用于表面检查,相机标定,物体区分,眼睛捕捉,道路交通标志识别和分类等领域。因此,从图像中鲁棒并稳定的识别椭圆是十分重要的。

现有的椭圆识别算法大致分为两类,一类是基于霍夫变换的椭圆识别算法,另一类是基于边缘跟踪的椭圆识别算法。基于霍夫变换的椭圆识别算法不仅效率低下,精度也不高,难以用于工业生成环境。而现有的基于边缘跟踪的椭圆识别算法都是基于图像梯度识别边缘,再基于边缘识别椭圆,对于工业环境的图片,由于图像梯度噪声较多,仅仅基于图像梯度无法很好识别图像边缘。此外,现有的基于边缘跟踪的椭圆识别算法都无法很好识别小椭圆(图像中半长轴小于10个像素的椭圆)。

发明内容

本发明的目的是为克服已有技术的不足之处,提出一种基于深度学习的椭圆识别方法。本发明采用深度学习算法识别边缘图像,可以克服图像梯度噪声多的问题,采用边缘跟踪算法在边缘图像上识别椭圆,优化了对小椭圆的识别,可以做到高精度,高召回率,有很高的应用价值。

本发明提出一种基于深度学习的椭圆识别方法,其特征在于,该方法分为深度学习训练和边缘跟踪识别椭圆两个阶段,包括以下步骤:

1)深度学习训练阶段;具体步骤如下:

1-1)采集M张包含椭圆的图像作为训练输入图像,对每张训练输入图像包含的所有边缘信息进行人工标注,标注完毕后得到对应的边缘图像作为训练目标图像;每张训练输入图像和对应训练目标图像组成一个训练样本,所有训练样本构成训练数据集;

1-2)构建深度神经网络;该网络具有14层神经元,网络前7层为压缩层,压缩层每层的输入图像尺寸按照折半的方式依次减小,后面7层为生成层,生成层的每层输入图像尺寸按照翻倍的方式依次扩大,第7层生成层的输出图像尺寸和输入的图像尺寸一致;网络一共输出8幅图像,假设输入图像尺寸为W×W,则8幅输出图像Od0,Od1,Od2,Od3,Ou3,Ou2,Ou1,Ou0的尺寸分别为W×W,0.5W×0.5W,0.25W×0.25W,0.125W×0.125W,0.125W×0.125W,0.25W×0.25W,0.5W×0.5W,W×W;其中,Odj,i为压缩层的输出,Ouj,i为生成层的输出,j=0,1,2,3,代表图像相比原始图像尺寸折半的次数;

1-3)利用训练数据集对深度神经网络进行迭代训练,得到训练完毕的深度神经网络;具体步骤如下:

1-3-1)随机初始化1-2)中建立的深度神经网络的参数,将初始深度神经网络作为当前神经网络;

1-3-2)令i=1;

1-3-3)利用当前深度神经网络预测训练数据集中每个训练输入图像对应的输出边缘图像;将第i幅训练输入图像记为X0,i,深度神经网络预测的8幅输出边缘图像分别为Odj,i和Ouj,i,j=0,1,2,3;

1-3-4)将第i幅训练输入图像X0,i对应的训练目标图像Y0,i连续折半降采样得到Yj,i,j=0,1,2,3,其中Y0,i尺寸为W×W,则Yj,i尺寸为0.5jW×0.5jW;

1-3-5)利用输出边缘图像Odj,i,Ouj,i和训练目标图像Yj,i构造多层误差Li,表达式如下:

1-3-6)利用梯度下降算法通过最小化Li对当前深度神经网络的参数进行更新,得到更新后的当前深度神经网络;

1-3-7)令i=i+1,然后重新返回步骤1-3-3),利用梯度下降等算法通过最小化Li对当前深度神经网络进行迭代训练,直至所有训练样本都遍历一遍之后,重新返回步骤1-3-2)进行下一轮迭代训练直至平均误差连续5轮迭代训练不再下降,其中N为训练样本数量;取Lavg最小时的深度神经网络为训练完毕的深度神经网络;

2)边缘跟踪识别椭圆;具体步骤如下:

2-1)任意获取一张图像Xa0(,将该图像输入步骤1)的训练完毕的深度神经网络,得到该网络第7层生成层输出图像Oa0

2-2)对步骤2-1)得到的图像Oa0进行形态学瘦身处理,得到宽度为1个像素的边缘图像;

2-3)对步骤2-2)中宽度为1个像素的边缘图像进行边缘跟踪;具体步骤如下:

2-3-1)随机选取2-2)得到边缘图像里一个未被使用过的像素作为种子像素,该种子像素含有不多于两个8连通邻居;

2-3-2)初始化一条不含任何像素的空曲线作为当前边缘曲线,选择种子像素的任一个8连通邻居作为边界像素,并将该边界像素加入到当前边缘曲线中,所有加入当前边缘曲线的像素为已使用像素;

2-3-3)对边界像素进行判定:

若边界像素含有多于两个或少于两个8连通邻居,则结束种子像素与边界像素的连线方向的边缘跟踪,进入步骤2-3-5);若边界像素含有两个8连通邻居,则将边界像素两个8连通邻居中不在当前边缘曲线上的8连通邻居作为新的边界像素,并加入当前边缘曲线,进入步骤2-3-4);

2-3-4)重复步骤2-3-3),直到结束种子像素与边界像素的连线方向的边缘跟踪,进入步骤2-3-5);

2-3-5)若种子像素只有1个8联通邻居,则将步骤2-3-4)完成边缘跟踪的当前边缘曲线作为该种子像素的边缘曲线,进入步骤2-4);若种子像素有两个8连通邻居,则选取种子像素的另一个8连通邻居作为新的边界像素,重复2-3-2)到2-3-4),初始化一条新的当前边缘曲线,并完成种子像素与新的边界像素的连线方向的边缘跟踪,最后分别将步骤2-3-4)和2-3-5)完成边缘追踪的两条当前边缘曲线拼接成一条该种子像素的边缘曲线;

2-4)从步骤2-2)的边缘图像中随机选取一个新的未被使用过的像素,重复步骤2-3),直到所有未被使用的像素得到对应的边缘曲线;

2-5)扫描步骤2-4)得到的每条边缘曲线,在每条边缘曲线中曲率超过设定曲率阈值的地方断开该边缘曲线;

2-6)从步骤2-5)处理完毕的边缘曲线中删除直线度超过设定直线度阈值的边缘曲线;

2-7)对步骤2-6)处理完毕的每条边缘曲线的每个端点,计算与该端点相连得到平滑曲线的边缘曲线,并对计算得到的边缘曲线按照长度从大到小进行排序,取其中长度最大的边缘曲线作为该端点的邻居曲线;

2-8)从步骤2-6)处理完毕的边缘曲线中随机取一条边缘曲线,沿该边缘曲线任一个端点拼接该端点的邻居曲线,然后将对该邻居曲线未被用于拼接的端点继续拼接对应的邻居曲线,依次往下,直到无法拼接为止,将选取的边缘曲线以及每次拼接后得到的曲线组分别进行保存,得到该边缘曲线对应的中间过程曲线组以及最终拼接结果曲线组;

2-9)重复步骤2-8),直到得到所有边缘曲线分别对应的中间过程曲线组以及最终拼接结果曲线组;

2-10)计算步骤2-9)得到的每个曲线组的旋转角度,计算方法为从该曲线组的一个端点开始,沿着曲线累加旋转角度,直到该曲线组的另一个端点,累计的旋转角度记为该曲线组的旋转角度;

利用每个曲线组的旋转角度对所有曲线组进行筛选:若曲线组的旋转角度小于150度或大于400度则该曲线组是非法组合,将该曲线组删除;

2-11)对经过步骤2-10)筛选完毕后的每个曲线组拟合对应的椭圆,计算该曲线组上的像素到拟合对应椭圆的距离并进行判定:若到拟合对应椭圆距离小于一个像素距离的像素数量占所有像素数量低于设定的比例阈值则删除该椭圆,否则保留该椭圆;

2-12)对经过2-11)处理完毕的所有椭圆计算对应曲线组中像素到该椭圆距离小于一个像素距离的像素数量除以该椭圆周长的比值,按比值从大到小排序所有椭圆;

2-13)按顺序依次选取步骤2-12)中排序后的椭圆并进行判定:若选取的椭圆所用到的边缘曲线都未被消耗,则保留该椭圆,同时消耗拟合该椭圆所用的边缘曲线;否则删除该椭圆;对所有椭圆判定完毕后,最终保留的椭圆即为步骤2-1)获取图像对应的椭圆识别的结果。

本发明的特点及有益效果在于:

本发明通过训练一个深度神经网络,可实现高噪音环境下边缘图像的识别,然后利用边缘跟踪算法,可以从边缘图像中识别椭圆。本发明适合用于工业环境识别椭圆,能很好处理工业环境图像高噪音以及小椭圆较多的问题,且识别结果精度和召回率高,有很高的应用价值。

附图说明

图1本发明实施例的整体流程图。

图2本发明实施例的深度神经网络结构示意图。

具体实施方式

本发明提出一种基于深度学习的椭圆识别方法,下面结合附图和具体实施例对本发明进一步详细说明如下。

本发明提出一种基于深度学习的椭圆识别方法,分为深度学习训练和边缘跟踪识别椭圆两个阶段,整体流程如图1所示,包括以下步骤:

1)深度学习训练阶段;具体步骤如下:

1-1)采集包含椭圆的图像作为训练输入图像,数量越多越好,本实施例采用81张网络收集的包含椭圆的图像作为训练输入图像,尺寸从200像素到1000像素均有覆盖,并对每张训练输入图像包含的所有边缘信息(不限于椭圆)进行人工标注,标注完毕后得到对应的边缘图像作为训练目标图像;每张训练输入图像和对应训练目标图像组成一个训练样本,所有训练样本构成训练数据集;

1-2)构建深度神经网络;深度神经网络的输入为包含椭圆的图像,输出为输入图像对应的边缘图像。该网络具有14层神经元,网络前7层为压缩层,压缩层每层的输入图像尺寸按照折半的方式依次减小,后面7层为生成层,生成层的每层输入图像尺寸按照翻倍的方式依次扩大,第7层生成层的输出图像尺寸和输入的图像尺寸一致。其中除合并层(图2中两长方形叠加形式表示的层)之外每层都接有一个输出模块,网络一共输出8幅图像,假设输入图像尺寸为W×W,则这8幅输出图像Od0,Od1,Od2,Od3,Ou3,Ou2,Ou1,Ou0的尺寸分别为W×W,0.5W×0.5W,0.25W×0.25W,0.125W×0.125W,0.125W×0.125W,0.25W×0.25W,0.5W×0.5W,W×W;

图2为本发明实施例的深度神经网络结果示意图。其中1为输入图像,2为各层的输出图像。其中Pool,/2为折半池化层,Conv为卷积层,Conv,/2为折半卷积层,Trans,X2为翻倍生成层,Same相连的两个图形代表同一个中间变量;X0,i为第i幅输入图像,X1,i,X2,i,X3,i分别为X0,i缩小到二分之一、四分之一、八分之一的图像;Zdj,i为压缩层的中间变量,Zuj,i为生成层的中间变量,Odj,i为压缩层的输出,Ouj,i为生成层的输出,其中j=0,1,2,3,代表图像相比原始输入图像尺寸折半的次数;

1-3)利用训练数据集对深度神经网络进行迭代训练,得到训练完毕的深度神经网络;具体步骤如下:

1-3-1)随机初始化1-2)中建立的深度神经网络的参数,或者用一些成熟初始化算法。将初始深度神经网络作为当前神经网络;

1-3-2)令i=1;

1-3-3)利用当前深度神经网络预测训练数据集中每个训练输入图像对应的输出边缘图像,其中每幅训练输入图像对应8幅不同尺寸的输出边缘图像。将第i幅训练输入图像记为X0,i,深度神经网络预测的8幅输出边缘图像分别为Odj,i(j=0,1,2,3)和Ouj,i(j=0,1,2,3),下标带j的图像尺寸为原始图像的0.5j

1-3-4)将第i幅训练输入图像X0,i对应的训练目标图像Y0,i连续折半降采样得到Yj,i(j=1,2,3),其中j代表折半降采样的次数,其中Y0,i尺寸为W×W,则Yj,i尺寸为0.5jW×0.5jW;

1-3-5)利用输出边缘图像Odj,i,Ouj,i和训练目标图像Yj,i构造多层误差Li,表达式如下:

1-3-6)利用梯度下降算法通过最小化Li对当前深度神经网络的参数进行更新,得到更新后的当前深度神经网络,可以根据内存情况设置批量更新,本实施例为每张图像更新一次;

1-3-7)令i=i+1,然后重新返回步骤1-3-3),利用梯度下降等算法通过最小化Li对当前深度神经网络进行迭代训练,直至所有训练样本都遍历一遍之后,重新返回步骤1-3-2)进行下一轮迭代训练直至到平均误差(其中N为训练数据集中训练样本数量)连续5轮迭代训练不再下降,取Lavg最小时的深度神经网络为训练完毕的深度神经网络;

2)边缘跟踪识别椭圆;具体步骤如下:

2-1)任意获取一张图像Xa0,将该图像输入步骤1)的训练完毕的深度神经网络,得到该网络第7层生成层输出图像Oa0;其中,图像Xa0可以是任意途径获得的图像;

2-2)对步骤2-1)得到的图像Oa0进行形态学瘦身处理(morphologicallythinning),得到宽度为1个像素的边缘图像;

2-3)对步骤2-2)中宽度为1个像素的边缘图像进行边缘跟踪;具体步骤如下:

2-3-1)随机选取2-2)得到边缘图像里一个未被使用过的像素(该边缘图像在初始状态下所有像素均未被使用)作为种子像素,同时该种子像素需满足只含有不多于两个8连通邻居,8连通邻居为与该像素共享一条边或一个角点的像素;

2-3-2)初始化一条不含任何像素的空曲线作为当前边缘曲线,选择种子像素的任一个8连通邻居作为边界像素,并将该边界像素加入到当前边缘曲线中(曲线由像素组成,加入就是把像素放到曲线里面,相当于曲线变长了一个像素),所有加入当前边缘曲线的像素均被认为已使用;

2-3-3)对边界像素进行判定:

若边界像素含有多于两个或少于两个8连通邻居,那么结束种子像素与边界像素的连线方向的边缘跟踪,进入步骤2-3-5);若边界像素含有恰好两个8连通邻居,则将边界像素两个8连通邻居中不在当前边缘曲线上的8连通邻居作为新的边界像素,并加入当前边缘曲线,进入步骤2-3-4);

2-3-4)重复步骤2-3-3),直到结束种子像素与边界像素的连线方向的边缘跟踪,进入步骤2-3-5);

2-3-5)若种子像素只有1个8联通邻居,则将步骤2-3-4)完成边缘跟踪的当前边缘曲线作为该种子像素的边缘曲线,进入步骤2-4);若种子像素有两个8连通邻居,则选取种子像素的另一个8连通邻居作为新的边界像素,重复2-3-2)到2-3-4),初始化一条新的当前边缘曲线,并完成种子像素与新的边界像素的连线方向的边缘跟踪,最后分别将步骤2-3-4)和2-3-5)完成边缘追踪的两条当前边缘曲线拼接成一条该种子像素的边缘曲线;

2-4)从步骤2-2)的边缘图像中随机选取一个新的未被使用过的像素,重复步骤2-3),直到所有未被使用的像素得对应的边缘曲线,至此,得到一系列的边缘曲线;

2-5)扫描步骤2-4)得到的每条边缘曲线,在每条边缘曲线中曲率超过设定曲率阈值的地方断开该边缘曲线得到多条边缘曲线,具体曲率阈值根据应用场景进行选择(本实施例取阈值为两倍平均值);

2-6)从步骤2-5)处理完毕的边缘曲线中删除直线度超过设定直线度阈值的边缘曲线,直线度阈值根据具体应用场景调节(本实施例取0.9);

2-7)对步骤2-6)处理完毕的每条边缘曲线的每个端点,计算可以与该端点相连得到平滑曲线的边缘曲线,并对计算得到的边缘曲线按照长度从大到小进行排序,取其中长度最大的边缘曲线作为该端点的邻居曲线;

2-8)从步骤2-6)处理完毕的边缘曲线中随机取一条边缘曲线,沿该边缘曲线任一个端点拼接该端点的邻居曲线,然后将对该邻居曲线未被用于拼接的端点继续拼接对应的邻居曲线,依次往下,直到无法拼接为止,将选取的边缘曲线以及每次拼接后得到的曲线组分别进行保存,得到该边缘曲线对应的中间过程曲线组以及最终拼接结果曲线组;例如若某条边缘曲线的最终拼接结果曲线组[P1,P2,P3]存在,那么中间过程[P1]和[P1,P2]也被保留,其中P1为随机选取的一条边缘曲线,P2为P1一个端点的邻居曲线,P3为P2未被用于拼接的端点对应的邻居曲线。

2-9)重复步骤2-8),直到所有边缘曲线分别对应的中间过程曲线组以及最终拼接结果曲线组;至此,得到一系列曲线组合;

2-10)计算步骤2-9)得到的每个曲线组的旋转角度,计算方法为从该曲线组的一个端点开始,沿着曲线累加旋转角度,直到该组合的另一个端点,累计的旋转角度记为该曲线组的旋转角度;

利用每个曲线组的旋转角度对所有曲线组进行筛选:若曲线组的旋转角度小于150度或大于400度则被认为该曲线组是非法组合,将该曲线组删除;

2-11)对经过步骤2-10)筛选完毕后的每个曲线组拟合对应的椭圆,计算该曲线组上的像素到拟合对应椭圆的距离,其中到拟合对应椭圆距离小于一个像素距离的像素数量占所有像素数量的比例不得低于设定的比例阈值,若小于一个像素距离的像素数量占所有像素数量低于设定的比例阈值则删除该椭圆,否则保留该椭圆(具体阈值选择根据实际应用场景决定,本实施例比例阈值取值为0.5);

2-12)对经过2-11)处理完毕的所有椭圆计算对应曲线组中像素到该椭圆距离小于一个像素距离的像素数量除以该椭圆周长的比值,并按比值从大到小排序所有椭圆;

2-13)按顺序依次选取步骤2-12)中排序后的椭圆并进行判定:若选取的椭圆所用到的边缘曲线都未被消耗,则保留该椭圆,同时消耗拟合该椭圆所用到的边缘曲线;否则删除该椭圆(即如果拟合该椭圆的边缘曲线全部或部分被消耗过,则删除该椭圆);对所有椭圆判定完毕后,最终保留的椭圆即为步骤2-1)获取图像对应的椭圆识别的结果。

本发明利用深度神经网络识别边缘图像,利用边缘跟踪算法识别椭圆,实现了基于深度学习的椭圆识别。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于Faster-RCNN的船牌识别方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!