keras实现图像识别—cat

使用Keras设计的神经网络进行猫的图像识别,模型包含卷积层、池化层和全连接层。由于训练数据量小,导致模型在测试集上出现严重过拟合,准确率为74%。通过添加L2正则项来缓解过拟合,测试集准确率提升至86%。
摘要由CSDN通过智能技术生成

目的:识别图片中是否有猫
训练集x_train(209,64,64,3),y_train(209,)
测试集x_test(50,64,64,3),y_test(50,)

设计的神经网络结构图如下:
卷积层——池化层——卷积层——池化层——卷积层——池化层——平铺展开——全连接层——全连接层——全连接层
在这里插入图片描述

获取数据

# coding: utf-8
# 2019/7/28 19:23
import h5py
import numpy as np
def get_train():
    f = h5py.File('dataset/train_catvnoncat.h5','r')
    x_train = np.array(f['train_set_x'])#训练集数据  将数据转化为np.array
    y_train = np.array(f['train_set_y'])#训练集标签
    return x_train,y_train
def get_test():
    f = h5py.File('dataset/test_catvnoncat.h5', 'r')
    x_test = np.array(f['test_set_x'])#测试集数据  将数据转化为np.array
    y_test = np.array(f['test_set_y'])#测试集标签
    return x_test,y_test

def preprocess(X):
    #将X标准化,从0-255变成0-1
    X =X / 255
    return X


if __name__ == '__main__':
    x1,y1 = get_train()
    x2,y2 = get_test()
    print(x1.shape,y1.shape)
    print(x2.shape,y2.shape)
    
### 回答1: # 以下是一段python代码,实现图像识别: import cv2 # 读取图片 img = cv2.imread('image.jpg') # 将图片转换为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用预训练的haar特征分类器识别图片中的物体 cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 检测图片中的物体 faces = cascade.detectMultiScale(gray, 1.3, 5) # 画出检测到的物体 for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,0),2) # 显示图片 cv2.imshow('img',img) # 等待按键按下 cv2.waitKey(0) # 释放窗口 cv2.destroyAllWindows() ### 回答2: 实现图像识别可以使用Python中的图像处理库和机器学习库。以下是一段基本的Python代码示例,使用OpenCV和Keras实现图像识别: ```python import cv2 import numpy as np from keras.models import load_model # 加载训练好的模型 model = load_model('model.h5') # 加载图像 image = cv2.imread('image.jpg') image = cv2.resize(image, (224, 224)) image = image.reshape(1, 224, 224, 3) image = image.astype('float32') image /= 255 # 进行图像识别 result = model.predict(image) # 根据预测结果获取标签 labels = ['cat', 'dog'] # 假设有猫和狗两个类别 prediction = labels[np.argmax(result)] # 显示预测结果 cv2.putText(image, "Prediction: " + prediction, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述代码中,我们首先加载已经训练好的模型(例如使用Keras训练的神经网络模型),然后加载待识别的图像。接下来,我们将图像进行预处理,例如调整大小、转换为合适的数据类型等。然后,通过调用模型的predict函数进行图像识别并获取结果。最后,我们根据预测结果获取相应的标签,并将预测结果展示在图像上。你可以根据需要修改代码以适应你的具体应用场景和模型训练方式。 ### 回答3: 要实现图像识别,可以使用Python中的一些库来辅助处理。以下是一个简单的示例代码: ```python # 导入相关库 import cv2 # 用于图像处理 import pytesseract # 用于文字识别 # 读取图像 image = cv2.imread('image.jpg') # 将图像转为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 对图像进行二值化处理 ret, binary = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY) # 对二值图像进行降噪处理 blur = cv2.GaussianBlur(binary, (3, 3), 0) # 进行文字识别 text = pytesseract.image_to_string(blur, lang='eng') # 打印识别结果 print(text) ``` 可以看到,我们首先导入了`cv2`和`pytesseract`库,前者用来读取、处理图像,后者用来对图像进行文字识别。然后读取图像,并进行灰度处理,再对图像进行二值化处理和降噪处理。最后使用`pytesseract`库中的`image_to_string`函数对图像进行文字识别,并将结果打印出来。 这只是一个简单的示例,实际的图像识别问题可能需要更多的图像处理步骤和算法。但借助`cv2`和`pytesseract`等库,可以很方便地实现基本的图像识别功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值