尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
指针压力表读数4:Android实现指针压力表读数(可实时检测)
指针压力表读数4Android实现指针压力表读数(可实时检测)目录指针压力表读数4Android实现指针压力表读数(可实时检测)1. 前言2. 部署框架MNN3. 导出MNN模型4. Android端上部署模型1 版本说明2 JNI接口实现3 一些异常错误解决方法5. Android测试效果6.项目源码下载1. 前言本篇文章是项目《指针压力表读数》系列文章之《Android实现指针压力表读数》。项目基于PyTorch 深度学习框架构建了一套完整的指针压力表自动读数识别方案。整体流程采用“压力表检测 关键点检测 读数计算”的三阶段设计首先利用 YOLO11 模型从复杂工业背景中快速定位压力表表盘区域裁剪得到表盘 ROI随后在 ROI 内对表盘量程范围起点零刻度线、量程范围终点最大刻度线、指针起点和指针终点四个关键位置进行关键点检测最后基于关键点之间的几何关系计算指针偏转角度并结合量程信息换算得到最终压力读数。其中压力表表盘检测采用 YOLO11 模型。YOLO11 在检测速度、小目标识别能力和模型导出兼容性方面具有较好优势能够适应工业现场中表盘尺度变化大、拍摄角度倾斜、光照不均等复杂场景。 表盘指针关键点检测则基于开源 HRNet 进行改进构建了完整的指针压力表读数训练与测试流程。HRNet 通过保持高分辨率特征表示能够更稳定地回归指针尖端、表盘中心等细长或弱纹理关键点在此基础上项目进一步引入轻量化分支支持高精度 HRNet、LiteHRNet 以及 MobileNet 等多种骨干网络的训练和测试从而在检测精度、推理速度和模型体积之间进行灵活权衡。为了方便后续模型工程化和 Android 平台部署项目同时提供了 Python、C 和 Android 多个版本的实现。Python 版本主要用于算法验证、模型训练、离线测试和效果可视化C 版本基于 MNN等推理后端实现便于在边缘设备、工控机或嵌入式平台上集成Android 版本则面向移动端巡检场景支持相机采集、实时推理和读数结果显示。轻量化Mobilenet-v2模型在普通Android手机上可以达到实时的检测效果CPU(4线程)约40ms左右GPU约30ms左右 基本满足业务的性能需求。下表格给出HRNet以及轻量化模型LiteHRNet和Mobilenet的计算量和参数量以及其检测精度模型input-sizeparams(M)GFLOPsAPHRNet-w32192×19228.48M5734.05M0.9801LiteHRNet18192×1921.10M182.15M0.9708Mobilenet-v2192×1922.63M529.25M0.9589先展示一下Android Demo检测的效果指针压力表读数Android APK安装包体验效果 https://download.csdn.net/download/guyuealian/93758160【尊重原创转载请注明出处】https://blog.csdn.net/guyuealian/article/details/168873316更多项目《指针压力表读数》系列文章请参考指针压力表读数1指针压力表数据集下载https://blog.csdn.net/guyuealian/article/details/168873184指针压力表读数2Pytorch实现指针压力表读数(含训练代码) https://blog.csdn.net/guyuealian/article/details/168873246指针压力表读数3C/C实现指针压力表读数(可实时检测) https://blog.csdn.net/guyuealian/article/details/168873267指针压力表读数4Android实现指针压力表读数(可实时检测) https://blog.csdn.net/guyuealian/article/details/1688733162. 部署框架MNNGitHubhttps://github.com/alibaba/MNNMNN 是阿里巴巴集团开源的轻量级深度学习推理框架旨在为移动端、嵌入式设备提供高效的模型部署能力。它已在**宝、**猫、钉钉等 30 多个阿里系应用中大规模使用每天运行数百万次推理。MNN 支持 TensorFlow、Caffe、ONNX 等主流模型格式转换兼容 CNN、RNN、GAN、Transformer 等常见网络结构并针对 CPU、GPU、NPU 等硬件后端进行了深度优化。 在 CPU 端MNN 不依赖第三方计算库通过手写汇编、Winograd 卷积、多线程调度和内存复用等方式充分发挥 ARM CPU 算力在 GPU 端它支持 OpenCL、Vulkan、Metal、CUDA 等多种加速后端其中 Android 平台可使用 OpenCL/VulkaniOS/macOS 平台可使用 MetalPC/服务器端还可使用 CUDA。 对于需要更高性能的场景开启 GPU 加速后推理速度通常可提升数倍部分机型甚至可获得更明显的加速效果。此外MNN 还支持 INT4/INT8/FP16 等低精度量化、算子融合、图优化和异构计算能够在保持模型精度的同时显著降低推理延迟和内存占用。 结合其轻量的库体积、完善的 Python/C API 以及跨平台部署能力MNN 非常适合作为本项目 Android 端推理后端。3. 导出MNN模型在开始 C 部署之前首先需要将训练好的 PyTorch 模型导出为 MNN 格式。项目Python源码提供了导出脚本libs/converter/torch2mnn.py。以LiteHRNet18为例导出命令如下需要安装依赖库 pip install onnx onnxsim onnxruntime mnn This code is used to convert the pytorch model into an onnx/MNN format model. import os import torch.onnx from pose.inference import PoseEstimation from basetrainer.utils.converter import pytorch2onnx, onnx2mnn def load_model(config_file, model_file, devicecuda:0): pose PoseEstimation(config_file, model_file, devicedevice) model pose.model config pose.config return model, config def convert2mnn(config_file, model_file, devicecuda:0, onnx_typekp): :param model_file: :param input_size: :param device: :param onnx_type: :return: model, config load_model(config_file, model_file, devicedevice) model model.to(device) model.eval() model_name os.path.basename(model_file)[:-len(.pth)] onnx_file os.path.join(os.path.dirname(model_file), model_name .onnx) # dummy_input torch.randn(1, 3, 240, 320).to(cuda) input_size tuple(config.MODEL.IMAGE_SIZE) # w,h input_shape (1, 3, input_size[1], input_size[0]) onnx_file pytorch2onnx.convert2onnx(model, input_shapeinput_shape, input_names[input], output_names[output], onnx_fileonnx_file, opset_version11, ) mnn_file onnx2mnn.convert2mnn(onnx_file, fp16True) if __name__ __main__: model_file work_space/pressure_meter/LiteHRNet18_4_192_192_custom_coco_20261023_105744_0418/model/best_model_209_1.0000.pth config_file work_space/pressure_meter/LiteHRNet18_4_192_192_custom_coco_20261023_105744_0418/litehrnet18_192_192.yaml其他模型导出方式完全一致只需替换对应的model_file模型文件和配置文件config_file即可导出的*.mnn文件。4. Android端上部署模型1 版本说明Android Studio开发版本请参考Android项目常见问题解决办法2 JNI接口实现Android Demo部署框架采用MNN支持多线程CPU和GPU加速推理在普通手机上可以实时处理。Android源码核心算法部分均采用C实现上层通过JNI接口调用。package com.cv.dl.model; import android.graphics.Bitmap; public class Detector { static { System.loadLibrary(cvdl-lib); } /*** * 初始化检测模型 * param root模型文件的根目录放在assets文件夹下 * param det_model 检测模型 * param rec_model 识别模型(可选) * param model_type模型类型 * param num_thread开启线程数 * param useGPU是否开启GPU进行加速 */ public static native void init(String root, String det_model, String rec_model, int model_type, int num_thread, boolean useGPU); /*** * 进行检测(用于静态图) * param bitmap 图像bitmapARGB_8888格式 * param score_thresh置信度阈值 * param iou_thresh IOU阈值 * param filter是否开启关键点去抖动平滑视频流中的关键点输入必须是连续帧的图像使用前必须先初始化 * return */ public static native FrameInfo[] detect(Bitmap bitmap, float score_thresh, float iou_thresh, boolean filter); }如果你想在这个Android Demo部署你自己训练的YOLO模型你可将训练好的Pytorch模型转换成MNN模型然后把MNN模型代替你模型即可。3 一些异常错误解决方法项目开发常见的问题请参考Android项目常见问题解决办法5. Android测试效果指针压力表读数Android APK安装包体验效果 https://download.csdn.net/download/guyuealian/93758160APP在普通Android手机上可以达到实时的效果CPU(4线程)约40ms左右GPU约30ms左右 基本满足业务的性能需求。6.项目源码下载如需下载项目源码请关注【AI吃大瓜】回复【指针压力表】即可下载Android项目源码内容包含Android Demo提供YOLO11n指针压力表目标检测C推理代码Android Demo提供指针压力表零刻度线、最大刻度线、指针起点和指针终点共四个关键点检测C推理代码Android Demo提供MNN模型权重文件高精度版本HRNet-w32以及轻量化模型LiteHRNet和Mobilenet-v2模型配置好环境可直接运行OpenCVbase-utilsMNN所有依赖库都已经配置好可直接build构建APP运行项目MNN C/C源码支持CPU和GPU运行LiteHRNet可以达到实时检测效果CPU(4线程) 约40ms左右GPU OpenCL约30ms左右。Android Demo支持提供视频关键点去抖动算法(filtertrue)Android Demo支持支持图片视频摄像头测试
RELATED

