当前位置:   article > 正文

基于大数据的VR旅游智能规划系统的设计与实现

基于大数据的VR旅游智能规划系统的设计与实现

基于大数据的VR旅游智能规划系统的设计与实现

摘要

基于大数据的VR旅游智能规划系统的设计与实现旨在探索如何利用大数据分析来提升虚拟现实(VR)旅游体验。这个选题的依据在于,VR的概念正在崭露头角,它为虚拟旅游提供了全新的可能性。通过收集和分析大数据,可以个性化、智能化地规划旅游路线和体验,提高用户满意度。这项研究的意义在于为旅游业注入创新,加强了智能旅游规划的实施,提供更吸引人的虚拟旅游体验,从而推动旅游业的发展。

本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用Python语言,结合django框架与MYSQL数据库设计并实现的。基于大数据的VR旅游智能规划系统的设计与实现主要包括基于元宇宙的大数据在VR旅游业中的应用研究的功能需求包括:数据采集,数据存储和处理,个性化体验,智能规划实时反馈,数据可视化,安全和隐私保护。它可以提升虚拟旅游的沉浸感和个性化体验,吸引更多游客并提高他们的满意度。此外,通过数据分析,旅游业可以更好地了解游客需求,改进产品和服务,提高竞争力。这项研究还有助于推动大数据技术在旅游领域的应用,促进创新和发展。最重要的是,它为未来的虚拟旅游业创造了巨大商业潜力,有助于经济增长和就业机会的创造。

关键词:VR旅游;Django; Python;智能规划

Design and Implementation of VR Tourism Intelligent Planning System Based on Big Data

ABSTRACT

The design and implementation of a VR tourism intelligent planning system based on big data aims to explore how to use big data analysis to enhance the virtual reality (VR) tourism experience. The basis for this topic is that the concept of VR is emerging, providing new possibilities for virtual tourism. By collecting and analyzing big data, personalized and intelligent planning of tourism routes and experiences can be achieved, improving user satisfaction. The significance of this study lies in injecting innovation into the tourism industry, strengthening the implementation of intelligent tourism planning, providing more attractive virtual tourism experiences, and promoting the development of the tourism industry.

This system combines the structure, concepts, models, principles, and methods of computer systems. With various advantages of computers, it is designed and implemented using Python language, combined with the django framework and MYSQL database. The design and implementation of a VR tourism intelligent planning system based on big data mainly includes the functional requirements for the application research of big data in the VR tourism industry based on the metaverse, including data collection, data storage and processing, personalized experience, intelligent planning real-time feedback, data visualization, security and privacy protection. It can enhance the immersion and personalized experience of virtual tourism, attract more tourists and improve their satisfaction. In addition, through data analysis, the tourism industry can better understand tourist needs, improve products and services, and enhance competitiveness. This study also helps to promote the application of big data technology in the tourism field, promoting innovation and development. Most importantly, it has created enormous commercial potential for the future virtual tourism industry, contributing to economic growth and job creation.

Key words: VR tourism; Django; Python; Intelligent planning

目录

第1章 引言

1.1 课题现状及发展

1.2 课题开发目的与意义

1.3 课题开发主要内容

1.4 论文结构安排

2 系统分析

2.1 系统使用相关技术分析介绍

2.1.1 Flask框架介绍

2.1.2 HTML语言介绍

2.1.3 MySQl数据库介绍

2.1.4 YoloV5模型介绍

2.1.5 CRNN模型介绍

2.2 系统需求分析

2.2.1 前台功能说明

2.2.2 后台功能说明

2.3 系统可行性分析

2.4 系统流程分析

3 系统设计

3.1 系统总体结构设计

3.2 系统开发步骤

3.3 数据库设计

3.3.1 数据库设计重要性

3.3.2 逻辑结构设计

3.3.4 物理结构设计

4 详细设计

4.1 项目结构设计

4.2 系统界面设计

4.2.1 系统首页设计

4.2.2 登陆界面设计

4.2.3 注册界面设计

4.2.4 系统主界面设计

4.3 数据来源及选择

4.4 YOLOV5模型方法

4.4.1 YoloV5模型原理与结构

4.4.2 YoloV5模型训练及参数调整

4.4.3 YoloV5模型评估指标

4.4.4 YoloV5-CRNN混合模型

