keras图像数据的过采样
Oversampling of image data for keras
我正在参加 Kaggle 竞赛并尝试使用 keras 解决多标签分类问题。
我的数据集非常不平衡。我熟悉这个概念并为简单的机器学习数据集做过,但现在确定如何处理图像和 csv 数据。
有几个问题,但对我没有帮助。
Use SMOTE to oversample image data
How to oversample image dataset using Python?
Class
No finding 25462
Aortic enlargement 5738
Cardiomegaly 4345
Pleural thickening 3866
Pulmonary fibrosis 3726
Nodule/Mass 2085
Pleural effusion 1970
Lung Opacity 1949
Other lesion 1771
Infiltration 997
ILD 792
Calcification 775
Consolidation 441
Atelectasis 229
Pneumothorax 185
我正在尝试进行过采样,但不确定如何处理。我有 15000 png
图像和 train.csv
数据集,看起来像:
image_id class_name class_id rad_id x_min y_min x_max y_max width height
0 50a418190bc3fb1ef1633bf9678929b3 No finding 14 R11 0.0 0.0 0.0 0.0 2332 2580
1 21a10246a5ec7af151081d0cd6d65dc9 No finding 14 R7 0.0 0.0 0.0 0.0 2954 3159
2 9a5094b2563a1ef3ff50dc5c7ff71345 Cardiomegaly 3 R10 691.0 1375.0 1653.0 1831.0 2080 2336
3 051132a778e61a86eb147c7c6f564dfe Aortic enlargement 0 R10 1264.0 743.0 1611.0 1019.0 2304 2880
4 063319de25ce7edb9b1c6b8881290140 No finding 14 R10 0.0 0.0 0.0 0.0 2540 3072
当我有图像和 csv 时如何解决这个问题?
当我转换数据时,它看起来像:
Images Class
56 d106ec9b305178f3da060efe3191499a.png Nodule/Mass
38694 081d1700020b6bf0099f1e4d8aeec0f3.png Lung Opacity
50141 ff8ef73390f04480aba0be7810ef94cf.png No finding
233 253d35b7096d0957bd79cfb4b1c954e1.png No finding
2166 1951e0eba7c68aa1fbd6d723f19ee7c4.png Pleural thickening
我使用图像生成器
# Create a train generator
train_generator = train_dataGen.flow_from_dataframe(dataframe = train,
directory = 'my_directory',
x_col = 'Images',
y_col = 'Class',
class_mode = 'categorical',
# target_size = (256, 256),
batch_size = 32)
我尝试了一些愚蠢的方法,但显然没有用。
# Create an instance
oversample = SMOTE()
# Oversample
train_ovsm, valid_ovsm = oversample.fit_resample(train_ovsm, valid_ovsm)
给我一个错误:
ValueError: could not convert string to float: '954984f75efe6890cfa45d0784a3a1e6.png'
感谢提示和好的教程,目前找不到任何东西。
我不确定这个答案是否让您满意,但这是我的想法。如果我是你,我不会用你现在尝试的方式来平衡它。 IMO,这不是正确的方法。您主要担心的是 VinBigData 高度不平衡 并且您不确定如何正确解决它。
以下是在本次比赛中所有人都会采用的一些初步方法来解决这个问题。
- External dataset
- Heavy and meaningful augmentation
- Modified the loss function
外部数据集
你需要做的是,从这些数据集中收集所有可能的外部样本,将它们组合起来并制作新的数据集。这可能需要时间,但值得。
医学图像增强
众所周知,增强是深度学习模型训练的关键策略之一。但是选择正确的增强是有意义的。 Here 是一些演示。主要的直觉是尽量不要破坏敏感信息。小心点。
Class 损失加权
您可以修改损失函数来对预测分数进行加权。 Here是对这个题目的详细解释。
我正在参加 Kaggle 竞赛并尝试使用 keras 解决多标签分类问题。
我的数据集非常不平衡。我熟悉这个概念并为简单的机器学习数据集做过,但现在确定如何处理图像和 csv 数据。
有几个问题,但对我没有帮助。
Use SMOTE to oversample image data
How to oversample image dataset using Python?
Class
No finding 25462
Aortic enlargement 5738
Cardiomegaly 4345
Pleural thickening 3866
Pulmonary fibrosis 3726
Nodule/Mass 2085
Pleural effusion 1970
Lung Opacity 1949
Other lesion 1771
Infiltration 997
ILD 792
Calcification 775
Consolidation 441
Atelectasis 229
Pneumothorax 185
我正在尝试进行过采样,但不确定如何处理。我有 15000 png
图像和 train.csv
数据集,看起来像:
image_id class_name class_id rad_id x_min y_min x_max y_max width height
0 50a418190bc3fb1ef1633bf9678929b3 No finding 14 R11 0.0 0.0 0.0 0.0 2332 2580
1 21a10246a5ec7af151081d0cd6d65dc9 No finding 14 R7 0.0 0.0 0.0 0.0 2954 3159
2 9a5094b2563a1ef3ff50dc5c7ff71345 Cardiomegaly 3 R10 691.0 1375.0 1653.0 1831.0 2080 2336
3 051132a778e61a86eb147c7c6f564dfe Aortic enlargement 0 R10 1264.0 743.0 1611.0 1019.0 2304 2880
4 063319de25ce7edb9b1c6b8881290140 No finding 14 R10 0.0 0.0 0.0 0.0 2540 3072
当我有图像和 csv 时如何解决这个问题?
当我转换数据时,它看起来像:
Images Class
56 d106ec9b305178f3da060efe3191499a.png Nodule/Mass
38694 081d1700020b6bf0099f1e4d8aeec0f3.png Lung Opacity
50141 ff8ef73390f04480aba0be7810ef94cf.png No finding
233 253d35b7096d0957bd79cfb4b1c954e1.png No finding
2166 1951e0eba7c68aa1fbd6d723f19ee7c4.png Pleural thickening
我使用图像生成器
# Create a train generator
train_generator = train_dataGen.flow_from_dataframe(dataframe = train,
directory = 'my_directory',
x_col = 'Images',
y_col = 'Class',
class_mode = 'categorical',
# target_size = (256, 256),
batch_size = 32)
我尝试了一些愚蠢的方法,但显然没有用。
# Create an instance
oversample = SMOTE()
# Oversample
train_ovsm, valid_ovsm = oversample.fit_resample(train_ovsm, valid_ovsm)
给我一个错误:
ValueError: could not convert string to float: '954984f75efe6890cfa45d0784a3a1e6.png'
感谢提示和好的教程,目前找不到任何东西。
我不确定这个答案是否让您满意,但这是我的想法。如果我是你,我不会用你现在尝试的方式来平衡它。 IMO,这不是正确的方法。您主要担心的是 VinBigData 高度不平衡 并且您不确定如何正确解决它。
以下是在本次比赛中所有人都会采用的一些初步方法来解决这个问题。
- External dataset
- Heavy and meaningful augmentation
- Modified the loss function
外部数据集
你需要做的是,从这些数据集中收集所有可能的外部样本,将它们组合起来并制作新的数据集。这可能需要时间,但值得。
医学图像增强
众所周知,增强是深度学习模型训练的关键策略之一。但是选择正确的增强是有意义的。 Here 是一些演示。主要的直觉是尽量不要破坏敏感信息。小心点。
Class 损失加权
您可以修改损失函数来对预测分数进行加权。 Here是对这个题目的详细解释。