人工智能YOLO V2 图像识别实验报告材料文档格式.docx

上传人:b****5 文档编号:17471572 上传时间:2022-12-01 格式:DOCX 页数:25 大小:5.33MB
下载 相关 举报
人工智能YOLO V2 图像识别实验报告材料文档格式.docx_第1页
第1页 / 共25页
人工智能YOLO V2 图像识别实验报告材料文档格式.docx_第2页
第2页 / 共25页
人工智能YOLO V2 图像识别实验报告材料文档格式.docx_第3页
第3页 / 共25页
人工智能YOLO V2 图像识别实验报告材料文档格式.docx_第4页
第4页 / 共25页
人工智能YOLO V2 图像识别实验报告材料文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

人工智能YOLO V2 图像识别实验报告材料文档格式.docx

《人工智能YOLO V2 图像识别实验报告材料文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能YOLO V2 图像识别实验报告材料文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

人工智能YOLO V2 图像识别实验报告材料文档格式.docx

众所周知,当前是信息时代,信息的获得、加工、处理以与应用都有了飞跃开展。

人们认识世界的重要知识来源就是图像信息,在很多场合,图像所传送的信息比其他形式的信息更丰富、真切和具体。

人眼与大脑的协作使得人们可以获取、处理以与理解视觉信息,人类利用视觉感知外界环境信息的效率很高。

事实上,据一些国外学者所做的统计,人类所获得外界信息有80%左右是来自眼睛摄取的图像。

由此可见,视觉作为人类获取外界信息的主要载体,计算机要实现智能化,就必须能够处理图像信息。

尤其是近年来,以图形、图像、视频等大容量为特征的图像数据处理广泛应用于医学、交通、工业自动化等领域。

深度学习是机器学习中一种基于对数据进展表征学习的方法。

观测值〔例如一幅图像〕可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。

而使用某些特定的表示方法更容易从实例中学习任务〔例如,人脸识别或面部表情识别〕。

深度学习的好处是用非监视式或半监视式的特征学习和分层特征提取高效算法来替代手工获取特征。

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进展分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

目标检测对于人来说是再简单不过的任务,但是对于计算机来说,它看到的是一些值为0~255的数组,因而很难直接得到图像中有人或者猫这种高层语义概念,也不清楚目标出现在图像中哪个区域。

图像中的目标可能出现在任何位置,目标的形态可能存在各种各样的变化,图像的背景千差万别……,这些因素导致目标检测并不是一个容易解决的任务。

这次课程项目,正是基于视觉、深度学习、目标识别而进展的,是一个热度很高的话题。

基于深度学习的目标识别研究具有重大的意义,深度学习的目标识别算法对于未来能够使用目标检测和图像识别的手段运用于物联网、智能设备、生物制药经济调控等多领域有很大的作用。

机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。

机器能否像人类一样能具有学习能力呢?

1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。

4年后,这个程序战胜了设计者本人。

又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。

这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。

深度学习最近几年开展速度十分快,因此同时也推动了目标识别技术的开展,技术的革新总是相互影响的。

目标检测是图像处理和计算机视觉的一个重要分支,在理论和实践上都有重大意义。

近年来,随着物联网的高速开展与智能终端的广泛普与,目标检测技术成了机器视觉领域的研究热点,被国外学者广泛关注。

目标检测的研究主要包括了基于视频图像的目标检测和基于静态图片的目标检测。

本文主要讨论基于静态图片的目标检测算法,即在静态图片中检测并定位所设定种类的目标。

基于静态图片的目标检测的难点主要在于图片中的目标会因光照、视角以与目标部等变化而产生变化。

针对以上的难点,国外学者进展了很多尝试。

目前提出的方法主要分为基于形状轮廓的目标检测算法和基于目标特征的检测方法。

计算机视觉是指用计算机实现人的视觉功能,它的研究目标就是使计算机具有用过一幅或多幅图像认知周围环境的能力〔包括对客观世界三维环境的感知、识别与理解〕。

运动目标检测作为计算机视觉技术的一个分支,就是对视场的运动目标,如人或交通工具,进展实时的观测,并将其分类,然后分析他们的行为。

目前,国际上许多高校和研究所,如麻省理工学学院、牛津大学等都专门设立了针对运动目标检测的研究组或者研究实验室。

美英等国家已经研究了大量的相关项目。

一些著名公司和研究机构,如IBM、Microsoft、麻省理工学院等近几年来投入了大量的人力物力来进展智能监控系统的研究,局部成果已经转化为产品投入了市场。

目前在国的研究机构中,中国科学院自动化研究所下属的模式识别国家重点实验室视觉监控研究处于领先地位。

他们在交通场景视觉监控、人的运动视觉监控和行为模式识别方面进展了深入研究。

