[深度学习]--分类问题的排查错误的流程

原因复现:
原生的.pt 好使, 转化后的 CoreML不好使, 分类有问题。

yolov8 格式的支持情况

                   Format     Argument           Suffix    CPU    GPU
0                 PyTorch            -              .pt   True   True
1             TorchScript  torchscript     .torchscript   True   True
2                    ONNX         onnx            .onnx   True   True
3                OpenVINO     openvino  _openvino_model   True  False
4                TensorRT       engine          .engine  False   True
5                  CoreML       coreml       .mlpackage   True  False
6   TensorFlow SavedModel  saved_model     _saved_model   True   True
7     TensorFlow GraphDef           pb              .pb   True   True
8         TensorFlow Lite       tflite          .tflite   True  False
9     TensorFlow Edge TPU      edgetpu  _edgetpu.tflite   True  False
10          TensorFlow.js         tfjs       _web_model   True  False
11           PaddlePaddle       paddle    _paddle_model   True   True
12                   NCNN         ncnn      _ncnn_model   True   True

这里可以看到CoreML 只支持cpu, 尼玛tflite也是只支持cpu的

def test_coreml():detect_weight = '/home/justin/Desktop/code/python_project/Jersey-Number/runs/detect/train64/weights/best.pt'model_detect = YOLO(detect_weight)results = model_detect(source="/home/justin/Desktop/code/python_project/Jersey-Number/zr_yz.MP4",stream=True,classes=[3])class_weight = '/home/justin/Desktop/code/python_project/Jersey-Number/runs/classify/train7/weights/best.mlpackage'class_weight = '/home/justin/Desktop/code/python_project/Jersey-Number/runs/classify/train7/weights/best.mlpackage'model_class = YOLO(class_weight)# 要使用的字体fontFace = cv2.FONT_HERSHEY_SIMPLEXfontScale = 3thickness = 1img_count = 0for result in results:img_count+=1if img_count == 6:a = 1boxes = result.boxes  # Boxes object for bounding box outputsfor box in boxes:cls = box.cls.item()conf = box.conf.item()if conf > 0.5:x1,y1,x2,y2 = box.xyxy.tolist()[0]x1,y1,x2,y2 = int(x1),int(y1),int(x2),int(y2)orig_img = result.orig_img# H,W = orig_img.orig_shapecv2.imwrite("/home/justin/Desktop/code/python_project/Jersey-Number/runs/imgs"+"{:06d}-raw.jpg".format(img_count),orig_img)cropped_image = orig_img[y1:y2,x1:x2]# res_number_class = model_class(cropped_image,save_txt=True,save=True)res_number_class = model_class(cropped_image, device = "cpu")cv2.rectangle(orig_img, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2) for r in res_number_class:if hasattr(r,"probs"):if r.probs.top1conf.item() > 0.2:class_name = r.names[r.probs.top1](width, height), bottom = cv2.getTextSize(class_name, fontFace, fontScale=fontScale, thickness=thickness)cv2.putText(orig_img, class_name+" conf:"+str(r.probs.top1conf.item()), (x1 - width, y1-height), fontFace, fontScale, color=(0, 0, 255), thickness=thickness,lineType=cv2.LINE_AA)cv2.imwrite("/home/justin/Desktop/code/python_project/Jersey-Number/runs/imgs"+"{:06d}.jpg".format(img_count),orig_img)

报错的这句话值得看一眼:
sklearn不支持,tensorflow和torch没测试过,可能会有问题。 先跑跑再说吧

Loading /home/justin/Desktop/code/python_project/Jersey-Number/runs/classify/train7/weights/best.mlpackage for CoreML inference...
scikit-learn version 1.4.2 is not supported. Minimum required version: 0.17. Maximum required version: 1.1.2. Disabling scikit-learn conversion API.
TensorFlow version 2.13.1 has not been tested with coremltools. You may run into unexpected errors. TensorFlow 2.12.0 is the most recent version that has been tested.
Torch version 2.3.0+cu121 has not been tested with coremltools. You may run into unexpected errors. Torch 2.1.0 is the most recent version that has been tested.

所以还要降级,真是麻烦,tensorflow是因为要转android侧的模型。
这里要给个参数,来指定cpu复现
res_number_class = model_class(cropped_image, device = “cpu”)

这意思是不能用pytorch 跑了吗? @todo, 然后用pytorch 2.0的环境试一下看看怎么样?@todo,
核心诉求是要把coreml的模型加载起来,看看是不是存在一样的错误

Exception has occurred: Exception
Model prediction is only supported on macOS version 10.13 or later.File "/home/justin/Desktop/code/python_project/Jersey-Number/zr_yz.py", line 76, in test_coremlres_number_class = model_class(cropped_image, device = "cpu")^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home/justin/Desktop/code/python_project/Jersey-Number/zr_yz.py", line 88, in <module>test_coreml()
Exception: Model prediction is only supported on macOS version 10.13 or later.
detect 参数
detect_conf = 0.5172230005264282
切割位置: x1,y1,x2,y2
1. 原始位置:[1648.0953369140625, 882.2176513671875, 1682.9732666015625, 980.842041015625]
2.强制转成int 为后面切出这个区域做准备(1648, 882, 1682, 980)分类输出结果:top1:64top1conf:tensor(0.9994, device='cuda:0')top5:[64, 53, 10, 0, 20]top5conf:tensor([9.9943e-01, 4.8942e-04, 1.9284e-05, 1.8095e-05, 8.8464e-06], device='cuda:0')

