/dog-breed-identification

狗的品种分类OTZ....

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

[TOC]

题目

Dog Breed Identification (120 breeds)


环境平台

Windows10 + Spyder(python3.6) + tensorflow 1.8 + keras 2.1.6


完成情况

  • 具体流程和代码注释什么的写在 <艰难的历程.md>里面了。

数据处理部分

  • 因为内存只有8G, 8000张图片全加载会导致memoryError错误。所以只用了四分之一,大概两千多张进行训练....(train.xlsx有删减)
  • 并不知道那个120_class_labels.xlsx和sample_submissiion有什么用...

模型搭建部分

  • 尝试了两个模型,分别来自github上一个keras例程,和上次生产实习李华清学长给的一段代码。
  • 第一个模型: 使用ResNet50+Flatten+BatchNormalization+Dense ....最后大概有五十多层。但训练速度奇慢无比,一次epoch大概得一个半小时...最后被我抛弃了。
  • 第二个模型:使用Conv2D+MaxPooling2D+Flatten+Dense。训练速度一次大概十分钟左右。acc也很低。。具体情况见 <艰难的历程.md>

模型微调部分

  • ...大概是毫无进展了。。因为我最终的acc也只有0.0187....这怎么调...

遇到的问题和一些疑惑

关于训练速度慢的猜想...

  • 数据的格式和大小..?
    • 因为之前学长带着做过一次模型训练,大概六万个数据,几分钟就训练完了....这次只有两千的数据却很慢不知道是不是不正常。
    • 然后去翻了上次的训练数据集,大概只有10.9M左右(可能都是文本?),但这次的两千张图片大概82.5M 。这么解释合理吗..
  • 图片导入的尺寸
    • img = load_img(train_image_dir + '{}.jpg'.format(f), target_size=(img_height, img_width))
    • 因为给出的训练图片基本都是500 375左右的,所以我设置img_height和img_width为256 256 。。会不会太大了

关于准确率的猜想...

  • 先贴一个5次epoch的结果
Train on 2034 samples, validate on 227 samples
Epoch 1/5
2034/2034 [==============================] - 553s 272ms/step - loss: 4.7846 - acc: 0.0098 - val_loss: 4.7858 - val_acc: 0.0088...] - ETA: 4:28 - loss: 4.7849 - acc: 0.00881984/2034 [============================>.] - ETA: 13s - loss: 4.7846 - acc: 0.0101
Epoch 2/5
2034/2034 [==============================] - 566s 278ms/step - loss: 4.7823 - acc: 0.0093 - val_loss: 4.7850 - val_acc: 0.0088...] - ETA: 7:17 - loss: 4.7835 - acc: 0.0059
Epoch 3/5
2034/2034 [==============================] - 525s 258ms/step - loss: 4.7801 - acc: 0.0093 - val_loss: 4.7844 - val_acc: 0.0088
Epoch 4/5
2034/2034 [==============================] - 510s 251ms/step - loss: 4.7781 - acc: 0.0103 - val_loss: 4.7838 - val_acc: 0.0044
Epoch 5/5
2034/2034 [==============================] - 514s 252ms/step - loss: 4.7763 - acc: 0.0133 - val_loss: 4.7833 - val_acc: 0.0044..] - ETA: 7:00 - loss: 4.7712 - acc: 0.0187
  • 训练集数据太少了?
    • 题目给出了八千多个,我只用了四分之一。两千个数据,有一百多个标签,每个标签平均用十几个图片训练是不是有点少???otz (这也太费内存了)
  • 是不是和图片导入尺寸有关系。。(我那个256*256)
  • 或者只是单纯的训练次数少???(令epoch=50 ???)