5 系统测设

5.1 系统测试的目的

5.2 系统测试的方法

5.3 具体测试

5.3.1 测试步骤

5.4 测试总结

6 总结与展望

参考文献

致谢

第1章 引言

1.1 课题现状及发展

随着人们经济生活水平的提高,微服务在手机商城管理系统中的应用越来越广泛。微服务架构可以帮助您构建一个更加高效、灵活和可扩展的系统,从而提高您的业务敏捷性和创新能力。例如,使用微服务架构可以使得每个服务都是独立的,这样就可以单独地开发、测试和部署每个服务。这样可以使开发团队更加敏捷,并且可以更快地响应用户需求。

目前,已经有很多基于微服务架构的手机商城管理系统被开发出来并投入使用。例如,mall-cloud-alibaba是一套基于开源商城mall改造的spring cloud alibaba体系微服务商城系统,采用了spring cloud alibaba、Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch等核心技术。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车等功能模块,后端系统包含用户管理、订单管理、库存管理等多个模块。

1.2 课题开发目的与意义

微服务架构的手机商城管理系统的开发目的主要有以下几个方面:   

1. 提高系统的可扩展性和灵活性:微服务架构可以将一个大型的系统分成多个小的服务,每个服务都可以快速地开发、测试和部署。这样可以使系统更加灵活,便于根据业务需求进行扩展。

2. 提高系统的可靠性和稳定性:由于每个服务都是独立的,因此一个服务的故障不会影响到其他服务。这样可以提高系统的可靠性和稳定性。

3. 提高系统的开发效率:微服务架构可以将一个大型的系统分成多个小的服务,每个服务都可以由一个小团队开发。这样可以使开发效率得到提高。

4. 促进技术栈的更新和升级:微服务架构可以使用不同的技术栈来开发不同的服务,这样就可以促进技术栈的更新和升级。

1.3 课题开发主要内容

实现的主要功能有:

1. 用户管理模块:

   - 实现用户注册、登录和个人信息管理功能。

   - 提供用户权限管理,包括管理员和普通用户角色的划分。

2. 商品管理模块:

   - 实现商品的发布、编辑和删除功能。

   - 提供商品分类管理,可以对商品进行分类和搜索。

   - 实现商品详情展示,并支持评论和评分功能。

3. 订单管理模块:

   - 实现购物车功能,用户可以将商品加入购物车并下单购买。

   - 提供订单管理,包括订单查询、支付和取消订单等功能。

   - 实现订单状态的更新和退款处理。

4. 库存管理模块:

   - 实时更新商品库存数量,并支持库存预警功能。

   - 提供库存查询和管理,包括入库、出库和库存盘点等操作。

5. 物流管理模块:

   - 实现订单的物流跟踪功能,用户可以查询订单的物流状态。

   - 提供物流信息的录入和更新,以及配送员的管理功能。

6. 报表统计模块:

   - 收集并展示销售数据、用户活动数据和库存数据等报表。

   - 提供数据可视化和导出功能,方便管理者进行数据分析和决策。

7. 客户服务模块:

   - 提供在线客服功能,用户可以通过系统与客服人员进行实时交流。

   - 实现用户反馈和投诉处理,保障用户权益。

1.4 论文结构安排

第一章 引言 介绍了课题的国内外现状及发展,以及课题开发的目的与意义,描述了本项目大致会使用到的技术。

第二章 系统分析 主要包括系统使用相关技术的描述,系统需求分析,可行性分析以及系统流程分析等方面对本系统进行全方位的分析描述,具体说明了实现该项目所使用到的前端框架,后台数据库

第三章 系统设计

第四章 详细设计

第五章 系统测试

2 系统分析

2.1 系统使用相关技术分析介绍

2.1.1Spring Cloud框架介绍

    Spring Cloud是一个服务治理平台,是若干个框架的平台 ,提供了全套的分布式系统解决方案。它包含了:服务注册与发现、配置中心、服务中心 、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。Spring Cloud利用Spring Boot的开发便利性简化了分布式系统的开发,比如服务发现、服务路由、链路追踪等。Spring Cloud并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。

2.1.2 HTML语言介绍

