当前位置: 首页 > news >正文

mediapipe 训练自有图像数据分类

参考:
https://developers.google.com/mediapipe/solutions/customization/image_classifier
https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/customization/image_classifier.ipynb#scrollTo=plvO-YmcQn5g

安装:

pip install mediapipe-model-maker  -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com --use-pep517

版本错误情况

1)RuntimeError: File loading is not yet supported on Windows

其中mediapipe版本要大于等于0.10.0;下图中的要升级;不然后续用python 加载文件会报:

2)ImportError: cannot import name ‘array_record_module’ from ‘array_record.python’ ;参考:https://blog.csdn.net/LQ_001/article/details/130991571;原因:包依赖关系出现问题,原来版本 tensorflow-datasets==4.9.0

pip install tensorflow-datasets==4.8.3

在这里插入图片描述

在这里插入图片描述

1、训练代码

import os
import tensorflow as tf
assert tf.__version__.startswith('2')from mediapipe_model_maker import image_classifierimport matplotlib.pyplot as pltimage_path = os.path.join(os.path.dirname(r"C:\Users\loong\Downloads\mediapipe\flower_photos\flower_photos"), 'flower_photos')   ## down data  :https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz#Review datalabels = []
for i in os.listdir(image_path):if os.path.isdir(os.path.join(image_path, i)):labels.append(i)
print(labels)##plt 
NUM_EXAMPLES = 5for label in labels:label_dir = os.path.join(image_path, label)example_filenames = os.listdir(label_dir)[:NUM_EXAMPLES]fig, axs = plt.subplots(1, NUM_EXAMPLES, figsize=(10,2))for i in range(NUM_EXAMPLES):axs[i].imshow(plt.imread(os.path.join(label_dir, example_filenames[i])))axs[i].get_xaxis().set_visible(False)axs[i].get_yaxis().set_visible(False)fig.suptitle(f'Showing {NUM_EXAMPLES} examples for {label}')plt.show()

在这里插入图片描述

#Create dataset;训练集、测试集data = image_classifier.Dataset.from_folder(image_path)
train_data, remaining_data = data.split(0.8)
test_data, validation_data = remaining_data.split(0.5)## retrain model 训练模型spec = image_classifier.SupportedModels.MOBILENET_V2    ##有几个预训练模型,需要联网下载
hparams = image_classifier.HParams(export_dir="exported_model")  ##指定模型保存位置
options = image_classifier.ImageClassifierOptions(supported_model=spec, hparams=hparams)
model = image_classifier.ImageClassifier.create(train_data = train_data,validation_data = validation_data,options=options,
)## 验证模型
loss, acc = model.evaluate(test_data)
print(f'Test loss:{loss}, Test accuracy:{acc}')##保存模型
model.export_model()

在这里插入图片描述

在这里插入图片描述
默认训练是10epcos
在这里插入图片描述

查看训练tebsorboard:
注意ValueError: Duplicate plugins for name projector错误,参考https://blog.csdn.net/weixin_44966641/article/details/123292034;我这里是换了个conda环境重新安装个新的tensorflow解决

tensorboard --logdir=.

日志存放默认地址
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

##模型压缩
from mediapipe_model_maker import quantizationquantization_config = quantization.QuantizationConfig.for_int8(train_data)
model.export_model(model_name="model_int8.tflite", quantization_config=quantization_config)

从8M缩小到3M左右
在这里插入图片描述

2、加载推理

参考:https://blog.csdn.net/weixin_42357472/article/details/131322076

import mediapipe as mpBaseOptions = mp.tasks.BaseOptions
ImageClassifier = mp.tasks.vision.ImageClassifier
ImageClassifierOptions = mp.tasks.vision.ImageClassifierOptions
VisionRunningMode = mp.tasks.vision.RunningModeoptions = ImageClassifierOptions(base_options=BaseOptions(model_asset_path=r"C:\User**ediapipe\model.tflite"),max_results=5,running_mode=VisionRunningMode.IMAGE)   ##加载模型classifier = ImageClassifier.create_from_options(options)# Load the input image from an image file.
mp_image = mp.Image.create_from_file(r"C:\Users\loong\Downloads\sun2.jpg")# Perform image classification on the provided single image.
classification_result = classifier.classify(mp_image)
classification_result

在这里插入图片描述
在这里插入图片描述

相关文章:

mediapipe 训练自有图像数据分类

参考: https://developers.google.com/mediapipe/solutions/customization/image_classifier https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/customization/image_classifier.ipynb#scrollToplvO-YmcQn5g 安装&#xff1a…...

【pytorch】torch.gather()函数

dim0时 index[ [x1,x2,x2],[y1,y2,y2],[z1,z2,z3] ]如果dim0 填入方式为: index[ [(x1,0),(x2,1),(x3,2)][(y1,0),(y2,1),(y3,2)][(z1,0),(z2,1),(z3,2)] ]input [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12] ] # shape(3,4) input torch.…...

