仪表盘指针识别数据集训练及应用 Yolo算法进行训练识别 深度学习框架PyTorch和ResNet模型作为基础来完成任务
使用深度学习框架PyTorch并使用预训练的ResNet模型作为基础来完成任务 对仪表盘指针识别数据集训练及应用 也可以Yolo算法进行训练识别文章目录使用深度学习框架PyTorch并使用预训练的ResNet模型作为基础来完成任务 对仪表盘指针识别数据集训练及应用 也可以Yolo算法进行训练识别**任务概述****代码实现****1. 导入必要的库****2. 定义自定义数据集类****3. 数据预处理与加载****4. 定义模型****5. 定义损失函数和优化器****6. 训练模型****7. 测试模型****8. 主程序****总结**仪表盘指针识别数据集说明7000张图已标注txt格式共4个类别训练集验证集测试集按7155:525:59划分的类别①base②end③start④tip仅供参考的建立代码用于处理和训练仪表盘指针识别数据集。使用深度学习框架PyTorch来完成任务。任务概述目标识别仪表盘指针的4个类别base,end,start,tip。数据集已标注为txt格式包含7000张图像。数据划分训练集7155张、验证集525张、测试集59张。模型使用预训练的卷积神经网络如ResNet或YOLO进行目标检测或关键点定位。代码实现1. 导入必要的库importosimporttorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataset,DataLoaderfromtorchvisionimporttransforms,modelsfromPILimportImageimportnumpyasnpimportmatplotlib.pyplotasplt2. 定义自定义数据集类我们需要一个Dataset类来加载图像和对应的标注文件txt格式。classPointerDataset(Dataset):def__init__(self,img_dir,label_dir,transformNone):self.img_dirimg_dir self.label_dirlabel_dir self.transformtransform self.image_filesos.listdir(img_dir)def__len__(self):returnlen(self.image_files)def__getitem__(self,idx):img_pathos.path.join(self.img_dir,self.image_files[idx])label_pathos.path.join(self.label_dir,self.image_files[idx].replace(.jpg,.txt))# 加载图像imageImage.open(img_path).convert(RGB)ifself.transform:imageself.transform(image)# 加载标签withopen(label_path,r)asf:linesf.readlines()labels[]forlineinlines:class_id,x,ymap(float,line.strip().split())labels.append([class_id,x,y])# [类别, x坐标, y坐标]returnimage,torch.tensor(labels)3. 数据预处理与加载定义图像的预处理操作并加载训练集、验证集和测试集。# 图像预处理transformtransforms.Compose([transforms.Resize((224,224)),# 调整图像大小transforms.ToTensor(),# 转换为Tensortransforms.Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225])# 归一化])# 创建数据集train_datasetPointerDataset(img_dirtrain_images,label_dirtrain_labels,transformtransform)val_datasetPointerDataset(img_dirval_images,label_dirval_labels,transformtransform)test_datasetPointerDataset(img_dirtest_images,label_dirtest_labels,transformtransform)# 创建数据加载器train_loaderDataLoader(train_dataset,batch_size32,shuffleTrue)val_loaderDataLoader(val_dataset,batch_size32,shuffleFalse)test_loaderDataLoader(test_dataset,batch_size32,shuffleFalse)4. 定义模型我们使用预训练的ResNet模型作为基础并在最后添加一个全连接层来预测4个类别的位置。classPointerModel(nn.Module):def__init__(self):super(PointerModel,self).__init__()self.base_modelmodels.resnet18(pretrainedTrue)self.base_model.fcnn.Linear(self.base_model.fc.in_features,4*3)# 4个类别每个类别有x, y坐标defforward(self,x):returnself.base_model(x)5. 定义损失函数和优化器我们使用均方误差MSE作为损失函数因为它适合回归任务。modelPointerModel()criterionnn.MSELoss()optimizeroptim.Adam(model.parameters(),lr0.001)6. 训练模型训练模型并在验证集上评估性能。deftrain_model(model,train_loader,val_loader,criterion,optimizer,num_epochs10):forepochinrange(num_epochs):model.train()running_loss0.0forimages,labelsintrain_loader:images,labelsimages.to(device),labels.to(device)# 前向传播outputsmodel(images)losscriterion(outputs,labels.view(-1,12))# 将标签展平为(batch_size, 12)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()running_lossloss.item()print(fEpoch [{epoch1}/{num_epochs}], Loss:{running_loss/len(train_loader):.4f})# 验证模型validate_model(model,val_loader,criterion)defvalidate_model(model,val_loader,criterion):model.eval()val_loss0.0withtorch.no_grad():forimages,labelsinval_loader:images,labelsimages.to(device),labels.to(device)outputsmodel(images)losscriterion(outputs,labels.view(-1,12))val_lossloss.item()print(fValidation Loss:{val_loss/len(val_loader):.4f})7. 测试模型在测试集上评估模型性能。deftest_model(model,test_loader):model.eval()test_loss0.0withtorch.no_grad():forimages,labelsintest_loader:images,labelsimages.to(device),labels.to(device)outputsmodel(images)losscriterion(outputs,labels.view(-1,12))test_lossloss.item()print(fTest Loss:{test_loss/len(test_loader):.4f})8. 主程序运行训练、验证和测试流程。devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)model.to(device)# 训练模型train_model(model,train_loader,val_loader,criterion,optimizer,num_epochs10)# 测试模型test_model(model,test_loader)总结以上代码展示了如何使用PyTorch处理仪表盘指针识别数据集并训练一个基于ResNet的模型来预测指针的关键点。您可以根据实际需求调整模型结构、损失函数和超参数。