HTML是一种标记语言,用于结构化文档和表示网络内容。它使用标签来描述文档的结构,这些标签定义了文档的元素,包括文本、图像、链接、表单和更多。 HTML是一种开放标准,可用于创建动态网页,它已经成为万维网(WWW)的基础。项目中分别使用first.html搭建项目首页,login.html搭建项目的登录界面,register.html搭建项目于的注册界面,index.html搭建项目功能实现界面。

2.1.3 MySQl数据库介绍

MySQL是一种关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统之一,它具有客户机/服务器体系结构的分布式数据库管理系统,支持多用户、多线程并发操作和灵活的配置选项。MySQL所使用的SQL语言是一种高级的、功能丰富的编程语言,具有很好的可移植性和可扩展性。在项目中MySQL负责用户注册信息已经订单信息的储存。

MySQL的优点包括高性能和高效率,可以处理大量数据和高并发访问请求,支持多线程操作和多用户并发访问。MySQL具有简单易用的特点,它的安装、配置和使用都非常简单,即使是不懂数据库的初学者也可以轻松上手。MySQL可以通过添加插件、扩展模块和自定义函数等方式进行扩展,满足不同应用场景的需求。MySQL可以运行在多个操作系统平台上,包括Linux、Windows、macOS等,具有良好的跨平台支持能力。MySQL支持多种编程语言,包括 Java 、PHP、 Python 等,可以方便地集成到不同的应用程序中。

2.1.4SpringBoot模型介绍

 Spring Boot是一个开源的Java框架,它是Spring框架的一部分,主要用于简化Spring应用程序的创建、配置和部署。Spring Boot提供了一种快速构建Spring应用程序的方法,通过自动配置和约定优于配置的原则,使开发人员能够更轻松地编写和维护代码。

Spring Boot的主要特点包括:起步依赖、无代码生成、自动化配置、运行、提供监控和管理等。

2.1.5 MyBatis模型介绍

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Object,普通老式Java对象)为数据库中的记录。 

2.2 系统需求分析

2.2.1 前台功能说明

这是一款基于YoloV5和CRNN的车牌识别系统,由前端展示界面,包括项目入口,登陆注册以及车牌识别界面的展示和数据库共同组成。前台主要按钮及输入框,展示框功能说明如下:

1. 系统首页界面,首页是项目的入口,通过点击车牌识别系统四个字可以跳转至登录界面进行登录。在代码中使用链接进行跳转<h1 class="title" ><a href="/auth/login">车牌识别系统</a></h1>

2. 登录界面,包括用户名输入框,密码输入框,登录按钮,注册按钮以及忘记密码按钮构成,如果第一次使用本系统需先点击注册按钮进行注册。 

3. 注册界面,注册界面包括邮箱输入框,发送验证码按钮,邮箱验证码按钮,用户名输入框,密码输入框,确认密码按钮,立即注册按钮,返回登录按钮以及重置密码按钮组成。邮箱输入框中可输入任意邮箱,点击发送验证码后会收到4位纯数字验证码,输入两遍密码后可以点击注册按钮进行注册,注册成功会自动返回登录界面进行登录操作,如果点击的忘记密码进行跳转,只需将注册的流程重新进行一次,点击重置密码,便可使用新密码进行登录。

4. 主页面,主页只有一个按钮“上传文件”,点击此按钮可以选择图片,点击确认后识别后的图片会自动展示在浏览器上。点击退出登录可以回退到登录界面。 

2.2.2 后台功能说明

对于后台,可通过pycharm或者终端执行程序实现视频动态识别,本机摄像头识别,连接外置摄像头等功能。

调用本机摄像头:python detect_plate_low.py --detect_model runs/train/exp/weights/best.pt  --rec_model weights/plate_rec_color.pth --video camera

调用外置ip摄像头:python detect_plate_low.py--detect_model runs/train/exp/weights/best. pt --rec_model weights/plate_rec_color.pth --video http://admin:admin@192.168.50.57:8081,其中,链接为手机相机ip地址,通过video参数传入程序,需要注意的是,手机和电脑需处在同一局域网下才可使用ip地址进行连接。

检测保存好的视频:python detect_plate_low.py --detect_model runs/train/exp/weights/best. pt --rec_model weights/plate_rec_color.pth --video 3.mp4

2.3 系统可行性分析

需求分析:本系统旨在优化传统方法所实现的车牌识别功能中的问题,包括处理速度慢,准确率低,对于车牌反光,污染等情况不能准确快速的识别。

