基于机械手的双目视觉定位抓取研究——袁仁辉-2016
主要包括研究内容为基于改进OpenCv的单目摄像头标定和基于HALCON的单目摄像头标定,还有双目视觉摄像头的标定方法和系统实现。
图像信息的获取可以从单目摄像机、双目摄像机或多目摄像机中获取,并且图像的获取主要是通过摄像机中的CCD或CMOS感光元件获得,这些感光元件可以将光信号转换为图像所需要的电信号,然后经过芯片处理电信号,最终将模拟信号转换成数字图像。
机器视觉技术是从20世纪50年代从统计模式识别技术开始兴起的一门新兴学科,当时的主要工作和任务集中在二维图像的分析、识别和理解上;20世纪60年代,Roberts将环境限制在所谓的“积木世界”中进行研究,也就是利用周围物体都是多面体组成的结构化环境来识别可以用点、线和平面组合表示的物体;20世纪80年代,麻省理工学院的Marr教授首次从信息处理的角度综合了图像处理、神经生理学、临床神经病学以及心理物理学等方面取得了重要的研究结果,提出了一个较完善的视觉理论框架体系。
基于卷积神经网络的图像识别方法研究——2014 段萌
多数图像识别方法都是通过“特征提取”和“分类识别”两步进行的,特征提取顾名思义就是根据识别任务从训练数据中提取目标的特征,分类识别则是采用分类算法对目标进行识别。机器学习一般都是采用人工设计图像特征,而深度学习则是通过算法对目标特征进行学习。
背景:图像识别的核心内容实际上是对于图像的特征提取,常见的图像特征可以分为全局特征和局部特征。传统机器学习中图像处理的方法都是将这些全局或者局部特征用于识别,按照类别可以分为基于颜色特征的图像处理、基于纹理特征的图像处理、基于形状特征的图像处理和基于空间关系特征的图像处理。2006年之后深度学习的理论提出了,并且广泛用于目标检测和语音识别,其中最突出的就是卷积神经网络模型
该论文发现的问题:如何利用卷积神经网络构造图像识别模型;利用卷积神经网络训练数据时候往往会出现过拟合的问题;当样本数量不足的时候图像识别的准确率会降低。
在本论文中通过卷积神经网络的方法对车牌进行了识别,以下是车牌识别部分:
常见的车牌字符识别方法有:模板匹配法、特征匹配法、基于机器学习的方法。三种方法中,模板匹配方法对于倾斜字符的识别效果较差:特征匹配方法对于图像质量要求较高,在高清晰度和字符完整的字符图像中识别效果较好,同时克服了字符尺寸、方向带来的识别困难,但是图像质量不好的时候识别效果较差;同时以上三种方法都依赖于人工设计特征,但是使用卷积神经网络模型进行图像识别,能够有效将特征提取和分类识别两个过程相结合,避免人工干扰带来的影响。
本论文中实验结果如下所示:
表中可以看到本文中使用的神经网络模型的识别率明显高一些,并且具有较低的过拟合率,同时能够看出采用图像增强技术能够改善识别率和过拟合问题。同时论文中对于影响模型识别率和性能的问题进行了实验,因素有:卷积核尺寸、训练优化算法(Adadelta、Adagrad、Adam、Nadam、Adamax、RMSprop)、Dropout丢弃率等
小样本迁移训练方法
当前流行的深度卷积神经网络模型在样本数量不足的时候,存在识别准确率下降和过拟合问题严重的问题,卷积神经网络之所以在图像识别方面有出色的成绩这都得益于大规模数据集提供充足的数据源。所以本论文中研究了一种针对训练数据不足的小样本问题的样本迁移训练方法。
域内同构训练方法:首先在大规模数据集上预训练模型,训练完成之后保留除全连接层之外的所有模型参数;之后加载之前得到的模型参数,重新训练全连接层参数(这里使用的数据来源不清楚,论文中没有说明清楚);冻结部分层或者整个模型层结构的训练参数,微调模型参数,使用分类器得到识别结果。这样实际上是使用全连接层将模型预训练和层冻结的模型微调方法连接在一起。
(该论文中说到的迁移训练方法分为域内同构和域内异构两种类型,还没有完全弄明白)
基于深度学习的图像目标定位识别研究-2016 程欣
背景:
一般图像目标定位识别系统包括图像分割、目标关键特征提取、目标类别分类三个步骤。深度学习理论包含很多种模型,不同模型应用于不同的领域,其中卷积神经网络(CNN)模型常用于图像处理,它与传统的人工神经网络模型相比拥有更多的隐含层,并且它特有的卷积-池化对图像处理有更高的效率。目前深度学习常用的模型包括基于RBM的深度置信度网络、基于自编码器的网络模型和卷积神经网络模型等。
现有的卷积神经网络模型众多,不同模型的深度也不尽相同。最初有Hinton教授提出的Alexnet网络模型(9层),之后有谷歌公司的Googlenet模型(27层),还有牛津大学的Karen Simonyan等人搭建的VGG模型,之后的卷积神经网络基本上都是在这几种模型的基础上进行改进的。
现有的图像目标定位识别模型的第一步都是对目标对象进行分割定位操作,主流的图像识别模型都采用选择性搜索算法或者边缘盒检测算法。但是,这两种方法相对于卷积特征提取和分类的速率都十分缓慢,并且还会产生大量的无效候选目标,所以提出了估计目标网络(Region Proposal Network)。
目前深度学习中没有一套有效的理论来分析目标特征和目标对象之间的对应关系,也就是不知道通过CNN模型提取出来的特征分别对应目标对象的哪一部分。
图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。当前计算机视觉领域的代表期刊有ICCV、ECCV、IJCV等,
本论文创新点:在VGG模型的基础上加以改进,改进后的模型称为N-VGG模型;研究了基于估计目标网络(RPN)的图像分割技术,并且改进了这种图像分割技术,改进后的分割方法称为IRPN;提出了卷积神经网络模型中新的激活函数——指数线性单元(ELU);在新的网络模型中应用了空间金字塔池化技术(SPP)
论文成果:
1、论文将目标图像进行了多次平移操作,并且对平移后的图像的目标特征的欧式距离进行判断,发现底层特征对于图像的细小变化会导致输出特征变化明显,但是高层特征却不受影响。论文同样验证了缩放、遮挡对提取特征的影响,实验都表明卷积网络特征对目标的平移、缩放具有不变性,同时对局部遮挡也有很好的抗性。
2、本文改进了估计目标网络(IRPN)
原始的RPN网络是通过滑动窗口的形式进行穷举得到估计对象,这种方法有两种缺点,其一就是目标对象的大小不能够确定,但是使用的滑动窗口是固定大小的,这样就会产生限制性;其二就是采用滑动窗口的方法会产生很多非有效估计目标区域。所以本文将滑动策略改成固定尺寸分割策略,对于最后一层卷积特征图,我们提供M中图像划分方法,划分出来的每一个分割窗口映射到K中形状估计上,之后的操作和RPN相同,流程图如下所示:
使用这种方法找到目标对象的位置和大小之后,有可能多个包围盒同时包含用一个目标对象,所以对于结果需要筛选,这里采用非极大抑制(NMS)
因为IRPN是一个监督训练的过程,所以需要构建一个损失函数用于训练IRPN。
3、自行设计卷积神经网络
激活函数设计:传统激活函数(比如sigmoid函数、tanh函数)存在梯度消失的问题,也就是在进行BP算法训练时候误差值在传播过程中会不断减少,梯度也会不断衰减消失,这就会使得模型学习过程变得缓慢;目前,神经网络模型中最常用的激活函数是ReLUs,ReLUs函数参数为正数的时候是其本身,参数为负数的时候为零,正向梯度是1,所以只有一端饱和,能够一定程度上抵消梯度消失的现象,但是由于ReLUs函数是非负函数,所以经过激活函数的每次输入都会产生一个偏移,并且这种偏移是逐层积累的,为了让神经元的输出均值尽量趋于零,可以使用线性函数f(x)=ax替代ReLUs函数的0值部分;本文中引入了一个新的激活函数——指数线性单元,这种激活函数是由Djork等人提出的,这种激活函数的好处在于对于噪声具有鲁棒性,同时能够使得神经元的输出均值趋于零。
卷积和池化设计:(卷积核设计)本文提出的N-VGG模型是在VGG模型基础上改进的,所以选择的卷积核的大小和VGG模型一致——3*3;(池化设计)常用的池化方法有最大池化法和均值池化,本文中引入一种新的池化方法——空间金字塔池化(SPP)(之所以使用SPP池化是源于CNN模型的一个缺陷:CNN模型输入图像的大小是固定的,如果输入图像的大小与模型要求不一致的话会进行缩放处理,但是有些图像进行缩放之后会造成图像变形,这样就会损失一些空间信息)SPP池化是将不同数量的卷积层结果处理成相同数量的输出结果,这样就能够保证全连接层的输入是固定的。
分类器设计:许多CNN模型都是采用softmax分类器进行目标分类,机器学习中的支持向量机(SVM)也可以用作分类器,也有很多分类算法,比如KNN、Logistic Regression等。本文中没有介绍如何搭建分类器的
图像目标定位识别系统实现(基于CNN):N-VGG模型集成了图像分割、特征提取、目标分类三个过程,所以本文只提供模型的读取文件接口和对结果进行输出显示。系统结构流程图如下所示,读取视频文件的接口有Opencv提供,其中cvCaptureFromFile()从文件夹中获取视频,cvRetrieveFrame()从视频中获取帧图像;图像的读取和输出操作由Python第三方库Python Imaging Library完成,库中提供了open()和show()用于图片的读取和显示。程序编写条件:本文使用的是第三方的开源工具——caffe,操作系统为Linux Ubuntu14.04;电脑硬件配置为:GPU Titan,显存12G,GPU为至强E5处理器,内存为64G;此外还有一些软件工具,如matlab、python、Opencv等。训练数据准备:现有的视觉数据集很多,比如Caltech101、TinyImages、dataset、MSRC dataset、Stanford BackgroundDataset等,其中大部分都是小数据集,只适合用于特定的场景,本文中识别的目标是一般物体,所以需要多目标、多类别的数据,本文使用的是ImageNet和Pascal VOC数据集。其中ImageNet数据集是一个超大规模图像数据库,其中包含一亿四千万张图片,共计21841个类别;相比ImageNet数据集,Pascal VOC数据集就小的多,其中只包含20个类别——飞机、自行车、船、公共汽车、小汽车、摩托车、火车、饭桌、盆栽、沙发、瓶子、座椅、显示器、鸟、猫、牛、狗、马、羊、人。
激活函数的双端饱和特性以及一端饱和
卷积神经网络模型搭建:基于GPU的编程是加速CNN的训练和特征提取的重要方式,主流的异构编程框架是OpenCL和CUDA,CUDA是显卡生产商NVIDIA推出的并行计算架构,通过该架构能够利用GPU强大的并行计算能力解决复杂的计算问题。caffe是一个专门用于卷积神经网络的深度学习开源工具,其主要实现语言是C++和CUDA,同时提供了命令行、Python和Matlab的接口,并且能够通过set_mode接口在GPU和CPU之间切换。这个开源工具极大简化了开发者编写自己网络模型的工作,其中包含四个重要的模块:Blob模块(该模块包含Caffe中数据传递的形式,具体表示为一个四元数组,包括输入数据量的大小、图像通道数、图像的高度和宽度;Layer模块(该模块是卷积神经网络中的“层”定义,可以接受Blob作为输入);Net模块(实际上是若干layers组成的模型框架;Solver模块(该模块定义了卷积神经网络的训练策略)。本论文中是利用caffe工具搭建卷积神经网络;因为模型随机初始化有很高的概率会使得模型陷入局部最小值,预训练能够使得模型的结果更加可靠,同时本论文首先采用IRPN估计目标,之后将获取的估计目标用于N-VGG模型,两者都需要各自单独训练,但是训练参数不一种会对识别结果产生影响,所以本论文采用共享卷积层的训练方式(首先训练IRPN,这时候共享卷积层的参数为IRPN的参数;然后,利用IRPN产生的目标去训练N-VGG,这样共享卷积层的参数为N-VGG的参数;再次训练IRPN,相当于微调了IRPN的参数;保持卷积层的网络权值不变,为N-VGG的全连接层进行微调)