Kaggle —— Dogs VS Cats top 0.53%(ranking top 7)

题目: 猫狗分类

数据集: train:    cat: 12500张 

                            dog: 12500张

                test:  12500张

输出结果:对于每一个图片给出该图片属于狗的概率

评价结果:\[loss =  - \frac{1}{n}\sum\limits_{i = 1}^n {\left[ {y_i^{true}\log \left( {y_i^{pred}} \right) + \left( {1 - y_i^{true}} \right)\log \left( {1 - y_i^{pred}} \right)} \right]} \]

                  其中: n是样本的数量

                  注意:当预测精度较高时,如非常接近1或者0,此时会导致 ln(x) 出现偏差较大,因此这里有个小trick。此处的0.8与0.2分别为对Dog和Cat的置信度(实验验证,0.8和0.2的置信度效果好)。具体公式如下:

\[f\left( {y_{pred}^i} \right) = \left\{ \begin{array}{l}
0.995{\rm{                          }}y_{pred}^i \ge 0.8\\
0.005{\rm{                          }}y_{pred}^i \le 0.2\\
y_{pred}^i{\rm{                               }}else
\end{array} \right.\]

   分析: 由于此处为二分类问题,且分类的对象:Dog and Cat在ImageNet分类中出现,因此可以适合迁移学习。

   方案1: 利用Caffe进行快速实验,查看迁移学习的效果。这里采用的是ResNet101进行的迁移学习,学习的部分为最后的全连接层。参数为:learning rate=1e-3, epochs = 1(实验验证,learning rate = 1e-4收敛较慢)。

  方案2:利用基于Tensorflow的高级库Keras进行快速的迁移学习。ImageNet上的模型对比结果为

Model NameModel SizeTop1 AccTop5 Acc
InceptionResNetV2215MB0.8040.953
Xception88MB0.7900.945
InceptionV392MB0.7880.944
ResNet5099MB0.7590.929
VGG19549MB0.7270.910
VGG16528MB0.7150.901
MobileNet17MB0.6650.871

通过对比,选择模型较好的InceptionResNetV2、Xception和InceptionV3进行finetuning。

实验参数为:learning rate = 1e-3,epoch = 10。

实验过程的测试:

1、在InceptionResNetV2、Xception和InceptionV3中,添加的全连接层探索。实验在InceptionResNetV2的基础上进行的实验。

    InceptionResNetV2_1024表示只添加一层全连接层,然后连接Softmax。

    InceptionResNetV2_1024*2表示添加两层全连接层,每一层后面加上一个Dropout层,然后连接Softmax。

实验结果如下表所示(last epoch)。

ModelTraining LossTraining AccVal LossVal AccScore on KaggleRanking
InceptionResNetV2_10240.16210.93560.02520.99490.0458535/1314
 InceptionResNetV2_1024*20.00610.99830.42630.95840.21145794/1314

2、实验在InceptionResNetV2中,上述lossTrick的作用。实验在InceptionResNetV2的基础上进行的实验。

其中 InceptionResNetV2表示只添加一层全连接层,然后连接Softmax, InceptionResNetV2+modifyLoss表示网络相同,只修改loss的求解方法。

ModelTraining LossTraining Acc

    Val

   Loss

Val AccScore on KaggleRanking
         InceptionResNetV2_1024 0.1621   0.9356  0.0252   0.9949   0.04585                   35/1314
InceptionResNetV2+modifyLoss 0.1621   0.9356   0.0252   0.99490.0445328/1314

3. 下面给出各个模型的实验结果以及Ensemble的结果。

ModelTraining LossTraining AccVal LossVal AccScore on KaggleRanking
InceptionResNetV2(Keras-TF)0.16210.93560.002520.99490.0445328/1314
Xception(Keras-TF)0.00850.99730.01970.99370.0434825/1314
InceptionV3(Keras-TF)0.01470.99500.03010.98930.07149177/1314
ResNet101(Caffe)--------0.05707102/1314
Ensemble--------0.037357/1314

Ensemble的过程:实验中实验了基于投票的Ensemble结果,但是效果并不好。本文中的Ensemble策略是:在原来的预测精度上进行求均值,然后利用上述的loss trick来得到最后的结果。

 

 

本文只是为了记录此次作业的过程。

     There may be some mistakes in this blog. So, any suggestions and comments are welcome!

    [Reference]

[1]  https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition#description

[2] https://baijiahao.baidu.com/s?id=1563055785256199&wfr=spider&for=pc

    

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值