技术可行性分析:在项目的实现过程中采用RTX 3090 24G单路GPU,E5CPU,使用pycharm软件进行项目开发,采用MySql数据库进行数据交互,MySQL是一个非常安全可靠的数据库管理系统。它具有多种安全特性,如访问控制、身份验证、数据加密和审计,以确保只有授权用户才能访问数据,并保证数据安全。此外,MySQL还具有内置的安全功能,如用户特权管理,有助于防止恶意攻击。维护起来相对比较方便。

经济可行性分析:本系统只有在开发时需要高性能显卡和处理器进行模型的训练以及后续投入使用需要一个大容量数据库等,成本低收益高。

风险评估和控制:在系统的应用中可能会遇到网络方面的问题以及数据库中用户信息的隐私性问题,对于可能出现的网络问题拟采用将数据库软件换成线上excel表格等方式进行存储,对于用户信息安全可采取更加安全的数据库软件进行存储。

2.4 系统流程分析

图2.1为本系统的系统流程:

图2.1 系统流程图

3 系统设计

3.1 系统总体结构设计

系统的总体架构和模块划分: 车牌识别系统由Flask框架结合HTML完成前端界面的搭建以及后台数据库和深度学习算法模块组成。

后台功能的实现和操作流程:运行该项目首先需要打开flaskprojec1文件,点击运行,根据框架自动生成的网址进入页面,登陆注册功能均是通过Flask的视图函数获取HTML中的Form表单,并将其数据传入js,js再将获取到的数据实现前后端的交互,通过视图函数实现数据与数据库的连接。识别部分的功能也是由视图函数进行算法与界面的连接。

3.2 系统开发步骤

建立Flask工程文件,其中包括项目蓝图,配置文件等,将HTML文件存放在template文件夹下,本项目的开发环境为专业版Pycharm,在新建Flask项目时会自动生成template文件夹。搭建好总体框架后,首先开发网页前端界面,以下是部分HTML代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>车牌识别系统</title>

    <link type="text/css" rel="stylesheet" href="{{ url_for('static',filename='css/first.css') }}">

</head>

<body background='/static/R-C.jpg'

               style="background-repeat:no-repeat;

               background-attachment:fixed;

               background-size:100% 100%; ">

<h1 class="title" ><a href="/auth/login">车牌识别系统</a></h1>

</body>

</html>

其次实现各个界面的视图函数,视图函数可以将HTML代码渲染到网页上并获取到信息以及对数据库的一些操作,一下是部分视图函数代码:

app = Flask(__name__)

# 绑定配置文件

app.config.from_object(config)

db.init_app(app)

mail.init_app(app)

migrate = Migrate(app, db)

app.register_blueprint(auth_bp)

#查路径

@app.route("/user/ask")

def ask_path():

    # 1.get查找一条

    Picturepath = picture_path.query.get(24) # 表中的id=1,这个query由上面db.Model提供

    path_result = Picturepath.pic_path

    return 0

最后编写js文件实现网页中各个按钮的功能以及数据的流转。

搭建好整个项目框架后只需调用封装好的识别代码即可实现项目的功能。

3.3 数据库设计

3.3.1 数据库设计重要性

数据库设计是一个非常重要的环节,它决定了整个系统的数据存储结构,影响到系统的性能、稳定性和可维护性。以下是数据库设计的重要性:

1.数据库设计直接影响系统性能

合理的数据库设计可以提高数据库的性能,而不良的数据库设计则可能导致系统性能下降。例如,正确地建立索引可以提高查询速度,但是过多的索引则会导致写入数据时的性能下降。

2.数据库设计可以保证数据的完整性和准确性

在数据库设计中,可以设置各种约束条件,例如主键、外键、唯一约束、检查约束等等,这些约束条件可以保证数据的完整性和准确性。例如,设置主键可以保证每一行数据都有一个唯一的标识符,避免了重复数据的出现。

3.数据库设计可以提高系统的可维护性

数据库设计需要考虑到未来的需求变更和扩展,因此需要预留足够的空间和灵活性。合理的数据库设计可以使系统更易于维护和扩展。例如,采用标准化设计可以减少数据库冗余,使系统更易于维护。

4.数据库设计可以提高系统的安全性

数据库设计需要考虑到系统的安全性,可以通过合理的设计减少系统被攻击的风险。例如,对敏感数据进行加密,使用访问控制等措施可以提高系统的安全性。

因此,数据库设计对系统的性能、稳定性、可维护性和安全性都有着至关重要的作用。

3.3.2 逻辑结构设计

根据数据库概念设计,可以创建与实体对应的数据表。本系统所包含的数据表如下所示:

表3.1  user用户表(用户id,用户名,用户密码,邮箱,验证码)

序号

名称

别名

类型

长度

备注

1

id

用户id

int

11

主键

2

username

用户名

varchar

255

3

password

用户密码

varchar

255

4

email

邮箱

varchar

255

5

captcha

验证码

varchar

255

表3.2  email_captcha邮箱验证码表(邮箱验证码id,邮箱,验证码)

序号

名称

别名

类型

长度

备注

1

id

邮箱验证码id

int

100

主键

2

email

邮箱

varchar

100

3

captcha

验证码

varchar

100

表3.3  car表(id,num车牌名称,time被识别到的时间,paytime距离下次缴费所剩天数)

序号

名称

别名

类型

长度

备注

1

id

int

11

主键

2

3

4

Num

Time

paytime

车牌名称

识别时间

剩余时间

Varchar

Varchar

Int

100

200

200

3.3.4 物理结构设计

首先确定数据库的存储结构然后创建表。数据库软件的位置可能会因为PC所安装目录不同而不同,所以数据的文件与日志文件存放的位置也会不同。本系统存放的数据库文件的位置在F:\bishe\flaskProject1。通过以下三行命令完成数据库的更新和创建。其中第一行命令只需在第一次创建数据库时使用,后续进行添加删除表等操作需要同步数据库的只需执行第二条和第三条命令。

flask db init

flask db migrate

flask db upgrade

4 详细设计

4.1 项目结构设计

图4.1为本项目的项目结构:

图4.1 项目结构

4.2 系统界面设计

4.2.1 系统首页设计

图4.2为系统首页,点击车牌识别系统可跳转至登录界面

图4.2 系统首页界面

4.2.2 登陆界面设计

图4.3为登录界面

图4.3 用户登录界面

页面说明:用户第一次打开网站需输入用户名、密码,如未拥有账号点击注册进入注册界面获得账号,未登录用户不能进行正常的使用。

4.2.3 注册界面设计

图4.4为本系统的注册界面,重置密码界面和图四相同

图4.4 用户注册界面及重置密码界面

页面说明:未拥有账号用户通过本界面注册。输入邮箱、邮箱验证码、用户名、密码、确认密码,点击注册,如果用户名唯一则注册成功,否则界面刷新,重新注册。

4.2.4 系统主界面设计

图4.5为网站主界面

图4.5 网站主界面

页面说明:用户注册完成登录后可访问网站主页,通过点击上传文件按钮进行车牌识别。

图4.6为识别功能展示界面

图4.6 识别功能展示界面

4.3 数据来源及选择

数据选择的是开源数据集CCPD和CRPD,CCPD(Chinese City Parking Dataset)是一种用于车牌识别和车辆检测的数据集,包括13万张高分辨率的车辆图像,覆盖了中国各地的城市和乡村场景。CCPD数据集的独特之处在于其车牌包含中文字符,并具有各种方向和视角,共有12195张图片,具有较高的现实性和多样性,适合用于车牌检测和识别算法的训练和测试。CRPD是指ICPR2018中的一个车牌识别数据集,该数据集名称为“Chinese Recoganition of Plate Dataset”,缩写为CRPD。这些图像是在中国不同的城市和地区拍摄的,涵盖了不同的车型、车牌颜色和字符风格。数据集中的车牌图像都是JPEG格式。每个车牌图像都包括车牌和车牌上的字符,以及车辆背景。

在本项目中,由dataloader, dataset = create_dataloader()加载训练数据,其中有如下几个参数:

path: 数据集路径

imgsz: 图像的尺寸

batch_size: 每个批次包含的图像数量

stride: YOLO 检测中的步幅

opt: 训练参数选项

hyp: 超参数选项

augment: 是否进行数据增强

cache: 是否将图像缓存到内存中,以提高训练速度

pad: 将图像调整为正方形时的填充比例

rect: 是否对图像进行缩放,以适应 YOLO 模型的输入尺寸

