Sort_1000pics数据集利用CNN实现图像分类
1、数据集说明
从给的Sort_1000pics数据集中了解到,该数据集中包括10类图片,对图片进行查看了解到,0-99对应与人(people);100-199对应与沙滩(beaches);200-299对应与建筑(buildings);300-399对应与大卡车(trucks);400-499对应与恐龙(dinosaurs);500-599对应与大象(elephants);600-699对应与花朵(flowers);700-799对应与马(horses);800-899对应与山峰(mountains);900-999对应与食品(food)。
2、 算法介绍
数据预处理:将数据集按照类别进行分组处理,分别对应的目录为0-9,读取图片,保存数据集;
将数据集和标签按照相同的种子进行打乱处理,然后按照标签的比例进行分割数据集,80%作为训练集(训练集中的10%作为验证集,查看是否过拟合),20%作为测试集。
构建CNN模型,这里是基于TensorFlow2.0进行搭建的,具体代码如图所示:
结构视图如下图所示:
其中包括输入层(32*32的图像,3通道),两个卷积层,1个池化层,重复一次,展平经过全连接层,最后输出层,除了输出层的激活函数是softmax,其他的都是relu。
模型训练,将处理后数据经过模型训练
模型预测,将处理后的测试集数据经过模型进行预测,分别输出模型对于测试集的召回率,精确率和F1测度。
根据预测结果和实际结果构建混淆矩阵。
3、结果分析
(1)召回率、准确率与F1测度
对于二分类问题中,可将样例根据其真实类别和分类器预测类别划分为:
- 真正例(True Positive,TP):真实类别为正例,预测类别为正例。
- 假正例(False Positive,FP):真实类别为负例,预测类别为正例。
- 假负例(False Negative,FN):真实类别为正例,预测类别为负例。
- 真负例(True Negative,TN):真实类别为负例,预测类别为负例。
然后可以构建混淆矩阵如下表所示:
准确率的计算公式为(Precision,P):表示在所有样本中预测正确的概率
P=TPTP+FP
召回率的计算公式为(Recall,R):表示在所有正例中预测为正例的概率
R=TPTP+FN
F1测度的计算公式为:
F1=2*P*RP+R
对于本实例中的多分类问题,也可以建立混淆矩阵,比如真实是人的正例中,实际预测为人的为TP,其余预测结果都为FN
(2)实验结果:
模型结构图
CNN模型分类预测指标图
(3)结果分析
从CNN模型的召回率、精确率和F1测度可以看出该模型相较于bytes等模型,有稍微的提升。从海滩的预测中我们可以发现它的正确率较低,经常被误认为山脉,这是由于海滩的图片中经常有大山的出现,同样也经常会被预测为人。这是由于抽取的特征向量对该图像不够抽象或泛化。
从混淆矩阵我们发现对于卡车、恐龙与大象等特征明显的图片时,它的预测效果就优于其他种类。
同时我们也发现如果训练参数过多或者训练次数过多,容易导致模型过拟合,这是由于数据集的数据有限,学习的特征过多。所以这里我使用了验证集进行查看是否数据过拟合(在训练集上的效果好,验证集上的效果差)
Sort_1000pics数据集利用CNN实现图像分类相关推荐
- 深度学习-07(图像分类、常用数据集、利用CNN实现图像分类、图像分类优化)
文章目录 深度学习-07(PaddlePaddle图像分类) 图像分类概述 概述 什么是图像分类 图像分类粒度 图像分类发展历程 图像分类问题的挑战 常用数据集介绍 MNIST数据集 CIFAR10数 ...
- 利用Sort_1000pics数据集实现图像分类
1.数据集说明 从给的Sort_1000pics数据集中了解到,该数据集中包括10类图片,对图片进行查看了解到,0-99对应与人(people):100-199对应与沙滩(beaches):200-2 ...
- 基于Tensorflow + Opencv 实现CNN自定义图像分类
摘要:本篇文章主要通过Tensorflow+Opencv实现CNN自定义图像分类案例,它能解决我们现实论文或实践中的图像分类问题,并与机器学习的图像分类算法进行对比实验. 本文分享自华为云社区< ...
- 用 Kaggle 经典案例教你用 CNN 做图像分类!
我们来看一个 Kaggle 上比较经典的一个图像分类的比赛 CIFAR( CIFAR-10 - Object Recognition in Images ),这个比赛现在已经关闭了,但不妨碍我们来去通 ...
- 文章学习(一)方法类:利用CNN从专利图像导出设计特征向量
Deriving Design Feature Vectors for Patent Images Using Convolutional Neural Networks(Journal of Mec ...
- 利用CNN进行手写数字识别
资源下载地址:https://download.csdn.net/download/sheziqiong/85884967 资源下载地址:https://download.csdn.net/downl ...
- CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下
CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 from keras.callbacks ...
- CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下
CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 def mini_XCEPTION(inp ...
- 基于tensorflow2.0利用CNN与线性回归两种方法实现手写数字识别
CNN实现手写数字识别 导入模块和数据集 import os import tensorflow as tf from tensorflow import keras from tensorflow. ...
最新文章
- “35 岁才是一个程序员成熟的开始!”
- bash魔法堂:History用法详解
- 2017年6月21号课堂笔记
- CDH 的Cloudera Manager免费与收费版的对比表
- android广播面试题,Android相关面试题
- 远程仓库---从远程库克隆
- 简明易懂的c#入门指南_统计假设检验的简明指南
- 回溯法 -数据结构与算法
- iOS 数据持久化 NSUserDefault
- lable里的字体颜色_?APP界面的字体规范!
- java中求1 2 =3,1. java dom编程艺术---杨涛、王建桥 -第3章 DOM(自总)
- PMP考试教材有哪些?
- 分享超实用的web网页开发框架
- matlab中abs函数,Abs函数
- 使用tftp服务把路由器的配置上传到服务器
- 如鹏网.Net高级技术9.XML文件操作
- Oracle analytics server(OAS) 支持 mysql 社区版配置
- LR下载文件脚本实例
- SAP JCo应用方案
- 基于强化学习的自我完善聊天机器人