狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步( 二 )


Resnet-50模型在这方面的表现相当出色 , 狗和人脸的图像都能正确标记 。
第3步创建一个CNN来对狗品种进行分类
现在有了在图像中检测人类和狗的功能 , 必须设计出一种从图像中预测品种的方法 。
研究人员尝试创建了自己的卷积神经网络和训练狗的数据集 , 如下:
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

狗品种分类器CNN
研究者在最初的几个层中使用了Conv2D和MaxPooling的组合 , 然后是GlobalAveragePooling2D、Dropout和Dense图层 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

模型概述
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

模型编译
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

模型训练
当前 , 研究者已经对模型进行了25次训练 , 批量大小为20 。 使用的优化器是rmsprop 。 使用该模型获得的准确度和精密度分别为15.5%和14% 。
第4步使用CNN对狗品种进行分类
上面的模型没有给出理想的准确度 , 值得庆幸的是 , 「迁移学习」可以帮助实现 。
这样 , 研究者可以在不牺牲准确性的情况下减少训练时间 。
因为只需要训练最后几层并利用已经训练好的CNN模型的权重 , 在这种情况下是VGG-16 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

VGG16CNN模型
VGG16模型的上述实现产生了45.5%的准确率 , 远高于研究者自己的CNN模型 。
第5步创建一个CNN来对狗品种进行分类(使用迁移学习)
接下来 , 研究者对下载到各自架构的瓶颈特性上训练更多模型(Resnet-50 , InceptionV3) 。
在实现方面 , 它们与VGG-16模型完全相似 , 只有架构不同 。
他们创建了一组函数来构建架构、编译和训练模型 , 以及报告准确性和热图 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

犬种预测的InceptionV3模型热图
因此 , 我们使用InceptionV3网络来训练我们的模型 。 从上图中可以明显看出 , 这是一个更好的热图 , 大多数预测都沿着对角线 。 它产生了81.2%的准确度和大约84%的精度 。
第6步最终算法
将人脸检测器、狗检测器和狗品种分类器整合到一个算法中 。
然后就可以拍摄图像并预测狗的品种啦!当然 , 如果是人类 , 则预测与此人最相似的狗品种 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

狗品种预测
输入图像后 , softmax分类器会将最大概率的索引定为最终品种 。
此外 , 算法还会显示5个最有可能的犬种及其softmax概率 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

最终算法
输入狗和人脸的图片后 , 上述函数将调用final_breed_prediction方法进行预测 , 并显示相关信息 。
第7步测试算法
最后 , 研究人员分别检测了5张狗的图像以及2张人的图像 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

结果显示 , 它准确地预测了所有5只狗图像的品种 。 然而 , 就人类图片预测而言 , 并不完全令人信服 。
比如下面这张图就闹了一个笑话 , 「你看起来像一只獒犬」 。
准确度还不错!但也存在改进空间
总的来说 , 这一模型准确度还可以 。
对提取的瓶颈特征进行训练后 , 基准模型的准确度如下:
VGG16:45%、InceptionV3:82%、Resnet50:81%
研究人员发现 , 增加epoch的数量并不能减少验证损失 。 也就是说 , 在20次迭代内就可以实现最佳的验证损失和准确性 。