深度学习与图像识别 图像检测

 
主要做了基于深度学习的图像识别与检测的研究,下面是一些整理内容

1、深度学习的优势


(1)从统计,计算的角度看,DL特别适合处理大数据

       a、用较为复杂的模型降低模型偏差

       b、用大数据提升统计估计的准确度

       c、用可扩展的梯度下降算法求解大规模优化问题

这个大数据是除了数量上的大,还有更重要的是维度的大,很多算法本身是无法处理高纬度数据的,例如Kernel学习机相关的算法, 虽然理论上是先将数据向高维空间映射,然后在高维空间进行线性的求解,实际上在处理的时候还是回到原空间处理。传统的BP算法针对高维的数据也是效果不佳。

 

CNN等为什么对图像领域更加有效,因为其不但关注了全局特征,更是利用了图像识别领域非常重要的局部特征,应该是将局部特征抽取的算法融入到了神经网络中。图像本身的局部数据存在关联性,而这种局部关联性的特征是其他算法无法提取的。深度学习很重要的是对全局和局部特征的综合把握


(2)深度学习不是一个黑箱系统。它像概率模型一样,提供一套丰富的、基于联接主义的建模语言。利用这套语言系统,我们可以表达数据内在的丰富关系和结构。比如用卷积处理图像中的二维空间结构,用递归神经网络(Recurrent Neural Network)处理自然语言等数据中的时序结构


(3)深度学习几乎是唯一的端到端的学习系统

它直接作用于原始数据,自动逐层进行特征学习,整个过程直接优化目标函数。


2、深度学习在图像识别中的发展趋势


(1)模型层次不断加深

       2012Alex 获得ImageNet 冠军,其所用的AlexNet5个卷积层 3个pool层 和2个全连接层

       2014年获得ImageNet的GoogleNet,使用了59个卷积层,16个pool层和2个全连接层。

       2016年微软的ResNet深度残差网络,用了152层的架构


(2)模型结构日趋复杂

       传统的卷积神经网络都是简单的 conv-pool-FC

       后来NIN 用mlpconv 代替传统的 conv层(mlp 实际上是卷积加传统的多层感知器 )。这样做一方面降低过拟合程度提高模型的推广能力,另一方面为大规模并行训练提供非常有利的条件


(3)海量的标注数据和适当的数据扰动

       DL需要大量的数据,现有的图像数据不能满足需求,结合图像数据的特点,通过平移、水平翻转、旋转、缩放等数据扰动方式可以产生更多的有效数据,普遍提高识别模型的推广能力。


3、如何应用深度学习


(1)  将ImageNet上训练得到的模型作为起点,利用目标训练集和反向传播对其进行继续训练,将模型适应到特定的应用

(2)  如果目标训练集不够大,可以将底层的网络参数固定,沿用ImageNet上的训练集结果,只对上层进行更新。

(3)  直接采用ImageNet上训练得到的模型,把最高的隐含层的输出作为特征表达,代替常用的手工设计的特征。

 

4、卷积神经网络


(1)什么是卷积神经网络

     

 卷积神经网络是一种为了处理二维输入数据而特殊设计的多层人工神经网络。网络中的每层都由多个二维平面组成,而每个平面由多个独立的神经元组成。相邻两层的神经元之间互相连接。

A、       卷积特征提取(局部连接,权值共享

从图像中随机选取一小块局域作为训练样本,从该样本中学习到一些特征,然后将这些特征作为滤波器,与原始整个图像作卷积运算,从而得到原始图像中任意位置上的不同特征的激活值(见动图)


B、       池化

通过将卷积层提取的特征输入至分类器中进行训练,可以实现输出最终的分类结果。理论上可以直接输出,然而这将需要非常大的计算开销,特别是对于大尺寸高分辨率图像

由于图像具有一种“静态性”的属性,在图像的一个局部区域得到的特征极有可能在另一个局部区域同样适用。因此,对图像的一个局部区域中不同位置的特征进行聚合统计操作,这种操作统称为池化


(2)卷积神经网络的发展


A、 1990年,LeCun等在研究手写体数字识别问题时,首先提出来使用梯度反向传播算法训练的卷积神经网络模型,并在MNIST手写数字数据集上表现出了好的性能。

B、 2012年ImageNet比赛中 AlexKrizhevsky等提出的AlexNet首次将深度学习应用到大规模图像分类,并获得了冠军。

AlexNet用了5层卷积层和3层全连接层,最后用softmax进行分类。

改进点:

a、       采用dropout训练策略,在训练过程中将输入层和中间层的一些神经元随机置零。这模拟了噪声对输入数据的各种干扰使一些神经元对一些视觉模式产生漏检的情况。使得训练过程收敛过慢,但得到的网络模型更加鲁棒。

b、       采用ReLU(修正线性单元)作为激励函数,降低了计算的复杂度

c、        通过对训练样本镜像映射和加入随机平移扰动,产生了更多的训练样本,减少了过拟合

C、 2013 ImageNet的获胜队伍Clarifai 提出了卷积神经网络的可视化方法,运用反卷积网络对AlexNet的每个卷积层进行可视化,以此来分析每一层所学习到的特征从而加深了对于卷积神经网络为什么能在图像分类上取得好的效果的理解,并据此改进了该模型。


D、 2014 ImageNet Google团队


网络有22 层,受到赫布学习规则的启发,同时基于多尺度处理的方法对卷积神经网络作出改进。该文基于Network in Network思想提出了Inception模块。Inception 模块的结构如图所示,它的主要思想是想办法找出图像的最优局部稀疏结构,并将其近似地用稠密组件替代。这样做一方面可以实现有效的降维,从而能够在计算资源同等的情况下增加网络的宽度与深度;另一方面也可以减少需要训练的参数,从而减轻过拟合问题,提高模型的推广能力。


E、 2015年微软亚洲研究院所提出的152层的深度残差网络以绝对的优势获得图像检测、图像分类和图像定位3个项目的冠军

 

5、物体检测

(1)物体分类与检测的难点与挑战

物体分类与检测是视觉研究中的基本问题,也是一个非常具有挑战性的问题.物体分类与检测的难点与挑战在本文中分为3个层次:实例层次、类别

层次和语义层次,如图所示

 

 

 

a)       实例层次

