本文以研究报告形式描述了使用TensorFlow Slim 提供的预训练模型 Inception-ResNet-V2 进行猫狗图片分类的研究。
题图来自于网络,如侵权请留言,立即删除。
一、 问题定义
(一)项目概述
本项目是机器学习竞赛平台Kaggle上的一个图片分类项目Dogs vs. Cats[1]——猫狗大战,项目要解决的问题实际是一个计算机视觉领域的图像分类问题,图像分类一般的工作模式为给定一张图片,判断其属于某个有限类别集合中的哪一类。这个领域不仅非常有趣,而且具有非常大的应用价值和商业价值。猫狗大战项目图片数据来自于微软研究院的一个CAPTCHA[2](for Completely Automated Public Turing test to tell Computers and Humans Apart)项目Asirra[3] 的子数据集。
(二)问题陈述
猫狗大战项目要求对一个混合了猫和狗的图片数据集进行二分类,项目提供了用于训练、测试的两部分数据,要求使用算法程序在训练集上对已分类的猫和狗的图片进行建模,然后利用建立的模型对测试集上多张打乱顺序的未标记猫和狗的图片进行推断,输出图片是狗的概率,使用交叉熵损失值作为模型好坏的评估分数,最终分数需要进入Public Leaderboard 10%。
此毕业项目要求使用深度学习方法进行建模,将采用常见的CNN模型解决这个猫狗图片分类问题。
(三)评价指标
使用交叉熵损失loss值作为评估指标,交叉熵损失函数是神经网络分类算法中常用的损失函数,其值越小说明模型拟合的分布约接近真实分布,模型表现越好。交叉熵损失函数公式定义如下:
公式1 交叉熵损失函数[4]。
为数据集中的图片数;
为预测概率;
在图片是狗时为1,否则为0;
是以
为底的自然对数。
使用交叉熵作为损失函数一方面是其适用于分类问题,二是题目得分评判标准也是交叉熵loss值,与得分评判标准一致使得训练阶段的评估指标与题目推断阶段评估指标比较是有意义的。
二、 分析
(一)数据的探索
输入数据包含训练集、测试集两部分,图片格式为JPEG。
训练集:train.zip,包含25000张已标记的图片文件,文件名格式为“类别.图片id.jpg”,类别为cat或dog,图片id为数字,如cat.0.jpg、dog.12247.jpg。
测试集:test.zip,包含12500张未标记的图片文件,文件名格式为“图片id.jpg”, 图片id为数字,如1.j