最近实验室在做基于车牌识别系统的开发,发现检测后的车牌有一些仍然是污损车牌及没有车牌,为了使这部分车牌不进入识别系统,采用了cnn的分类系统对车牌进行划分,划分为遮挡车牌和非遮挡车牌,测试1000张车牌数据,分类准确率还不错,达到95%
框架:Tensorflow
方法:CNN卷积神经网络
数据集:2个数据集,如图,0文件夹储存完整清晰车牌数据,1文件夹存储污损车牌
测试集数据放置方式相同。
下面上训练代码
from skimage import io,transform
import glob
import os
import tensorflow as tf
import numpy as np
import time#数据集地址
path='./car_train_data/'
#模型保存地址
model_path='./model/model.ckpt'
#基础学习率
LEARNING_RATE_BASE=0.001
#学习率的衰减率
LEARNING_RATE_DECAY=0.99
#滑动平均衰减率
MOVING_AVERAGE_DECAY=0.99
#将所有的图片resize成100*100
w=100
h=100
c=3
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)#读取图片
def read_img(path):cate=[path+x for x in os.listdir(path) if os.path.isdir(path+x)]imgs=[]labels=[]for idx,folder in enumerate(cate):for im in glob.glob(folder+'/*.jpg'):print('reading the images:%s'%(im))img=io.imread(im)size(img,(w,h))imgs.append(img)labels.append(idx)return np.asarray(imgs,np.float32),np.asarray(labels,np.int32)
data,label=read_img(path)#打乱顺序
num_example=data.shape[0]
arr=np.arange(num_example)
np.random.shuffle(arr)
data=data[arr]
label=label[arr]#将所有数据分为训练集和验证集
ratio=0.8
s=np.int(num_example*ratio)
x_train=data[:s]
y_train=label[:s]
x_val=data[s:]
y_val=label[s:]#-----------------构建网络----------------------
#占位符
x=tf.placeholder(tf.float32,shape=[None,w,h,c],name='x')
y_=tf.placeholder(tf.int32,shape=[None,],name='y_')def inference(input_tensor, train, regularizer):with tf.variable_scope('layer1-conv1'):conv1_weights = tf.get_variable("weight",[5,5,3,32],uncated_normal_initializer(stddev=0.1))conv1_biases = tf.get_variable("bias", [32], stant_initializer(0.0))co
本文发布于:2024-02-04 09:30:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170704134154385.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |