2022年人工智能YOLOV图像识别实验报告 .pdf
《2022年人工智能YOLOV图像识别实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年人工智能YOLOV图像识别实验报告 .pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章前言部分1.1 课程项目背景与意义1.1.1 课程项目背景视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分。由于它的重要性,一些先进国家,例如美国把对计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基本问题,即所谓的重大挑战。计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。作为一门学科,计算机视觉开始于60 年代初,但在计算机视觉的基本研究中的许多重要进展是在80 年代取
2、得的。计算机视觉与人类视觉密切相关,对人类视觉有一个正确的认识将对计算机视觉的研究非常有益。计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。这里所指的信息指 Shannon定义的,可以用来帮助做一个“决定”的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。科学技术的发
3、展是推动人类社会进步的主要原因之一,未来社会进一步地朝着科技化、信息化、智能化的方向前进。在信息大爆炸的今天,充分利用这些信息将有助于社会的现代化建设,这其中图像信息是目前人们生活中最常见的信息。利用这些图像信息的一种重要方法就是图像目标定位识别技术。不管是视频监控领域还是虚拟现实技术等都对图像的识别有着极大的需求。一般的图像目标定位识别系统包括图像分割、目标关键特征提取、目标类别分类三个步骤。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习的概念由Hinton等人
4、于2006年提出。基于深度置信网络提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外 Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。深度学习是机器学习中的一个新的研究领域,通过深度学习的方法构建深度网络来抽取特征是目前目标和行为识别中得到关注的研究方向,引起更多计算机视觉领域研究者对深度学习进行探索和讨论,并推动了目标和行为识别的研究,推动了深度学习及其在目标和行为识别中的新进展。基于这个发展趋势,我们小组选择了基于回归方法的深度学习目标识别算法YOLO 的研究。1.1.2 课程项
5、目研究的意义众所周知,当前是信息时代,信息的获得、加工、处理以及应用都有了飞跃名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 29 页 -发展。人们认识世界的重要知识来源就是图像信息,在很多场合,图像所传送的信息比其他形式的信息更丰富、真切和具体。人眼与大脑的协作使得人们可以获取、处理以及理解视觉信息,人类利用视觉感知外界环境信息的效率很高。事实上,据一些国外学者所做的统计,人类所获得外界信息有80%左右是来自眼睛摄取的图像。由此可见,视觉作为人类获取外界信息的主要载体,计算机要实现智能化,就必须能够处理图像信息。尤其是近年来,以图形、图像、视频等大容量为特征的图像数据处理广泛应
6、用于医学、交通、工业自动化等领域。深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。目标检测对于人来说是再简单不过的任务,但是对于计算机来说,它看到的是一些值为 0255的数
7、组,因而很难直接得到图像中有人或者猫这种高层语义概念,也不清楚目标出现在图像中哪个区域。图像中的目标可能出现在任何位置,目标的形态可能存在各种各样的变化,图像的背景千差万别,这些因素导致目标检测并不是一个容易解决的任务。这次课程项目,正是基于视觉、深度学习、目标识别而进行的,是一个热度很高的话题。基于深度学习的目标识别研究具有重大的意义,深度学习的目标识别算法对于未来能够使用目标检测和图像识别的手段运用于物联网、智能设备、生物制药经济调控等多领域有很大的作用。1.2 国内外研究现状机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善
8、自身的性能的学科。机器能否像人类一样能具有学习能力呢?1959 年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了 3 年,这个程序战胜了美国一个保持8 年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。深度学习最近几年发展速度十分快,因此同时也推动了目标识别技术的发展,技术的革新总是相互影响的。目标检测是图像处理和计算机视觉的一个重要分支,在理论和实践上都有重大意义。近年来,随着物联网的高速发展与智能终端的广泛普及,目标检测技术成了机器视觉领域的
9、研究热点,被国内外学者广泛关注。目标检测的研究主要包括了基于视频图像的目标检测和基于静态图片的目标检测。本文主要讨论基于静态图片的目标检测算法,即在静态图片中检测并定位所设定种类的目标。基于静态图片的目标检测的难点主要在于图片中的目标会因光照、视角以及目标内部等变化而产生变化。针对以上的难点,国内外学者进行了很多尝试。目前提出的方法主要分为基于形状轮廓的目标检测算法和基于目标特征的检测方法。计算机视觉是指用计算机实现人的视觉功能,它的研究目标就是使计算机具有用过一幅或多幅图像认知周围环境的能力(包括对客观世界三维环境的感知、名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 29 页
10、 -识别与理解)。运动目标检测作为计算机视觉技术的一个分支,就是对视场内的运动目标,如人或交通工具,进行实时的观测,并将其分类,然后分析他们的行为。目前,国际上许多高校和研究所,如麻省理工学学院、牛津大学等都专门设立了针对运动目标检测的研究组或者研究实验室。美英等国家已经研究了大量的相关项目。一些著名公司和研究机构,如IBM、Microsoft、麻省理工学院等近几年来投入了大量的人力物力来进行智能监控系统的研究,部分成果已经转化为产品投入了市场。目前在国内的研究机构中,中国科学院北京自动化研究所下属的模式识别国家重点实验室视觉监控研究处于领先地位。他们在交通场景视觉监控、人的运动视觉监控和行为
11、模式识别方面进行了深入研究。另外他们也总结了英国雷丁大学VIEWS 的车辆交通监控原型系统的研究经验,在之前的理论研究的基础上,自行设 计 并 初 步 实 现 了 一 个 拥 有 完 全 自 主 知 识 产 权 的 交 通 监 控 原 型 系 统vstart(Visual surveillance star)。国内其他高校如上海交通大学、北京航空航天大学也对这方面进行了研究。尽管这样,目前在运动目标检测和视觉监控这方面仍然存在着许多不足:目前国内市场上所见到的大部分智能监控产品来源于国外,性能和可靠性不够,并且维护和安装问题需要外方全方位参加,给国家安全带来了巨大的隐患。目标之间互遮挡和人体自
12、遮挡问题,尤其是在拥挤状态下,多人的检测更是难处理。1.3 本论文结构本文是基于回归方法的深度学习目标识别算法YOLO 的研究。第一章:前言。主要介绍课程项目背景与意义、国内外研究的现状,以及本论文的结构。第二章:使用工具介绍及安装。包括 CentOS系统、OpenCV 工具、CUDA 开发环境、环境的搭建。第三章:YOLO 算法简介。包括 YOLO 方法特点、核心思想和实现方法、以及YOLO的创新。第四章:训练数据采集与制作。包括训练数据的采集、训练数据的制作。第五章:训练配置、训练及测试训练效果。包括具体的训练配置、训练过程和测试训练效果。第六章:总结。包含对本次课程项目实践过程的感想与收
13、获,以及对未来的展望。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 29 页 -第二章使用工具介绍及安装2.1 CentOS 系统CentOS(Community ENTerprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的 Red Hat Enterprise Linux 使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS,我们有很多人叫它社区企业操作系统
14、,不管怎么叫它,它都是 linux的一个发行版本。CentOS并不是全新的 linux发行版,在 RedHat家族中有企业版的产品,它是 Red Hat Enterprise Linux,CentOS是 RHEL 的克隆版本,RHEL是很多企业采用的linux发行版本,需要向RedHat付费才可以使用,并能得到付过费用的服务和技术支持和版本升级。这个CentOS可以像 REHL一样的构筑linux系统环境,但不需要向RedHat 付任何的费用,同样也得不到任何有偿技术支持和升级服务。CentOS有很多特点:CentOS就是对 Red Hat AS进行改进后发布的,各种操作、使用和 RED HA
15、T 没有区别;CentOS完全免费,不存在RED HAT AS4 需要序列号的问题;CentOS独有的 yum命令支持在线升级,可以即时更新系统,不像RED HAT 那样需要花钱购买支持服务;CentOS修正了许多 RED HAT AS 的 BUG。基于开源的特性,Linux 环境被很多技术人员和公司使用。Linux 以它的高效性和灵活性著称,Linux 模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix 特性,具有多任务、多用户的能力。我们这次的课程项目“基于深度学习的目标识别研究”也是在 Linux 环境下完成的,因此本次项目实现使用的是Cent
16、OS 7.0 系统。2.2 OpenCV工具OpenCV 的全称是:Open Source Computer Vision Library。OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和 Mac OS操作系统上。它轻量级而且高效,由一系列 C 函数和少量 C+类构成,同时提名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 29 页 -供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV 致力于真实世界的实时应用,通过优化的C 代码的编写对其执行速度带来了可观的提升,并且
17、可以通过购买Intel的 IPP 高性能多媒体函数库得到更快的处理速度。OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库。无论是做科学研究,还是商业应用,OpenCV都是一个理想的工具库。因为,对于这两者,它完全是免费的。该库采用 C及 C+语言编写,该库的所有代码都经过优化,计算效率很高,因为,它更专注于设计成为一种用于实时系统的开源库。OpenCV采用 C语言进行优化,而且,在多核机器上面,其运行速度会更快。它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉
18、等领域的超过500个接口函数。同时,由于计算机视觉与机器学习密不可分,该库也包含了比较常用的一些机器学习算法。图像识别、机器视觉在安防领域有所应用。并且在航拍图片、街道图片中,也要依赖于机器视觉的摄像头标定、图像融合等技术。近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,OpenCV的应用及其广泛,而这些,仅仅是其应用的冰山一角。一个典型的计算机视觉算法,应该包含以下一些步骤:(1)数据获取(对 OpenCV 来说,就是图片);(2)预处理;(3)特征提取;(4)特征选择;(5)分类器设计与训练;(6)分类判别;而 OpenCV 工具对这六个部分,分别提供了AP
19、I。2.3 CUDA开发环境随着显卡的发展,GPU 越来越强大,而且 GPU 为显示图像做了优化。在计算名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 29 页 -上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia 推出 CUDA 运算平台,CUDA 即 Compute Unified Device Architecture,是 NVidia 利用 GPU 平台进行通用并行计算的一种架构,该架构使GPU 能够解决复杂的计算问题,它包含了 CUDA 指令集架构(ISA)以及 GPU 内部的并行计算引擎。开发人员可以利用 C语言、OpenCL、For
20、tran、c+等为 CUDA 架构编写程序。(1)CUDA 体系架构 CUDA体系架构由两部分组成,分别是流处理器阵列(SPA)和存储器系统。流处理阵列(SPA)的结构又分为两层:TPC(线程处理器群)和SM(流多处理器)。GPU 的巨大计算能力来自于SPA中的大量计算单元。存储器系统由几个部分组成:存储器控制器(MMC)、固定功能的光栅操作单元(ROP)以及二级纹理操作。(2)CUDA 执行模型将CPU 作为主机(Host),而 GPU 作为协处理器(Coprocessor)或者设备(Device),从而让 GPU 来运行一些能够被高度线程化的程序。在这个模型中,CPU 与 GPU 协同工作
21、,CPU 负责进行逻辑性强的事务处理和串行计算,GPU 则专注于执行高度线程化的并行处理任务。一个完整的 CUDA 程序是由一系列的设备端kernel 函数并行步骤和主机端的串行处理步骤共同组成的。CUDA执行模型如下图:Grid(网格)运行在 SPA上;Block(线程块)运行在SM上;Thread(线程)运行在 SP上。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 29 页 -Kernel 不是一个完整的程序,而只是其中的一个关键并行计算步骤。Kernel 以一个网格(Grid)的形式执行,每个网格由若干个线程块(block)组成,每一个线程块又由若干个线程(thread)
22、组成。在 CUDA 的架构下,一个程序分为两个部份:Host 端和 Device 端。Host 端是指在 CPU 上执行的部份,而 Device 端则是在显示芯片(GPU)上执行的部份。Device 端的程序又称为 kernel。通常 Host 端程序会将数据准备好后,复制到显卡的内存中,再由显示芯片执行 Device 端程序,完成后再由 Host 端程序将结果从显卡的内存中取回。由于 CPU 存取显卡内存时只能透过 PCI Express 接口,因此速度较慢,因此不能经常进行这类动作,以免降低效率。由于显示芯片大量并行计算的特性,它处理一些问题的方式和一般 CPU 是不同的。主要的特点包括:
23、(1)内存存取 latency(等待时间)的问题:CPU 通常使用 cache 来减少存取主内存的次数,以避免内存 latency 影响到执行效率。显示芯片则多半没有名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 29 页 -cache(或很小),而利用并行化执行的方式来隐藏内存的 latency(即当第一个 thread 需要等待内存读取结果时,则开始执行第二个thread,依此类推)。(2)分支指令的问题:CPU 通常利用分支预测等方式来减少分支指令造成的流水线。显示芯片则多半使用类似处理内存 latency 的方式。不过,通常显示芯片处理分支的效率会比较差。因此,最适合利用
24、 CUDA 处理的问题,是可以大量并行化的问题,才能有效隐藏内存的 latency,并有效利用显示芯片上的大量执行单元。使用 CUDA 时,同时有上千个 thread 在执行是很正常的。因此,如果不能大量并行化的问题,使用 CUDA 就没办法达到最好的效率了。在这个过程中,CPU 担任的工作为控制GPU 执行,调度分配任务,并能做一些简单的计算,而大量需要并行计算的工作都交给GPU 实现。另外需 要注 意的 是,由于 CPU 存取显 存 时只能 通过PCI-Express 接口,速度较慢,因此不能经常进行,以免降低效率。通常可以在程序开始时将数据复制进GPU显存,然后在 GPU内进行计算,直到
25、获得需要的数据,再将其复制到系统内存中。2.4 环境的搭建一、项目源代码下载与安装1.使用 git把项目源代码下载到本地git clone https:/ 2.进入项目目录,编译cd darknet make 二、项目目录结构编译完成后,项目主要文件如下:darknet 项目目录cfg 配置文件存放目录data 数据存放目录名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 29 页 -examples C语言测试用例include darknet头文件python Python测试用例scripts 训练中用到的辅助脚本src 项目源代码darknet 编译后产生的 darknet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年人工智能YOLOV图像识别实验报告 2022 人工智能 YOLOV 图像 识别 实验 报告
限制150内