Mac 安装psycopg2,报错Error: pg_config executable not found.

在mac 上安装psycopg2的方法:执行:pip3 install psycopg2-binary。 如果执行pip3 install psycopg2,无法安装psycopg2 报错信息如下: Collecting psycopg2Using cached psycopg2-2.9.9.tar.gz (384 kB)Preparing metadata (set…...

域名系统 DNS

DNS 概述 域名系统 DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为 IP 地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”&#x…...

Vue $nextTick 模板解析后在执行的函数

this.$nextTick(()>{ 模板解析后在执行的函数 })...

VBA技术资料MF76:将自定义颜色添加到调色板

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...

zilong-20231030

1)k个反转 2)n!转12进制 求末尾多少0 一共有几位 (考虑了溢出问题) 3)大量数据获取前10个 4)reemap地城结构 5)红黑树规则特性 6)热更 7)压测 8)业务 跨服实现 9)有哪些线程以及怎么分配...

目标检测算法发展史

前言 比起图像识别,现在图片生成技术要更加具有吸引力,但是要步入AIGC技术领域,首先不推荐一上来就接触那些已经成熟闭源的包装好了再提供给你的接口网站,会使用别人的模型生成一些图片就能叫自己会AIGC了吗?那样真正…...

React 生成传递给无障碍属性的唯一 ID

