modelscope实时手机检测-通用 模型导出Onnx、修改模型输出维度

目录

说明

代码

其他

参考


说明

本模型为高性能热门应用系列检测模型中的 实时手机检测模型,基于面向工业落地的高性能检测框架DAMOYOLO,其精度和速度超越当前经典的YOLO系列方法。用户使用的时候,仅需要输入一张图像,便可以获得图像中所有手机的坐标信息,并可用于打电话检测等后续应用场景。

本模型为实时手机检测模型,基于检测框架DAMOYOLO-S模型,DAMO-YOLO是一个面向工业落地的目标检测框架,兼顾模型速度与精度,其训练的模型效果超越了目前的一众YOLO系列方法,并且仍然保持极高的推理速度。

代码

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasksmodel_id = 'damo/cv_tinynas_object-detection_damoyolo_phone'
input_location = 'image_phone.jpg'phone_detection = pipeline(Tasks.domain_specific_object_detection, model=model_id)
result = phone_detection(input_location)
print("result is : ", result)#================模型导出============================
from modelscope.models import Model
import torchmodel_id = 'damo/cv_tinynas_object-detection_damoyolo_phone'
model = Model.from_pretrained(model_id)
model.eval()
input = torch.randn((1,3,640,640)).float()
type(model).__call__ = type(model).forward
torch.onnx.export(model, input,'damoyolo_phone.onnx',input_names=["input"],output_names=["output"],opset_version=13)#================修改模型输出维度=======================
import onnx
from onnx import helper, TensorProto,shape_inference# 加载原始模型
model = onnx.load("damoyolo_phone.onnx")# 获取原始输出节点信息
original_output = model.graph.output[0]
print(f"Original output shape: {original_output.type.tensor_type.shape}")# 创建Transpose节点
transpose_node = helper.make_node("Transpose",inputs=[original_output.name],  # 使用原始输出作为输入outputs=["transposed_output"],perm=[0, 2, 1]  # 交换第1和第2维度
)# 创建新的输出Tensor
new_output = helper.make_tensor_value_info("transposed_output",TensorProto.FLOAT,[1, 5, 8400]  # 新的形状
)# 添加新节点到计算图
model.graph.node.append(transpose_node)# 替换输出
model.graph.output.remove(original_output)
model.graph.output.insert(0, new_output)# 检查并修复模型结构
model = shape_inference.infer_shapes(model)# 保存修改后的模型
onnx.save(model, "model_modified.onnx")
print("Model modified and saved successfully!")
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasksmodel_id = 'damo/cv_tinynas_object-detection_damoyolo_phone'
input_location = 'image_phone.jpg'phone_detection = pipeline(Tasks.domain_specific_object_detection, model=model_id)
result = phone_detection(input_location)
print("result is : ", result)#================模型导出============================
from modelscope.models import Model
import torchmodel_id = 'damo/cv_tinynas_object-detection_damoyolo_phone'
model = Model.from_pretrained(model_id)
model.eval()
input = torch.randn((1,3,640,640)).float()
type(model).__call__ = type(model).forward
torch.onnx.export(model, input,'damoyolo_phone.onnx',input_names=["input"],output_names=["output"],opset_version=13)#================修改模型输出维度=======================
import onnx
from onnx import helper, TensorProto,shape_inference# 加载原始模型
model = onnx.load("damoyolo_phone.onnx")# 获取原始输出节点信息
original_output = model.graph.output[0]
print(f"Original output shape: {original_output.type.tensor_type.shape}")# 创建Transpose节点
transpose_node = helper.make_node("Transpose",inputs=[original_output.name],  # 使用原始输出作为输入outputs=["transposed_output"],perm=[0, 2, 1]  # 交换第1和第2维度
)# 创建新的输出Tensor
new_output = helper.make_tensor_value_info("transposed_output",TensorProto.FLOAT,[1, 5, 8400]  # 新的形状
)# 添加新节点到计算图
model.graph.node.append(transpose_node)# 替换输出
model.graph.output.remove(original_output)
model.graph.output.insert(0, new_output)# 检查并修复模型结构
model = shape_inference.infer_shapes(model)# 保存修改后的模型
onnx.save(model, "model_modified.onnx")
print("Model modified and saved successfully!")

其他

模型修改后推理实现 C# OnnxRuntime DAMO-YOLO 手机检测 

参考

