用深度学习卷积神经网络实现图像识别之猫狗大战

猫狗大战

  • 顾名思义,就是实现猫和狗的分类问题
  • 数据集图像是大小不一的
  • 数据集图像是彩色的

实现思路

  • 处理数据集时,要对图像的大小进行统一缩放
  • 将图片读取为像素矩阵,并转为卷积神经网络可以识别的形状
  • 构建卷积神经网络,有卷积,有池化,有全连接
  • 构建代价函数
  • 构建优化器
  • 迭代求出预测准确率

数据集

在这里插入图片描述
形如上述所示,共计25000张图片,这里做示范选取猫狗各500张。

代码实现

import tensorflow as tf
import numpy as np
import os
import cv2
import random

# 设置随机种子。(5分)
tf.set_random_seed(1)

# 猫狗数据文件夹路径
data_dir = r'data'


# 调用该方法,获取文件夹中猫狗的像素矩阵为数据,并为每条数据添加标签
def load_data(data_dir):
    # 存放所有图片像素矩阵数据
    data_all = []
    # 存放其对应的标签
    labels_all = []
    # i 为每个图片数据的名字
    for i in os.listdir(data_dir):
        # 拼接路径 保证cv2读取正确
        img = cv2.imread(os.path.join(data_dir, i))
        # 将读取到的大小不一的图像进行统一缩放
        img = cv2.resize(img, dsize=(128, 128))
        # 转为数字矩阵
        img_array = np.asarray(img)
        img_array = np.reshape(img_array, (3, 128, 128))
        # 直接对数据进行归一化
        img_array = img_array / 127.5 - 1
        # 将这个数据存放进列表
        data_all.append(img_array)
        # 因为图片的名字为'cat.1.jpg'等类型,所以对名字进行切割,选择第一部分,既是其对应的类型
        label = i.split('.')[0]
        # 将对应的类型,转为0,1,作0,1分类
        if label == 'cat':
            labels_all.append(1)
        else:
            labels_all.append(0)
    # 将列表作为转为数组
    data_all 
  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值