Maison  >  Article  >  Périphériques technologiques  >  Problème de déséquilibre de classe dans la classification d'images

Problème de déséquilibre de classe dans la classification d'images

WBOY
WBOYoriginal
2023-10-08 08:41:271426parcourir

Problème de déséquilibre de classe dans la classification dimages

Problème de déséquilibre de catégories dans la classification d'images, des exemples de code spécifiques sont nécessaires

Résumé : Dans les tâches de classification d'images, les catégories de l'ensemble de données peuvent avoir un problème de déséquilibre, c'est-à-dire que le nombre d'échantillons dans certaines catégories est beaucoup plus que les autres catégories. Ce déséquilibre de classe peut avoir un impact négatif sur la formation et les performances du modèle. Cet article décrira les causes et les effets du problème de déséquilibre de classes et fournira quelques exemples de code concrets pour résoudre le problème.

  1. Introduction
    La classification d'images est une tâche importante dans le domaine de la vision par ordinateur et peut être appliquée à plusieurs scénarios d'application tels que la reconnaissance faciale, la détection de cibles et la recherche d'images. Dans les tâches de classification d'images, un problème courant est le déséquilibre des classes dans l'ensemble de données, où certaines classes ont beaucoup plus d'échantillons que d'autres. Par exemple, dans un ensemble de données contenant 100 catégories, 10 catégories contiennent 1 000 échantillons, tandis que les 90 autres catégories n’ont que 10 échantillons. Ce déséquilibre de classe peut avoir un impact négatif sur la formation et les performances du modèle.
  2. Causes et effets du problème de déséquilibre de classe
    Le problème de déséquilibre de catégorie peut être causé par de nombreuses raisons. Premièrement, les échantillons de certaines catégories peuvent être plus faciles à collecter, ce qui donne lieu à des tailles d’échantillon relativement plus grandes. Par exemple, dans un ensemble de données sur une catégorie d'animaux, les chats et les chiens peuvent avoir plus d'échantillons parce qu'ils sont des animaux domestiques et sont plus susceptibles d'être photographiés par des personnes. De plus, certaines catégories d’échantillons peuvent être plus difficiles à obtenir. Par exemple, dans une tâche de détection d’anomalies, le nombre d’échantillons anormaux peut être bien inférieur au nombre d’échantillons normaux. En outre, la répartition de l'ensemble de données peut être inégale, ce qui entraîne un nombre d'échantillons plus petit pour certaines catégories.

Le problème de déséquilibre des classes a des impacts négatifs sur l'entraînement et les performances du modèle. Premièrement, en raison du petit nombre d’échantillons dans certaines catégories, le modèle peut mal évaluer ces catégories. Par exemple, dans un problème à deux classifications, le nombre d'échantillons dans les deux catégories est respectivement de 10 et 1 000. Si le modèle n'effectue aucun apprentissage et prédit directement tous les échantillons en tant que catégories avec un plus grand nombre d'échantillons, la précision sera. très élevé, mais en réalité les échantillons ne sont pas efficacement classés. Deuxièmement, en raison d’une répartition déséquilibrée des échantillons, le modèle peut être biaisé en faveur de la prédiction de catégories comportant un plus grand nombre d’échantillons, ce qui entraîne de mauvaises performances de classification pour les autres catégories. Enfin, une répartition déséquilibrée des catégories peut conduire à des échantillons de formation insuffisants du modèle pour les catégories minoritaires, ce qui rend le modèle appris ayant une faible capacité de généralisation pour les catégories minoritaires.

  1. Méthodes pour résoudre le problème du déséquilibre des classes
    Pour résoudre le problème du déséquilibre des classes, certaines méthodes peuvent être utilisées pour améliorer les performances du modèle. Les méthodes courantes incluent le sous-échantillonnage, le suréchantillonnage et l'ajustement du poids.

Le sous-échantillonnage fait référence à la suppression aléatoire de certains échantillons des catégories comportant un plus grand nombre d'échantillons, afin que le nombre d'échantillons dans chaque catégorie soit plus proche. Cette méthode est simple et directe, mais peut entraîner une perte d'informations, car la suppression d'échantillons peut entraîner la perte de certaines fonctionnalités importantes.

Le suréchantillonnage fait référence à la copie de certains échantillons de catégories avec un plus petit nombre d'échantillons pour rendre le nombre d'échantillons dans chaque catégorie plus équilibré. Cette méthode peut augmenter le nombre d'échantillons, mais peut entraîner des problèmes de surajustement, car la copie d'échantillons peut entraîner un surajustement du modèle sur l'ensemble d'apprentissage et avoir une faible capacité de généralisation.

L'ajustement des poids consiste à attribuer des poids différents aux échantillons de différentes catégories dans la fonction de perte, afin que le modèle accorde plus d'attention aux catégories avec un plus petit nombre d'échantillons. Cette méthode peut résoudre efficacement le problème du déséquilibre des classes sans introduire d’échantillons supplémentaires. L'approche spécifique consiste à ajuster le poids de chaque catégorie dans la fonction de perte en spécifiant un vecteur de poids afin que les catégories avec un plus petit nombre d'échantillons aient des poids plus élevés.

Voici un exemple de code utilisant le framework PyTorch qui montre comment utiliser la méthode d'ajustement des poids pour résoudre le problème de déséquilibre des classes :

import torch
import torch.nn as nn
import torch.optim as optim

# 定义分类网络
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 100)
        self.fc2 = nn.Linear(100, 10)
    
    def forward(self, x):
        x = x.view(-1, 784)
        x = self.fc1(x)
        x = self.fc2(x)
        return x

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss(weight=torch.tensor([0.1, 0.9]))  # 根据样本数量设置权重
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

# 训练模型
for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        
        optimizer.zero_grad()
        
        outputs = net(inputs)
        
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        
        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

print('Finished Training')

Dans le code ci-dessus, les poids de deux classes sont spécifiés par torch.tensor([0.1, 0.9]), la classe avec le plus petit nombre d'échantillons Le poids de est de 0,1 et le poids des catégories avec un plus grand nombre d'échantillons est de 0,9. Cela permet au modèle d’accorder davantage d’attention aux catégories comportant un plus petit nombre d’échantillons.

  1. Conclusion
    Le déséquilibre des catégories est un problème courant dans les tâches de classification d'images et peut avoir un impact négatif sur la formation et les performances du modèle. Afin de résoudre ce problème, des méthodes telles que le sous-échantillonnage, le suréchantillonnage et l'ajustement du poids peuvent être utilisées. Parmi elles, la méthode d'ajustement du poids est une méthode simple et efficace qui peut résoudre le problème du déséquilibre des classes sans introduire d'échantillons supplémentaires. Cet article montre comment utiliser la méthode d'ajustement du poids pour résoudre le problème de déséquilibre des classes grâce à un exemple de code spécifique.

Références :
[1] He, H. et Garcia, E. A. (2009). Apprendre à partir de données déséquilibrées sur les connaissances et l'ingénierie des données, 21(9), 1263-1284.

[2] Chawla. , N. V., Bowyer, K. W., Hall, L. O. et Kegelmeyer, W. P. (2002) : technique de suréchantillonnage synthétique des minorités Journal of artificial intelligence research, 16, 321-357.

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn