图像识别 订阅
图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 [1]  现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域 [2]  。图像的传统识别流程分为四个步骤:图像采集→图像预处理→特征提取→图像识别。图像识别软件国外代表的有康耐视等,国内代表的有图智能、海深科技等。另外在地理学中指将遥感图像进行分类的技术。 展开全文
图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 [1]  现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域 [2]  。图像的传统识别流程分为四个步骤:图像采集→图像预处理→特征提取→图像识别。图像识别软件国外代表的有康耐视等,国内代表的有图智能、海深科技等。另外在地理学中指将遥感图像进行分类的技术。
信息
所属学科
计算机科学
外文名
image identification
中文名
图像识别
图像识别简介
图形刺激作用于感觉器官,人们辨认出它是经验过的某一图形的过程,也叫图像再认。在图像识别中,既要有当时进入感官的信息,也要有记忆中存储的信息。只有通过存储的信息与当前的信息进行比较的加工过程,才能实现对图像的再认。
收起全文
精华内容
参与话题
问答
  • 图像识别的原理、过程、应用前景

    万次阅读 多人点赞 2019-02-01 15:03:13
    图像识别的原理、过程、应用前景1、图像识别技术的引入1.1图像识别技术原理1.2模式识别2、图像识别技术的过程3、图像识别技术的分析3.1神经网络的图像识别技术3.2非线性降维的图像识别技术3.3 图像识别技术的应用及...


    在这里插入图片描述
    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别识别的过程分为信息的获取、预处理、特征抽取和选择、分类器的设计和分类决策。简单分析了图像识别技术的引入、其技术原理以及模式识别等,之后介绍了神经网络的图像识别技术和非线性姜维的图像识别技术以及图像识别技术的应用。从中可以总结出图像处理技术的应用广泛,人类的生活将无法离开图像识别技术,研究图像识别技术具有重大的意义。

    1、图像识别技术的引入

    图像识别是人工智能的一个重要的领域。图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所指的图像识别并不仅仅是用人类的肉眼,而是借助计算机技术进行识别。虽然人类的识别能力很强大,但是对于高速发展的的社会,人类自身识别能力已经满足不了我们的需求,于是就产生了基于计算机的图像识别技术。这就像人类洋酒生物细胞,完全靠肉眼观察细胞是不现实的,这样自然就产生了显微镜等用于精确观测的仪器。

    1.1图像识别技术原理

    其实图像识别背后的技术的原理并不是很难,只是器要处理的信息比较繁琐。计算机的任何处理技术都不是凭空产生的,它都是学者们从生活实践中得到启发而利用程雪将其模拟实现的。计算机的图像识别技术在原理上并没有本质的区别,只是机器缺少人类在感觉与视觉差上的影响罢了。人类的图像识别也不单单是凭借从整个图像存储在脑海中的记忆来识别的,我们识别图像都是依靠图像所觉有的本身特征而将这些图像分了类,然后通过各个类别所觉有的特征将图像识别出来的,只是很多的时候我们没有意识到这一点,当看到一张图片时,我们的大脑会迅速将图像识别出来的,只是很多时候我们没有意识到这一点。当看到一张图片时,我们的大脑会迅速的感应到是否讲多此图片或与其相似的图片。其实在“看到”与“感应到”的中间经历了一个迅速识别的过程,这个识别的过程和搜索有些类似。在这个过程中,我们的大脑会根据存储记忆中已经分好的类别进行识别,查看是否有与该图像具有相同或类似特征的存储记忆,从而识别出是否见过该图像.机器的图像识别技术也是如此,通过分类并提取重要特征而排除多余的信心来识别图像。机器的图像识别技术也是如此,通过分类并提取重要特征而排出多余的信息来识别图像。机器所提取的这些特征优势会非常明显,有事有事很普通,这在很大程度上影响了机器的识别速率。总之,在计算机视觉识别中,图像的 内容通常是图像特征进行描述。

    1.2模式识别

    模式识别是人工智能和新科学的重要组成部分。模式识别是指对表示事务或现象的不同形式的信息做分析和处理从而得到一个事务或现象做出描述、辨认和分类的过程。

    计算机的图像识别技术就是模拟人类的图像识别过程。在图像识别的过程中进行模式识别是必不可少的。模式识别原本是人类的一项基本智能,但随着计算机的发展和人工智能的兴起,人类本身的模式识别已经满足不了生活的需要,于是人类就希望用计算机来代替或扩展人类的部分脑力劳动。这样计算机的模式识别就产生了。简单地说,模式识别就是对数据进行分类,它是一门与数学紧密结合的科学,其中所用的思想大部分是概率与统计。模式识别主要分为三种:统计模式识别,句法模式识别、模糊模式识别。

    2、图像识别技术的过程

    既然计算机的图像识别技术与人类的图像识别原理相同,那它们的过程也是大同小异的。图像识别技术也分为已下几步:信息的获取,预处理、特征抽取和选择、分类器设计和分类决策。
    信息的获取指通过传感器,将光或声音等信息转化为电信息。也就是获取研究对象的基本信息并通过某种方法将其转变为机器能够认识的信息。
    预处理主要是指图像处理中的去燥、平滑、变换等操作,从而加强图像的重要特征。
    特征抽取和选择是指在模式识别中,需要进行特征的抽取和选择。简单的理解就是我们所研究的图像是各式各样的,如果需要利用某种方法将它们区分开,就要通过这些图像所具有的本身特征来识别,而获取这些特征过程就是特征抽取。在特征抽取中所得到的特征也许对此次识别并不都是有用的,这个时候就要提取有用的特征,这就是特征的选择。特征抽取和选择在图像识别过程中是非常关键的技术之一,所以对这一步的理解是图像识别的重点。
    分类器设计是指通过训练而得到一张识别规则,通过此识别规则可以得到的一种特征分类,使图像识别技术能够得到高识别率。分类决策时是指在特征空间中对识别对对象进行分类,从而更好地识别所研究的对象具体属于哪一类。

    3、图像识别技术的分析

    随着计算机技术的迅速发展和科技的不断进步,图像识别技术已经在众多领域得到了应用。计算机在很多方面确实具有人类所无法超越的优势,也正是因为这样,图像识别技术才能为人类社会带来更多的应用。

    3.1神经网络的图像识别技术

    神经网络图像识别技术是一种比较新型的图像识别技术,是在传统的图像识别方法和基础上融合神经网络算法的一种图像识别方法。这里的神经网络是指人工神经网络,也就是说这种神经网络并不是动物本身所具有的真正的神经网络,而是人类模仿动物神经网络后人工生成的。在神经网络图像识别技术中,遗传算法BP网络项融合的神经网络图像识别模型是非常经典的,在很多领域都有它的应用。在图像识别系统中利用神经网络系统,一般会先提取图像的特征,再利用图像所具有的特征映射到神经网络进行图像识别分类。以汽车牌照自动识别技术为例,当汽车通过的时候,汽车自身具有的检测设备会有所感应,此时检测设备就会启用图像采集装置来获取汽车正反面的图像。获取了图像后必须将图像上传到计算机进行保存以便识别。最后车牌定位模块就会提取车牌信息,对车牌上的字符进行识别并显示最终的结果。在对车牌的上的字符进行识别的过程中就用到了机遇模版匹配算法和人工神经网络算法。

    3.2非线性降维的图像识别技术

    计算机的图像识别技术是一个异常高维的识别技术。不管是图像本身的分辨率如何,其产生的数据经常是多维性的,这给计算机的识别带来了非常大的困难。想让计算极具有高效的识别能力,最直接有效的方式就是降维,降维分为线性降维和非线性降维。例如主要成分分析(PCA)和线性奇异分心(LDA)等就是常见的线性降维方法,他的特点是简单、易于理解。但是通过线性降维处理的是整体的数据集合,所求的是整个数据集合的最优低维投影。经过验证,这种线性的降维策略计算复杂度高而且占用相对较多的时间和空间,因此就产生了基于非线性降维的图像识别技术,它是一种极其有效的非线性特征提取方法。此技术可以发现图像的非线性结构而且可以在不破坏其基础上对其进行降维,是计算机的图像识别在尽量低的维度进行,这样就提高了识别速率。例如人脸图像识别系统所需的维数通常很高,其复杂度之高对计算机来说无疑是巨大的“灾难”。由于在高维度空间中人脸图像的不均匀分布,使得人类可以通过非线性降维技术来得到分布紧凑的人脸图像,从而提高人脸识别技术的高效性.

    3.3 图像识别技术的应用及前景

    计算机的图像识别技术在公共安全、生物、工业、农业、交通、医疗等很多领域都有应用。例如交通方面的车牌识别系统;公共安全方面的的人脸识别技术、指纹识别技术;农业方面的种子识别技术、食品品质检测技术;医疗方面的心电图识别技术等。随着计算机技术的不断发展,图像识别技术也在不断的优化,其算法也在不断改进。

    转自(https://mp.weixin.qq.com/s/THE5B77C_AJa5y6sfOXpaA )侵删

    展开全文
  • python人工智能-图像识别

    万次阅读 多人点赞 2019-02-16 09:25:34
    一、安装库 首先我们需要安装PIL和pytesseract库。...pytesseract:图像识别库。 我这里使用的是python3.6,PIL不支持python3所以使用如下命令 pip install pytesseract pip install pillow 如果是p

    一、安装库

    首先我们需要安装PIL和pytesseract库。
    PIL:(Python Imaging Library)是Python平台上的图像处理标准库,功能非常强大。
    pytesseract:图像识别库。

    我这里使用的是python3.6,PIL不支持python3所以使用如下命令

    pip install pytesseract
    pip install pillow
    

    如果是python2,则在命令行执行如下命令:

    pip install pytesseract
    pip install PIL
    

    这时候我们去运行上面的代码会发现如下错误:

    错误提示的很明显:
    No such file or directory :"tesseract"

    这是因为我们没有安装tesseract-ocr引擎

    二、tesseract-ocr引擎

    光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于我们程序员来说,一般用不到那么高级的,主要在开发中能够集成基本的OCR功能就可以了。这两天我查找了很多免费OCR软件、类库,特地整理一下,今天首先来谈谈Tesseract,下一次将讨论下Onenote 2010中的OCR API实现。可以在这里查看OCR技术的发展简史。
    Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。
    数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

    ###安装tesseract-ocr引擎

    brew install tesseract
    

    然后我们通过tesseract -v看一下是否安装成成功

    tesseract 3.05.01
    leptonica-1.75.0
    libjpeg 9b : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
    

    这时候我们运行上面代码会出现乱码

    这是因为tesseract默认只有语言包中没有中文包,如下图:

    ###安装tesseract-ocr语言包
    我们去GitHub下载我们需要的语言包,这里我只下载了chi_tra.traineddatachi_sim.traineddata
    github:tesseract-ocr/tessdata
    然后放到/usr/local/Cellar/tesseract/3.05.01/share/tessdata路径下面。

    可以通过tesseract --list-langs查看本地语言包:

    可以通过tesseract --help-psm 查看psm

    0:定向脚本监测(OSD)
    1: 使用OSD自动分页
    2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
    3 :全自动分页,但是没有使用OSD(默认)
    4 :假设可变大小的一个文本列。
    5 :假设垂直对齐文本的单个统一块。
    6 :假设一个统一的文本块。
    7 :将图像视为单个文本行。
    8 :将图像视为单个词。
    9 :将图像视为圆中的单个词。
    10 :将图像视为单个字符。

    为什么这里要强调语言包和psm,因为我们在使用中会用到,
    比如多个语言包组合并且视为统一的文本块将使用如下参数:
    pytesseract.image_to_string(image,lang="chi_sim+eng",config="-psm 6")
    这里我们通过+来合并使用多个语言包。

    接下来我们看一下配置好一切的正确结果。

    import pytesseract
    from PIL import Image
    
    image = Image.open("../pic/c.png")
    code = pytesseract.image_to_string(image,lang="chi_sim",config="-psm 6")
    print(code)
    

    此时大公告成。

    ~~号外~~福利~~号外~~
    程序员的福音: “老曾筋骨祛痛贴”,百年祖传配方,专治腰间盘肩周颈椎坐骨神经腰腿疼痛等,博主亲测效果非常棒,因长期久坐写代码,坐姿不规范导致脖子疼,腰椎疼,用过之后疼痛逐渐缓解,现在已无任何疼痛,用过后让你写代码一身轻松,so easy,妈妈再也不用担心我们写代码了。

    扫码下方二维码,关注公众号“伟大程序猿的诞生“,回复“膏药”领取优惠券,进行购买
    扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

    公众号回复“资料获取”,获取更多干货哦~

    有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:
    https://cloud.tencent.com/developer/support-plan?invite_code=ncnq0hloo5yw

    展开全文
  • 深度学习图像处理之垃圾分类

    千人学习 2019-09-29 14:32:47
    深度学习在图像处理领域的发展过程; 解析经典的卷积神经网络; 垃圾分类实战。本课程将使用Pytorch深度学习框架进行实战,并在ubuntu系统上进行演示,包括:不同标注文件下的数据集读取、...
  • 图像识别算法

    万次阅读 多人点赞 2017-09-04 16:33:01
    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件...

    图像特征包括颜色特征、纹理特、形状特征以及局部特征点等。

    局部特点具有很好的稳定性,不容易受外界环境的干扰。

    1. 局部特征点

    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。

    局部特征点是图像特征的局部表达,它只能反正图像上具有的局部特殊性,所以它只适合于对图像进行匹配,检索等应用。对于图像理解则不太适合。而后者更关心一些全局特征,如颜色分布,纹理特征,主要物体的形状等。全局特征容易受到环境的干扰,光照,旋转,噪声等不利因素都会影响全局特征。相比而言,局部特征点,往往对应着图像中的一些线条交叉,明暗变化的结构中,受到的干扰也少。

    而斑点与角点是两类局部特征点。斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。

    2. 斑点检测原理与举例

    2.1 LoG与DoH

    斑点检测的方法主要包括利用高斯拉普拉斯算子检测的方法(LOG),以及利用像素点Hessian矩阵(二阶微分)及其行列式值的方法(DOH)。

    LoG的方法已经在斑点检测这入篇文章里作了详细的描述。因为二维高斯函数的拉普拉斯核很像一个斑点,所以可以利用卷积来求出图像中的斑点状的结构。

    DoH方法就是利用图像点二阶微分Hessian矩阵:

    H(L)=[LxxLxyLxyLyy]

    以及它的行列式的值DoH(Determinant of Hessian):

    det=σ4(Lxx(x,y,σ)Lyy(x,y,σ)−Lxy2(x,y,σ))

    Hessian矩阵行列式的值,同样也反映了图像局部的结构信息。与LoG相比,DoH对图像中的细长结构的斑点有较好的抑制作用。

    无论是LoG还是DoH,它们对图像中的斑点进行检测,其步骤都可以分为以下两步:

    1)使用不同的σ生成(∂2g∂x2+∂2g∂y2)∂2g∂x2,∂2g∂y2,∂2g∂x∂y模板,并对图像进行卷积运算;

    2)在图像的位置空间与尺度空间中搜索LoG与DoH响应的峰值。

    2.2 SIFT

    详细的算法描述参考:SIFT定位算法关键步骤的说明

    2004年,Lowe提高了高效的尺度不变特征变换算法(SIFT),利用原始图像与高斯核的卷积来建立尺度空间,并在高斯差分空间金字塔上提取出尺度不变性的特征点。该算法具有一定的仿射不变性,视角不变性,旋转不变性和光照不变性,所以在图像特征提高方面得到了最广泛的应用。

    该算法大概可以归纳为三步:1)高斯差分金字塔的构建;2)特征点的搜索;3)特征描述。

    在第一步中,它用组与层的结构构建了一个具有线性关系的金字塔结构,让我们可以在连续的高斯核尺度上查找特征点。它比LoG高明的地方在于,它用一阶高斯差分来近似高斯的拉普拉斯核,大大减少了运算量。

    在第二步的特征点搜索中,主要的关键步骤是极值点的插值,因为在离散的空间中,局部极值点可能并不是真正意义上的极值点,真正的极植点可以落在了离散点的缝隙中。所以要对这些缝隙位置进行插值,然后再求极值点的坐标位置。

    第二步中另一关键环节是删除边缘效应的点,因为只忽略那些DoG响应不够的点是不够的,DoG的值会受到边缘的影响,那些边缘上的点,虽然不是斑点,但是它的DoG响应也很强。所以我们要把这部分点删除。我们利用横跨边缘的地方,在沿边缘方向与垂直边缘方向表现出极大与极小的主曲率这一特性。所以通过计算特征点处主曲率的比值即可以区分其是否在边缘上。这一点在理解上可以参见Harris角点的求法。

    最后一步,即为特征点的特征描述。特征点的方向的求法是需要对特征点邻域内的点的梯度方向进行直方图统计,选取直方图中比重最大的方向为特征点的主方向,还可以选择一个辅方向。在计算特征矢量时,需要对局部图像进行沿主方向旋转,然后再进邻域内的梯度直方图统计(4x4x8)。

    2.3 SURF

    详细的算法描述参考:1. SURF算法与源码分析、上  2. SURF算法与源码分析、下

    2006年,Bay和Ess等人基于SIFT算法的思路,提出了加速鲁棒特征(SURF),该算法主要针对于SIFT算法速度太慢,计算量大的缺点,使用了近似Harr小波方法来提取特征点,这种方法就是基于Hessian行列式(DoH)的斑点特征检测方法。通过在不同的尺度上利用积分图像可以有效地计算出近似Harr小波值,简化了二阶微分模板的构建,搞高了尺度空间的特征检测的效率。

    SURF算法在积分图像上使用了盒子滤波器对二阶微分模板进行了简化,从而构建了Hessian矩阵元素值,进而缩短了特征提取的时间,提高了效率。其中SURF算法在每个尺度上对每个像素点进行检测,其近似构建的Hessian矩阵及其行列式的值分另为:

    Happrox=[Dxx(σ)Dxy(σ)Dxy(σ)Dyy(σ)]

    c(x,y,σ)=DxxDyy−(0.9Dxy)2

    其中Dxx,DxyDyy为利用盒子滤波器获得的近似卷积值。如果c(x,y,σ)大于设置的门限值,则判定该像素点为关键字。然后与SIFT算法近似,在以关键点为中心的3×3×3像素邻域内进行非极大值抑制,最后通过对斑点特征进行插值运算,完成了SURF特征点的精确定位。

    而SURF特征点的描述,则也是充分利用了积分图,用两个方向上的Harr小波模板来计算梯度,然后用一个扇形对邻域内点的梯度方向进行统计,求得特征点的主方向。

    3. 角点检测的原理与举例

    角点检测的方法也是极多的,其中具有代表性的算法是Harris算法与FAST算法。

    这两个算法我都有专门写过博文来描述其算法原理。Harris角点FAST特征点检测

    3.1 Harris角点特征提取

    Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。

    在像素点的邻域内,导数矩阵描述了数据信号的变化情况。假设在像素点邻域内任意方向上移动块区域,若强度发生了剧烈变化,则变化处的像素点为角点。定义2×2的Harris矩阵为:

    A(x)=∑x,yω(x,y)[Cx2(x)CxCy(x)CxCy(x)Cy2(x)]=[abbc]

    其中,CxCy分别为点x=(x,y)xy方向上的强度信息的一阶导数,ω(x,y)为对应位置的权重。通过计算Harris矩阵的角点响应值D来判断是否为角点。其计算公式为:

    D=detA−m(traceA)2=(ac−b)2−m(a+c)2

    其中,det和trace为行列式和迹的操作符,m是取值为0.04~0.06的常数。当角点响应值大于设置的门限,且为该点邻域内的局部最大值时,则把该点当作角点。

    3.2 FAST角点特征提取

    基于加速分割测试的FAST算法可以快速地提取出角点特征。该算法判断一个候选点p是否为角点,依据的是在一个像素点p为圆心,半径为3个像素的离散化Bresenllam圆周上,在给定阈值t的条件下,如果在圆周上有n个连续的像素灰度值大于I(p)+t或小于I(p)−t

    针对于上面的定义,我们可以用快速的方法来完成检测,而不用把圆周上的所有点都比较一遍。首先比较上下左右四个点的像素值关系,至少要有3个点的像素灰度值大于I(p)+t或小于I(p)−t,则p为候选点,然后再进一步进行完整的判断。

    为了加快算法的检测速度,可以使用机器学习ID3贪心算法来构建决策树。这里需要说明的是,在2010年Elmar和Gregory等人提出了自适应通用加速分割检测(AGAST)算法,通过把FAST算法中ID3决策树改造为二叉树,并能够根据当前处理的图像信息动态且高效地分配决策树,提高了算法的运算速度。

    4. 二进制字符串特征描述子

    可以注意到在两种角点检测算法里,我们并没有像SIFT或SURF那样提到特征点的描述问题。事实上,特征点一旦检测出来,无论是斑点还是角点描述方法都是一样的,可以选用你认为最有效的特征描述子。

    特征描述是实现图像匹配与图像搜索必不可少的步骤。到目前为止,人们研究了各种各样的特征描述子,比较有代表性的就是浮点型特征描述子和二进帽字符串特征描述子。

    像SIFT与SURF算法里的,用梯度统计直方图来描述的描述子都属于浮点型特征描述子。但它们计算起来,算法复杂,效率较低,所以后来就出现了许多新型的特征描述算法,如BRIEF。后来很多二进制串描述子ORB,BRISK,FREAK等都是在它上面的基础上的改进。

    4.1 BRIEF算法

    BRJEF算法的主要思想是:在特征点周围邻域内选取若干个像素点对,通过对这些点对的灰度值比较,将比较的结果组合成一个二进制串字符串用来描述特征点。最后,使用汉明距离来计算在特征描述子是否匹配。

    BRIEF算法的详细描述可以参考:BRIEF特征描述子

    4.2 BRISK算法

    BRISK算法在特征点检测部分没有选用FAST特征点检测,而是选用了稳定性更强的AGAST算法。在特征描述子的构建中,BRISK算法通过利用简单的像素灰度值比较,进而得到一个级联的二进制比特串来描述每个特征点,这一点上原理与BRIEF是一致的。BRISK算法里采用了邻域采样模式,即以特征点为圆心,构建多个不同半径的离散化Bresenham同心圆,然后再每一个同心圆上获得具有相同间距的N个采样点。

    image

    由于这种邻域采样模式在采样时会产生图像灰度混叠的影响,所以BRISK算法首先对图像进行了高斯平滑图像。并且使用的高斯函数标准差σi与各自同心圆上点间距成正比。

    假设在(N2)个采样点中任意选取一对采样点(pi,pj),其平滑后的灰度值分别为I(pi,σi)I(pj,σj),则两点间的局部梯度为:

    g(pi,pj)=(pj−pi)I(pj,σj)−I(pi,σi)∥pj−pi∥2

    假设把所有采样点对构成的集合记为A,则

    A={(pi,pj)∈R2×R2|i<N且j<i且i,j∈N}

    那么短距离采样点对构成的集合S以及长距离采样点构成的集合L分别为:

    S={(pi,pj)∈A|∥pj−pi∥<δmax}⊆A

    L={(pi,pj)∈A|∥pj−pi∥>δmin}⊆A

    其中,通常设置距离阈值为δmax=9.75δ,δmin=13.67δ,其中δ为特征点的尺度。

    由于长距离采样点对含有更多的特征点角度信息,且局部梯度相互抵消,所以可以在集合L中计算出特征点的特征模式方向为:

    g=(gxgy)=1L∑(pi,pj)∈Lg(pi,pj)

    然后将采样模式围绕特征点旋转角度α=arctan2(gy,gx),进而特征描述子具有了旋转不变性。

    最后,在旋转后的短距离采样点集合S内,对所有的特征点对(Piα,pjα)行像素灰度值比较,最终形成512比特的二进制字符串描述子。

    4.3 ORB算法

    ORB算法使用FAST进行特征点检测,然后用BREIF进行特征点的特征描述,但是我们知道BRIEF并没有特征点方向的概念,所以ORB在BRIEF基础上引入了方向的计算方法,并在点对的挑选上使用贪婪搜索算法,挑出了一些区分性强的点对用来描述二进制串。ORB算法的详细描述可以参考:ORB特征点检测

    4.4 FREAK算法

    Fast Retina KeyPoint,即快速视网膜关键点。

    根据视网膜原理进行点对采样,中间密集一些,离中心越远越稀疏。并且由粗到精构建描述子,穷举贪婪搜索找相关性小的。42个感受野,一千对点的组合,找前512个即可。这512个分成4组,前128对相关性更小,可以代表粗的信息,后面越来越精。匹配的时候可以先看前16bytes,即代表精信息的部分,如果距离小于某个阈值,再继续,否则就不用往下看了。

    5. 应用之图像匹配

    图像匹配的研究目标是精确判断两幅图像之间的相似性。图像之间的相似性的定义又随着不同的应用需求而改变。例如,在物体检索系统中(找出含有亚伯拉罕·林肯的脸的图像),我们认为同一物体的不同图像是相近的。而在物体类别检索系统中(找出含有人脸的图像),我们则认为相同类的物体之间是相近的。

    这里局部特征点的应用主要表现在第一种相似性上,也就是说我们需要设计某种图像匹配算法来判断两幅图像是否是对同一物体或场景所成的图像。理想的图像匹配算法应该认为两幅同一物体的图像之间相似度很高,而两幅不同物体的图像之间相似度很低,如下图所示。

    image

    由于成像时光照,环境,角度的不一致,我们获取的同一物体的图像是存在差异的,如同上图中的两辆小车的图像一样,角度不同,成像就不同。我们直接利用图像进行比较是无法进行判断小车是否为同一类的。必须进行特征点的提取,再对特征点进行匹配。

    图像会存在哪些变换呢?一般来说包括了光照变化与几何变化,光照变化表现是图像上是全局或局部颜色的变化,而几何变化种类就比较多了,可以是平移、旋转、尺度、仿射、投影变换等等。所以我们在研究局部特征点时才要求特征点对这些变化具有稳定性,同时要有很强的独特性,可以让图像与其他类的图像区分性强,即类内距离小而类间距离大。

    6. 参考文献

    [1] 基于角点的图像特征提取与匹配算法研究,薛金龙,2014.

    [2] 基于局部特征的图像匹配与识别,宫明明,2014.

    [3] 基于视觉信息的图像特征提取算法研究,戴金波,2014.

    [4] 图像局部不变性特征与描述,王永明,王贵锦编著。

    展开全文
  • TensorFlow实战教程,图像识别应用示例教程,该课程特邀请AI100 阿里2017 云栖大会 API Solution大赛一等奖团队的联合创始人智亮先生,他将给大家介绍当前图像识别领域中先进的深度学习模型,并从源码级给大家讲解...
  • 图像识别基本概念

    千次阅读 2018-07-02 17:49:27
    一 卷积神经网络的组成图像分类可以认为是给定一副测试图片作为输入 ,输出该图片 属于哪一类。参数 W 是图像的宽度,H 是高度,C 是通道的个数;彩色图像中 C = 3,灰度图像 中 C = 1。一般的会设定总共类别的个数...

    图像分类可以认为是给定一副测试图片作为输入 ,输出该图片 属于哪一类。参数 W 是图像的宽度,H 是高度,C 是通道的个数;彩色图像中 C = 3,灰度图像 中 C = 1。一般的会设定总共类别的个数,例如在ImageNet竞赛中总共有 1000 个类别;在CIFAR10 中有 10 个类别。卷积神经网络则可以看成这样的黑匣子。输入是原始图片 I,输出是 L 维的向量 。L表示预先设定的类别个数。向量 v 的每一个维度代表图像属于对应类别的可能性的大小。如果是 单类别识别问题,也就是说每一幅图像只分配 L 个标签中的一个标签,那么可以对 v 中的元素进行比较,选取最大的值对应的标签作为分类的结果。v 可以是一个概率分布的形式,即每一个元素,并且  。其中  表示 v 的第 i 个元素。也可以是从负无穷大到正无穷大的实数,越大代表属于对应类别的可能性越大。在卷积神经网络的内部,是由很多的层构成。每一个层可以认为是一个函数,输入是信号 x,输出是信号  。输出的 y 又可以作为其他层的输入。以下从网络的前段,中端,末端的角度调研常用的层的定义。前端主要考虑对于图像的处理过程,中端是各种神经元,末端主要考虑与训练网络有关的损失函数。

    前段指 的是对图像数据的处理,可以称之为数据层。

    输入的图像的大小可能各不相同,有一些图像的分辨率较大,有一些比较小。而且长宽比也不一定会一样。对于这样的不一致性,理论上而言,可以不予处理,但是这要求网络中其他的层次支持这样的输入。目前大部分情况下采用的是通过裁剪的方法使得输出的图像是固定分辨率的。 在网络训练的阶段,裁剪的位置从原始的图像上随机选择,只需要满足裁剪 的子图完全落在图像中即可。通过随机的方式,是因为相当于增加了额外的数据,能够缓解过拟合的问题。

    裁剪之后的原图,每一个像素的是 0 到 255 的固定的数值。进一步的处理,包括减去均值,以及等比例缩放像素值使得像素值的分部基本在 [−1, 1] 之间。除了这些常规的操作之外,也会对图像进行归一化,相当于图像增强,比如 [9, 18, 17] 中对 CIFAR10 的数据预处理中。比如,对于每一个像素,随机选择 RGB 三个通道中的一个,然后在原像素值的基础上,随机添加一个从 [-20,20] 之间的数值。

    以下介绍在卷及神经网络中常用的层的定义,即输入的数据 x 是什么维度,输出 y 是什么维度以及如何从输入得到输出。

    如下图:

    卷积神经网络基本组成

    卷积层输入表示为 ,是一个三维的数据。表示有C个矩阵,每个矩阵这里表示为 ,也称之为特征图。输出 ,也是一个三维数据。特征图分辨率从变为,特征图的个数也从C变为。 从输入到输出的一般公式为: 

    矩阵  称之为卷积核。属于卷积层的参数,一般通过随机梯度下降更新。 为输入数据的第 c 个特征图,但在一些情况下,也会在图像的周围补白。符号 ∗ 表示二维数据的卷积运算。卷积定义为 符号  表示对应矩阵的 u 行 v 列的元素值。在有一些的网络结构中,并不是选择所有的 (u, v),而是每隔一定数量选择一个。 直观而言,卷积层相当于对图像进行滤波,希望能够抽象出来局部信息。局部信息通过较小的卷积核在图像不同的局部位置上扫描而得。卷积层计算

    下图是是一个动态示例,来源于 convolutional-networks

    输入的信号表示为 ,具有 C 个通道,每一个通道是一个特征图。输出  具有的通道个数与输入相同,但是特征图的分辨率一般是降低。

    池化层是对每一个特征图单独进行操作并且输出一个对应的特征图。假设池化范围是 ,那么输入的特征图提取出来  的小图,然后寻找子图的最大值,或者计算子图的均值,作为一个输出。签证一般称之为最大化池化,后者是均值池化。从图像中提出小图的方式可以是任意一个子图,也可以是每隔多个像素值得到一个子图。池化层的作用包括降低特征图的分辨率,从而减少计算量,以及增强网络的鲁棒性。比如对于最大化池化的方式,对于图像的平移具有一定的鲁棒性。

    池化层的作用包括降低特征图的分辨率,从而减少计算量,以及增强网络的鲁棒性。比如对于最大化池化的方式,对于图像的平移具有一定的鲁棒性。

    实例,对于如下特征图 4x4,使用最大池化效果如下:池化图中每个像素点的值是上面各个格子的数值,然后要对这张 44的图片进行池化;那么采用最大池化也就是对上面 44的图片分块,每块大小为2*2,然后统计每个块的最大值,作为下采样后图片的像素值。

    CCCP层的输入是,输出是。特征层的分辨率保持不变,但是通道数有所改变。其定义为:  等效于卷积核为 1x1的卷积层。 CCCP 层相当于在多个全连接层,每一个全连接将信号从 C 维度映射为维度。

    该层的输入认识是一个信号 x。ReLU 并不要求输入信号的维度必须是一维或者几维的,因为该层的操作是对输出的每一个元素单独操作。但依然可以认为输入的 。输出是一个和输入维度一样的信号y。 假设从输入到输出的一个示例为: 

    显然这是一个非线性操作,ReLU 的存在使得网络的表达更加丰富。同时从定义中容易得出,该操作非常简单,并且在不同的输入点之间进行并行。ReLU 在一定程度上也是 S 行函数的近似。  进一步将ReLU改进为:  当元素值为负数的时候,通过  的方式,避免了导数为 0,无法传播的情况。 进一步使用修正的ReLu为:  其中斜率  不再是一个固定的数值,而是通过梯度下降的方式就行优化

    Dropout层的输入为。这里并不要求输入是三维的信号,任意可能的维度都是可以。Dropout 同样是针对每一个数据进行操作。输出 y 与输入的大小一致。在网路进行训练的时候,对于输入的每一个数值 ,按照概率 p 设置为 0,否则保留。数学形式可以写为:  其中  是随机变量,并且满足 的概率为 p, 的概率为 1 − p。实际中,概率 p 往往设置 为 1。

    然而在进行测试的时候,计算公式更正为 相当于一个期望。

    Dropout层的引入主要是为了减少过拟合的问题,减少不同参数的耦合性。

    输入时。这里要求将输入认识是一个列向量。输出为 。从输入到输出的关系是:  其中,是投影矩阵阵以及阈值,是该层的参数,通过随机梯度下降的方式更新优化。

    全连接层是一个非常常用的层,然而该层在一定程度上会损失图像的空间信息,故而在有一些网络中,抛弃了全连接层。

    LRN层做的事是对当前层的输出结果做平滑处理。下图是示例:

    LRN示例前后几层(对应位置的点)对中间这一层做一下平滑约束。

    输入时一个三维信号,输出也是一个三维信号 局部响应一体化层(Local Response Normalization)通过如下公式计算:

    其中 代表第  个通道上位置是的信号值。示例参数设置为: 

    详细理解参考:Batch Normalization

    批归一化层的输入依然是三维的信号 ,输 出 y 与输入具有相同的大小。其归一化的基本思路是对输入的每一个元素按照如下方式归一化:  使得输出的  均值尽量的为 0,以及方差尽量为 1。通过这样的方式,每一层的数据分布基本上一致。该方法能够提升优化的速度。

    其优点如下:

    • 可以选择比较大的初始学习率,此算法有快速训练收敛的特性。
    • 可以不用考虑过拟合中的 Dropout ,L2正则项选择问题,采用BN之后可以移除这两个参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性。
    • 不再需要局部响应归一化层,因为BN本身就是一个归一化网络层。
    • 可以完全打乱训练数据,防止每批训练时某些样本经常被挑选到。

    从网络训练的角度,末端主要是损失函数。也就是将数据映射为一个标量。通过随机梯度下降的方式,使得损失函数逐渐的降低。目前使用比较广泛的是 Softmax 回归和 Hinge 损失函数。

    较通俗易懂的理解Softmax回归的一篇博客是 Softmax回归

    输入时 ,表示输入图像在各个类别上的可能性;同时需要输入图像的标签 k。输出是损失值。首先将输入归一化到 [0, 1] 之间,通过 Softmax 函数:

     然后通过交叉熵定义损失值,也就是:  该损失函数主要应用与单类别分类问题中。 下图是函数的坐标轴图像:softmax_function从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。 从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。

    2001年,神经科学家Dayan、Abott从生物学角度,模拟出了脑神经元接受信号更精确的激活模型,该模型如下图所示:softplus

    展开全文
  • 图像识别

    2020-02-09 12:40:21
    转载:https://github.com/gzr2017/ImageProcessing100Wen(未经许可、有要求请... import cv2 import numpy as np np.random.seed(0) # read image img = cv2.imread("imori_1.jpg") H, W, C = img.shape ...gra...
  • 张长水:机器学习与图像识别

    万次阅读 2017-06-10 10:13:26
    本讲座选自清华大学自动化系张长水老师于2015年11月26日在 RONG v2.0---图形图像处理与大数据技术论坛上所做的题为《机器学习与图像识别》的演讲。  张长水:我的题目叫《机器学习和图像识别》。我主要在做...
  • 图像识别过程(概念)

    万次阅读 多人点赞 2018-01-11 15:22:31
    图像识别过程分为图像处理和图像识别两个部分。 图像处理(imageProcessing)利用计算机对图像进行分析,以达到所需的结果。 图像处理可分为模拟图像处理和数字图像处理,而图像处理一般指数字图像处理。 这种处理...
  • 图像识别的原理、过程、应用前景,精华篇!

    万次阅读 多人点赞 2018-09-28 07:53:49
    图像识别的原理、过程、应用前景,精华篇!   https://mp.weixin.qq.com/s/THE5B77C_AJa5y6sfOXpaA   图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。...
  • 一张图看懂图像识别算法发展历史

    千次阅读 2019-08-22 13:50:24
    一张图看懂图像识别算法发展历史
  • 写在前面这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点。而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更完善...
  • 新增的一些指令 之前Airtest已经支持Windows应用程序的测试了,但在涉及到对一些要求DirectInput设备的PC游戏的测试时,之前提供的方法并不能十分有效地模拟键盘和鼠标输入,因此我们提供了新的接口来支持此类PC游戏...
  • 图像识别算法基础问题

    千次阅读 2015-06-26 05:14:02
    图形图像使用和类型。色觉。彩色图像。 数字化理论基础。计算机图形技术手段。分辨率,色深,缩放,取样。 图像基础分析。统计分析问题。图像数字特性。 图像分析。关于图像的各种频率分布图的建立。 完全和局部的...
  • 基于深度学习的图像识别算法研究

    万次阅读 2016-10-24 12:34:34
    作者:丰晓霞 ...(1)认真分析了图像识别的方法及存在的问题,对现有的图像识别算法进行了对比研究,详细叙述了深度学习的发展和进展,对比了深度学习结构相比浅层结构的优势所在,总结了深度学习的常用方法,
  • 我想做一个安卓app,能通过摄像头识别数字和字幕,求推荐相关算法
  • 传统图像识别算法与图像质量评估

    千次阅读 2019-06-13 21:35:01
    DMS 在商用车和客车上逐渐得到普及,相信在DMS开发的过程中,工程师都会遇到算法图像质量的问题。 最近我在这方面也有一些自己的陋见,主要集中在如何评估算法图像质量上。 讨论这个问题,有两个阶段,第一...
  • 再谈AR中的图像识别算法

    千次阅读 2017-04-24 22:33:46
    之前在《浅谈移动平台创新玩法》简单的猜测了easyar中使用的图像识别算法,基于图片指纹的哈希算法的图片检索 。后再阿里引商大神的指点下,意识到图片检测只适用于静态图片的识别,只能做AR脱卡(不进行图像追踪)...
  • 基于DSP的嵌入式视觉应用平台存在的主要问题为:运算速度较低,通常需要设计专用的多核DSP、开发相应的并行处理机制、并利用其提供的指令集进行算法优化,使得专注于图像处理算法的工程师“望而生畏”。而ARM平台不...
  • 基于标准像素图像识别算法

    千次阅读 2015-03-05 16:27:48
    自己试着实现一些简单规则的图像识别算法,纯属交流,不喜勿喷!

空空如也

1 2 3 4 5 ... 20
收藏数 288,840
精华内容 115,536
关键字:

图像识别