基于 tensorflow2.4 斑马线识别

通过斑马线图片数据集,实现斑马线的识别,准确率最终可到97%

1. 数据集查看

为了后面的使用方便,直接将数据集划分好,划分为训练集和验证集

每个文件夹中有属于斑马线的文件和不属于斑马线的文件

图片样式如下

图片格式如下

2.代码

第一步就是老生常谈的导入相应的第三方库

from tensorflow.keras.layers import Conv2D,MaxPooling2D,Flatten,Dense
import tensorflow as tf
from tensorflow.keras.models import Sequential,load_model
from tensorflow.keras import optimizers
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import os
import numpy as np
import cv2 as cv

第二步我们需要规整字体格式,后面绘图需要

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

第三步就需要我们建立模型,在这里我们建立一个简单的卷积神经网络

if os.path.exists('zebra_plain.h5'):print('加载模型')model = load_model('zebra_plain.h5')
else:print('新建模型')model = Sequential()model.add(Conv2D(32, (3, 3),activation='relu', input_shape=(50, 50, 3)))model.add(MaxPooling2D((2, 2)))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))model.add(Conv2D(128, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))model.add(Conv2D(128, (3, 3), activation='relu'))model.add(MaxPooling2D((2, 2)))model.add(Flatten())model.add(Dense(512, activation='relu'))model.add(Dense(1, activation='sigmoid'))model.summary()model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])

第四步呢就是需要我们的数据集了,我们先规定数据集的路径

train_dir='./Zebra/train/'
validation_dir='./Zebra/test/'

第五步就是我们喜闻乐见的模型训练过程,但是首先肯定我们数据的一个标准化

train_datagen=ImageDataGenerator(rescale=1/255)
train_generator=train_datagen.flow_from_directory(train_dir,(150,150),batch_size=20,class_mode='binary',shuffle=True)
validation_datagen=ImageDataGenerator(rescale=1/255)
validation_generator=validation_datagen.flow_from_directory(validation_dir,(150,150),batch_size=20,class_mode='binary')history = model.fit_generator(train_generator,epochs=100,validation_data=validation_generator, validation_steps=50)
model.save('zebra_plain.h5')
print(history)


可以看到我们的模型的拟合效果还不错,在训练集上最高有1.0的准确度

第六步就是对模型进行评估啦,这个简单,就一句代码

model.evaluate(validation_generator)

第七步最后呢就是看看我们的预测结果啦,把他画出来

def changeimg(path):     # 图片归一化,更改为四维img1 = cv.imread(path)img = img1/255.img = img.reshape([1,50,50,3])return img,img1
dict_per = train_generator.class_indices      # 包含从类名到类索引的映射的字典
dict_fan = {0:'others',1:'zebra crossing'}   # 标签
for i in os.listdir(validation_dir):for j in os.listdir(validation_dir+i):path = validation_dir+i+'\\'+j    # 路径img,img_1 = changeimg(path)number = model([img])a = round(number.numpy()[0][0],0)   #round() 方法返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入)  if dict_per[i]!=a:plt.imshow(img_1)print('预测标签---',a)print('正确标签--',dict_per[i])print('预测类别---',dict_fan[a])print('正确类别--',i)break

基于 tensorflow2.4 斑马线识别相关推荐

  1. 【基于TensorFlow2.3.0的果蔬识别系统的设计】

    基于TensorFlow2.3.0的果蔬识别系统的设计 一.开发环境 Windows 10 Python 3.7.3 TensorFlow 2.3.0 Anaconda 4.12.0 CUDA 10. ...

  2. 【02】水果蔬菜识别系统-基于tensorflow2.3开发

    ------------------------------------------------2021年6月18日重大更新-------------------------------------- ...

  3. 【原创】基于TensorFlow2识别人是否配戴眼镜的研究

    随着时代的发展,电子产品种类越来越丰富,方便我们日常生活的同时,也造成了越来越多人面临近视问题,为更快速准确地统计人群的戴眼镜率,本文基于TensorFlow2,先运用爬虫爬取到了真实人脸戴眼镜与未戴 ...

  4. 【01】花卉识别-基于tensorflow2.3实现

    ------------------------------------------------2021年6月18日重大更新-------------------------------------- ...

  5. 基于tensorflow2的手写中文数字识别(自己创建数据集)

    基于tensorflow2的手写中文数字识别 @author--HCF 创建图片 首先准备手写汉字数字,并按照一定间隔整齐排列,这里是10行9列,共90个数字,如图所示 接下来使用PIL库对集中在一起 ...

  6. 基于TensorFlow2.3.0的花卉识别Android APP设计

    一.前言 本设计为基于TensorFlow2.3.0的花卉识别Android APP.TensorFlow2.3.0的API简单易用,训练好后模型导出tflite格式供Anroid APP使用. 开发 ...

  7. 基于TensorFlow2.0的摄像头数字识别

    import numpy as np import cv2 from skimage import data, segmentation, measure, morphology, color imp ...

  8. 基于tensorflow2.0+opencv的花卉识别系统源码(含数据集)

    花卉识别-基于tensorflow2.3实现 完整代码下载地址:基于tensorflow2.0+opencv的花卉识别系统源码( 文件目录 # 数据下载地址 https://storage.googl ...

  9. 深度学习之基于Tensorflow2.0实现AlexNet网络

    在之前的实验中,一直是自己搭建或者是迁移学习进行物体识别,但是没有对某一个网络进行详细的研究,正好人工智能课需要按组上去展示成果,借此机会实现一下比较经典的网络,为以后的研究学习打下基础.本次基于Te ...

最新文章

  1. 新 IDE 出现,程序员迎来危机?
  2. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...
  3. Xshell修改颜色(xshell配色)
  4. c语言计算a+aa+aaa_物业服务企业信用等级公布,42家获AAA级!你家小区物业怎么样?...
  5. 使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
  6. 【转】Docker 容器化核心概念
  7. 配置文件空格丢失问题
  8. 给本地Git配置账号信息
  9. Navicat Mac版中如何使用搜索筛选
  10. c++字符串逆序输出
  11. http-server 简介
  12. 根据单头价格清单(核价单),更新单身出货明细的单价
  13. Docker一些使用问题的解决方法
  14. 暴力破解工具 hydra
  15. 学计算机的学生用什么笔记本电脑,什么样的笔记本电脑对学生有好处?这再合适不过了!...
  16. 利用关联网络,防控信用卡“养卡套现”
  17. python编程入门必读书籍排行榜_【亲测】很的python数据分析书分享
  18. LVM管理体系(二)通过扩展LV扩展逻辑卷(操作步骤)
  19. 如何修改计算机系统的网络最大连接数?
  20. 2021-01-25广州大学ACM寒假训练赛解题心得

热门文章

  1. c语言冯诺依曼原理,详解冯诺依曼结构运行原理
  2. 路由,代理服务器和NAT技术的区别
  3. Nexus - 基于docker搭建Maven私服
  4. tensorflow学习笔记(三十七):如何自定义LSTM的initial state
  5. Gin-swagger完整使用教程
  6. 81、水喷雾灭火系统的管道水压试验
  7. 使用HSSFWorkbook并简单对数据分批查询完成导出excel功能(java实现)
  8. 如何解除word文档的密码保护状态
  9. 学会Macdown语法写出数学公式的下标
  10. Math:利用学生计算器计算一大堆的平均数和方差思维图文教程(一张图搞定!)