YOLOv8 class imbalance occurs when some object classes appear much more frequently than others in the training dataset. A model trained on an imbalanced dataset may learn majority classes well while performing poorly on rare classes. The most effective solutions usually involve improving minority-class data, using controlled oversampling or augmentation, monitoring per-class metrics, and, in current Ultralytics versions, optionally using inverse-frequency class weighting through the cls_pw training parameter.
Introduction to Class Imbalance in YOLOv8
Object detection datasets are rarely perfectly balanced.
For example, a traffic dataset might contain:
car: 25,000 instances
person: 12,000 instances
bus: 2,000 instances
ambulance: 200 instances
In this case, the model receives far more training examples for cars than ambulances.
This does not automatically make the dataset unusable, but severe imbalance can make it difficult for YOLOv8 to learn reliable representations for rare classes.
Class imbalance should therefore be analyzed at the object-instance level, not only by counting images.
What Is Class Imbalance in YOLOv8?
Class imbalance means that different object categories are represented by substantially different numbers of labeled examples.
Balanced vs Imbalanced Datasets
A reasonably balanced dataset might contain:
Class A: 5,000 instances
Class B: 4,800 instances
Class C: 5,200 instances
An imbalanced dataset might contain:
Class A: 20,000 instances
Class B: 3,000 instances
Class C: 150 instances
The second dataset gives the model far fewer opportunities to learn Class C.
Ultralytics’ dataset tools explicitly provide class-distribution visualizations for detecting imbalance, including log-scale views for datasets where one class may have thousands of annotations while another has only a few dozen.
Why Class Distribution Matters in Object Detection
YOLOv8 learns from labeled object instances.
If one class appears frequently, the optimizer repeatedly receives useful gradient information for that category.
A rare class contributes less frequently.
Conceptually:
Majority Class
Many examples
↓
Many learning opportunities
↓
Stronger representation
Minority Class
Few examples
↓
Fewer learning opportunities
↓
Potential weak representation
The problem becomes more severe when the minority class is also difficult because of small size, occlusion, unusual angles, or poor annotation quality.
How Class Imbalance Affects YOLOv8 Training
The effect of class imbalance can appear in several ways.
Bias Toward Majority Classes
A detector can become better optimized for classes that dominate the dataset.
For example:
car → 30,000 examples
truck → 5,000 examples
ambulance → 150 examples
The model may learn car features much more reliably than ambulance features.
This does not mean YOLOv8 deliberately prefers majority classes. It means the optimization process receives much more evidence for those classes.
Poor Detection of Minority Classes
Rare classes may show:
- low recall,
- missed detections,
- unstable confidence scores,
- confusion with visually similar classes.
For example, a rare van class may frequently be classified as truck if the model has seen many more trucks during training.
Impact on Precision, Recall, and mAP
Overall mAP can hide weak minority-class performance.
Imagine:
Car AP: 0.86
Person AP: 0.79
Truck AP: 0.75
Ambulance AP: 0.28
The overall average may still look acceptable.
This is why per-class evaluation matters.
Ultralytics validation reports precision, recall, mAP50, and mAP50-95, while its metric utilities retain class-level AP information that can be inspected to compare classes individually.
How to Identify Class Imbalance in a YOLOv8 Dataset
Before changing the training pipeline, measure the problem.
Count Images and Labels per Class
Start by counting how many annotations belong to each class.
For example:
person: 10,500
car: 8,200
bike: 2,100
bus: 600
train: 80
This immediately shows which classes are underrepresented.
Ultralytics’ dataset platform provides class histograms specifically for visualizing these distributions.
Analyze Object Instance Distribution
Image count alone can be misleading.
One image may contain:
15 cars
1 pedestrian
Another may contain:
1 car
10 pedestrians
Therefore, count actual annotation instances per class rather than only images containing each class.
For object detection, instance distribution usually provides a more meaningful measure of imbalance.
Detect Severely Underrepresented Classes
Pay special attention when one class has orders of magnitude fewer samples.
For example:
Class A: 20,000
Class B: 18,000
Class C: 200
Class C has roughly 100 times fewer instances than Class A.
That is a much more serious imbalance than:
Class A: 20,000
Class B: 15,000
Class C: 12,000
There is no universal ratio that defines severe imbalance, but very large differences deserve investigation.
Common Causes of Class Imbalance
Class imbalance often reflects the real-world frequency of objects.
Unequal Data Collection
Some objects naturally appear more frequently during data collection.
For example, road-camera datasets may easily capture:
cars
motorcycles
pedestrians
but rarely capture:
ambulances
fire trucks
road maintenance vehicles
Rare Object Categories
Some categories are genuinely uncommon.
Rare-event applications are especially affected.
Examples include:
- manufacturing defects,
- equipment failures,
- rare wildlife,
- emergency vehicles,
- unusual medical findings.
In these cases, imbalance may be unavoidable without targeted data collection.
Inconsistent Annotation Coverage
Sometimes imbalance is caused by annotation mistakes rather than data collection.
For example:
Cars → annotated consistently
Pedestrians → occasionally missed
Signs → often ignored
The resulting dataset may appear class-imbalanced even when the raw images are not.
Annotation audits are therefore essential.
How to Handle Class Imbalance in YOLOv8
The best solutions usually begin with the dataset.
Add More Minority-Class Images
The strongest solution is usually to collect more real examples of rare classes.
If the dataset contains:
car: 20,000
ambulance: 200
adding more ambulance images provides genuine diversity.
Try to collect new examples covering:
- different backgrounds,
- viewpoints,
- object sizes,
- lighting,
- occlusion,
- camera distances.
Real diversity is generally more useful than repeatedly duplicating the same images.
Oversample Underrepresented Classes
Oversampling means presenting minority-class samples more frequently during training.
Conceptually:
Original:
Majority → 10,000
Minority → 1,000
Training sampling:
Majority → normal
Minority → sampled more frequently
Ultralytics preprocessing guidance recommends oversampling minority classes or undersampling majority classes within the training set when handling imbalance.
Oversampling should be controlled because excessive repetition can lead to memorization.
Use Data Augmentation
Augmentation can create additional variation from minority-class examples.
Useful transformations include:
flip
scale
translation
rotation
brightness changes
contrast changes
Mosaic
MixUp
The objective is not simply to increase image count, but to expose the model to useful variations of rare examples.
Reduce Excessive Majority-Class Samples
If one majority class has an enormous number of near-duplicate examples, controlled undersampling may help.
For example:
40,000 nearly identical majority images
may provide less value than:
15,000 diverse majority images
Do not remove useful diversity solely to force exact numerical balance.
Data Augmentation for Minority Classes
Augmentation can be especially useful when obtaining more real rare-class samples is difficult.
Geometric Augmentation
Geometric augmentations can include:
rotation
translation
scaling
horizontal flip
perspective changes
These transformations can make limited examples appear in more spatial configurations.
Use only transformations that are realistic for the target task.
For example, large rotations may be useful for aerial imagery but unrealistic for upright surveillance-camera objects.
Color and Lighting Augmentation
Lighting-based variation may include:
brightness
saturation
hue
contrast
exposure
These transformations help the detector avoid overfitting to one lighting condition.
However, if color itself defines the class, overly aggressive color augmentation may remove important class information.
Mosaic and MixUp Strategies
Mosaic combines several images into one training sample.
MixUp blends information from multiple images.
These techniques can increase contextual variation and expose rare objects alongside different backgrounds.
They should still be evaluated experimentally because overly strong augmentation can produce unrealistic training examples.
Class Imbalance and YOLOv8 Loss Functions
Dataset balance affects the classification component of object-detection training.
Classification Loss Behavior
YOLO detection loss includes a classification component.
Ultralytics exposes:
cls
as the overall weight applied to classification loss.
This should not be confused with per-class weighting.
Increasing cls increases the relative importance of classification loss globally. It does not inherently give one minority class more importance than another.
Importance of Hard and Rare Examples
Rare examples can be especially important when they are visually difficult.
The Ultralytics loss package includes a FocalLoss implementation designed to reduce emphasis on easy examples and focus more on hard examples.
However, changing the default detector loss to Focal Loss is a more advanced customization and should not be assumed to improve every imbalanced dataset.
It should be validated experimentally.
Can Class Weights Fix Imbalance?
Current Ultralytics versions provide a class-weighting control called:
cls_pw
The current documentation describes it as a power applied to inverse class-frequency weighting:
cls_pw=0.0
disables class weighting.
cls_pw=1.0
applies full inverse-frequency weighting.
Values between 0 and 1 apply partial weighting.
The detection trainer computes inverse-frequency class weights and normalizes them to a mean of 1.0.
For example:
yolo detect train model=yolov8n.pt data=data.yaml cls_pw=0.5
can apply partial class balancing in a current Ultralytics installation.
Older YOLOv8 releases did not expose this functionality natively, which is why older forum and GitHub discussions may state that class weights were unsupported.
Because this behavior has evolved, check your installed Ultralytics version before using cls_pw.
Evaluating YOLOv8 on an Imbalanced Dataset
Evaluation should focus on individual classes rather than only global averages.
Check Per-Class Precision and Recall
Suppose:
Class Precision Recall
car 0.91 0.89
truck 0.87 0.82
ambulance 0.73 0.31
The ambulance recall clearly indicates a minority-class problem.
Overall precision might hide this weakness.
Compare Per-Class mAP
Per-class AP is one of the best ways to determine whether minority classes are improving.
For example:
car AP50-95 = 0.72
truck AP50-95 = 0.66
ambulance AP50-95 = 0.29
Ultralytics’ metrics system maintains class AP arrays from which per-class performance can be analyzed.
Use a Balanced Validation Set
The validation set should represent the deployment environment.
It does not always need identical counts for every class.
However, every important class should have enough validation examples to produce meaningful metrics.
A validation set with:
1,000 cars
2 ambulances
cannot provide a reliable estimate of ambulance performance.
Do not oversample or augment validation data merely to make it numerically balanced. Ultralytics preprocessing guidance recommends applying sampling changes within the training set rather than altering validation distribution.
Best Practices for YOLOv8 Class Imbalance
A good strategy combines data quality, sampling, and evaluation.
Improve Dataset Diversity
For each minority class, prioritize:
more viewpoints
different lighting
different backgrounds
different scales
different object appearances
Twenty diverse examples can be more useful than twenty exact duplicates.
Maintain High-Quality Annotations
Rare classes are especially sensitive to annotation errors because every label represents a larger fraction of the available data.
Check for:
- missing boxes,
- incorrect class IDs,
- loose boxes,
- duplicate labels,
- inconsistent annotation rules.
Track Per-Class Performance During Training
Do not rely only on:
overall mAP
Track:
per-class precision
per-class recall
per-class AP
confusion matrix
Ultralytics validation can produce precision, recall, mAP, confusion matrices, and precision-recall visualizations that help identify weak classes.
Common Mistakes When Fixing Class Imbalance
Some attempted solutions can introduce new problems.
Excessive Oversampling
If a rare image is repeated hundreds of times, the model may memorize it.
Instead of:
same image
same image
same image
same image
prefer:
new real examples
+
realistic augmentation
+
moderate oversampling
Using Duplicate Images Repeatedly
Exact duplicates provide almost no new visual information.
They may increase how often a class appears during optimization, but they do not improve diversity.
Collecting genuinely different examples is preferable.
Ignoring Validation Distribution
A training set may be artificially balanced while real-world deployment remains heavily imbalanced.
Your validation and test sets should still answer:
How will this model perform in the real environment?
Keep them representative enough to measure real-world performance.
Focusing Only on Overall mAP
Overall mAP averages information across classes.
A model can therefore achieve strong overall performance while one rare class remains poor.
Always inspect minority classes individually.
FAQs About YOLOv8 Class Imbalance
What is class imbalance in YOLOv8?
Class imbalance occurs when some object classes have significantly more training instances than others.
For example:
car: 15,000
truck: 4,000
ambulance: 100
The ambulance class is severely underrepresented.
Does class imbalance reduce YOLOv8 accuracy?
It can.
The model may perform well on frequently represented classes while showing poor recall, precision, or AP for minority classes.
The severity depends on the size of the imbalance, class difficulty, dataset diversity, and training configuration.
How do I check class imbalance in a YOLOv8 dataset?
Count labeled instances per class.
Do not rely only on image counts.
Ultralytics dataset tools provide class histograms and log-scale visualization for detecting strongly imbalanced class distributions.
How can I improve minority-class detection in YOLOv8?
Useful strategies include:
collect more minority-class samples
oversample minority examples
apply realistic augmentation
improve annotations
use class weighting where appropriate
monitor per-class metrics
In current Ultralytics versions, cls_pw can apply inverse-frequency-based class weighting.
Can data augmentation solve class imbalance?
It can help, but it is not a complete replacement for real data.
Augmentation increases variation from existing minority examples, but it cannot create genuinely new object appearances that were never captured.
Use augmentation together with improved data collection where possible.
Does YOLOv8 support class weights?
Current Ultralytics detection training supports automatic inverse-frequency class weighting through:
cls_pw
The trainer computes class weights from training-set frequencies, raises the inverse-frequency values according to cls_pw, and normalizes them.
For example:
yolo detect train model=yolov8n.pt data=data.yaml cls_pw=0.5
can apply partial weighting.
Older YOLOv8 versions did not expose this feature, so older documentation and discussions may say class weights were unavailable.
Should every class have the same number of images?
No.
Perfect numerical balance is not required.
What matters is that every important class has enough diverse, correctly annotated examples for the model to learn useful patterns.
Forcing exact equality may unnecessarily remove valuable majority-class data.
Conclusion
YOLOv8 class imbalance occurs when some object categories have substantially more training examples than others.
A typical imbalance might look like:
Majority class → 20,000 instances
Minority class → 300 instances
This can cause:
majority-class bias
minority-class missed detections
low minority recall
weak per-class AP
The most reliable workflow is:
Measure Class Distribution
↓
Check Annotation Quality
↓
Collect More Minority Data
↓
Use Controlled Sampling
↓
Apply Realistic Augmentation
↓
Optionally Use Class Weighting
↓
Track Per-Class Metrics
Current Ultralytics detection training includes inverse-frequency class weighting through cls_pw, while its preprocessing guidance also recommends oversampling minority classes or undersampling majority classes within the training set.
Class weighting and augmentation can help, but they should not replace good data. The strongest solution is usually a diverse dataset with accurate annotations and enough real examples of every important class.
Most importantly, evaluate class imbalance using per-class precision, recall, and AP, not just overall mAP. A detector is only as useful as its performance on the classes that actually matter to the application.
I’m Jane Austen, a skilled content writer with the ability to simplify any complex topic. I focus on delivering valuable tips and strategies throughout my articles.