基于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…

红队攻击手“实战”特训

伴随着新的一年的到来&#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-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 的 替代品 …

OpenCV 视频处理(关于摄像头和视频文件的读取、显示、保存等等)

1、前言 OpenCV不仅能够处理图像&#xff0c;还能够处理视频 视频是由大量的图像构成的&#xff0c;这些图像是以固定的时间间隔从视频中获取的。这样&#xff0c;就能够使用图像处理的方法对这些图像进行处理&#xff0c;进而达到处理视频的目的。要想处理视频&#xff0c;需…

PCL官方demo的编译使用教程

写在前面 本文内容 PCL官方demo的编译使用教程&#xff1b; 后续对PCL demo中比较常用的算法、应用demo会出专门的博客讲解、拓展&#xff1b; 更多点云基础、算法相关内容请关注专栏&#xff1a; 点云处理基础 点云配准(PointCloud Registration) Open3D点云处理 PCL点云处理 …

Docker本地部署Redis容器结合内网穿透实现无公网ip远程连接

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Ub…

Python与FPGA——局部二值化

文章目录 前言一、局部二值化二、Python局部二值化三、FPGA局部二值化总结 前言 局部二值化较全局二值化难&#xff0c;我们将在此实现Python与FPGA的局部二值化处理。 一、局部二值化 局部二值化就是使用一个窗口&#xff0c;在图像上进行扫描&#xff0c;每扫出9个像素求平均…

探索AI视频创新:Sora的奇迹

探索AI视频创新&#xff1a;Sora的奇迹 随着科技的不断演进&#xff0c;AI视频模型已经成为人工智能领域的一颗新星。在这场技术的风暴中&#xff0c;OpenAI的Sora模型以其杰出的性能和前瞻性的技术脱颖而出&#xff0c;正引领着AI视频领域的全新创新浪潮。 Sora的技术之光 …