rank: 当前进程的排名

world_size: 总进程数量

workers: 数据加载器使用的进程数

image_weights: 是否对图像进行加权,以平衡数据集中不同类别的样本数量

quad: 是否使用四个角点来表示目标框

prefix: 数据集中图像文件的前缀名称。

在底层数据加载器中,self.augment和self.rect是两个布尔值变量。self.augment表示是否进行数据增强,如果为True,则进行数据增强,否则不进行数据增强。self.rect表示是否对图像进行矩形裁剪(对于YOLOv5中的RetinaNet模型会使用矩形裁剪)。如果为True,则使用矩形裁剪,否则不使用。在这行代码中,如果进行数据增强且不使用矩形裁剪,则将4张图像加载到一个马赛克(mosaic)中,用于进行训练。Mosaic是YOLOv5引入的一种新的数据增强策略,通过组合四张不同的图像,可以产生更丰富的样本,提高模型的鲁棒性和泛化能力。同时YoloV5实现了ONNX和TensorRT两种部署方式,可以在不同的硬件平台上实现高效的模型推理。本文实现了ONNX部署。

4.4 YOLOV5模型方法

4.4.1 YoloV5模型原理与结构

YOLOv5 算法是目前应用较为广泛的一阶段目标检测模型,从网络的宽度与深度从小到大依次分为 YOLOv5s、YOLOv5m、YOLOv5l 和 YOLOv5x[11]。

YOLOv5s 模型主要由 Backbone、Neck 和Head 三部分组成。其中Backbone 主要负责对输入图像进行特征提取、Neck 负责对特征图进行多尺度特征融合、Head 进行最终的回归预测[11]。自适应特征融合(Adaptively Spatial Feature Fusion,ASFF)[13],特征细化模块(Feature Refinement Module,FRM)[14]使网络能够直接学习如何在其他级别对特征进行空间滤波,从而仅保留有用的信息以进行组合[11]。

本文选用 YOLOn-0.5模型,n-0.5 是指模型中的一种新的解码方法,旨在提高模型在小目标检测方面的性能。在传统的解码方法中,先验框是通过预定义的一组大小和宽高比来定义的,而在 n-0.5 中,先验框的大小和宽高比是在训练过程中通过聚类计算得到的。在推理时,模型会根据预测的特征图和聚类得到的先验框,生成更加准确的边界框。此外,n-0.5 还利用了多尺度训练,即训练时使用不同尺度的输入图像,以提高模型在不同目标大小上的表现。

车牌识别的流程为先由YoloV5检测出车牌的有效区域,然后再将检测出的区域送入 CRNN 网络进行车牌字符的识别,最终输出预测结果[12]。完整的流程如图4.7所示:

图4.7 项目完整流程

4.4.2 YoloV5模型训练及参数调整

4.4.3 YoloV5模型评估指标

几个模型中常见的评估指标:

1.obj_loss:通常是指目标检测中的目标存在损失,它是目标检测损失函数中的一部分,用于计算模型预测的目标存在与否与实际标注之间的差距。

在目标检测中,每个预测框都会被分配一个目标存在概率(objectness score),表示该框是否包含目标物体。obj_loss的计算通常基于预测框的目标存在概率和实际标注框的目标存在标签。

对于一个预测框,如果它与实际标注框的IoU(Intersection over Union,交并比)大于阈值(通常是0.5),则认为它包含目标物体,否则认为它不包含目标物体。在这种情况下,预测框的目标存在概率的损失就是与实际标注框的目标存在标签的二元交叉熵损失,表示模型预测是否包含目标物体的误差。

如果一个预测框没有被分配给任何目标,则它的目标存在概率损失就是预测框目标存在概率的二元交叉熵损失与一个负权重的乘积,以鼓励模型预测不包含目标物体。图4.8为测试集上的obj_loss的图像:

图4.8 obj_loss

2. cls_loss是指目标分类损失,用于测量预测类别和真实类别之间的差异。在目标检测中,通常将目标分类为正类和背景类。cls_loss通常使用交叉熵损失来计算,其中真实类别是一个one-hot向量,每个类别都有一个对应的分数预测。如果预测的类别与真实类别匹配,则损失较小,否则损失较大。通过最小化cls_loss,模型可以更准确地预测目标的类别。图4.9为测试集上的cls_loss图像:

图4.9 cls_loss

3. PR图(Precision-Recall Curve)是用于评估分类模型性能的一种常用工具。在PR图中,横轴为召回率(Recall),表示被正确识别的正样本数量与所有正样本数量的比例;纵轴为精确率(Precision),表示被正确识别的正样本数量与所有被分类器识别为正样本的样本数量的比例。PR图中每个点对应于分类模型不同的阈值设置,不同的阈值可以将模型的输出分为正例和负例。PR图越接近左上角,表示模型的分类性能越好,而对于同一模型来说,PR图的面积越大,表示模型的性能越优秀。

计算公式为

P=TP/(TP+FP)

R=PT/(TP+FN)

图4.10为本项目的PR曲线:

图4.10 PR图

YoloV5检测效果图如图4.11所示:

图4.11 YoloV5检测结果

4.4.4 YoloV5-CRNN混合模型

经过 YoloV5网络目标检测后,接下来就是将所得到的车牌有效区域级联到字符识别网络,进行识别并输出结果,这一步骤的核心是构造端到端、免分割的神经网络[12]。

CRNN(Convolutional Recurrent Neural Network)是一种结合了卷积神经网络(Convolutional Neural Network, CNN)和循环神经网络(Recurrent Neural Network, RNN)的深度学习模型,主要用于处理序列数据,如文本、语音和图像。

CRNN网络结构包含三部分:

1.卷积神经网络(Convolutional Neural Network, CNN):用于提取特征,通常采用的是卷积层和池化层的组合,可以有效地减少参数量,提高计算效率。

2.循环神经网络(Recurrent Neural Network, RNN):用于对序列数据进行建模,如对于文本或语音数据,可以使用LSTM或GRU等RNN变种对序列进行建模。

3.连接层(Connection Layer):将CNN和RNN进行连接,通常是将CNN输出的特征图序列输入到RNN中进行处理,最后将RNN的输出通过全连接层得到最终的分类结果。

项目中采用softmax激活函数,激活函数(activation function)层又称为非线性映射层,可以提高网络模型的非线性表达能力和鲁棒性[12]。它将一个向量(或一组值)作为输入,并将其“压缩”为另一个向量,该向量中的每个元素都是0到1之间的概率值,其总和为1。具体来说,对于输入向量的每个元素,softmax函数计算其指数形式,然后将结果除以所有元素的指数之和。这使得每个元素都可以视为输出的类别的概率分数,因此softmax通常用于多分类问题的输出层。

CRNN网络结构的优点在于,CNN可以对图像进行高效地特征提取,而RNN则可以对提取的特征进行序列建模,从而更好地处理序列数据。因此,CRNN广泛应用于OCR(Optical Character Recognition,光学字符识别)等领域中,取得了较好的效果。最终实验结果如图4.12所示:

图4.13 最终识别结果

5 系统测设

5.1 系统测试的目的

系统测试的目的是评估整个系统的功能、性能和稳定性,验证系统是否满足需求和规格,并发现和解决系统中可能存在的缺陷和问题。通过系统测试,可以检验系统是否符合用户需求和预期,评估系统的可靠性、可用性、安全性等质量特性,为最终交付和投入使用做好准备。

5.2 系统测试的方法

系统测试的方法可以分为以下几个步骤:

1.确定测试用例:根据系统功能和需求,确定一组或多组测试用例,本项目使用六类车牌信息进行测试,在训练时会在一定的epoch时进行测试集测试并计算map值。

2.准备测试环境:根据测试用例的需求,准备好测试环境,包括硬件、软件、网络等方面的配置。本项目使用9代i5CPU,GTX1650显卡,pycharm软件进行测试。

3.运行测试用例:按照测试用例的流程和要求,运行测试程序并记录测试结果。

4.分析测试结果:根据测试结果,分析系统的性能和稳定性。

5.3 具体测试

5.3.1 测试步骤

1.在终端输入命令:

python detect_plate_low.py --detect_model runs/train/exp/weights/best.pt --rec_model weights/plate_rec_color.pth --image_path imgs --output result对图片进行测试,测试结果保存在result文件夹下

2.在终端输入命令:

python detect_plate_low.py --detect_model runs/train/exp/weights/best.pt  --rec_model weights/plate_rec_color.pth --video 3.mp4 对视频文件进行测试,测试结果保存在根目录下。

