怎么设计网站规划方案/网站排名分析
1 2023 年 MathorCup 高校数学建模挑战赛——大数据竞赛
赛道 A:基于计算机视觉的坑洼道路检测和识别
使用深度学习模型,pytorch版本进行图像训练和预测,使用ResNet50模型
2 文件夹预处理
因为给定的是所有图片都在一个文件夹里面,所以需要先进行处理,核心代码:
for file_name in file_names:source_path = os.path.join(source_folder, file_name)# 判断文件名中是否包含'a'字符if "normal" in file_name:# 如果包含'a'字符,将文件移动到文件夹Adestination_path = os.path.join(folder_normal, file_name)shutil.copy(source_path, destination_path)elif "potholes" in file_name:# 如果包含'bb'字符,将文件移动到文件夹BBdestination_path = os.path.join(folder_potholes, file_name)shutil.copy(source_path, destination_path)
移动后的图片所在文件夹显示
每个文件夹里面包含属于这一类的图片
3 使用ResNet50模型进行建模
3.1 ResNet50核心原理
- 输入层: 接收输入图像 卷积层1:对输入图像进行卷积操作,得到64个特征图批量标准化层1:对卷积层的输出进行批量标准化
- ReLU激活函数1:对批量标准化后的特征图进行非线性激活
- 残差块1:包含两个残差块,每个残差块由两个卷积层和一个批量标准化层组成ReLU激活函数2:对残差块1的输出进行非线性激活
- 批量标准化层2:对ReLU激活函数2的输出进行批量标准化。
- 卷积层2:对批量标准化后的特征图进行卷积操作,得到128个特征图残差块2:包含两个残差块,每个残差块由两个卷积层和一个批量标准化层组成ReLU激活函数3:对残差块2的输出进行非线性激活批量标准化层3:对ReLU激活函数3的输出进行批量标准化。卷积层3:对批量标准化后的特征图进行卷积操作,得到256个特征图
3.2 核心代码
3.2.1 数据预处理
数据预处理,归一化
transform = T.Compose([T.Resize(256),T.CenterCrop(224),T.ToTensor(),T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),])
3.2.2 训练集和测试集划分
# 划分数据集为训练集和测试集
validation_split = 0.2
dataset_size = len(custom_dataset)
split = int(validation_split * dataset_size)
indices = list(range(dataset_size))
np.random.shuffle(indices)
train_indices, test_indices = indices[split:], indices[:split]train_sampler = SubsetRandomSampler(train_indices)
test_sampler = SubsetRandomSampler(test_indices)# 创建数据加载器
batch_size= 128
train_loader = DataLoader(custom_dataset, batch_size=batch_size, sampler=train_sampler)
test_loader = DataLoader(custom_dataset, batch_size=batch_size, sampler=test_sampler)
3.2.3 加载模型
from torchvision import models
model = models.resnet50(pretrained=True) # 导入resnet50网络# 修改最后一层,最后一层的神经元数目=类别数目,所以设置为100个
model.fc = torch.nn.Linear(in_features=2048, out_features=2)
3.2.4 训练
train = Variable(images).cuda()labels = Variable(labels).cuda()# 梯度清零optimizer.zero_grad()# 前向计算outputs = model(train)predicted = torch.max(outputs.data, 1)[1] # 预测标签acc = (predicted == labels).sum() / float(len(labels)) # 计算精度loss = error(outputs, labels) # 计算损失函数# 计算梯度loss.backward()# 更新梯度optimizer.step()train_loss_list.append(loss.data.cpu().item())train_acc_list.append(acc.cpu().item())
3.2.5 模型预测
遍历测试数据集
with torch.no_grad():for inputs, labels in test_loader:inputs = Variable(inputs).cuda()labels = Variable(labels).cuda()outputs = model(inputs)_, predicted = torch.max(outputs, 1) # 获取预测标签true_labels.extend(labels.cpu().numpy()) # 将真实标签添加到列表predicted_labels.extend(predicted.cpu().numpy()) # 将预测标签添加到列表
4 结果显示
要输出精度、F1 分数和分类报告等多种指标,你可以在训练模型之后使用Scikit-Learn的工具来进行评估和计算这些指标。
train data: 0 Loss: 0.1588 Accuracy: 0.9143
Accuracy: 0.9833333333333333
Precision: 0.9857142857142857
Recall: 0.9833333333333333
F1 Score: 0.9838964773544213
Classification Report:precision recall f1-score support0 1.00 0.98 0.99 541 0.86 1.00 0.92 6accuracy 0.98 60macro avg 0.93 0.99 0.96 60
weighted avg 0.99 0.98 0.98 60
完整代码:https://docs.qq.com/doc/DWEtRempVZ1NSZHdQ
相关文章:

基于计算机视觉的坑洼道路检测和识别-MathorCup A(深度学习版本)
1 2023 年 MathorCup 高校数学建模挑战赛——大数据竞赛 赛道 A:基于计算机视觉的坑洼道路检测和识别 使用深度学习模型,pytorch版本进行图像训练和预测,使用ResNet50模型 2 文件夹预处理 因为给定的是所有图片都在一个文件夹里面…...

【考研数学】概率论与数理统计 —— 第七章 | 参数估计(1,基本概念及点估计法)
文章目录 引言一、参数估计的概念二、参数的点估计2.1 矩估计法2.2 最大似然估计法 写在最后 引言 我们之前学了那么多分布,如正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),泊松分布 P ( λ ) P(\lambda) P(λ) 等等,都是在已知 …...

获取文本长度
使用TextView的getLineCount方法,它可以返回TextView当前显示的行数。但是,这个方法只有在TextView绘制完成后才能返回正确的值,否则可能返回0。因此,需要在TextView的post方法中调用,或者在onWindowFocusChanged方法中…...

python html(文件/url/html字符串)转pdf
安装库 pip install pdfkit第二步 下载程序wkhtmltopdf https://wkhtmltopdf.org/downloads.html 下载7z压缩包 解压即可, 无需安装 解压后结构应该是这样, 我喜欢放在项目里, 相对路径引用(也可以使用绝对路径, 放其他地方) import pdfkit# 将 wkhtmltopdf.exe程序 路径 p…...

Spring概述
Spring概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 …...
Linux网卡
网卡 网卡(Network Interface Card,NIC)是一种计算机硬件设备,也称为网络适配器或网络接口控制器。一个网卡就是一个接口 网卡组成和工作原理参考https://blog.csdn.net/tao546377318/article/details/51602298 每个网卡都拥有唯…...

【Python机器学习】零基础掌握ElasticNet变量选择回归器
如何优雅地解决房价预测问题? 房价预测一直是一个热门而复杂的话题。假设一个地产商希望准确地预测不同城市区域的房价,以便更有效地进行房地产投资。问题在于,房价是由多种因素共同决定的,例如地段、房屋面积、交通便利程度等。 为了解决这个问题,一个可行的思路是使用…...

【数据结构】模拟实现Vecotr
namespace my_vector {template <class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//常量指针,指针指向的值不可以变;//构造函数vector():start(nullptr),finish(nullptr),end_of_storage(nullptr){}//析构函数…...

Qt开发: 利用Qt的charts模块绘制曲线、饼图、柱状图、折线图等各种图表
一、前言 Qt Charts模块是Qt提供的一个用于创建各种类型图表的功能模块。为开发人员提供了一种简单而强大的方式来可视化数据。Qt Charts模块基于Qt GUI框架构建,可以与其他Qt模块无缝集成,例如Qt Widgets、Qt Quick和Qt OpenGL。 Qt Charts模块包含了几个核心类: (1)Q…...

Redis:加速你的应用响应时间,提升用户体验
绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里对 Redis 常见问题做一个总结,解决大家的知识盲点。 1、为什么使用 Redis 在项目中使用 Redis&am…...

乐鑫 SoC 内存映射入门
微控制器 (MCU) 的性能和内存能力逐步提升,其复杂度也随之加大。特别是当用户需要配置内存管理单元来映射外部存储器芯片 (Flash/SPIRAM) 时,这种现象尤其明显。 开始在乐鑫 SoC 上运行 Zephyr RTOS 时,会发现这些 SoC 与 ARM 架构的 MCU 相…...

蓝凌EIS智慧协同平台saveImg接口存在任意文件上传漏洞
蓝凌EIS智慧协同平台saveImg接口存在任意文件上传漏洞 一、蓝凌EIS简介二、漏洞描述三、影响版本四、fofa查询语句五、漏洞复现六、深度复现1、发送如花2、哥斯拉直连 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者…...

【SEC 学习】美化 Linux 终端
一、步骤 1. 进入 /etc/bash.bashrc vim /etc/bash.bashrc2. 重新加载 bash.bashrc source /etc/bash.bashrc二、各参数指标 符号含义\u当前用户的账号名称\h仅取主机的第一个名字,如上例,则为fc4,.linux则被省略\H完整的主机名称。例如&…...

【Unity小技巧】可靠的相机抖动及如何同时处理多个震动(附项目源码)
文章目录 每篇一句前言安装虚拟相机虚拟相机震动测试代码控制震动清除震动控制震动的幅度和时间 两个不同的强弱震动同时发生源码完结 每篇一句 围在城里的人想逃出来,站在城外的人想冲进去,婚姻也罢,事业也罢,人生的欲望大都如此…...

【51单片机】51单片机概述(学习笔记)
一、课程简介 1、硬件设备 51单片机开发板 Win电脑 2、软件设备 Keil5:编写程序代码 STC-ISP:下载程序 有道词典 福昕阅读器 二、开发工具介绍 1、Keil5 keil.com > 下载C51版本 > 使用破解程序 2、STC-ISP 绿色版:直接运…...

make和new的区别
make和new都是golang用来分配内存(理论上都是在堆上分配),不同的是 new分配空间只是将内存清零,并没有初始化;而make分配之后只初始化内存new为每个类型都分配,而make专用于slice、map、channew返回类型指…...

vue3获取页面路径
import { useRouter, useRoute } from vue-routerconst router useRouter()router.currentRoute.value.path // 页面路径...

基于STM32闭环步进电机控制系统设计
**单片机设计介绍,1654基于STM32闭环步进电机控制系统设计(仿真,程序,说明) 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序文档 六、 文章目录 一 概要 基于STM32的闭环步进电机控制系统设计是…...

Java中的队列:各种类型及使用场景
在Java中,队列是一种重要的数据结构,用于存储按特定顺序排列的元素。队列在多线程环境中特别有用,因为它们可以用来解决并发问题。在Java中,队列主要分为以下几种类型: 接口: Queue: 这是Java Queue接口&…...

MappingMongoConverter原生mongo 枚举类ENUM映射使用的是name
j.l.IllegalArgumentException: No enum constant com.xxx.valobj.TypeEnum.stringat java.lang.Enum.valueOf...

Java中的锁:类型,比较,升级与降级
在Java中,锁是一种用于实现并发控制的重要工具。在多线程环境中,锁可以确保数据的一致性和完整性。Java提供了多种类型的锁,包括内置的synchronized关键字,ReentrantLock类以及更高级的并发工具,如StampedLock和ReadWr…...

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据
一.串口轮询模式底层机制: 在STM32每个串口的内部都有两个寄存器:发送数据寄存器(TDR)/发送移位寄存器,当我们调用HAL_UART_Transmit 把数据发送出去时,CPU会将数据依次将数据发送到数据寄存器中,移位寄存器中的数据会根据我们设置…...

【OJ for Divide and Conquer】OJ题解
文章目录 A - Ultra-QuickSortB - Hanoi Tower Troubles Again! [找规律递归]C - Fibonacci Again[找规律]E - [Fire Net](https://programmerall.com/article/7276104269/)[DFS 搜索 ⭐⭐]F - Gridland[找规律]G - Maximum Subarray Sum[动态规划/分治..经典⭐]I - Quoit Desi…...

使用 Sealos 一键部署 Kubernetes 集群
Sealos 是一款以 Kubernetes 为内核的云操作系统发行版,使用户能够像使用个人电脑一样简单地使用云。 与此同时,Sealos 还提供一套强大的工具,可以便利地管理整个 Kubernetes 集群的生命周期。 Sealos 不仅可以一键安装一个单节点的 Kubern…...

解读电力系统中的GPS北斗卫星同步时钟系统
随着电力系统的快速发展,变电站中的各类系统 :计算机监控系统、水情测报系统、视频监控系统 状态监测系统 生产信息管理系统等,各类装置:继电保护装置、故障录波装置、PMU装置、事件顺序记录SOE功能越来越强大,需要采集、记录的数…...

原子类:Java并发编程的利器
在多线程环境下,确保数据的一致性和原子性是至关重要的。Java提供了一些原子类,用于解决多线程并发问题。这些原子类能够确保操作在多线程环境下是原子的,即不会被其他线程干扰。本文将介绍Java中的原子类及其应用。 一、原子类概述 原子类…...

99%网工都会遇到的经典面试问题
①问题:介绍TCP连接的三次握手?追问:为什么TCP需要握手三次? 三次握手: 第一步:A向B发送一个SYN报文表示希望建立连接 第二步:B收到A发过来的数据包后,通过SYN得知这是一个建立连接的请求,于是发送ACK确认,由于TCP的全双工模式ÿ…...

html和css中图片加载与渲染的规则是什么?
浏览器渲染web页面的过程 解析html,构成dom树 2.加载css,构成样式规则树 3.加载js,解析js代码 4.dom树和样式树进行匹配,构成渲染树 5.计算元素位置进行页面布局 5.绘制页面,呈现到浏览器中 图片加载和渲染的过程 1.解…...

YOLO轻量化改进 , 边缘GPU友好的YOLO改进算法!
在本文中,作者根据现有先进方法中各种特征尺度之间缺少的组合连接的问题,提出了一种新的边缘GPU友好模块,用于多尺度特征交互。此外,作者提出了一种新的迁移学习backbone采用的灵感是来自不同任务的转换信息流的变化,旨…...

第15届蓝桥杯Scratch选拔赛中级(STEMA)真题2023年8月
第15届蓝桥杯Scratch选拔赛中级(STEMA)真题2023年8月 一、单选题 第 1 题 单选题 点击以下积木块,生成的随机数是一个( )。 A.整数 B.小数 C.整数或小数 D.以上都不对 第 2 题 单选题 运行以下程序࿰…...