基于Alexnet网络实现猫狗数据集分类(Keras框架)

这篇具有很好参考价值的文章主要介绍了基于Alexnet网络实现猫狗数据集分类(Keras框架)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、作者介绍

程敬,女,西安工程大学电子信息学院,2022级研究生
研究方向:电子信息
电子邮件:1105719037@qq.com

陈梦丹,女,西安工程大学电子信息学院,2022级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1169738496@qq.com

2、Alexnet网络

2.1 网络介绍

LeNet于1998年提出的,是最早的神经网络之一,用于解决手写识别的问题。

传承了LeNet ,AlexNet是于2012年提出的一个深度学习卷积神经网络模型。它在ImageNet图像识别挑战赛中取得了巨大的成功,引领了深度学习在计算机视觉领域的应用潮流。

基于Alexnet网络实现猫狗数据集分类(Keras框架)
AlexNet采用了一种前所未有的深度架构,具有8个卷积层和3个全连接层。它的架构相对较深,参数也相对Lenet较大。

2.2 AlexNet网络的主要特点

(1) 架构:是更大更深的LeNet:10倍的参数个数,260倍的计算复杂度。
(2) Relu:相对于传统的sigmoid函数,ReLU能够更好地解决梯度消失的问题,并且计算速度更快。
(3) MaxPooling:使输出的值更大,梯度更大,训练会相对容易。
(4) 丢弃法:引入了Dropout层,用于减少过拟合。Dropout随机地将一部分神经元的输出置零,可以有效地提高模型的泛化能力。
(5) 数据增强:为了增加训练数据的多样性,AlexNet在训练过程中进行了数据增强操作,如随机裁剪、水平翻转和改变亮度等。

3、基于Alexnet网络实现猫狗数据集分类

这里给出用Keras框架编写好的完整程序的百度网盘链接:
链接:https://pan.baidu.com/s/1U-xVSI4qrlO67DhpY3UaHA
提取码:eu9u

3.1 猫狗大战数据集

这个数据集是Kaggle大数据竞赛的一道赛题,利用给定的数据集,用算法实现猫和狗的识别。 其中包含了猫和狗的图片数量都是12500张且按顺序排序。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.2 数据集处理

(1)、resize(227*227),代码如下:

import cv2
import os
# 数据预处理,把图片数据集的所有图片修剪成固定大小形状
def image_tailor(input_dir, out_dir):
    for root, dirs, files in os.walk(input_dir):
        for file in files:
            # file为root目录中的文件
            filepath = os.path.join(root, file)     # 连接两个或更多的路径名组件,filepath路径为/root/file
            try:
                image = cv2.imread(filepath)        # 根据输入路径读取照片
                dim = (227, 227)                    # 裁剪的尺寸
                resized = cv2.resize(image, dim)    # 按比例将原图缩放成227*227
                path = os.path.join(out_dir, file)  # 保存的路径和相应的文件名
                cv2.imwrite(path, resized)          # 进行保存
            except:
                print(filepath)
                os.remove(filepath)
        cv2.waitKey()

input_patch = 'F:\\data\\kaggle\\test1'  # 数据集的地址
out_patch = 'F:\\data\\fixdata\\tailor'  # 图片裁剪后保存的地址
image_tailor(input_patch, out_patch)
print('reshape finished')

(2)、重命名:把图片命名为后续代码加载需要的格式,代码如下:

def rename(dir_path):
    global j
    dir_files=os.listdir(dir_path) #得到该文件夹下所有的文件
    for file in  dir_files:  #这里的file已经是图片的名字了
        num = str(j).zfill(5)
        j = j + 1
        filename = "dog." + num  # 修改文件名的格式
        file_path=os.path.join(dir_path,file)  #路径拼接成绝对路径
        new_name=os.path.join(dir_path,filename+".jpg")
        os.rename(file_path, new_name)
if __name__ == '__main__':
    dir_path = 'E:\\Desktop\\PetImages\\cat_dog_resized\\Dog'
    global j
    j = 0
    rename(dir_path)

(3)、划分数据集:训练集:验证集:测试集=70% : 15% : 15%,结果如下:

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.3 准备工作

在进行训练之前,首先将数据集的内容保存到一个TXT文件中,便于读取,代码如下:

import os
photos = os.listdir("./data/image/train/")
with open("data/dataset.txt","w") as f:
    for photo in photos:
        name = photo.split(".")[0]
        if name=="cat":
            f.write(photo + ";0\n")
        elif name=="dog":
            f.write(photo + ";1\n")
f.close()

在这段代码中,我们给不同的类别打上了标签方便训练,如果是猫,便签为0;如果是狗,标签为1。在运行代码之后,我们就可以看到生成的txt文件如下图所示。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.4 训练过程

训练50轮的结果:在验证集上达到86%的准确度。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.5 对比实验

3.5.1 HALCON平台下的Alexnet对比实验

基于Alexnet网络实现猫狗数据集分类(Keras框架)
这个平台很完善,操作简单,界面友好。在训练猫狗数据集分类任务时,只需要将处理后的数据传入平台,平台会自动分配训练集、验证集和测试集。接着选择所需要的网络,设置训练轮数和学习率灯参数,就可以直接开始训练,训练完成后经过测试会得到准确度等数据,如下图,我们可以看到使用Alexnet训练的模型准确率为93.69%。

基于Alexnet网络实现猫狗数据集分类(Keras框架)
并且该系统还会生成模型对于不同类别检测的准确度及其他的一些参考指标。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

还有一些预测错误的图片展示,以方便我们了解到哪些图片是容易识别错误的。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.5.2 HALCON平台下的Resnet-50对比实验