5.4 测试总结

经过测试,主要出现以下问题:

1. 测试结果无法在浏览器正常显示,通过修改js代码已解决

2. 结果中会将非车牌部分误识别,通过增加更多训练次数,准确率有所提升

通过测试,最终在阈值为0.95时map值可达0.8285,阈值为0.5时map值可达0.9785,效果理想。

6 总结与展望

本系统在传统计算机视觉方法对车牌识别进行改进,采用较新的深度学习算法,使用YoloV5算法对车牌进行识别,将识别出来的区域放进CRNN网络中进行检测,相较于传统计算机视觉,CRNN更适合处理长文本识别任务。传统计算机视觉技术在处理长文本时需要分割成多个子图像进行识别,而CRNN则能够直接对整个文本进行识别,且具有较高的准确率,解决了传统方法速度慢准确率不高的弱点。在未来的使用推广中,可以将本项目进一步完善,可以结合大数据云平台,对破损车牌,套牌等无法通过人工识别的车牌进行大数据比对,快速高效准确的完成对于车牌信息的处理。

参考文献

  1. 邓嘉诚,黄贺声,杨林,等.车辆牌照识别技术现状[J].现代信息科技,2019(16):78-83.
  2. 李洁,李登刚,曾文亮.基于BP神经网络的车牌识别方法研究[J].电子测试,2022(16):38-40
  3. 聂文都,蔡锦凡.基于OpenCV与SVM的车牌识别方法[J].计算机与数字工程,2021(6):1244-1247,1268.
  4. 王汝心,马维华.结合HOG特征的车牌识别方法[J].计算机时代,2021(7):1-5.
  5. 陶星珍,李康顺,刘玥.基于深度学习模型LeNet-5-L的车牌识别算法[J].计算机测量与控制,2021, 29(06):181-187.
  6. ZHAI W F, GAO T, FENG J. Research on pre-processing methods for license plate recognition[J]. International Journal of Computer Vision and Image Processing (IJCVIP), 2021, 11(1):47-79.
  7. 高艳,刘海峰.基于OpenCV和卷积神经网络的车牌识别研究[J].软件工程,2022,25(05):1-3
  8. 李驰. 智能交通中的车牌识别算法研究 [D]. 华中科技大学 ,2012.
  9. 陈学保 . 车牌字符识别算法的研究 [D]. 重庆大学 ,2013.
  10. 刘博. 基于YOLO的车牌定位识别系统研究[D].东北石油大学,2022.DOI:10.26995/d.cnki.gdqsc.2022. 000278.
  11. 杨国亮,杨浩,余帅英,王吉祥,聂子玲.改进YOLOv5的交通标志检测算法[J/OL].计算机工程与应用:1-10[2023-02-24]
  12. 华春梦,臧艳辉,马伙财.一种基于CRNN的车牌识别算法研究与应用[J].现代信息科技,2021,5(20):2
  13. LIU S, HUANG D, WANG Y. Learning spatial fusion for single-shot object detection[J]. arXiv preprint arXiv:1911.09516, 2019.
  14. XIAO J, ZHAO T, YAO Y, et al. Context augmentation and feature refinement network for tiny object detection[J]. ICRL 2022. submitted. 2022.

致谢

转眼间,四年的大学生活即将结束,回顾过去的时光,顿时感慨不已。四年的时光里,收获了知识和朋友,并且顺利地完成大学学业,在此谨向帮助过我的所有老师和朋友表示最衷心的感谢!

首先要感谢我的导师郝王丽老师,在学术研究上郝老师给予了我极大的帮助,给我提供了很多资源,带着我们进行了各种机器学习,深度学习算法的学习。

另外还要感谢我的朋友们,感谢学委李梦菲,不管是在学习中还是在生活上给我提供了很大的帮助,感谢已经毕业的学长周健,曹程晖,他们在技术上、学业上支持我,十分感谢。祝你们前途光明,前程似锦。还要感谢我的舍友在我大学四年的生活上对我的帮助与照顾。

我还要感谢我的父母,谢谢你们对我无私的帮助与鼓励,你们赋予了我生命。我将会是你们的骄傲。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/997888
推荐阅读
相关标签
  

闽ICP备14008679号