基于OpenCV的图形分析辨认05(补充)

目录

一、前言

二、实验内容

三、实验过程


一、前言

编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。

关于OpenCV,numpy,matplotlib,os等第三方库的下载方式如下:

第一步,按住【Windows】和【R】调出运行界面,输入【cmd】,回车打开命令行。

第二步,输入以下安装命令(可以先升级一下pip指令)。

pip升级指令:

python -m pip install --upgrade pip

 opencv库的清华源下载:

pip install opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple

numpy库的清华源下载:

 pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple

matplotlib库的清华源下载:

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

os库的清华源下载:

pip install os  -i https://pypi.tuna.tsinghua.edu.cn/simple 

二、实验内容

对提取出来的人脸特征数据集进行分类,使用MATLAB软件构建SVM支持向量机用于分类。

三、实验过程

以下是提取好的人脸特征数据集,分别用LBP和LDP在全局和局部情况下提取出来的。每一种提取方法下都是训练集和测试集。

特征数据集格式如下,其他一致:

 使用SVM检验识别的准确率(MATLAB软件):

导入训练数据和测试数据,分别将其归一化处理,创建SVM模型,并结合网格搜索法对训练数据进行训练,模型训练好以后,用于分类测试数据,并得到结果。MATLAB代码如下:

%% I. 清空环境变量
clc;clear ;close all%% II. 导入数据
% 选择需要的训练文件和测试文件
% data_train = importdata('D:\Image\GC_LBP_train.txt');
% data_test = importdata('D:\Image\GC_LBP_test.txt');
% data_train = importdata('D:\Image\GC_LDP_train.txt');
% data_test = importdata('D:\Image\GC_LDP_test.txt');
% data_train = importdata('D:\Image\LC_LBP_train.txt');
% data_test = importdata('D:\Image\LC_LBP_test.txt');
% data_train = importdata('D:\Image\LC_LBP_train.txt');
% data_test = importdata('D:\Image\LC_LBP_test.txt');
train_data = [];
for i = 1:322data1 = data_train{i, 1};data1_1 = data1(11:end-1);data_num = str2num(data1_1);train_data = [train_data;data_num];
end
AA = repmat(1:46,7);
AA = AA(1:322)';
train_data(:,257) = AA;
%% 读取测试文件
test_data = [];
for i = 1:138data2 = data_test{i, 1};data2_1 = data2(11: end-1);data_num_2 = str2num(data2_1);test_data = [test_data; data_num_2];
end
BB = repmat(1:46,3);
BB = BB(1:138)';
test_data(:,257) = BB;%%
% 训练集
train_matrix = train_data(:,(1:256));%训练集特征
train_label = train_data(:,257);%训练集标签%%
% 测试集
test_matrix = test_data(:,(1:256));%测试集特征
test_label = test_data(:,257);%测试集特征%% III. 数据归一化
[Train_matrix,PS] = mapminmax(train_matrix',0,1);%归一化到-1至1之间
Train_matrix = Train_matrix';
Test_matrix = mapminmax('apply',test_matrix',PS);
Test_matrix = Test_matrix';%% IV. SVM创建/训练(RBF核函数)
%%
% 寻找最佳c/g参数——交叉验证方法
[c,g] = meshgrid(-10:0.2:10,-10:0.2:10);
[m,n] = size(c);
cg = zeros(m,n);
eps = 10^(-4);
v = 5;
bestc = 1;
bestg = 0.1;
bestacc = 0;
%% 
for i = 1:mfor j = 1:ncmd = ['-v ',num2str(v),' -t 2',' -c ',num2str(2^c(i,j)),' -g ',num2str(2^g(i,j))];%Train_matrix矩阵的行列需要转至 -c损失函数、惩罚因子cg(i,j) = svmtrain(train_label,Train_matrix,cmd);     if cg(i,j) > bestaccbestacc = cg(i,j);bestc = 2^c(i,j);bestg = 2^g(i,j);end        if abs( cg(i,j)-bestacc )<=eps && bestc > 2^c(i,j) bestacc = cg(i,j);bestc = 2^c(i,j);bestg = 2^g(i,j);end               end
end
cmd = [' -t 2',' -c ',num2str(bestc),' -g ',num2str(bestg)];%%
% 创建/训练SVM模型
model = svmtrain(train_label,Train_matrix,cmd);%% V. SVM仿真测试
[predict_label_1,accuracy_1,decision_values1] = svmpredict(train_label,Train_matrix,model); 
[predict_label_2,accuracy_2,decision_values2] = svmpredict(test_label,Test_matrix,model); 
result_1 = [train_label predict_label_1];
result_2 = [test_label predict_label_2];%% VI. 绘图
figure
plot(1:length(test_label),test_label,'r-*')
hold on
plot(1:length(test_label),predict_label_2,'b:o')
grid on
legend('真实类别','预测类别')
xlabel('测试集样本编号')
ylabel('测试集样本类别')
string = {'测试集SVM预测结果对比(RBF核函数)';['accuracy = ' num2str(accuracy_2(1)) '%']};
title(string)

在分类结果上,会呈现训练集准确率100%,而测试集的准确率较低,说明SVM模型对训练集的提取效果较好,但用于测试集的效果较差,存在欠拟合情况,可能原因有在处理过程中,交叉验证的参数设置较小,导致模型训练的并不是很好,但较大的交叉验证参数会到模型训练时间过长。所以需要改进寻优方式,可以选择粒子群优化算法或者是遗传优化算法改进模型寻优过程,以寻求用较短的训练时间找到较为优异的分类情况。

都看到最后了,确定不点个赞吗?

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

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

相关文章

第十二篇 - IAB 标准技术条款和定义-我为什么要翻译介绍美国人工智能科技巨头IAB公司?

前言 这是2021年IAB公司发布的《市场营销人工智能使用案例及最佳实践报告》的最后一篇译文。翻译工作不难&#xff0c;但是非常考验一个人的态度&#xff0c;需要译者忠于自己的初心&#xff0c;严谨对待所有文字、数据、信息、技术和观点。时代变化如此之快&#xff0c;3年前…

学生信息管理展示-h5版(uniapp+springboot+vue)

记录一下做的第一个完整的h5业务。 一、登录 二、个人中心 三、首页&#xff08;管理员&#xff09; 四、首页&#xff08;学生&#xff09; 五、视频展示 学生信息管理展示&#xff08;h5&#xff09;完整版

人工智能英文缩写术语

人工智能术语&#xff1a; FFNN FFNN&#xff1a;feedforward neural network&#xff0c;前馈神经网络&#xff1b; RNN RNN&#xff1a;Recurrent Neural Network&#xff0c;循环神经网络 CNN CNN&#xff1a;Convolutional Neural Network&#xff0c;卷积神经网络 在…

京东数据分析平台(京东店铺数据分析工具)推荐

京东店铺数据分析能够帮助商家了解自己的经营状况&#xff0c;优化商品策略&#xff0c;提高销售效率。以下是京东店铺数据分析的一些基本步骤和方法&#xff1a; 首先&#xff0c;在进行京东店铺数据分析时&#xff0c;我们需要借助一些电商数据分析工具来获取相关数据&#…

Linux Ubuntu部署SVN服务端结合内网穿透实现客户端公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

2016年认证杯SPSSPRO杯数学建模C题(第一阶段)如何有效的抑制校园霸凌事件的发生解题全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 C题 如何有效的抑制校园霸凌事件的发生 原题再现&#xff1a; 近年来&#xff0c;我国发生的多起校园霸凌事件在媒体的报道下引发了许多国人的关注。霸凌事件对学生身体和精神上的影响是极为严重而长远的&#xff0c;因此对于这些情况我们应该…

Openwrt(IstoreOS)安装iventoy

背景 目前家里有两台不用的旧主机&#xff0c;平时没事在家里折腾这两台机器。经常换装各种系统。最早是将镜像刷入u盘作为启动盘&#xff0c;这样需要重复装系统就特别麻烦。后来用了ventoy以后一个U盘可以放多个系统镜像&#xff0c;还能做口袋系统&#xff08;SystemToGo&a…

OpenXR 超详细的spec--Instance介绍

4. Instance OpenXR instance是一个允许OpenXR application和runtime进行通信的句柄对象。application通过调用xrCreateInstance()和接收一个XrInstance对应的handle完成通信。 XrInstance对象存储和追踪OpenXR相关应用的状态&#xff0c;不需要在application的全局地址空间中…

红队攻击手“实战”特训

伴随着新的一年的到来&#xff0c;我们最新一期的红队攻防&#xff0c;也如约而至~ 每一期我们都会做二次学员反馈&#xff0c;根据同学们的真实反馈和需求&#xff0c;来调整讲师及授课内容 新的一期我们增加了C基础&#xff0c;python基础&#xff0c;汇编基础的课程&#…

4.1k star,官方出品的redis桌面管理工具——redislnsight

导航 令人抓狂的大key加载RedisInsight 简介RedisInsight的亮点GitHub 地址安装和使用RedisInsight 下载安装 使用RedisInsight redis数据库可视化直观的CLI&#xff08;Command-Line Interface&#xff09;日志分析和命令分析 结语参考 令人抓狂的大key加载 工欲善其事必先利…

深入理解SpringCloud之Zuul

引言 在微服务里&#xff0c;系统通常被拆分成许多小的、独立的服务&#xff0c;每个服务都有自己的职责和生命周期。但这么多服务怎么协同工作呢&#xff1f;这就需要一个交通警察来指挥交通&#xff0c;确保数据能安全、高效地流动。在Spring Cloud生态系统中&#xff0c;这…

gemini 试用(python)

1. 非stream方式&#xff08;requests&#xff09; import os import json import requestsdef test_gemini_no_stream(apikey, text):url fhttps://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key{apikey}headers {Content-Type: appli…

BUUCTF--极客大挑战php

文章目录 1.网站备份文件www.zip2.下载后发现class.phpindex.phpflag.php 3.分析php代码绕过__wakeup方法变量权限为私有或保护python方法url方法 1.网站备份文件www.zip 2.下载后发现 class.php <?php include flag.php; error_reporting(0);class Name{private $usernam…

创邻科技获评环紫金港创新生态圈智源创新企业

3月1日&#xff0c;由杭州城西科创大走廊管理委员会指导&#xff0c;中共杭州市西湖区委员会、西湖区人民政府主办的“环紫金港创新生态圈”行动推进大会暨2024年紫金港科技城经济高质量发展大会在杭州举办。凭借重要的生态位置和创新业务成果&#xff0c;创邻科技受邀参会并被…

java常用的上传下载工具类

在日常开发过程中&#xff0c;文件的上传下载是最常用的功能&#xff0c;通常我们需要把文件上传到某个特定的影像平台&#xff0c;由平台统一管理文件&#xff0c;当我们需要时&#xff0c;则从平台下载 文件上传 1.上传到本地指定路径 file.transferTo() 2.hutool中的HttpU…

构建高效Web服务:深入理解RESTful架构与实践指南

RESTful&#xff08;Representational State Transfer&#xff0c;表现层状态转移&#xff09;是一种软件架构风格&#xff0c;它定义了一组约束和原则&#xff0c;用于创建Web服务。RESTful架构的核心思想是将网络应用分解为独立的资源&#xff0c;每个资源都有一个唯一的标识…

Matter 笔记2-OT-BR-POSIX编译配置

1. 代码 git clone https://github.com/openthread/ot-br-posix2. 环境准备 配置参考&#xff1a;GitHub cd ot-br-posix默认&#xff1a; ./script/bootstrap带网络管理器的如下配置&#xff1a; NETWORK_MANAGER1 NETWORK_MANAGER_WIFI1 ./script/bootstrap硬件固件准备…

SQL 注入攻击 - cookie base64编码注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Base64编码介绍 原理 Base64编码的原理是将三个字节的二进制数据(共24位)转换成四个ASCII字符。由于每个ASCII字符可以表示64种状态(2^6),刚好可以用来表示24位二进制数…

java-springboot 源码 01

01.springboot 是一个启动器 先安装maven&#xff0c;按照网上的流程来。主要是安装完成后&#xff0c;要修改conf目录下的setting.xml文件。 添加&#xff1a;阿里云镜像 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>ali…

【vue3之Pinia:状态管理工具】

Pinia:状态管理工具 一、认识Pinia二、定义store三、gettters四、Action1.定义普通函数2.异步实现 五、storeToRefs工具函数六、pinia持久化插件1. 安装插件2. main.js 使用3. 开启4.其他配置 一、认识Pinia Pinia 是 Vue 的最新 状态管理工具 &#xff0c;是 Vuex 的 替代品 …