另外他们也总结了英国雷丁大学VIEWS的车辆交通监控原型系统的研究经验,在之前的理论研究的根底上,自行设计并初步实现了一个拥有完全自主知识产权的交通监控原型系统vstart(Visualsurveillancestar)。

国其他高校如交通大学、航空航天大学也对这方面进展了研究。

尽管这样,目前在运动目标检测和视觉监控这方面仍然存在着许多不足:

目前国市场上所见到的大局部智能监控产品来源于国外,性能和可靠性不够,并且维护和安装问题需要外方全方位参加,给国家安全带来了巨大的隐患。

目标之间互遮挡和人体自遮挡问题,尤其是在拥挤状态下,多人的检测更是难处理。

本文是基于回归方法的深度学习目标识别算法YOLO的研究。

第一章:

前言。

主要介绍课程项目背景与意义、国外研究的现状,以与本论文的结构。

第二章:

使用工具介绍与安装。

包括CentOS系统、OpenCV工具、CUDA开发环境、环境的搭建。

第三章:

YOLO算法简介。

包括YOLO方法特点、核心思想和实现方法、以与YOLO的创新。

第四章:

训练数据采集与制作。

包括训练数据的采集、训练数据的制作。

第五章:

训练配置、训练与测试训练效果。

包括具体的训练配置、训练过程和测试训练效果。

第六章:

总结。

包含对本次课程项目实践过程的感想与收获,以与对未来的展望。

第二章使用工具介绍与安装

2.1CentOS系统

CentOS〔munityENTerpriseOperatingSystem〕是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。

由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的RedHatEnterpriseLinux使用。

两者的不同,在于CentOS并不包含封闭源代码软件。

CentOS,我们有很多人叫它社区企业操作系统,不管怎么叫它,它都是linux的一个发行版本。

CentOS并不是全新的linux发行版,在RedHat家族中有企业版的产品,它是RedHatEnterpriseLinux,CentOS是RHEL的克隆版本,RHEL是很多企业采用的linux发行版本,需要向RedHat付费才可以使用,并能得到付过费用的服务和技术支持和版本升级。

这个CentOS可以像REHL一样的构筑linux系统环境,但不需要向RedHat付任何的费用,同样也得不到任何有偿技术支持和升级服务。

CentOS有很多特点:

CentOS就是对RedHatAS进展改良后发布的,各种操作、使用和REDHAT没有区别;

CentOS完全免费,不存在REDHATAS4需要序列号的问题;

CentOS独有的yum命令支持在线升级,可以即时更新系统,不像REDHAT那样需要花钱购置支持服务;

CentOS修正了许多REDHATAS的BUG。

基于开源的特性,Linux环境被很多技术人员和公司使用。

Linux以它的高效性和灵活性著称,Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任务、多用户的能力。

我们这次的课程项目“基于深度学习的目标识别研究〞也是在Linux环境下完成的,因此本次项目实现使用的是CentOS7.0系统。

2.2OpenCV工具

OpenCV的全称是:

OpenSourceputerVisionLibrary。

OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。

它轻量级而且高效,由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购置Intel的IPP高性能多媒体函数库得到更快的处理速度。

OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库。

无论是做科学研究,还是商业应用,OpenCV都是一个理想的工具库。

因为,对于这两者,它完全是免费的。

该库采用C与C++语言编写,该库的所有代码都经过优化,计算效率很高,因为,它更专注于设计成为一种用于实时系统的开源库。

OpenCV采用C语言进展优化,而且,在多核机器上面,其运行速度会更快。

它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。

该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。

同时,由于计算机视觉与机器学习密不可分,该库也包含了比拟常用的一些机器学习算法。

图像识别、机器视觉在安防领域有所应用。

并且在航拍图片、街道图片中,也要依赖于机器视觉的摄像头标定、图像融合等技术。

近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,OpenCV的应用与其广泛,而这些,仅仅是其应用的冰山一角。

一个典型的计算机视觉算法,应该包含以下一些步骤:

(1)数据获取〔对OpenCV来说,就是图片〕;

(2)预处理;

(3)特征提取;

(4)特征选择;

(5)分类器设计与训练;

(6)分类判别;

而OpenCV工具对这六个局部,分别提供了API。

2.3CUDA开发环境

随着显卡的开展,GPU越来越强大,而且GPU为显示图像做了优化。

在计算上已经超越了通用的CPU。

如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA运算平台,CUDA即puteUnifiedDeviceArchitecture,是NVidia利用GPU平台进展通用并行计算的一种架构,该架构使GPU能够解决复杂的计算问题,它包含了CUDA指令集架构〔ISA〕以与GPU部的并行计算引擎。

开发人员可以利用C语言、OpenCL、Fortran、c++等为CUDA架构编写程序。