针对单个物体实例而言,通常由于图像采集过程中光照条件、拍摄视角、距离的不同、物体自身的非刚体形变以及其他物体的部分遮挡,使得物体实例的表观特征产生很大的变化,给视觉识别算法带来了极大的困难

b)       类别层次

困难与挑战通常来自3个方面,

类内差大,也即属于同一类的物体表观特征差别比较大,其原因有前面提到的各种实例层次的变化,但这里更强调的是类内不同实例的差别,例如图(a)所示

类间模糊性,即不同类的物体实例具有一定的相似性,如图(b)背景的干扰在实际场景下,物体不可能出现在一个非常干净的背景下,往往相反,背景可能是非常复杂的、对我们感兴趣的物体存在干扰的,这使得识别问题的难度大大增加

c)        语义层次.

困难和挑战与图像的视觉语义相关,这个层次的困难往往非常难处理,特别是对现在的计算机视觉理论水平而言,一个典型的问题称为多重稳定性.如图(C)左边既可以看成是两个面对面的人,也可以看成是一个燃烧的蜡烛;右边则同时可以解释为兔子或者小鸭.同样的图像,不同的解释,这既与人的观察视角、关注点等物理条件有关,也与人的性格、经历等有关,而这恰恰是视觉识别系统难以处理的部分



(2)物体检测的发展(详细算法介绍见后续)

       较有影响力的工作包括:

A、       RCNN (2013)

B、       Fast RCNN

C、       Faster RCNN

D、      R-FCN

E、       YOLO

F、       SSD


 

参考文献


【1】  基于深度学习的图像识别进展:百度的若干实践 (2015 百度公司)

【2】  图像识别中的深度学习 (2015 香港中文大学 王晓刚)

【3】  图像无图分类与检测算法综述 (2014 中国科学院自动化研究所模式识别国家重点实验室智能感知与计算研究中心)

【4】  深度卷积神经网络在计算机视觉中的应用研究综述 (2016 上海交通大学)

【5】  Rich feature hierarchies foraccurate object detection and semantic segmentation (2014)

【6】  Fast R-CNN (2015)

【7】  Faster R-CNN :Towards Real-Time Object Detection with Region Proposal Networks (2016)

