
上QQ阅读APP看书,第一时间看更新
AI源码解读.数字图像处理案例:Python版
4.3.5 模型训练评估与生成
在定义模型架构和编译之后,通过训练集训练模型,对狗狗的种类加以区分。这里,使用训练集拟合模型并保存。之后加载模型参数,使用测试集检验其准确性。
1.模型训练并保存
共训练20次,并且输出每一次训练结束后的正确率、损失率、训练过程以进度条形式表现。将训练好的模型保存为weights.best.VGG16.hdf5文件,方便后期调用。

2.模型加载及测试
为测试训练模型效果,加载训练模型,并输入测试集数据,计算模型在测试集上的正确率。

在测试集上的正确率是70.3349%。
3.模型评估
在评估训练模型过程中,使用TensorBoard绘制出训练集和验证集上的正确率曲线和损失曲线,在迭代20次后,验证集上的正确率可以达到72.39%,其中,横坐标迭代20次,纵坐标每次迭代后的正确率大小、曲线如图4-6所示;横坐标迭代20次,纵坐标每次迭代后的损失大小、损失曲线如图4-7所示。
绘制评估曲线代码如下:


图4-6 正确率曲线

图4-7 损失函数曲线
将网址http://localhost:6006/复制在浏览器即可得到以上两个曲线图。
4.模型生成
模型生成分为两部分:一是检测输入的图片中是否包含狗狗或者人脸;二是如果图中包含狗狗或者人脸,将依据训练出的模型判断狗狗所属种类,或与该人脸最相似的狗狗种类。
1)人/狗检测
相关代码如下:

2)种类识别
首先,获得输入图片的预测向量;其次,通过该预测向量判断所属类别。为实现前端展示功能,构建图片路径,用于随机输出3张与输入狗狗同类别的图片。