(1)CUDA体系架构

CUDA体系架构由两局部组成,分别是流处理器阵列〔SPA〕和存储器系统。

流处理阵列〔SPA〕的结构又分为两层:

TPC〔线程处理器群〕和SM〔流多处理器〕。

GPU的巨大计算能力来自于SPA中的大量计算单元。

存储器系统由几个局部组成:

存储器控制器〔MMC〕、固定功能的光栅操作单元〔ROP〕以与二级纹理操作。

(2)CUDA执行模型

将CPU作为主机〔Host〕,而GPU作为协处理器〔Coprocessor〕或者设备〔Device〕,从而让GPU来运行一些能够被高度线程化的程序。

在这个模型中,CPU与GPU协同工作,CPU负责进展逻辑性强的事务处理和串行计算,GPU如此专注于执行高度线程化的并行处理任务。

一个完整的CUDA程序是由一系列的设备端kernel函数并行步骤和主机端的串行处理步骤共同组成的。

CUDA执行模型如如如下图:

Grid〔网格〕运行在SPA上;

Block〔线程块〕运行在SM上;

Thread〔线程〕运行在SP上。

Kernel不是一个完整的程序,而只是其中的一个关键并行计算步骤。

Kernel以一个网格〔Grid〕的形式执行,每个网格由假设干个线程块〔block〕组成,每一个线程块又由假设干个线程〔thread〕组成。

在CUDA的架构下,一个程序分为两个部份:

Host端和Device端。

Host端是指在CPU上执行的部份,而Device端如此是在显示芯片〔GPU〕上执行的部份。

Device端的程序又称为"

kernel"

通常Host端程序会将数据准备好后,复制到显卡的存中,再由显示芯片执行Device端程序,完成后再由Host端程序将结果从显卡的存中取回。

由于CPU存取显卡存时只能透过PCIExpress接口,因此速度较慢,因此不能经常进展这类动作,以免降低效率。

由于显示芯片大量并行计算的特性,它处理一些问题的方式和一般CPU是不同的。

主要的特点包括:

〔1〕存存取latency(等待时间)的问题:

CPU通常使用cache来减少存取主存的次数,以防止存latency影响到执行效率。

显示芯片如此多半没有cache〔或很小〕,而利用并行化执行的方式来隐藏存的latency〔即当第一个thread需要等待存读取结果时,如此开始执行第二个thread,依此类推〕。

〔2〕分支指令的问题:

CPU通常利用分支预测等方式来减少分支指令造成的流水线。

显示芯片如此多半使用类似处理存latency的方式。

不过,通常显示芯片处理分支的效率会比拟差。

因此,最适合利用CUDA处理的问题,是可以大量并行化的问题,才能有效隐藏存的latency,并有效利用显示芯片上的大量执行单元。

使用CUDA时,同时有上千个thread在执行是很正常的。

因此,如果不能大量并行化的问题,使用CUDA就没方法达到最好的效率了。

在这个过程中,CPU担任的工作为控制GPU执行,调度分配任务,并能做一些简单的计算,而大量需要并行计算的工作都交给GPU实现。

另外需要注意的是,由于CPU存取显存时只能通过PCI-Express接口,速度较慢,因此不能经常进展,以免降低效率。

通常可以在程序开始时将数据复制进GPU显存,然后在GPU进展计算,直到获得需要的数据,再将其复制到系统存中。

2.4环境的搭建

一、项目源代码下载与安装

到本地

gitclones:

//github./pjreddie/darknet

2.进入项目目录,编译

cddarknet

make

二、项目目录结构

编译完成后,项目主要文件如下:

darknet项目目录

├─cfg配置文件存放目录

├─data数据存放目录

├─examplesC语言测试用例

├─includedarknet头文件

├─pythonPython测试用例

├─scripts训练中用到的辅助脚本

├─src项目源代码

├─darknet编译后产生的darknet可执行文件

│├─config.php模块配置文件

│├─mon.php模块函数文件

三、测试对象识别

1.下载官方提供的训练好的权重数据

2.测试识别对象:

在上述命令中,detect表示调用darknet的对象识别功能,是配置文件,包含各层网络的参数、要识别的物体种类数等,是上一步下载的权重数据,是要进展对象识别的照片,照片容如如如下图:

执行命令:

上图显示检测过程在0.35秒完成,这是安装完显卡驱动后运行的结果,在安装显卡驱动前,使用CPU进展图像检测,花费时间大约为8秒。

命令执行完成后,将会把识别结果生成到predictions.jpg,打开图片如如如下图所示:

四、训练环境安装

sudoyuminstallopencv

2.安装显卡驱动与其开发工具包CUDA,安装CUDA必须要有一个Nvidia的显卡,本机的显卡是GTX860M。

