猫狗图片识别

news/2024/11/17 10:57:38/

1、数据简介

这份数据集来源于Kaggle,原数据集有12500只猫和12500只狗,这里选取2000张图片,工具用的是基于tensorflow的keras。

2、数据预处理

import os  # 处理字符串路径
import glob  # 查找文件
from keras.models import Sequential  # 导入Sequential模型
from keras.layers.core import Flatten, Dense, Dropout
from keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2D
from keras.optimizers import SGD
import numpy as np
from pandas import Series, DataFrame
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.advanced_activations import PReLU
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.optimizers import SGD, Adadelta, Adagrad
from keras.utils import np_utils, generic_utils
from six.moves import range
#加载数据
import os
from PIL import Image
import numpy as np
#读取文件夹train下的42000张图片,图片为彩色图,所以为3通道,
#如果是将彩色图作为输入,图像大小224*224
def load_data():sed = 1000data = np.empty((2000,224,224,3),dtype="float32")label = np.empty((2000,))imgs = os.listdir("d:/cat_dog/")num = len(imgs)times = 0time = 0for i in range(num):if imgs[i].split('.')[0] == 'cat':if times ==1000:continueimg = Image.open("d:/cat_dog/" + imgs[i])arr = np.asarray(img, dtype="float32")arr.resize((224,224,3))data[i, :, :, :] = arrlabel[i] = 0times +=1else:img = Image.open("d:/cat_dog/" + imgs[i])arr = np.asarray(img, dtype="float32")arr.resize((224, 224, 3))data[1000+time, :, :, :] = arrlabel[1000+time] = 1time +=1if time == 1000:breakreturn data,label
data,label = load_data()
print(data.shape)
train_data = data[:1800]
train_labels = label[:1800]
validation_data = data[1800:]
validation_labels = label[1800:]

3、使用cnn训练

model = Sequential()
#第一个卷积层,4个卷积核,每个卷积核大小5*5。
#激活函数用tanh
#你还可以在model.add(Activation('tanh'))后加上dropout的技巧: model.add(Dropout(0.5))
model.add(Convolution2D(4, 5, 5,input_shape=(224, 224,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
#第二个卷积层,8个卷积核,每个卷积核大小3*3。
#激活函数用tanh
#采用maxpooling,poolsize为(2,2)
model.add(Convolution2D(8, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
#第三个卷积层,16个卷积核,每个卷积核大小3*3
#激活函数用tanh
#采用maxpooling,poolsize为(2,2)
model.add(Convolution2D(16, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))#全连接层,先将前一层输出的二维特征图flatten为一维的。model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
#sigmoid分类,输出是2类别
model.add(Dense(1))
model.add(Activation('sigmoid'))model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
model.fit(train_data, train_labels,nb_epoch=50, batch_size=100,validation_data=(validation_data, validation_labels))

 


http://www.ppmy.cn/news/438223.html

相关文章

电子宠物小狗-内部结构是什么?

简 介: 本文拆解了早年间的一个电子宠物狗, 其内部机械和电子精彩设计给我留下了很深的印象。虽然它的功能简单,但它还是陪伴我度过了很多难忘的日日夜夜。关键词: 电子宠物,电子 #mermaid-svg-jeu7PwCcUxNziYEb {fon…

【软件定义汽车】【场景篇】哨兵模式、狗狗模式

目录 一、哨兵模式 二、狗狗模式 一、哨兵模式 哨兵模式:通过汽车的外部摄像头来检测潜在的威胁。如果检测到是小威胁,例如某人靠车,哨兵模式将切换到“警报”状态,并在触摸屏上显示一条消息,警告其摄像机正在录制。如果检测到更严重的威胁,例如有人打破窗口,哨兵模式…

猫狗识别

1.数据获取 猫狗数据集来自Cat vs Dogs Kaggle竞赛,这份数据集包含了大量狗和猫的带有标签的图片。 和每一个Kaggle比赛一样,这份数据集也包含两个文件夹: 训练文件夹:它包含了 25000 张猫和狗的图片,每张图片都含有…

猫狗图像识别

这里,我们介绍的是一个猫狗图像识别的一个任务。数据可以从kaggle网站上下载。其中包含了25000张毛和狗的图像(每个类别各12500张)。 在小样本中进行尝试 我们下面先尝试在一个小数据上进行训练,首先创建三个子集:每…

作为服务注册中心,Eureka比Zookeeper好在哪里

RDBMS(Mysql Oracle sqlServer) 》ACID NoSQL (Redis mongdb) 》 CAP ACID是什么? A(Atomicity) 原子性 C(Consistence) 一致性 I(Isolation)隔离性 D(Durability)持久性 CAP是什么? C(Consistency)强一致性 A(Availability)可用…

oppo手机使用应用沙盒动态修改屏幕信息

之前文章介绍了如何在安卓手机上安装激活Xposed框架,Xposed框架的强悍功能大家都知道,能够不修改apk的前提下,修改系统内部的参数,好比在某些应用范畴,大家需要修改手机的某个系统参数,这种情况就需要使用X…

(oppo)安卓神器XPOSED框架不用ROOT安装指南

今天介绍如何在oppo上无Root使用Xposed框架。 我们应该知道Xposed框架是安卓系统的一个框架技术,它是一个来源外国XDA论坛的安卓神器框架,它强悍在于能够不通过修改apk的前提下即能够修改系统型号、imsi等参数,在过去的Xposed框架使用&#x…

oppo手机使用应用沙盒动态修改序列号信息

之前文章介绍了如何在安卓手机上安装激活XPosed框架,XPosed框架的强悍功能我们都介绍过,能够不修改apk的前提下,修改系统内部的参数,打比方在某些应用领域,我们需要修改手机的某个系统参数,这种情况就需要使…