猫狗大战深度学习图像入门

猫狗大战

  1. 项目流程
数治收集及预处理
深度学习分类任务代码编写
前端页面设计与开发
登陆功能开发
模型训练与部署
文档撰写和开发进度记录
训练数据结果可视化
系统功能测试
  1. 项目

1** 项目概述**

现如今深度学习已经广泛运用在各个领域,近十年来,深度学习取得了快速 的发展以及长足的进步,通过深度学习来进行图像识别已经在已经取得了巨大的 成功。本文项目数据集来源于kaggle竞赛Dogs vs Cats,通过训练集的学习让计算机能够分别识别猫与狗的图像,这是一个二元分类项目。

该项目基于ResNet50机器学习系统的web项目,旨在将深度学习技术应用于图像分类领域,提供一种自动识别猫狗的解决方案。该系统的设计和实现,充分考虑用户体验和系统性能,提供了方便、快捷、准确的图像识别服务。

在实现过程中,使用ResNet50深度学习模型进行猫狗图像的分类训练和预测。该模型是目前较为流行的深度学习模型之一,具有较高的图像识别准确率和鲁棒性。同时,使用FastApi框架进行web开发,实现了高效、可靠的web服务,以及良好的用户体验。系统的数据存储采用MySQL数据库,保证了数据的可靠性和安全性。

该系统的用户界面清晰、简洁,用户上传照片后,系统将自动对照片进行分类识别,并在页面上展示分类结果和预览图。同时系统还提供历史记录查询和删除功能,方便用户查看之前上传的照片和识别结果。

该系统的设计和实现,可以为用户提供便捷、高效、准确的图像识别服务,具有较高的实际应用价值。

2 项目情况

2.1 数据集筛选处理

(1)因为 kaggle 给我们的 training 图片名是根据 “cat/dog + num.jpg” 命名的,各 12500 张。所以首先需要根据文件名的关键字 cat 和 dog 将训练集根据名字进行分类。

(2)为了增加效果,在使用 glob读取图片路径后,我就使用了shuffle将图片路径进行打乱,之后再进行预处理操作。

(3)由于ResNet50 所需求的图片大小为(224, 224, 3),而 training set里的图片大小各不相同,需要使用了 cv2.resize 命令统一输入给模型。同时为了节约内存分配,我预先还对 training 数据矩阵的大小进行了预分配。

2.2 模型训练展示

ResNet50是一种深度神经网络模型,是ResNet系列中的一种,由微软亚洲研究院的Kaiming He等人于2015年提出,是当时ImageNet图像分类比赛的冠军模型。ResNet50模型在深度学习领域中被广泛应用,具有很高的图像分类性能和鲁棒性。

ResNet50模型的核心思想是通过残差学习方式来增加神经网络的深度,从而使网络更加强大。在标准的深度神经网络中,网络的深度增加会导致梯度消失或梯度爆炸等问题,从而限制了网络的深度。而ResNet50模型通过引入残差块(Residual Block)来解决这些问题,从而实现网络的深度增加。

ResNet50模型共有50层,包括一个卷积层、四个残差块,每个残差块包含多个残差单元(Residual Unit),以及一个全局平均池化层和一个全连接层。ResNet50模型在训练过程中使用了批标准化(Batch Normalization)和残差学习等技术,从而使得网络具有较高的分类准确率和鲁棒性。

ResNet50模型是一种非常强大的深度神经网络模型,具有较高的图像分类性能和鲁棒性,被广泛应用于图像分类、目标检测、人脸识别等领域。

核心代码展示
opt = SGD(lr=0.0001, momentum=0.9)myinput = Input(shape=(224, 224, 3))base_model=ResNet50(weights=‘imagenet’, input_tensor=myinput, include_top=False)x = Flatten()(base_model.output)x = Dense(1024, activation=‘relu’)(x)x = Dropout(0.75)(x)predictions = Dense(1, activation=‘sigmoid’)(X)

Resnet-50模型训练模型时,我记录了每轮训练中训练集的平均损失值和平均准确率、验证集(测试集)的平均损失值和平均准确率,如表 1所示:

表1 训练评价指标记录表

| loss | acc | val_loss | val_acc |

10.17620.93230.04540.9880
20.06910.97550.03250.9908
90.01620.99480.01900.9928
100.01390.99580.01780.9932

Resnet-50 模型训练时准确率变化图,如图1所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwQcDsiy-1691932032715)(RackMultipart20230813-1-ggndve_html_8198cb54074f547e.png)]

图1 准确率变化图

Resnet-50 模型训练时损失变化图,如图2所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzlAtVfG-1691932032721)(RackMultipart20230813-1-ggndve_html_5743199cc1b83ef0.png)]

图2 损失变化图

2.3 系统架构设计

2.3.1 总体设计

该系统采用了分层架构,前端负责用户界面和交互,后端负责业务逻辑和数据处理。系统的深度学习模型采用ResNet50模型,保证了较高的分类准确率。同时,系统采用FastApi框架进行web开发,实现了快速、稳定的web服务。系统的数据存储采用MySQL数据库,保证数据的可靠性和安全性。