相关推荐

MOE抗体的理性设计教程(05):Protein Properties——如何从残基性质中寻找抗体优化位点?

MOE抗体的理性设计教程(05):Protein Properties——如何从残基性质中寻找抗体优化位点?

一、为什么需要计算抗体的理化性质?在前面的教程中,我们已经利用Protein Contacts分析了抗原–抗体结合界面的相互作用,并通过Protein Surface和Protein Patches研究了抗体表面的静电与疏水性质。这些分析可以帮助我们理解抗体如何识别抗原&a…

📅 2026/10/28 1:54:08
新一代信息技术(上):物联网、云计算与大数据(软考高级通关 50 讲·07)

新一代信息技术(上):物联网、云计算与大数据(软考高级通关 50 讲·07)

新一代信息技术(上):物联网、云计算与大数据(软考高级通关 50 讲07) 摘要:新一代信息技术是高项综合知识的高频"新词区",其中物联网、云计算、大数据三块最容易出选择题。本文先给出新技术全景,再分别讲透物联网的三层架构与关键技术、云计算的三种服务模式与…

📅 2026/10/28 1:54:08
Octop 本地部署教程:十分钟在自己电脑上搭一个多用户 AI 助手

Octop 本地部署教程:十分钟在自己电脑上搭一个多用户 AI 助手

