TnsorFlow+CNN猫狗识别

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TnsorFlow+CNN猫狗识别相关的知识,希望对你有一定的参考价值。

TnsorFlow+CNN猫狗识别

0.input_data.py

a.get_files(file_dir)

相关函数介绍

os.listdir()

方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

它不包括 . 即使它在文件夹中。

只支持在 Unix, Windows 下使用。

**listdir()**方法语法格式如下:

os.listdir(path)
  • path – 需要列出的目录路径

返回值

返回指定路径下的文件和文件夹列表。


np.hstack()

在这里我们介绍两个拼接数组的方法:

np.vstack():在竖直方向上堆叠

np.hstack():在水平方向上平铺

transpose()

temp = np.array([image_list, label_list])  # 生成一个2 X 25000的数组,即2行、25000列
temp = temp.transpose()                    # 转置向量,大小变成25000 X 2

把猫和狗的图片 以及 对应标签(0表示猫,1表示狗) 表示成25000*2矩阵。

然后返回图片列表 和 标签列表。


1.test.py

a.get_one_image(img_lst)

def get_one_image(img_list):
    """
        输入:
            img_list:图片路径列表
        返回:
            image:从图片路径列表中随机挑选的一张图片
    """
    n = len(img_list)                  # 获取文件夹下图片的总数
    ind = np.random.randint(0, n)      # 从 0~n 中随机选取下标
    img_dir = img_list[ind]            # 根据下标得到一张随机图片的路径

    image = Image.open(img_dir)        # 打开img_dir路径下的图片
    image = image.resize([208, 208])   # 改变图片的大小,定为宽高都为208像素
    image = np.array(image)            # 转成多维数组,向量的格式
    return image

随机从列表从选取一个图片,然后转换成多维数组形式。

b.evaluate_one_image

根据训练模型 对图片进行预测分类。


2.model.py

  • model.py:负责实现我们的神经网络模型
"""
    输入:
        images:队列中取的一批图片, 具体为:4D tensor [batch_size, width, height, 3]
        batch_size:每个批次的大小
        n_classes:n分类(这里是二分类,猫或狗)
    返回:
        softmax_linear:表示图片列表中的每张图片分别是猫或狗的预测概率(即:神经网络计算得到的输出值)。
                        例如: [[0.459, 0.541], ..., [0.892, 0.108]],
                        一个数值代表属于猫的概率,一个数值代表属于狗的概率,两者的和为1。
"""

第一层:卷积层cov1

第一层:池化层pool1

第二层的卷积层cov2

第二层:池化层pool2

第三层:全连接层local3 连接256个神经元

第四层为全连接层local4,再连接512个神经元

第五层:输出层(回归层): softmax_linear 在这里是2类,所以这个层输出的是两个得分。


3.运行结果


4.参考视频

https://www.bilibili.com/video/BV1TU4y1H7u7/?spm_id_from=333.788.recommend_more_video.0

以上是关于TnsorFlow+CNN猫狗识别的主要内容,如果未能解决你的问题,请参考以下文章

深度学习实战:基于CNN的猫狗图像识别

基于卷积神经网络(CNN)的猫狗识别

Python学习记录 使用tensorflow 2.8 完成猫狗识别 使用keras构建CNN神经网络

卷积神经网络入门 识别猫狗

利用CNN进行图像分类的流程(猫狗大战为例)

基于pytorch的CNN猫狗图分