创建模型与编译
数据加载进模型后定义模型结构,并优化损失函数。直接调用VGG-16模型作为卷积神经网络,包括13个卷积层、3个全连接层、5个池化层,后接全连接层,神经元数目为256,连接ReLU激活函数,再接全连接层,神经元个数为6,得到6维的特征向量,用于6个垃圾的分类训练,输入Softmax层进行分类,得到分类结果的概率输出。
由于批量梯度下降法在更新每一个参数时需要所有的训练样本,训练过程会随着样本数量的加大而变得异常缓慢。
构建优化器,optimizer=SGD(lr=1e-3,momentum=0.9),采用随机梯度下降学习算法。对数据分批训练,一批16张图片,分20轮训练。相关代码如下:
模型训练及保存
在定义模型架构并编译之后,通过训练集训练模型,使模型识别图片。这里,使用训练集和测试集拟合并保存模型。
通过观察训练集和测试集的损失函数、准确率的大小来评估模型的训练程度,进行模型训练的进一步决策。一般来说,训练集和测试集的损失函数(或准确率)不变且基本相等时为模型训练的最佳状态。
模型生成
后台服务器相关代码如下:
图片接口API相关代码如下:
模型应用
将数据代入模型进行测试,分类的标签与原始数据进行对比,搜索“基于图像识别的你是什么垃圾”小程序,单击即可进入。
界面采用简约的设计,只有一个按钮。单击按钮后可以上传图片进行垃圾分类识别,如图所示。
上传图片后出现进度条对用户进行反馈,识别完成后跳转至结果页面。