https://modelscope.cn/models/iic/cv_tinynas_object-detection_damoyolo_phone/summary

相关新闻

Self-Pro: A Self-Prompt and Tuning Framework  for Graph Neural Networks

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks

Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks ​#paper/GFM/GNN-BASED#​ #paper/⭐⭐⭐#​ 注意:这篇文章是每个图一个GCN模型,而不是所有图一个GCN 模型 算是最早的涉及异配图的prompt了 贡献和动机: 非对…

2026/7/19 20:01:03 阅读更多 →
Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件

Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件

Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件 打开向日葵远程官网,下载图形版本: 在下载目录下打开终端,执行: sudo dpkg -i SunloginClient(按tab键自动补全)出现报错: …

2026/7/19 19:59:58 阅读更多 →
hutool 文件操作相关的类

hutool 文件操作相关的类

hutool 文件操作相关的类 介绍 Hutool 里的文件相关工具: IOUtil :操作流的 FileUtil :操作文件的 FileTypeUtil: 被包含在FileUtil里了 FileReader,FileWriter:这两个基本上都在FileUtil里用了 Wat…

2026/7/19 19:59:29 阅读更多 →
2026年加固笔记本技术演进与选购指南

2026年加固笔记本技术演进与选购指南

1. 2026年加固笔记本市场现状与需求分析在工业检测、野外勘探和特种作业等严苛环境中,普通消费级笔记本的故障率高达37%(2025年行业白皮书数据)。我经手过的设备送修案例中,80%的损坏都源于跌落冲击和液体侵入。2026年主流加固笔记…

2026/7/19 20:45:31 阅读更多 →
基于YOLO26的暴力行为智能识别系统开发实践

基于YOLO26的暴力行为智能识别系统开发实践

1. 项目概述:基于YOLO26的暴力行为智能识别系统在公共安全领域,暴力行为的实时监测一直是个技术难点。传统监控依赖人工值守,不仅效率低下,还容易漏判误判。我们团队基于最新的YOLO26目标检测框架,开发了一套能够自动识…

2026/7/19 20:45:30 阅读更多 →
Android ListView使用指南与性能优化技巧

Android ListView使用指南与性能优化技巧

1. ListView基础概念与核心特性 ListView是Android开发中最经典的数据列表展示控件之一,它继承自AbsListView,主要用于展示垂直滚动的单列数据列表。在实际项目中,我们经常需要用它来展示通讯录、消息记录、商品列表等需要滚动浏览的数据集合…

2026/7/19 20:45:30 阅读更多 →
Postman通Swagger不通?详解API测试差异与排查指南

Postman通Swagger不通?详解API测试差异与排查指南

1. 问题现象与核心矛盾解析 最近在排查一个线上问题时,遇到了一个非常典型且让不少开发者困惑的场景:一个后端API接口,在Postman里调用得风生水起,响应又快又准,数据格式完全正确。但当我们满怀信心地把接口文档&#…

2026/7/19 20:45:30 阅读更多 →
STM32多传感器融合的人体平衡检测仪设计与实现

STM32多传感器融合的人体平衡检测仪设计与实现

1. 项目概述与核心功能设计这个便携式人体平衡检测仪的核心思路是通过多传感器融合技术,实现对人体平衡能力的量化评估。我在实际开发中发现,传统平衡检测设备往往体积庞大且价格昂贵,而基于STM32的方案能以极低成本实现专业级功能。系统采用…

2026/7/19 20:45:30 阅读更多 →
Flutter Android编译问题解析与优化方案

Flutter Android编译问题解析与优化方案

1. Flutter 编译 Android 程序的核心痛点解析 Flutter 作为跨平台开发框架,在 Android 平台的编译过程中存在几个典型痛点。首先,Flutter 的编译流程涉及 Dart 代码转 ARM 指令、Gradle 构建系统集成、原生平台适配等多个环节,这种多层级的架…

2026/7/19 20:44:30 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

简介 saa是java的ai agent框架,本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理,不仅可以指导agent的开发,更可以改造框架,增加新特性 系列内容: 系列(一) 架构 完成 系列(三) 调用 I 工具 完成 II M…

2026/7/19 0:01:20 阅读更多 →
终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack Steam-auto-crack是一款功能强大的Steam游戏自动破解工具&#xff…

2026/7/19 9:10:31 阅读更多 →
移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…

2026/7/19 19:29:48 阅读更多 →