Octop 本地部署教程:十分钟在自己电脑上搭一个多用户 AI 助手 【免费下载链接】Octop A smarter, self-hosted AI assistant — multi-user, multi-agent. 项目地址: https://gitcode.com/GitHub_Trending/oct/Octop 发客户名单、合同给云端聊天机器人之前&a…

📅 2026/10/28 1:49:07
MORE NEWS

更多资讯

📰

机器人模型训练新手避坑指南

1. 机器人模型训练入门指南第一次接触机器人模型训练时,我被各种专业术语和复杂流程搞得晕头转向。经过半年多的实践,我总结出这套适合新手的完整训练流程,帮你避开我踩过的那些坑。机器人模型训练本质上就是教会机器如何感知和理解周围环境。…

📰

遗传算法与布谷鸟搜索在特征选择中的混合优化实践

1. 项目概述:当遗传算法遇上特征选择在机器学习项目实践中,特征选择始终是影响模型性能的关键环节。传统方法如过滤式(Filter)和包裹式(Wrapper)特征选择各有局限:前者忽略特征组合效应,后者计算成本高昂。而遗传算法(Genetic Alg…

📰

机器人模型训练全流程:从数据准备到部署优化

1. 机器人模型训练入门指南刚接触机器人模型训练的新手们,你们是否曾被各种专业术语和复杂流程搞得晕头转向?作为从业多年的机器人开发工程师,我深知这个领域的学习曲线有多陡峭。今天我就用最直白的语言,带大家走一遍完整的机器人…

📰

Claude API限流策略解析与开发者优化实践

1. Anthropic调整Claude使用限制的背景与现状上周三凌晨三点,当我正在用Claude API调试一个长文本处理脚本时,突然收到了"429 Too Many Requests"的响应——这已经是本周第三次遇到类似情况。作为业内最早一批接入Claude的开发者,我…

📰

C#与MCGS TCP通信实战:从链路配置到报文解析

简介:面向工业自动化上位机开发者的C#与MCGS(昆仑通态)TCP通信实战例程,用Visual Studio 2013编写,重点解决上位机软件读取人机界面数据的通信问题,适合已具备C#基础、希望在工控项目中落地Socket通信的初中…

📰

Moark开源AI平台:分布式计算与模块化设计解析

1. 项目背景与核心定位模力方舟Moark这个命名本身就蕴含着深刻寓意——它试图在AI技术快速迭代的浪潮中,为开发者打造一艘能够抵御技术洪流的"诺亚方舟"。这个开源项目最吸引我的地方在于,它不像大多数AI工具那样只解决单一场景问题&#xff0…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