1.8 EfficientNetV2评估
为了评价模型训练效果,接1.7节的工作,在PyCharm的Terminal窗口中输入命令:
tensorboard--logdir='logs/20220108-133733'
注意,logs后面的子文件夹名称是训练过程中自动根据训练日期生成的。命令执行后,会在Terminal窗口显示一个本地Web地址:http://localhost:6006/。打开浏览器输入该地址,或者直接单击该地址,均可在浏览器中观察模型的训练曲线。
图1.24所示为模型在训练集和验证集上的准确率曲线。图1.25所示为模型在训练集和验证集上的损失函数曲线。
图1.24 准确率曲线
图1.25 损失函数曲线
观察准确率曲线与损失函数曲线,二者表达的趋势基本一致。
模型EfficientNetV2-S在训练集上准确率接近于1,在验证集上可以稳定在0.97,这只是一个小型数据集20代的训练效果,充分体现了EfficientNetV2模型强大的稳定性与可靠性,泛化能力强。
在当前项目文件夹中新建程序predict.py,编程逻辑如程序源码P1.4所示。
针对daisy、dandelion、roses、sunflowers、tulips这5种花朵,随机从Web上下载一些图片,这些图片不应包含在建模数据集中,运行程序predict.py,对这些图片做实证观察。
图1.26~图1.29展示了4幅图片的推断结果,给出的可信度均为1。
图1.26 花朵之间有干扰(两种菊花)(见彩插)
图1.27 比较容易推断(向日葵)(见彩插)
图1.28 比较容易推断(蒲公英)(见彩插)
图1.29 有干扰(4种郁金香)(见彩插)
图1.26虽然是同类花daisy,但是两种daisy颜色不同、形状不同,图片清晰度也不够高,其中的黄色花朵很容易识别为sunflower类型。
图1.29包含4种颜色、4种形状的花朵,虽然均属tulips这一类别,但是如果其中某种形状的花朵不曾出现在建模过程中,则是有一定识别难度的。图1.27和图1.28都是典型特征,比较容易判断。
更多解析参见本节微课视频。