python 猫狗二分类简单实现
1.数据集介绍:(需要数据集可以在下面留言)
数据集一共有猫图片:6000张,有狗图片:6000张。图片已经被命名为:0.1.jpg-0.6000.jpg(猫);1.0.jpg-1.6000.jpg(狗)
照片读取代码如下:
import numpy as np
import tensorflow as tf#定义图片读取函数:把图片读取为64*64*3
def load_and_preprocess_from_path_label(path):image = tf.io.read_file(path)image = tf.image.decode_jpeg(image)image = tf.image.resize(image, [64, 64])image /= 255.0return image
#循环读取猫类图片(从img文件夹读取)并生成[6000,150,150,3]数组
x1=[]
for i in range(1,6001):img_path ='./img' + '\\0.%s.jpeg'%(i)img=load_and_preprocess_from_path_label(img_path)x1.append(img)
x1=np.array(x1)
#循环读取狗类图片并生成[6000,150,150,3]数组
x2=[]
for i in range(1,6001): img_path ='./img' + '\\1.%s.jpeg'%(i)img=load_and_preprocess_from_path_label(img_path)x2.append(img)
x2=np.array(x2)
x_total=np.append(x1,x2,axis=0)
2.标签生成程序如下:
#生成标签代码,并转化为独热码形式
from keras.utils import np_utils
counter=0
data_y_list=[]
for i in range(2):label = np.ones((6000,)) * counterdata_y = tf.expand_dims(label, axis=-1)data_y_list.append(data_y)counter+=1
data_y_array = np.concatenate(data_y_list, axis=0)
y_total=np_utils.to_categorical(data_y_array,2)
3.同时打乱图片数据集和标签数据集
#打乱数据集
np.random.seed(116)
np.random.shuffle(x_total)
np.random.seed(116)
np.random.shuffle(y_total)
np.random.seed(116)
tf.random.set_seed(116)#分割训练样本集和测试样本集
x_train=x_total[0:5000,]
y_train=y_total[0:5000,]
x_test=x_total[5000:6000,]
y_test=y_total[5000:6000,]
4.搭建卷积神经网络(models.Sequential()结构)
from keras import layers
from keras import modelsmodel = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(64,64, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(2, activation='sigmoid'))
5.定义优化器,学习率,损失函数(model.compile()结构)
from keras import optimizers
model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])
6.定义epoch大小,batch大小
history=model.fit(x_train,y_train,epochs=100,batch_size=64,validation_data=(x_test,y_test),validation_freq=1)
7.如果要调用轻量级网络MobileNetV2、MobileNet、SqueezeNet、Xception等已经被嵌入到keras.applications文件里面的,代码如下
model = models.Sequential()
mobile = tf.keras.applications.MobileNet(include_top=False, weights='imagenet', input_shape=(150, 150, 3))
#Xception= tf.keras.applications.Xception(include_top=False, weights='imagenet', #input_shape=(150, 150, 3))
mobile.trainable = False
model = tf.keras.Sequential([mobile,tf.keras.layers.Dropout(0.5),tf.keras.layers.GlobalAveragePooling2D(),tf.keras.layers.Dense(512, activation='relu'),tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(2, activation='sigmoid')
])
python 猫狗二分类简单实现相关推荐
- pytorch 猫狗二分类 resnet
深度学习(猫狗二分类) 题目要求 数据获取与预处理 网络模型 模型原理 Resnet背景 Resnet原理 代码实现 模型构建 训练过程 批验证过程 单一验证APP 运行结果 训练结果 批验证结果 A ...
- 猫狗二分类与四种天气多分类
提示:文章用于学习记录 文章目录 前言 一.猫狗图像分类 1.1 数据预处理 1.2 构建神经网络 二.四种天气图片数据分类(pytorch) 总结 前言 常见分类网络结构可以分为两部分,一部分是特征 ...
- 猫狗二分类实战(PyTorch)
PyTorch实战指南 文章目录 PyTorch实战指南 比赛介绍 文件组织架构 关于`__init__.py` 数据加载 模型定义 工具函数 配置文件 main.py 训练 验证 测试 帮助函数 使 ...
- 体验AI乐趣:基于AI Gallery的二分类猫狗图片分类小数据集自动学习
摘要:直接使用AI Gallery里面现有的数据集进行自动学习训练,很简单和方便,节约时间,不用自己去训练了,AI Gallery 里面有很多类似的有趣数据集,也非常好玩,大家一起试试吧. 本文分享自 ...
- python猫狗识别课程设计_pytorch实现kaggle猫狗识别
# 创建模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d( ...
- PyTorch搭建预训练AlexNet、DenseNet、ResNet、VGG实现猫狗图片分类
目录 前言 AlexNet DensNet ResNet VGG 前言 在之前的文章中,利用一个简单的三层CNN猫狗图片分类,正确率不高,详见: CNN简单实战:PyTorch搭建CNN对猫狗图片进行 ...
- 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(二)
使用Resnet残差网络对图像进行分类 (猫十二分类,模型定义.训练.保存.预测)(二) 目录 (6).数据集划分 (7).训练集增强 (8).装载数据集 (9).初始化模型 (10).模型训练 (1 ...
- Pytorch采用AlexNet实现猫狗数据集分类(训练与预测)
Pytorch采用AlexNet实现猫狗数据集分类(训练与预测) 介绍 AlexNet网络模型 猫狗数据集 AlexNet网络训练 训练全代码 预测 预测图片 介绍 AlexNet模型是CNN网络中经 ...
- 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(一)
使用Resnet残差网络对图像进行分类 (猫十二分类,模型定义.训练.保存.预测)(一) 目录 一.项目简介 二.环境说明 1.安装库 2.导入需要的库 三.分类过程 (1).解压数据集 (2).相关 ...
最新文章
- ARCGIS中某字段递增赋值
- 牛逼!大神用漫画带你了解 Linux 内核到底长啥样
- AndroidStudio Gradle自定义属性xmlns无法识别
- java开发者工具开源版_JArchitect对Java开源贡献者免费
- Win32ASM学习[2]:运算符
- pycharm插件之SonarLint
- 快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
- 信息学奥赛C++语言: 素数回文数的个数
- Elasticsearch教程(六) elasticsearch Client创建
- ASP.NET MVC 3—一切的开始MvcHandler、MvcHttpHandler
- 关于brvah的setEmptyView功能无法显示问题
- 【比特率和波特率】bit rate VS baud rate
- Android截屏工具类的使用
- 【pyecharts库与pandas库】利用pyecharts库根据表格中的GDP数据绘制2021年中国各省GDP热力图和GDP较低的五个省的人均GDP与人口的柱状图
- android平板和ipad区别,为什么说买平板必须买ipad?那么安卓平板和iPad到底有什么区别?...
- 杀死一只知更鸟的方法教会了我如何成为一名混乱大师
- php添加数据数据库乱码,php添加数据数据库乱码
- Python3 三元条件判断表达式(if else/and or)
- 货拉拉 Android 动态资源管理系统原理与实践(上)
- 2020.10.13--PS--像素化滤镜、扭曲类滤镜、波浪和水波
热门文章
- OpenCV图像锐化(梯度算子Sobel)
- 制定项目计划,确保团队协同效率
- 0904 朋友圈点赞功能
- httpclient海康ISAPI透传
- 理财通app的设计与实现(五)
- 江苏计算机专升本试题,江苏省普通高校“专转本”统一考试计算机基础试卷 三...
- 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
- JavaScript语言发展史
- codeforces144——D. Missile Silos(最短路+枚举)
- vue中使用antv/g6 绘制关系图、结构图_高级图标绘制设计软件最新版 | MyDraw 4.1.2...