細粒度の画像分類におけるデータの不均衡の問題、特定のコード例が必要です
細粒度の画像分類とは、同様の視覚的特徴と、識別。このタスクでは、データの不均衡が一般的な問題です。つまり、さまざまなカテゴリのサンプル数に大きな差があり、これがトレーニングおよびテスト中のデータ分布におけるモデルの偏りにつながり、精度と堅牢性に影響を与えます。の分類です。この問題を解決するには、データのバランスをとり、モデルのパフォーマンスを向上させるいくつかの方法を採用できます。
一般的な方法はアンダーサンプリングです。つまり、各カテゴリのサンプル数が等しいか、または同じになるように、データ セットからいくつかの大きなサンプルをランダムに削除します。ほぼ等しい。この方法は簡単で高速ですが、情報の損失やサンプル不足の問題が発生する可能性があります。
もう 1 つの方法はオーバーサンプリングです。これは、各カテゴリのサンプル数が等しいかほぼ等しいように、より少ない数のサンプルをコピーまたは生成することです。オーバーサンプリングは、サンプルのコピー、新しいサンプルの生成、または補間によって実現できます。このアプローチではデータの多様性を高めることができますが、モデルの過剰適合につながる可能性があります。
データ拡張とは、元のデータに対して一連のランダムな変換を実行することにより、サンプルの数と多様性を増やすことです。一般的に使用されるデータ拡張手法には、回転、スケーリング、変換、ミラー反転、ノイズの追加などが含まれます。データ拡張を通じて、トレーニング セット内のサンプル数を増やすことができ、データの不均衡の問題を軽減できます。
以下は、PyTorch を使用してデータ拡張とアンダーサンプリングを実装するサンプル コードです:
import torch from torch.utils.data import Dataset from torch.utils.data import DataLoader from torchvision import transforms from imblearn.under_sampling import RandomUnderSampler class CustomDataset(Dataset): def __init__(self, data, targets, transform=None): self.data = data self.targets = targets self.transform = transform def __len__(self): return len(self.data) def __getitem__(self, index): x = self.data[index] y = self.targets[index] if self.transform: x = self.transform(x) return x, y # 定义数据增强的transform transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomRotation(20), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 创建自定义数据集 dataset = CustomDataset(data, targets, transform=transform) # 使用欠采样方法平衡数据 sampler = RandomUnderSampler() data_resampled, targets_resampled = sampler.fit_resample(dataset.data, dataset.targets) # 创建平衡数据的数据集 dataset_resampled = CustomDataset(data_resampled, targets_resampled, transform=transform) # 创建数据加载器 dataloader = DataLoader(dataset_resampled, batch_size=32, shuffle=True)
上記のコードでは、データ拡張を含むカスタム データ セット クラス CustomDataset を定義します。 transforms.Compose() による複数のデータ拡張操作。次に、不均衡学習ライブラリの RandomUnderSampler を使用してアンダーサンプリングを実行し、サンプル数のバランスをとり、最後にバランスの取れたデータセット dataset_resampled とデータ ローダー dataloader を作成します。
要約すると、きめの細かい画像分類におけるデータの不均衡の問題は、データ サンプリングやデータ拡張などの方法によって解決できます。コード例では、PyTorch とバランス学習ライブラリを使用して、データ拡張とアンダーサンプリングを実装し、モデルのパフォーマンスと堅牢性を向上させています。これらの方法を合理的に使用することで、データの不均衡の問題を効果的に解決でき、きめの細かい画像分類タスクにおけるモデルのパフォーマンスを向上させることができます。
以上が詳細な画像分類におけるデータの不均衡の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。