图像处理案例03
HOG+SVM数字识别
- 1 . 步骤
- 2 . 代码
1 . 步骤
- 读入数据,把数据划分为训练集和测试集
- 用hog提取特征
- 用SVM训练数据
- 测试、评价模型
- 保存模型
- 加载模型,应用模型
2 . 代码
import os
import cv2
import sklearn
import numpy as np
from skimage.feature import hog
from skimage import data,exposure
from sklearn import svm
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import seaborn as sn
import pandas as pd
from joblib import dump,load
from sklearn.metrics import confusion_matrix# 1. 读入数据
# 1.1 处理数据,获取图像的地址和标签,划分训练集、测试集,对数据集打乱顺序
data_path = r'./hand_nums'
tmp_train = os.listdir(data_path+'/train')
tmp_test = os.listdir(data_path+'/test')
train_x ,test_x = [],[]
## 1.2 获取图像的地址,把训练集和测试集的特征和标签
test_y ,test_y = [],[]
for i in tmp_train:if i.endswith('.bmp'):train_x.append(data_path+'/train/'+i)train_y.append(int(i.split('-')[0]))
for i in tmp_test:if i.endswith('.bmp'):test_x.append(data_path+'/test/'+i)test_y.append(int(i.split('.')[0]))
## 1.3 打乱数据的顺序
## 训练集、测试集的下标
train_idx = np.arange(len(train_x))
test_idx = np.arange(len(test_x))
## 打乱顺序
np.random.shuffle(train_idx)
np.random.shuffle(test_idx)
## 训练集、测试集打乱顺序
train_x = list(np.array(train_x)[train_idx])
test_x = list(np.array(test_x)[test_idx])
train_y = list(np.array(train_y)[train_idx])
test_y = list(np.array(test_y)[test_idx])# 2. 用hog提取特征
## 2.1 hog实例化
train_feature,test_feature = [],[]
## 获取训练集特征
for i in train_x:img_gray = cv2.imread(i,0)fd , img_hog = hog(img_gray,orientations=9,pixels_per_cell=(8,8),cells_per_block=(2,2),visualize=True)train_feature.append(img_hog.flatten())
## 获取测试集特征
for i in test_x:img_gray = cv2.imread(i,0)fd,img_hog = hog(img_gray,orientations=9,pixels_per_cell=(8,8),cells_per_block=(2,2),visualize=True)test_feature.append(img_hog.flatten())# 3 SVM训练
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(train_feature ,train_y)
# 4. 测试、评价模型
dec = clf.decision_function(test_feature)
pred_y = clf.predict(test_feature)
accuracy_score(pred_y,test_y)
# 5. 保存模型
from joblib import dump,load
## 保存模型
dump(clf,'./hand_nums/models/poly.joblib')
## 加载模型
new_cls = load('./hand_nums/models/poly.joblib')
pred_y = new_cls.predict(test_feature)
accuracy_score(pred_y,test_y)# 6. 加载模型,应用模型
clf_poly = svm.SVC(decision_function_shape='ovo',kernel='poly')
clf_poly.fit(train_feature ,train_y)
dec = clf_poly.decision_function(test_feature)
pred_y = clf_poly.predict(test_feature)
accuracy_score(pred_y,test_y)clf_linear = svm.SVC(decision_function_shape='ovo',kernel='linear')
clf_linear.fit(train_feature ,train_y)
dec = clf_linear.decision_function(test_feature)
pred_y = clf_linear.predict(test_feature)
accuracy_score(pred_y,test_y)
cm = confusion_matrix(test_y,pred_y)df_cm = pd.Dataframe(cm,index=[i for i in ['0','1','2','3','4','5','6','7','8','9']],columns = [i for i in ['0','1','2','3','4','5','6','7','8','9']])
plt.figure(figsize=(10,7))
sn.heatmap(df_cm,annot=True,cmap='Green',fmt='d')
准确率 1.0
嘻嘻😁
数据集:链接:https://pan.baidu.com/s/1yFCJvcswdSgGcAN6n9u-nA 密码:ryqo
相关文章:
图像处理案例03
HOGSVM数字识别 1 . 步骤2 . 代码 1 . 步骤 读入数据,把数据划分为训练集和测试集用hog提取特征用SVM训练数据测试、评价模型保存模型加载模型,应用模型 2 . 代码 import os import cv2 import sklearn import numpy as np from skimage.feature impo…...
【Kubernetes】k8s集群中kubectl的陈述式资源管理
目录 一.k8s集群资源管理方式分类 1.陈述式资源管理方式 2.声明式资源管理方式 二.陈述式资源管理方法 三.kubectl命令 四.项目生命周期 1.创建 kubectl create命令 2.发布 kubectl expose命令 3.更新 kubectl set 4.回滚 kubectl rollout 5.删除 k…...
串---顺序串实现
顺序串详解 本文档将详细介绍顺序串的基本概念、实现原理及其在 C 语言中的具体应用。通过本指南,读者将了解如何使用顺序串进行各种字符串操作。 1. 什么是顺序串? 顺序串是一种用于存储字符串的数据结构,它使用一组连续的内存空间来保存…...
吴恩达机器学习WEEK2
COURSE1 WEEK2 多维特征 在线性回归中,往往特征不止一个,而是具有多维特征 例如,在预测房价的例子中,我们知道更多的信息: x 1 x_1 x1:房屋的面积 x 2 x_2 x2:卧室的数目 x 3 x_3 x3&a…...
yield and generator in python
首先,假设大家都对于pytyhon的List comprehension的使用有了一定经验(它可以用于list,set,和dict哦) 不熟悉的参考介绍: Comprehending Python’s Comprehensions – dbader.org generator generator是哦…...
spring原理(自学第六天)
Aware 接口及 InitializingBean 接口 今天将会学到Aware 接口及 InitializingBean 接口 我们可以先了解他们的作用: 1. Aware 接口用于注入一些与容器相关信息, 例如 a. BeanNameAware 注入 bean 的名字 b. BeanFactoryAware 注入…...
案例分享—国外优秀ui设计作品赏析
国外UI设计创意迭出,融合多元文化元素,以极简风搭配动态交互,打造沉浸式体验,色彩运用大胆前卫,引领界面设计新风尚 同时注重用户体验的深度挖掘,通过个性化定制与智能算法结合,让界面不仅美观且…...
【C++】简约与清晰的编程艺术
C编程的艺术:简约与清晰的实践之道 一、基础之美:基本类型与数据结构的力量二、函数与库类的艺术三、简约与清晰的实践之道 在C这一既古老又充满活力的编程语言世界里,程序员们常常面临着一个重要的选择:是追求代码的极致抽象与封…...
java之WIFI信号模块
开发步骤分为以下几点: 1.在 AndroidManifest 中声明相关权限(网络和文件读写权限) 声明权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.…...
Mybatis面试
Mybatis 面试 1、Mybatis 的执行流程是什么? 1、读取MyBatis配置文件:mybatis-config.xml 加载运行环境 和 映射文件 2、构造会话工厂 SqlSessionFactory (全局只有一个) 3、会话工厂创建SqlSession对象(项目与数据…...
Centos 8系统xfs文件系统类型进行扩容缩容 (LVM)
Centos 8系统xfs文件系统类型进行扩容缩容 (LVM),xfs分区类型是不支持正常缩容,只能强制缩容 1.磁盘情况:2.缩容home分区1.备份home数据:2.查找使用 /home 的进程:3.终止这些进程:4.卸载 /home …...
C语言基础知识之函数指针和指针函数
函数指针和指针函数 函数指针和指针函数指向函数的指针返回指针值的函数指针函数和函数指针的区别 问题1_1代码1_1结果1_1 函数指针和指针函数 指向函数的指针 用函数指针变量调用函数 可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个…...
【Unity】web gl inputFied 中文输入,同时支持TextMeshInputFied,支持全屏
同时支持TextMeshInputFied,支持全屏。 使用github包【WebGLInput】:https://github.com/kou-yeung/WebGLInput 需要资源的在这里也可以下载 https://download.csdn.net/download/weixin_46472622/89600795 用于unity web gl 中文输入,只需…...
vue3+vite全局引入less变量和函数
需要在vite配置 plugins: [css: {preprocessorOptions: {less: {additionalData: import "./src/styles/variables.module.less"; import "./src/views/Visualization/component/ViewportCom/px2viewport.less";,javascriptEnabled: true}}}, ]多个文件按…...
H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技
华强盛导读:在当今这个日新月异的汽车科技领域,每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统(BMS),其高效稳定的运行不仅关乎续航与安全,更是智能化驾驶体验的基石。而在这背后ÿ…...
C语言.回调函数
回调函数 回调函数也是一个函数。与一般函数直接调用区别在于,使用回调函数的过程,是一个函数将另一个函数作为参数调用。而被用来调用的那个函数,就是回调函数。 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地…...
《从零开始:使用Python构建简单Web爬虫》
前言 随着互联网信息的爆炸性增长,如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具,可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫,并通过实例演示其基本用法。 准备工作 …...
最新个人免签约支付系统源码|PHP源码 | 码支付系统 | ThinkPHP6框架 | 开源
源码介绍: 这个最新的个人专用免签约支付系统源码!是PHP源码写的哦,而且是用ThinkPHP6框架开发的,完全开源的码支付系统。 这个系统适合个人用户使用,作为收款的免签约解决方案。它还加入了监控端,可以拒…...
The Llama 3 Herd of Models 第4部分后训练的全文
Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…...
MongoDB性能调优
文章目录 MongoDB性能调优MongoDB性能不佳原因影响MongoDB性能的因素MongoDB性能监控工具mongostatmongotopProfiler模块db.currentOp() MongoDB性能调优 MongoDB性能不佳原因 慢查询阻塞等待硬件资源不足 1,2通常是因为模型/索引设计不佳导致的 排查思路:按1-2…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
