一个11层的CNN(基于无人售货机的货物识别

Github

源代码与数据文件均在github上,对识别感兴趣的小伙伴点个star啦,共同学习共同进步,谢谢!!!
只需要把文件完整下载,改变文件的目录,然后把数据改为你想要识别的物品,修改全连接层(最后一层)的输出即可完成识别。
Github地址

数据

数据是由老师手底下几个学生帮忙拍摄获取,大约两千张数据,数据参差不齐,勉强用来训练耍耍,毕竟大数据咱这破电脑也带不动的哇!
数据分类放在drink_data下的7个文件夹中,文件夹为其分类。drink_data下有一些自己手工拍摄用于验证的照片(事实证明过拟合严重。So 需要大量的数据去解决这个问题。这里挖个坑,先通过改变一些RGB的数字,然后加上裁剪+反转/镜像之类的方法加大数据集,最后了解生成对抗网络去(GANs加大数据集!!

训练

ml的日常包与一些基本参数。

from skimage import io,transform
import glob
import os
import tensorflow as tf
import numpy as np
import time
import datetime

#数据集地址
path='C:/Users/Administrator/Desktop/ML/bottle/drink_data/'
#图片集合保存地址
#模型保存地址
#C:\Users\Administrator\Desktop\ML\bottle\model
#model_path='C:/Users/Administrator/Desktop/ML/bottle/model/model.ckpt'

#将所有的图片resize成100*100
w=100
h=100
c=3

读取图片,并把图片尺寸修改然后乱序分割数据集

#读取图片
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)
            img=transform.resize(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:]

图片初始设置为128*128*3
搭建网络:这里卷积与池化的’SAME’/’ VALID’,一个是当卷积核无法找到足够大小的尺寸进行卷积时补0,一个是尺寸不够的时候直接将剩余多余的部分扔掉。
第一次卷积厚度从3->32,W与H不变。
第二次卷积厚度从32->64,W与H不变。
第三次卷积厚度从64->128,W与H不变。
第四次卷积厚度从128->128,W与H不变。
其中每次卷积后面跟一次池化,池化大小为1*2*2*1。
那么图片在最后得到的结果就是8*8*3
然后其中有3次全连接层降参数,从8*8*3->1024->512->7(这里我识别的种数为7

#-----------------构建网络----------------------
#占位符,因为这里喂的数据组数不确定,
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值