利用keras搭建CNN完成图片分类

文章目录一、简介二、流程1.数据处理2.神经网络搭建3.训练三、参考一、简介本文旨在通过一些简单的案例,学习如何通过keras搭建CNN。从数据读取,数据处理,神经网络搭建,模型训练等。本文也是参考其他博主的文章基础上做了些小修改学习的,感谢其他博主的分享。具体的CNN的原理,以及keras的原理,这里就不啰嗦了。最后会提供一些参考博客,供大家学习。代码的github地址:traffic二...
摘要由CSDN通过智能技术生成

一、简介

本文旨在通过一些简单的案例,学习如何通过keras搭建CNN。从数据读取,数据处理,神经网络搭建,模型训练等。本文也是参考其他博主的文章基础上做了些小修改学习的,感谢其他博主的分享。
具体的CNN的原理,以及keras的原理,这里就不啰嗦了。最后会提供一些参考博客,供大家学习。代码的github地址:traffic

二、流程

总体的文件夹结构:
分类模型结构

1.数据处理

数据路径

#!/usr/bin/env python
# encoding: utf-8
from keras.preprocessing.image import img_to_array#图片转为array
from keras.utils import to_categorical#相当于one-hot
from imutils import paths
import cv2
import numpy as np
import random
import os

def load_data(path,norm_size,class_num):
    data = []#数据x
    label = []#标签y
    image_paths = sorted(list(paths.list_images(path)))#imutils模块中paths可以读取所有文件路径
    random.seed(0)#保证每次数据顺序一致
    random.shuffle(image_paths)#将所有的文件路径打乱
    for each_path in image_paths:
        image = cv2.imread(each_path)#读取文件
        image = cv2.resize(image,(norm_size,norm_size))#统一图片尺寸
        image = img_to_array(image)
        data.append(image)
        maker = int(each_path.split(os.path.sep)[-2])#sep切分文件目录,标签类别为文件夹名称的变化,从0-61.如train文件下00014,label=14
        label.append(maker)
    data = np.array(data,dtype="float")/255.0#归一化
    label = np.array(label)
    label = to_categorical(label,num_classes=class_num)#one-hot
    return data,label

上面是数据目录,下面是对应的数据处理代码。主要分为几个部分:

  1. 利用imutils模块的paths将train或test中的所有图片文件的路径找出来image_paths。
  2. 对其中每张图片,做如下操作,利用cv2读取图片和修改图片尺寸(图片尺寸不一,要统一尺寸)。
  3. 依次将图片和对应的标签,保存到对应的列表中
  4. 图片进行归一化操作,标签进行one-hot

2.神经网络搭建

这里搭建的网络是经典的LeNet网络,从input>conv>pool>conv>pool>Dense>Dense(softmax)。具体LeNet的学习,请见参考。这里是利用keras搭建的LeNet,keras的顺序模型(另外一种为函数式API)。

#!/usr/bin/env python
# encoding: utf-8
import keras
from keras.layers import Conv2D, MaxPooling2D
  • 6
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Great1414

整理不易,谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值