useId() 在组件的顶层调用 useId 生成唯一 ID: import { useId } from react; function PasswordField() { const passwordHintId useId(); // ...参数 useId 不带任何参数。 返回值 useId 返回一个唯一的字符串 ID,与此特定组件中的 useI…...

十种排序算法(1) - 准备测试函数和工具

1.准备工作 我们先写一堆工具&#xff0c;后续要用&#xff0c;不然这些写在代码里可读性巨差 #pragma once #include<stdio.h>//为C语言定义bool类型 typedef int bool; #define false 0 #define true 1//用于交互a和b inline void swap(int* a, int* b) {/*int c *a…...

IRF联动 BFD-MAD

文章目录 IRF堆叠一、主设备配置二、备设备配置三、验证 MAD检测一、MAD检测二、MAD验证 本实验以2台设备进行堆叠示例&#xff0c;按照配置顺序&#xff0c;先配置主设备&#xff0c;再配置备设备。在IRF配置前暂时先不接堆叠线&#xff0c;按步骤提示接线。 IRF堆叠 一、主设…...

双向链表的初步练习

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇: Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”…...

IDE的组成

集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…...

项目解读_v2

1. 项目介绍 如果使用task2-1作为示例时&#xff0c; 运行process.py的过程中需要确认 process调用的是函数 preprocess_ast_wav2vec(wav, fr) 1.1 任务简介 首个开源的儿科呼吸音数据集&#xff0c; 通过邀请11位医师标注&#xff1b; 数字听诊器的采样频率和量化分辨率分…...

杀毒软件哪个好,杀毒软件有哪些

安全杀毒软件是一种专门用于检测、防止和清除计算机病毒、恶意软件和其他安全威胁的软件。这类软件通常具备以下功能&#xff1a; 1. 实时监测&#xff1a;通过实时监测计算机系统&#xff0c;能够发现并防止病毒、恶意软件等安全威胁的入侵。 2. 扫描和清除&#xff1a;可以…...

Ubuntu上安装配置Nginx

要在 Ubuntu 上安装 Nginx&#xff0c;请按照以下步骤进行操作&#xff1a; 打开终端&#xff1a;可以使用快捷键 Ctrl Alt T 打开终端&#xff0c;或者在开始菜单中搜索 “Terminal” 并点击打开。 更新软件包列表&#xff1a;在终端中运行以下命令&#xff0c;以确保软件包…...

C++之string

C之string #include <iostream>using namespace std;/*string();//创建一个空的字符串string(const char* s);//使用字符串s初始化string(const string& str);//使用一个string对象初始化另外一个string对象string(int n,char c);//使用n个字符c初始化*/void test1()…...

多线程---单例模式

文章目录 什么是单例模式&#xff1f;饿汉模式懒汉模式版本一&#xff1a;最简单的懒汉模式版本二&#xff1a;考虑懒汉模式存在的线程安全问题版本三&#xff1a;更完善的解决线程安全问题版本四&#xff1a;解决指令重排序问题 什么是单例模式&#xff1f; 单例模式&#xf…...

SpringBoot相比于Spring的优点(自动配置和依赖管理)

自动配置 例子见真章 我们先看一下我们Spring整合Druid的过程&#xff0c;以及我们使用SpringBoot整合Druid的过程我们就知道我们SpringBoot的好处了。 Spring方式 Spring方式分为两种&#xff0c;第一种就是我们使用xml进行整合&#xff0c;第二种就是使用我们注解进行简化…...

SAP SPAD新建打印纸张

SAP SPAD新建打印纸张 1.事务代码SPAD 2.完全管理&#xff0d;设备类型&#xff0d;页格式-显示(创建格式页) 3.按标准A4纸张为模板参考创建。同一个纸张纵向/横向各创建1次(创建格式页) 4.完全管理&#xff0d;设备类型&#xff0d;格式类型-显示(创建格式类型&#xff0…...

AI浪潮冲击下,前端该何去何从

&#x1f30a; 初级前端工程师&#xff1a;向“深水区”扎根技能树与学习路径定位&#xff1a;面向初级前端开发工程师&#xff0c;聚焦底层原理、工程化思维与可验证的实战输出&#xff0c;构建 AI 时代不可替代的技术护城河。&#x1f4d0; 核心原则&#xff08;避坑指南&…...

共享图书借阅系统 Java 源码 + 数据库设计完整方案

以下是一个共享图书借阅系统的Java源码与数据库设计的完整方案&#xff0c;涵盖系统架构、核心功能实现、数据库设计以及安全防护措施等方面&#xff1a;一、系统架构技术栈&#xff1a;后端&#xff1a;Spring Boot 2.x MyBatis-Plus&#xff08;简化数据库操作&#xff09;前…...

求人不如求己!小初高电子教材全套自取,鸡娃路上不迷路!

家有神兽的家长们&#xff0c;是不是经常遇到这种情况&#xff1a;孩子把课本忘在学校&#xff0c;作业没法写&#xff1b;想提前预习下学期的内容&#xff0c;却不知道去哪里找教材&#xff1b;或者想给孩子找点课外拓展资料&#xff0c;又怕买错版本……别急&#xff01;我花…...

RTL8201F PHY芯片替换调试:从时钟异常到Ping通实战

1. 低成本PHY芯片替换的背景与挑战 最近接手了一个嵌入式以太网项目&#xff0c;甲方对成本控制非常严格&#xff0c;要求我们把原本使用的LAN8742 PHY芯片替换成更便宜的RTL8201F。这个需求听起来简单&#xff0c;但实际操作起来却遇到了不少坑。RTL8201F确实便宜不少&#xf…...

Kandinsky-5.0-I2V-Lite-5s技术解析:如何在24GB显存跑通完整图生视频栈

Kandinsky-5.0-I2V-Lite-5s技术解析&#xff1a;如何在24GB显存跑通完整图生视频栈 1. 开箱即用的轻量级图生视频方案 Kandinsky-5.0-I2V-Lite-5s是一款让静态图片动起来的AI工具。想象一下&#xff0c;你只需要上传一张照片&#xff0c;再简单描述想要的动态效果&#xff0c…...

Qwen3.5-9B实战案例:用128K上下文做法律合同比对与风险提示

Qwen3.5-9B实战案例&#xff1a;用128K上下文做法律合同比对与风险提示 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;在专业领域的逻辑推理和长文本处理方面表现出色。本文将重点展示如何利用其128K tokens的超长上下文能力&#xff0c;实现法律合…...

深入解析dlopen:动态库加载的机制与实践

1. 动态库加载的两种方式 在C/C开发中&#xff0c;动态库&#xff08;Dynamic Library&#xff09;的使用是提升代码复用性和灵活性的重要手段。动态库加载主要分为隐式链接和显式链接两种方式&#xff0c;它们各有特点&#xff0c;适用于不同场景。 隐式链接是最常见的方式&am…...

I2CLCD驱动库:HD44780字符屏的I²C轻量级嵌入式驱动

1. I2CLCD库概述&#xff1a;面向嵌入式系统的字符型LCD IC适配驱动I2CLCD是一个轻量级、高可靠性的开源驱动库&#xff0c;专为将标准HD44780兼容的字符型LCD&#xff08;如1602、2004&#xff09;通过IC总线接入嵌入式系统而设计。其核心价值在于以最小硬件资源开销实现LCD控…...

不用第三方工具!用Altium Designer 24原生功能实现Allegro到PADS的PCB文件转换

解锁Altium Designer 24原生转换能力&#xff1a;Allegro到PADS的PCB文件高效迁移指南 在硬件开发领域&#xff0c;跨EDA平台协作已成为常态。当设计团队使用不同工具链时&#xff0c;文件格式转换往往成为效率瓶颈。传统方案依赖第三方转换工具&#xff0c;不仅增加成本&#…...

我国网络安全行业前景如何?是否可以入行?有哪些岗位?

我国网络安全行业前景如何&#xff1f;是否可以入行&#xff1f;有哪些岗位&#xff1f; 网络空间安全专业简称“网络安全专业”&#xff0c;主要以信息构建的各种空间领域为主要研究对象&#xff0c;包括网络空间的组成、形态、安全、管理等。我国网络空间安全专业于2015年设立…...