垃圾

shit CoreML模型只能在mac 上跑, 而且只能用CoreMl 跑么??? @todo???

确实只能在mac上跑
ref:
coreml的文档:
https://developer.apple.com/documentation/coreml
coremltool的文档:
https://apple.github.io/coremltools/docs-guides/
一段python代码:

import coremltools as ct
import PIL
import torch
import numpy as npdef get_x1y1x2y2(coordinate,img):width,height = img.size()center_x = int(coordinate[0] * width)center_y = int(coordinate[1] * height)img_w = int(coordinate[2]*width)img_h = int(coordinate[3]*height)return center_x, center_y, img_w, img_hdef ml_test_detect():mlmodel = ct.models.MLModel('/Users/smkj/Desktop/Code/justin/head_person_hoop_number_v8n.mlpackage')print(mlmodel)img = PIL.Image.open("/Users/smkj/Desktop/Code/justin/imgs000006-raw.jpg").resize((640,384))res = mlmodel.predict({"image":img})confidence_max_list = list(np.array(res['confidence']).argmax(axis=1))# array([0.86775684, 0.8630705 , 0.01861118, 0.09405255], dtype=float32)for row_index, class_id in enumerate(confidence_max_list):if class_id == 3:coordinate = res['coordinates'][row_index]x1,y1,x2,y2 = 555 - 12 / 2, 333  - 36 / 2, 555 + 12/2, 333 + 36/2im=img.crop((x1, y1, x2, y2))im.save("bbb.jpg")print(res)
# print(img)
def ml_test_classify():img = PIL.Image.open("/Users/smkj/Desktop/Code/justin/bbb.jpg").resize((64,64))mlmodel = ct.models.MLModel('/Users/smkj/Desktop/Code/justin/classification.mlpackage')res = mlmodel.predict({"image":img})max_key = max(res['classLabel_probs'], key=res['classLabel_probs'].get)print("class_name:",max_key, "confidence:",res['classLabel_probs'].get(max_key))a = 1
ml_test_classify()

在mac上安装opencv实在是太费劲了,各位自求多福吧!
用这个可以替代opencv: pip install pillow

在这里插入图片描述

置信度也是99.99

coreml不爽的点是必须要固定尺寸??? @todo 也许是我用惯了动态尺寸的原因。 anyway,今天调试了一天,在两个电脑上装了环境,算是搞定了。!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HQChart实战教程73-仿tradingview指标MACD

HQChart实战教程73-仿tradingview指标MACD MACD![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/84d180b5620940f6b9fe08c6f10eb0f3.png)麦语法脚本实心MACD指标脚本效果 空心MACD指标脚本效果图 自定义指标添加到系统指标里HQChart插件源码地址 MACD tradingview中…

在Windows环境下设置定时任务(任务计划程序)(Python)

文章目录 前言一、准备执行的test.py文件二、准备test.bat批处理文件&#xff08;系统环境变量&#xff09;三、设置定时任务&#xff08;任务计划程序&#xff09; 前言 计划任务是系统的常见功能&#xff0c;利用任务计划功能&#xff0c;可以将任何脚本、程序或文档安排在某…

自研一套带双向认证的Android通用网络库

当前&#xff0c;许多网络库基于Retrofit或OkHttp开发&#xff0c;但实际项目中常需要定制化&#xff0c;并且需要添加类似双向认证等安全功能。这意味着每个项目都可能需要二次开发。那么&#xff0c;有没有一种通用的封装方式&#xff0c;可以满足大多数项目需求&#xff1f;…

基于Spring框架的应用:构建企业级应用的业务逻辑层

引言 在现代软件开发中&#xff0c;尤其是企业级应用程序开发中&#xff0c;选择合适的框架至关重要。Spring框架&#xff0c;作为一个轻量级的Java开发框架&#xff0c;旨在解决企业级应用开发中的耦合问题。本文将深入探讨Spring框架的核心组件之一——业务逻辑层&#xff0…

怎么制作酒店订房功能

在这个快节奏的时代&#xff0c;每一次旅行都如同一次心灵的远航。而酒店&#xff0c;作为旅途中的“避风港”&#xff0c;它的选择显得尤为重要。你是否曾在忙碌的行程中&#xff0c;为了寻找一家心仪的酒店而焦头烂额&#xff1f;是否曾在深夜的街头&#xff0c;为了找到一个…

美式动漫效果PS图层样式

对于追求独特艺术风格和创意的摄影师和设计师来说&#xff0c;一款能够轻松将照片转化为卡通效果的Photoshop模板无疑是一个强大的工具。这款由专业团队精心打造的模板&#xff0c;特别注重于美式动漫风格的呈现&#xff0c;让您的照片瞬间拥有生动且充满魅力的动漫色彩。 模板…