系统的设计分为前端和后端两个部分,其中前端采用HTML、CSS和JavaScript等技术实现,后端采用Python语言编写。系统的深度学习模型采用ResNet50模型,使用Keras框架进行训练和预测,同时采用Flask框架进行web开发。

2.3.2 前端设计

1.用户上传照片模块:用户可以通过上传照片功能上传待识别的照片。

2.照片预览与识别结果展示模块:系统将自动对上传的照片进行分类识别,并在页面上显示识别结果,同时展示照片的预览图。

3.历史记录模块:系统将保存用户上传的照片和识别结果,方便用户查看历史记录。

2.3.3 后端设计

后端设计包括系统的业务逻辑和数据处理,主要包括以下功能模块:

1.深度学习模型预测模块:使用ResNet50深度学习模型对猫狗图像进行预测。

2.照片上传与处理模块:从前端接收用户上传的照片,并进行预处理,以便进行深度学习模型的预测和分类。

3.历史记录管理模块:管理用户上传的照片和识别结果,提供历史记录查询和删除功能。

2.3.4 数据库设计

用户表users表结构如下表2:

表2 用户表

字段名数据类型约束描述
idintPRIMARY KEY用户ID
usernamevarcharNOT NULL用户名
passwordvarcharNOT NULL用户密码

照片上传记录表photos表结构如下表3:

表3 照片上传记录表

字段名数据类型约束描述
idintPRIMARY KEY照片ID
user_idintFOREIGN KEY (user_id)上传用户ID
filenamevarcharNOT NULL照片文件名
upload_timedatetimeNOT NULL DEFAULT CURRENT_TIMESTAMP照片上传时间

存储识别结果记录表classifications表结构如下表4:

表4 存储识别结果记录表

字段名数据类型约束描述
idintPRIMARY KEY识别结果ID
photo_idintFOREIGN KEY (photo_id) REFERENCES photos(id) CASCADE照片ID
labelvarcharNOT NULL分类标签
confidencefloatNOT NULL分类置信度
classify_timedatetimeNOT NULL DEFAULT CURRENT_TIMESTAMP分类时间

2.4 web** 系统模块**

2.4.1 登陆模块

1.使用Vue和Element UI进行登陆界面设计,具体设计如下:

2.采用单栏式布局,将页面分为左右两部分,左侧为登陆表单,右侧为背景图片和系统logo。

3.在登陆表单中,包含用户名、密码和登陆按钮等控件,采用简洁明了的颜色和样式。

4.采用响应式设计,使界面在不同设备上都能够有良好的显示效果。

登录界面效果展示如下图3:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3nGlBiIl-1691932032721)(RackMultipart20230813-1-ggndve_html_c695c771594b4d1b.png)]

图3 登录界面图

2.4.2 上传记录模块

在上传记录界面中,上传记录列表控件采用Element UI的Table组件,包括文件名、上传姓名、识别结果、置信度、时间和操作等列。

在上传记录界面中,包含搜索、查看详情、删除和下载等功能。其中,搜索功能采用搜索框控件和搜索按钮控件的形式,查看详情功能采用按钮的形式,删除和下载功能采用按钮的形式。在功能的设计上,考虑了用户查找、管理和下载上传记录的需求,保证功能的完整性和易用性。

上传记录效果展示如下图4:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPWvquTN-1691932032723)(RackMultipart20230813-1-ggndve_html_6c62ad6081611ffd.png)]

图4 上传记录图

2.4.2 图片预测模块

在预测猫狗功能界面中,需要包含上传图片、预测图片和展示预测结果等功能。上传图片功能采用上传按钮控件的形式,预测图片和展示预测结果功能采用预测图片区域和预测结果展示区域控件的形式。预测结果展示区域中,可以使用标签显示预测结果,例如"这是一只猫"或"这是一只狗",同时也可以显示置信度等信息。在功能的设计上,需要考虑用户上传、预测和展示预测结果的需求,保证功能的完整性和易用性。

图片预测展示如下图5:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flHmtzdF-1691932032724)(RackMultipart20230813-1-ggndve_html_d85e6272b9e63aef.png)]

图5 图片预测图

3 展望未来

本项目通过使用Vue和Element UI进行界面设计,实现了图片预测猫狗和上传记录功能。在设计过程中,采取了简洁明了的布局、控件和样式设计,保证了界面的可视性和易用性。同时,在功能实现方面,使用了机器学习模型进行图片预测,并使用Web框架实现了Web应用程序。本项目的实现具有一定的实用性和可扩展性,可以为用户和开发者带来一定的价值。

在本项目的实现过程中,遇到了一些技术问题,例如如何使用Vue和Element UI进行界面设计、如何使用机器学习模型进行图片预测、如何使用Web框架实现Web应用程序等,通过查阅相关文档和资料,以及进行实践和调试,最终成功解决了这些问题。

本项目实现了图片预测猫狗和上传记录功能,具有一定的实用性和可扩展性。在未来,可以进一步优化和扩展本项目,以满足更多的用户需求和应用场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值