CUDA下载网址为:

s:

//developer.nvidia./cuda-downloads

官方还提供了CUDA安装过程所需的pdf文档,仔细阅读并按照其步骤安装即可。

此次安装使用runfile安装。

首先检测本机是否有Nvidia显卡,执行以下命令:

lspci|grep-invidia

有任何输出说明本机有Nvidia显卡,本机输出结果如下:

01:

00.03Dcontroller:

NVIDIACorporationGM107M[GeForceGTX860M](reva2)

接下来查看系统核版本:

uname-m&

&

cat/etc/*release

该命令会显示系统架构以与核版本信息,本机主要的输出信息如下:

x86_64CentOSLinuxrelease7.3.1611(Core) 

确认编译器gcc已经安装,该命令会打印gcc的版本,如果提示找不到命令如此说明没有安装gcc:

gcc--version

安装Kernel-header和kernel-devel,这两个包的版本需要和本机的核版本一致,安装命令如下:

sudoyuminstallkernel-devel-$(uname-r)kernel-headers-$(uname-r)

开始安装cuda,本次实验使用的是runfile安装。

Nouveau是一个开源的3D驱动,安装Nvidia驱动之前需要先将其关闭。

首先要把Nouveau参加黑,创建文件并写入以下容:

blacklistnouveau

optionsnouveaumodeset=0

重新生成核initramfs:

sudodracut--force

重新启动计算机,在进入登录界面时,不要登录,按下ALT+F2进入命令提示符模式,使用root用户登录,然后使用init3命令进入多用户模式开始安装Naidia驱动。

执行以下命令开始安装CUDA:

安装过程会提示是否安装CUDA工具箱、CUDA例子等,此次试验中选择安装。

最后将cuda参加到环境变量中、重启,即完成安装。

将cude参加到环境变量:

exportPATH=/usr/local/cuda-8.0/bin${PATH:

+:

${PATH}}

exportLD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\

${LD_LIBRARY_PATH:

${LD_LIBRARY_PATH}}

3.安装完成OpenCV和CUDA后,需要修改YOLO的Makefile文件并重新编译。

打开Makefile文件,将OPENCV=0改为OPENCV=1,将GPU=0改为GPU=1,并执行make命令重新编译。

第三章YOLO算法原理

3.1YOLO算法简介

基于深度学习方法的一个特点就是实现端到端的检测。

相对于其它目标检测与识别方法〔比如FastR-N〕将目标识别任务分类目标区域预测和类别预测等多个流程,YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实现在准确率较高的情况下快速目标检测与识别,更加适合现场应用环境。

YOLO为一种新的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率。

作者将目标检测任务看作目标区域预测和类别预测的回归问题。

该方法采用单个神经网络直接预测物品边界和类别概率,实现端到端的物品检测。

同时,该方法检测速非常快,根底版可以达到45帧/s的实时检测;

FastYOLO可以达到155帧/s。

与当前最好系统相比,YOLO目标区域定位误差更大,但是背景预测的假阳性优于当前最好的方法。

人类视觉系统快速且精准,只需看一眼即可识别图像中物品与其位置。

传统目标检测系统采用deformablepartsmodels(DPM)方法,通过滑动框方法提出目标区域,然后采用分类器来实现识别。

近期的R-N类方法采用regionproposalmethods,首先生成潜在的boundingboxes,然后采用分类器识别这些boundingboxes区域。

最后通过post-processing来去除重复boundingboxes来进展优化。

这类方法流程复杂,存在速度慢和训练困难的问题。

而YOLO方法将目标检测问题转换为直接从图像中提取boundingboxes和类别概率的单个回归问题,只需一眼即可检测目标类别和位置。

3.2YOLO方法特点

YOLO采用单个卷积神经网络来预测多个boundingboxes和类别概率,如如下图:

本方法相对于传统方法有如下优点:

(1)速度非常快。

YOLO预测流程简单,速度很快。

根底版在TitanXGPU上可以达到45帧/s;

快速版可以达到150帧/s。

因此,YOLO可以实现实时检测。

(2)YOLO采用全图信息来进展预测。

与滑动窗口方法和regionproposal-based方法不同,YOLO在训练和预测过程中可以利用全图信息。

FastR-N检测方法会错误的将背景中的斑块检测为目标,原因在于FastR-N在检测中无法看到全局图像。

相对于FastR-N,YOLO背景预测错误率低一半。

(3)YOLO可以学习到目标的概括信息,具有一定普适性。

采用自然图片训练YOLO,采用艺术图像来预测。

YOLO比其它目标检测方法〔DPM和R-N〕准确率高很多。

本方法有如下缺点:

(1)YOLO对相互靠的很近的物体,还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。

(2)对测试图像中,同一类物体

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1