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

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

新智元报道
来源:网络
编辑:yaxin、su
【新智元导读】狗的品种有多少 , 你能否一一道来?若将不同品种的狗拉到你面前 , 你又能认识几个?别急 , 国外小哥搭建了一个专门对狗的品种进行分类的CNN模型 , 「狗盲」不存在!
在路上偶然见到一只狗狗觉得很可爱 , 但是不知道它的品种?
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

觉得某个喜欢的明星很像……狗狗?
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

最近 , 一位印度小哥搭建了一个CNN模型 , 专门对狗的品种进行分类!
识别到人脸怎么办呢?它会告诉我们与此人最相似的狗狗品种 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

该模型使用的狗数据集和人体数据集来自Kaggle 。
包括8351张狗图像 , 分为训练(6680)、验证(835)和测试(836)数据集 , 以及13233张人脸 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

训练数据集中 , 图像数量最多的阿拉斯加雪橇犬(77) , 最少的是挪威布哈德犬(26) 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

如图从上到下依次为:阿拉斯加雪橇犬、挪威布哈德犬
该模型的评估指标是准确性 , 即正确预测的数量与所有预测的比值 。
同时 , 在总结时使用精度进行评估 , 避免误报率(FalsePositiveRatio) 。
具体步骤分为七步:
第1步:检测人类
第2步:检测狗
第3步:创建一个CNN来对狗品种进行分类
第4步:使用CNN对狗品种进行分类(使用迁移学习)
第5步:创建一个CNN来对狗品种进行分类(使用迁移学习)
第6步:最终算法
第7步:测试算法
七步走 , 狗狗检测器诞生
第1步检测人类
研究人员尝试将2种不同的算法来检测人脸:OpenCV和MTCNN 。
如何实现?
OpenCV是一个python库 , 它使用基于Haar特征的级联分类器 , 通过各种过滤器/内核函数提取特征 , 然后应用Adaboost算法对不良特征进行处罚 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

OpenCV的Haar级联分类器准确预测100%的人类图像 , 约12%的狗图像错误地预测为人类 。
再来看另一个检测人脸的分类器MTCNN(多任务级联卷积网络) 。
它由三个卷积网络(P-Net、R-Net和O-Net)组成 , 负责实时检测的鲁棒性 。
事实证明 , MTCNN是检测「模糊图像」更好选择 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

OpenCV和MTCNN对比
然而 , 当研究者在狗图像上评估MTCNN算法时 , 检测出的比率却是不同的 。
尽管它完美地检测了所有人脸 , 但大约23%的狗图像被检测为人类 , 这比OpenCV的12%错误率要大得多 。
这表明MTCNN中的误报率高于OpenCV 。
第2步检测狗
为了检测狗 , 研究人员使用预训练的Resnet-50模型 。 该神经网络已在ImageNet数据集上进行了训练 , 可直接加载模型利用 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

在把图像提供给Resnet-50模型之前 , 必须将图像重塑n(图像的预处理)m为Keras接受的张量(4D数组) 。
狗盲不存在!印度小哥实战搭建狗品种识别算法,只要7步

预处理图像数据
接下来便是预测 。 预测前 , 研究者对输入图像也进行一些额外的处理 。