【8】  Detection(网址上面描述各种检测算法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58899.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像识别

图像识别主要用到了两个第三方的iOS框架:OpenCV和TesseractOCR,OpenCV用来做图像处理,定位到身份证号码的区域,TesseractOCR则是对定位到的区域内的内容进行识别。 OpenCV中的一些简单的处理图像的方法:灰度处理、二…

tesseract -图像识别

20230306 下载链接:https://digi.bib.uni-mannheim.de/tesseract/ 如下选择最新的版本,这里我选择tesseract-ocr-w64-setup-5.3.0.20221222.exe 配置tesseract的环境变量 在用户变量path中,添加安装路径如:D:\Program Files\Tesse…

机器图像识别常用算法,图像对比识别技术

图像识别算法都有哪些 图像识别算法:1人脸识别类(Eigenface,Fisherface算法特别多),人脸检测类(j-v算法,mtcnn)2车牌识别类,车型识别类(cnn)3字符识别&#…

最新开源的图像识别算法来了!

Datawhale开源 方向:图像识别开源项目 人脸、车辆、人体属性、卡证、交通标识等经典图像识别能力,在我们当前数字化工作及生活中发挥着极其重要的作用。业内也不乏顶尖公司提供的可直接调用的API、SDK,但这些往往面临着定制化场景泛化效果不…

图像识别最好的算法,图片相似度识别算法

现在人脸识别最有效的算法是什么? 最好的人脸识别系统在理想情况下比人类识别的表现要好的多。但是一旦环境情况变糟,系统的表现就差强人意了。而计算机科学家们当然是非常想要开发出一种算法,在各种情况下都能够表现优异。 现在&#xff0…

图像识别技术OpenCV | C++版本

基础入门 图像与信号 图像 图像是人对视觉感知的物质再现。图像可以由光学设备获取,也可以人为创作。随着数字采集技术和信号处理理论的发展,越来越多的图像以数字形式存储。因而,有些情况下”图像“一词实际上是指数字图像。图像相关的话…

主流深度学习OCR文字识别方法对比:Tesseract(LSTM)、CTPN+CRNN、Densenet

作者 | Raini 出品 | 北京图特摩斯科技有限公司 (www.thutmose.cn) 也是几个月前的项目了,由于手头事儿多,也已经转交给别的同事去继续优化。本博客仅做个简单的记录用。 这里是 Tesseract(LSTM)、CTPNCRN…

吐槽 Twitter 后,马斯克用 30 亿美元入股 Twitter,成为最大股东

作者 | 苏宓 出品 | CSDN(ID:CSDNnews) 曾一年登上 74 次热搜、曾考虑辞职做全职“网红”,掌握流量密码的硅谷“钢铁侠”埃隆马斯克算是把互联网玩得明明白白。 这不,这两天在国内外热榜、科技网站的头版头条再现马斯克…

chatgpt赋能python:Python怎样使用断言?

Python怎样使用断言? 在Python中,断言是一种在程序执行中自动检查程序是否具有给定条件的方法。在程序的开发和调试过程中,通过正确使用断言,可以增强代码的可靠性并提升编程效率。 Python中的断言语法 Python中的断言语法非常…

chatgpt赋能python:如何撤销Python代码的错误

如何撤销Python代码的错误 Python是一种优秀的编程语言,但每个程序员都会面临代码错误的问题。在Python中,难免会出现语法错误、逻辑错误或运行时错误。因此,本文将介绍一些常见的问题,并提供一些解决方法。 1. 语法错误 语法错…

chatgpt赋能python:Python查错技巧:快速定位和解决代码错误

Python查错技巧:快速定位和解决代码错误 作为一名10年Python编程经验的工程师,我深知在Python编程过程中,查错是一个必须掌握的技能。无论你是初学者还是资深工程师,在Python编程过程中,都会遇到各种各样的问题&#…

chatgpt赋能python:Python编写错误怎么改?

Python编写错误怎么改? 为什么需要改错误? 在Python编程中,错误是不可避免的。它们可能会使你的程序崩溃或者在运行时出现奇怪的行为。虽然有时候错误是你打的故意的代码,但是大多数情况下它们是意外的、不必要的,并…

chatgpt赋能python:PythonRepair:针对代码错误的Python自动修复工具

Python Repair: 针对代码错误的Python自动修复工具 介绍 Python是一种著名的高级编程语言,许多开发人员使用它来创建各种类型的程序。在开发这些程序的过程中,许多人都遇到过代码错误的问题。这些错误可能会耗费大量时间和精力来诊断和修复。在这种情况…

chatgpt赋能python:如何正确处理Python代码中的错误提示

如何正确处理Python代码中的错误提示 Python是一种非常广泛使用的编程语言,因其易读性和简洁性而备受青睐。在编写代码时,错误提示很常见,这些错误提示含有重要信息,可以帮助我们找到代码中的问题。但是,如何正确处理…

chatgpt赋能python:Python出现错误的解决方案

Python出现错误的解决方案 Python是一门广泛应用于数据科学、网站开发和人工智能领域的强大编程语言。它的简洁性、易读性和高效性吸引了越来越多的开发者。不过,就像任何一门编程语言一样,Python也会出现错误。这篇文章将介绍Python出现错误的常见原因…

chatgpt赋能python:Python如何删除错误代码

Python如何删除错误代码 Python是一种简单易学且功能强大的编程语言,但在编写代码时难免会出现错误。在这篇文章中,我们将介绍如何找到和删除Python代码中的错误,并提供一些实用技巧来避免这些错误。 检查错误代码 当您发现Python代码无法…

chatgpt赋能python:Python错误处理:概述

Python错误处理:概述 在Python编程中,错误处理是非常重要的一环。错误可能在程序执行的任何时刻出现,并可能导致程序崩溃或产生不可预期的结果。在这篇文章中,我们将介绍Python中的错误处理机制,包括常见的错误类型、…

chatgpt赋能python:Python找错误入门指南

Python找错误入门指南 Python是一种简单易学、功能强大的高级编程语言,广泛应用于各种领域。但是在编写Python程序时,难免会遇到各种错误,这时就需要我们用一些方法来快速找到错误所在,以便及时修复。 常见的Python错误类型 在…

chatgpt赋能python:Python出错处理指南:了解常见错误类型和避免错误

Python出错处理指南:了解常见错误类型和避免错误 Python是一种功能强大的编程语言,但是在编码过程中,偶尔会出现错误。如何有效地处理Python错误是一个需要深入了解的问题。在本文中,我们将介绍常见的Python错误类型以及如何避免…

chatgpt赋能python:Python如何定位错误

Python如何定位错误 在Python编程中,定位错误是非常重要的一环。在开发过程中,程序难免会出现各种各样的bug,而快速准确地定位错误可以提高工作效率,节省时间。 常见错误 Python编程中,常见的错误类型包括语法错误、…