按年份分类汽车数据

数据挖掘 机器学习 喀拉斯 计算机视觉
2022-03-08 04:49:14

我有巨大的汽车照片。

我想预测汽车的“品牌-型号-车身类型和生产年份”

数据

首先,我将数据拆分为训练和验证,并像这样对它们进行分类。

分类汽车

每个类别都有大约 1000 个训练图像和 900 个验证图像。

我的计划是:我在训练后用这些类别训练我的 keras 模型,模型可以预测如下标签:

奥迪 a3 轿车 2008 => %25

奥迪 a3 轿车 2009 => %25

奥迪 a3 轿车 2010 => %25

奥迪 a3 轿车 2011 => %25

我可以告诉用户:“这辆车是 Audi A3 Sedan 2008-2011”

我的问题是,其中一些类别的照片非常相似。例如:奥迪 a3 2009 和奥迪 a3 2010 的车身类型相同,照片之间没有太大差异(实际没有差异)。正因为如此,训练准确度提高到了 0.9 左右,但验证准确度没有提高到 0.55 以上

当我尝试一些预测时,它通常给出相同的标签,“福特福克斯轿车 2009” :)

这是我的输出:

epoch,          acc,              loss,              val_acc,       val_loss
27,    0.7965514530544776, 0.56618134500483, 0.5192149643316993, 1.729015349846447

28,    0.8058803490480816, 0.5408204138258657, 0.5176764522193236, 1.778763979018732

29,    0.8167710489770164, 0.5116128672937693, 0.523258489762041, 1.7806432932022545

30,    0.8256544639818643, 0.4872381848016096, 0.5207534764479939, 1.8059904007678271

31,    0.8355546238309248, 0.4629556378035959, 0.5237253032663666, 1.8191414148756815

32,    0.8424464767701014, 0.4444190686917562, 0.5242512903147193, 1.8496954914466912

33,    0.8508739288802705, 0.422022156655134, 0.5303593149032422, 1.8565427863780883

34,    0.8576819265745635, 0.40545297008116027, 0.5262894901236571, 1.909881308499735

我的火车代码在这里:

Image_width, Image_height = 224, 224
num_epoch = 5000
batch_size = 16
learning_rate = 0.0001
model = ResNet50(weights='imagenet', include_top=False, input_shape=(Image_width, Image_height, 3))
fc_neuron_count = 1024
output = model.output
output = GlobalAveragePooling2D()(output)
output = Dense(fc_neuron_count, activation='relu')(output)
predictions = Dense(num_classes, activation='softmax')(output)
model = Model(inputs=model.input, outputs=predictions)

model.compile(optimizer=opt.Adam(lr=learning_rate), loss=losses.categorical_crossentropy,
              metrics=['accuracy'])

history_transfer_learning = model.fit_generator(
    train_generator,
    epochs=num_epoch,
    steps_per_epoch=num_train_samples // batch_size,
    validation_data=validation_generator,
    validation_steps=num_validate_samples // batch_size,
    class_weight='auto',
    callbacks=callbacks_list)
  • 难道我做错了什么?我怎样才能达到这个结果?

  • 我应该更改验证准确度计算,还是应该为每个类别提供更多照片?

1个回答

我想说我是如何为任何正在寻找类似问题的人解决我的问题的。

我的分类是错误的。后来我意识到,我把相同的照片给我的模型,然后等待不同的结果。例如,我在Audi A3 Hatchback/5 2009Audi A3 Hatchback/5 2010有几乎相同的照片。当模型开始训练时,首先它会学习数据。然后它自己预测和验证输出。如果输出错误,它会尝试不同的成功方式。但是等一下,没有错。我给你同样的照片,等待不同的结果!我的分类在这里失败了。

我按照奥迪 A3 Hatchback 2008-2013等车身变化对我的汽车进行了分类。除了有错误照片的类别外,我的结果现在很好。

现在,我们将致力于更好的照片和更好的年份分类。