elementPlus+vite 定制化主题色

导读&#xff1a;在使用elementPlus组件库的过程中&#xff0c;可以自定义样式&#xff08;比如主题色&#xff09;修改默认样式&#xff0c;导入定制化样式文件进行样式覆盖 1、新建样式文件 1.1 新建 styles/element/index.scss 自定义项目主题色 // 重写项目主题色 forwa…

odoo 定时备份

odoo10 定时备份&#xff0c;每天备份一次&#xff0c;每七天删除一次 #!/bin/bash# vars BACKUP_DIR~/odoo_backups ODOO_DATABASEdb1 ADMIN_PASSWORDsuperadmin_passwd# create a backup directory mkdir -p ${BACKUP_DIR}# create a backup curl -X POST \-F "master_…

2台nginx只需配置一台,另外一台直接生效

配置文件更新与应用重启脚本使用指南 需求说明 需要一个脚本来完成以下任务&#xff1a; 修改 /data/THS/conf/httpserver.conf 文件后重启本地应用。将 /data/THS/conf/httpserver.conf 文件拷贝到远程服务器 192.142.8.82 的 /data/THS/conf/ 目录下&#xff0c;覆盖远程的…

Plonky3和Binius中的Brakedown多项式承诺协议解析及优化(3)

3.2 Expander Graph and Linear-Time Encodable Linear Code 线性时间编码是线性纠错码的一种&#xff0c;核心是扩展图&#xff08;Expander Graph&#xff09;&#xff0c;如下图所示&#xff1a; Figure 3 Expander Graph Expander Graph是一种具有强连通性的稀疏图&#…

【C语言】位运算符

前言 C语言中给我们提供了6个位运算符&#xff0c;包括2个移位运算符和其他4个位运算符&#xff08;按位取反、按位与、按位异或&#xff0c;以及按位或&#xff09;。它们可以用于对整数数据进行位运算&#xff0c;现在就让我们来了解一下吧&#xff01; 移位运算符 移位运算…

Python关闭exe文件

Python关闭exe文件的代码详解 在Python中&#xff0c;我们可以使用一些代码来关闭正在运行的exe文件。在本篇文章中&#xff0c;我们将介绍如何使用Python代码来关闭exe文件&#xff0c;并提供示例代码进行演示。 关闭exe文件的原理 在深入讨论关闭exe文件之前&#xff0c;让我…

Python 引入中文py文件

目录 背景 思路 importlib介绍 使用方法 1.导入内置库 importlib.util 2.创建模块规格对象 spec importlib.util.spec_from_file_location("example_module", "example.py") 3.创建模块对象 module importlib.util.module_from_spec(spec) …

MyBatis基础教程

文章目录 一、MyBatis基本使用1.1简介1.2搭建MyBatis环境1.2.1安装MyBatis1.2.2创建MyBatis核心配置文件1.2.3创建mapper接口1.2.4创建MyBatis映射文件1.2.5实现增加功能 1.3整合log4j1.4修改与删除功能1.5查询功能1.5.1查询单个实体类对象1.5.2查询所有用户信息 二、核心配置文…

“Redis中的持久化:深入理解RDB与AOF机制“

目录 # 概念 1. RDB持久化 1.1 备份是如何执行的&#xff08;RDB过程&#xff09; 1.2 配置文件信息 1.3 RDB持久化操作 1.4 RDB优势 1.5 RDB劣势 1.6 RDB做备份 2. AOF持久化 2.1 AOF开启及使用 2.2 异常恢复 2.3 配置文件操作 2.4 AOF持久化流程 2.5 优点 2.6…

Service的作用是什么?

在Android开发中&#xff0c;Service是一个重要的组件&#xff0c;它允许应用在后台执行长时间运行的操作&#xff0c;同时不向用户显示界面。以下是关于Service的作用的详细描述&#xff0c;包括技术难点、面试官关注点、回答吸引力和代码举例。 一、技术难点 生命周期管理&…

利用Elasticsearch提升Java应用的搜索能力

引言&#xff1a; 在数据驱动的时代&#xff0c;能够快速地处理和分析大量数据变得至关重要。Elasticsearch不仅提供全文搜索功能&#xff0c;还支持复杂的数据分析&#xff0c;是现代应用中不可或缺的工具之一。 什么是Elasticsearch&#xff1f; Elasticsearch是一个高度可…

k8s基础命令集合

1、集群信息 # 显示k8s客户端和服务器版本 kubectl version# 显示当前上下文信息 kubectl config current-context# 切换上下文 kubectl config use-context <context-name># 列出所有上下文 kubectl config get-contexts# 获取集群信息 kubectl cluster-info2、节点管理…

垃圾回收管理系统设计

一、引言 随着城市化进程的加快&#xff0c;垃圾处理问题日益凸显。为了有效管理垃圾回收&#xff0c;提高资源利用效率&#xff0c;降低环境污染&#xff0c;本文设计了一套垃圾回收管理系统。该系统涵盖了数据收集与分析、智能监测与识别、资源调配与协调、用户参与与反馈、…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第42课-多人联机-实时互动

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第42课-多人联机-实时互动 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…