使用Resnet-50进行猫狗数据集分类,可以看到检测的准确率是97.91%,每个图像的平均推理时间是6.86ms。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.5.3 HALCON平台下的Mobilenet对比实验

使用Mobilenet进行猫狗数据集分类,可以看到检测的准确率是97.25%,每个图像的平均推理时间是1.78ms。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

3.6 几种模型的总结

(1)、AlexNet(2012)采用了ReLU激活函数和Dropout正则化技术,它深度学习图像分类任务中的突破性成果引领了后续模型的发展。
(2)、ResNet(2015)通过引入残差连接(residual connection)来构建深层网络,解决了深度神经网络训练中的梯度消失问题。
(3)、MobileNet(2017)使用了深度可分离卷积(depthwise separable convolution)来减少模型参数量和计算量,是比较轻量化的模型,适合于实时应用和资源受限的环境。

3.7 问题与分析

问题1:ImportError: cannot import name ‘Adam’ from ‘keras.optimizers’.

基于Alexnet网络实现猫狗数据集分类(Keras框架)
问题分析:keras 库更新后无法按照原方式导入包,Adam 导入已更改。
解决办法:使用下面两行的代码代替掉第一行的代码。

基于Alexnet网络实现猫狗数据集分类(Keras框架)
问题2:AttributeError: module ‘keras.backend’ has no attribute ‘set_image_dim_ordering’.

基于Alexnet网络实现猫狗数据集分类(Keras框架)
问题分析:还是keras版本的原因,新版本中image_dim_drdering更改为了image_data_format.
解决办法:使用最后一行的代码代替掉第二行的代码。

基于Alexnet网络实现猫狗数据集分类(Keras框架)

参考连接

[1] Alexnet代码参考:http://t.csdn.cn/o0Bmo
[2] 数据集处理:https://blog.csdn.net/choose_lzn/article/details/89391102文章来源地址https://www.toymoban.com/news/detail-482289.html

到了这里,关于基于Alexnet网络实现猫狗数据集分类(Keras框架)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】基于卷积神经网络 CNN 的猫狗分类问题

    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。 顾名思义,就是将卷积与前馈神经网络结合,所衍生出来的一种深度学习算法。 卷积神经网络CNN的结构图

    2024年02月17日
    浏览(43)
  • 基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基于AlexNet深度学习网络的智能垃圾分类系统概述 4.2、基于AlexNet深度学习网络的智能垃圾分类系统主要原理 5.算法完整程序工程 matlab2022a         基于AlexNet深度学习网络的智能垃圾分类系统

    2024年02月07日
    浏览(43)
  • 机器学习笔记 - 基于keras + 小型Xception网络进行图像分类

            Xception 是深度为 71 层的卷积神经网络,仅依赖于深度可分离的卷积层。         论文中将卷积神经网络中的 Inception 模块解释为常规卷积和深度可分离卷积运算(深度卷积后跟点卷积)之间的中间步骤。从这个角度来看,深度可分离卷积可以理解为具有最大数

    2024年02月11日
    浏览(30)
  • 深度学习实战44-Keras框架下实现高中数学题目的智能分类功能应用

    大家好,我是微学AI ,今天给大家介绍一下深度学习实战44-Keras框架实现高中数学题目的智能分类功能应用,该功能是基于人工智能技术的创新应用,通过对数学题目进行智能分类,提供个性化的学习辅助和教学支持。该功能的实现可以通过以下步骤:首先,采集大量的高中数

    2024年02月15日
    浏览(49)
  • 90 | Python人工智能篇 —— 深度学习算法 Keras基于卷积神经网络的情感分类

    情感分类是自然语言处理(NLP)领域的一个重要任务,它旨在将文本划分为积极、消极或中性等不同情感类别。深度学习技术,尤其是卷积神经网络(CNN),在情感分类任务中取得了显著的成果。Keras作为一个高级的深度学习框架,提供了便捷易用的工具来构建和训练情感分

    2024年02月13日
    浏览(51)
  • 基于TensorFlow和Keras的狗猫数据集的分类实验

    解释什么是overfit(过拟合)? 简单理解就是训练样本得到的输出和期望输出过于一致,而测试样本输出与期望输出相差却很大。为了得到一致假设而使假设变得过度复杂称为过拟合。想像某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据

    2024年02月12日
    浏览(37)
  • 基于卷积神经网络的猫狗识别系统的设计与实现

            通过卷积网络实现猫狗图像的识别。首先,在数据集中抽取训练集和测试集;其次,对图像进行预处理和特征提取,对图像数据进行图像增强,将图像从.jpg格式转化为RGB像素网格,再转化为像素张量;再次,搭建卷积神经网络模型;最后,使用模型进行训练,得

    2024年02月11日
    浏览(38)
  • 基于卷积的图像分类识别(一):AlexNet

    本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet,ShuffleNet,EifficientNet,Vision Transformer,Swin Transformer,Visual Attention Network,ConvNeXt, MLP-Mixer,As-MLP,ConvMixer,MetaFormer 2012年,Alex

    2024年02月08日
    浏览(67)
  • 神经网络实战--使用迁移学习完成猫狗分类

    前言: Hello大家好,我是Dream。 今天来学习一下如何使用 基于tensorflow和keras 的迁移学习完成 猫狗分类 ,欢迎大家一起前来探讨学习~ 说明:在此试验下,我们使用的是使用tf2.x版本,在jupyter环境下完成 在本文中,我们将主要完成以下任务: 实现基于tensorflow和keras的迁移学

    2024年02月06日
    浏览(39)
  • 基于tensorflow深度学习的猫狗分类识别

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 实验背景 实验目的 实验环境 实验过程 1.加载数据 2.数据预处理 3.构建模型 4.训练模

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包