0

私はほぼ 17k の画像を含む不均衡なデータ セットに取り組んでおり、不均衡学習ライブラリを使用して SMOTE などのオーバーサンプリング手法を実装しようとしています。画像とラベルはテンソルとして読み込まれますが、不均衡学習ライブラリで利用可能なメソッドには numpy 配列が必要です。テンソルフロー データセットから画像を抽出しようとしましたが、約 1 万枚の画像の後、RAM が不足しているため、Google colab でのセッションがクラッシュします。また、別のアプローチを探してみましたが、他に何も見つかりませんでした。そのため、この問題を克服するのに実際に役立つ可能性のある提案があるかどうかを知りたい.

次の手順に従います。

tf.keras.preprocessing.image_dataset_from_directory を使用してデータをインポートします。

def create_dataset(folder_path, name, split, seed, shuffle=True):
  return tf.keras.preprocessing.image_dataset_from_directory(
    folder_path, labels='inferred', label_mode='categorical', color_mode='rgb',
    batch_size=32, image_size=(320, 320), shuffle=shuffle, interpolation='bilinear',
    validation_split=split, subset=name, seed=seed)

valid_split = 0.3
train_set = create_dataset(dir_path, 'training', valid_split, 42, shuffle=True).prefetch(1)
valid_set = create_dataset(dir_path, 'validation', valid_split, 42, shuffle=True).prefetch(1)

# output:
# Found 16718 files belonging to 38 classes.
# Using 11703 files for training.
# Found 16718 files belonging to 38 classes.
# Using 5015 files for validation.

次に、このコード行を実行して tf データセットから画像を numpy 配列として取得しますが、この時点で既に述べたように、セッションがクラッシュします。

X_train = np.concatenate([x for x, y in train_set], axis=0)

ご支援いただきありがとうございます。

4

0 に答える 0