相关新闻

基于SpringBoot+Vue的知识管理系统设计与全栈实践

基于SpringBoot+Vue的知识管理系统设计与全栈实践

1. 做这个系统的真实出发点:团队知识散落的痛点和方案取舍先说说我为什么想起来做这个东西。公司内部其实一直有文档管理的需求,但现状基本是:技术方案在 Wiki 上一份,项目文档在群文件里一份,个人笔记又散在本地硬盘&…

2026/10/10 9:23:02 阅读更多 →
第 29 章 · 求解线性方程组

第 29 章 · 求解线性方程组

Eigen 最重要的应用之一&#xff1a;解 Ax b。本章讲标准解法、各种求解器怎么选&#xff0c;以及"为什么不要用逆矩阵"。29.1 标准解法&#xff1a;solve() 解 Ax b 的标准写法&#xff1a; Eigen::Matrix2d A; A << 2, 1,1, 3; Eigen::Vector2d b(5, 10);E…

2026/10/10 9:23:02 阅读更多 →
ASCEND:与当地的Gemma一起,将一次小小的散步变成一次真实世界的探险

ASCEND:与当地的Gemma一起,将一次小小的散步变成一次真实世界的探险

这是提交给Hacktoberfest开源人工智能挑战赛:第1周——触摸草地. 附近的公园感觉很普通。给它一扇神秘的门&#xff0c;一个小故事&#xff0c;一个在尽头等待的叶耳伴&#xff0c;同样的散步变成了一场冒险。 这就是背后的想法上升。下一层是你前门外的某个地方。 我建造的…

2026/10/10 9:23:02 阅读更多 →

最新新闻

impeccable:一款面向OpenAPI契约的Python自动化校验工具

impeccable:一款面向OpenAPI契约的Python自动化校验工具

我无法基于当前输入生成符合要求的博文。原因如下&#xff1a;输入中仅提供了项目标题"impeccable"&#xff0c;以及空置的“相关热搜词”“最新网络热词”和完全空白的搜索内容块&#xff08;&#xff09;&#xff0c;未提供任何实质性的项目正文、关键词列表或摘要…

2026/10/10 21:47:36 阅读更多 →
X射线底片焊缝缺陷检测:2647张6类标注数据集,可直接喂给YOLO

X射线底片焊缝缺陷检测:2647张6类标注数据集,可直接喂给YOLO

简介&#xff1a;面向工业X射线底片焊缝缺陷检测的目标检测数据集&#xff0c;涵盖裂纹、未熔合、未渗透等6类焊缝缺陷&#xff0c;共2647张底片图像、4766个真实标注框&#xff0c;适合用于YOLO、Faster R-CNN等目标检测模型的训练与评测。数据采用VOC与YOLO双格式存储&#x…

2026/10/10 21:47:36 阅读更多 →
AI辅助软件测试实战:从脚本生成到日志分析的全流程经验

AI辅助软件测试实战:从脚本生成到日志分析的全流程经验

软件测试这行的工具形态&#xff0c;这几年变化比我入行前十年加起来都大。以前同行碰头聊提效&#xff0c;无非是自动化框架怎么搭、脚本怎么写更稳、CI怎么接&#xff1b;现在问得最多的变成了"你平时用哪个AI工具""Prompt怎么写的""AI生成的脚本你…

2026/10/10 21:47:36 阅读更多 →
开源AI测试工具落地指南:从接口自动化到自愈定位器的实践选型

开源AI测试工具落地指南:从接口自动化到自愈定位器的实践选型

软件测试这个岗位&#xff0c;这两年的变化比过去十年加起来都大。我记得年初帮一个测试组做评审&#xff0c;同事把一份AI生成的接口用例贴出来&#xff0c;从覆盖路径到断言写法看着都像模像样&#xff0c;但一跑就发现大量断言是“凭空捏造”的——它把响应里根本不存在的字…

2026/10/10 21:47:36 阅读更多 →
Inno Setup自定义安装界面:ILSpy反编译+WinForms回调实践

Inno Setup自定义安装界面:ILSpy反编译+WinForms回调实践

简介&#xff1a;一套面向.NET应用开发者的Inno Setup自定义安装界面资源&#xff0c;用于解决安装包界面模板固化、动态配置繁琐的问题。资源基于Inno Setup增强版封装&#xff0c;内置对.NET Framework 4的依赖支持&#xff0c;并将界面逻辑集中在Code.iss脚本中&#xff0c;…

2026/10/10 21:47:36 阅读更多 →
【Claude Code】BMad-Method 多智能体协作实战:PRD 与架构文档一键生成,TaoToken 统一 Key 接入

【Claude Code】BMad-Method 多智能体协作实战:PRD 与架构文档一键生成,TaoToken 统一 Key 接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:46:35 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起&#xff1a;为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念&#xff0c;很多人会觉得它离自己很远——不就是天上的星星怎么转吗&#xff1f;但如果你正在做航天任务规划、遥感数据接收、星座设计&#xff0c;甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起&#xff1a;为什么你的代码里到处都是重复逻辑刚入行那会儿&#xff0c;我写过一个用户管理模块&#xff0c;注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么&#xff0c;能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介&#xff1a;这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目&#xff0c;以Boss直聘岗位数据为对象&#xff0c;适合用作毕业设计、课程设计或期末大作业。资源包共38个文件&#xff0c;约246KB&#xff0c;以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →