You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
17 KiB
202 lines
17 KiB
YOLO settings and hyperparameters play a critical role in the model's performance, speed, and accuracy. These settings
|
|
and hyperparameters can affect the model's behavior at various stages of the model development process, including
|
|
training, validation, and prediction.
|
|
|
|
Properly setting and tuning these parameters can have a significant impact on the model's ability to learn effectively
|
|
from the training data and generalize to new data. For example, choosing an appropriate learning rate, batch size, and
|
|
optimization algorithm can greatly affect the model's convergence speed and accuracy. Similarly, setting the correct
|
|
confidence threshold and non-maximum suppression (NMS) threshold can affect the model's performance on detection tasks.
|
|
|
|
It is important to carefully consider and experiment with these settings and hyperparameters to achieve the best
|
|
possible performance for a given task. This can involve trial and error, as well as using techniques such as
|
|
hyperparameter optimization to search for the optimal set of parameters.
|
|
|
|
In summary, YOLO settings and hyperparameters are a key factor in the success of a YOLO model, and it is important to
|
|
pay careful attention to them to achieve the desired results.
|
|
|
|
### Setting the operation type
|
|
|
|
YOLO models can be used for a variety of tasks, including detection, segmentation, and classification. These tasks
|
|
differ in the type of output they produce and the specific problem they are designed to solve.
|
|
|
|
- Detection: Detection tasks involve identifying and localizing objects or regions of interest in an image or video.
|
|
YOLO models can be used for object detection tasks by predicting the bounding boxes and class labels of objects in an
|
|
image.
|
|
- Segmentation: Segmentation tasks involve dividing an image or video into regions or pixels that correspond to
|
|
different objects or classes. YOLO models can be used for image segmentation tasks by predicting a mask or label for
|
|
each pixel in an image.
|
|
- Classification: Classification tasks involve assigning a class label to an input, such as an image or text. YOLO
|
|
models can be used for image classification tasks by predicting the class label of an input image.
|
|
|
|
YOLO models can be used in different modes depending on the specific problem you are trying to solve. These modes
|
|
include train, val, and predict.
|
|
|
|
- Train: The train mode is used to train the model on a dataset. This mode is typically used during the development and
|
|
testing phase of a model.
|
|
- Val: The val mode is used to evaluate the model's performance on a validation dataset. This mode is typically used to
|
|
tune the model's hyperparameters and detect overfitting.
|
|
- Predict: The predict mode is used to make predictions with the model on new data. This mode is typically used in
|
|
production or when deploying the model to users.
|
|
|
|
| Key | Value | Description |
|
|
|--------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| task | `detect` | Set the task via CLI. See Tasks for all supported tasks like - `detect`, `segment`, `classify`.<br> - `init` is a special case that creates a copy of default.yaml configs to the current working dir |
|
|
| mode | `train` | Set the mode via CLI. It can be `train`, `val`, `predict` |
|
|
| resume | `False` | Resume last given task when set to `True`. <br> Resume from a given checkpoint is `model.pt` is passed |
|
|
| model | null | Set the model. Format can differ for task type. Supports `model_name`, `model.yaml` & `model.pt` |
|
|
| data | null | Set the data. Format can differ for task type. Supports `data.yaml`, `data_folder`, `dataset_name` |
|
|
|
|
### Training
|
|
|
|
Training settings for YOLO models refer to the various hyperparameters and configurations used to train the model on a
|
|
dataset. These settings can affect the model's performance, speed, and accuracy. Some common YOLO training settings
|
|
include the batch size, learning rate, momentum, and weight decay. Other factors that may affect the training process
|
|
include the choice of optimizer, the choice of loss function, and the size and composition of the training dataset. It
|
|
is important to carefully tune and experiment with these settings to achieve the best possible performance for a given
|
|
task.
|
|
|
|
| Key | Value | Description |
|
|
|-----------------|---------|-----------------------------------------------------------------------------|
|
|
| device | '' | cuda device, i.e. 0 or 0,1,2,3 or cpu. `''` selects available cuda 0 device |
|
|
| epochs | 100 | Number of epochs to train |
|
|
| workers | 8 | Number of cpu workers used per process. Scales automatically with DDP |
|
|
| batch | 16 | Batch size of the dataloader |
|
|
| imgsz | 640 | Image size of data in dataloader |
|
|
| optimizer | SGD | Optimizer used. Supported optimizer are: `Adam`, `SGD`, `RMSProp` |
|
|
| single_cls | False | Train on multi-class data as single-class |
|
|
| image_weights | False | Use weighted image selection for training |
|
|
| rect | False | Enable rectangular training |
|
|
| cos_lr | False | Use cosine LR scheduler |
|
|
| lr0 | 0.01 | Initial learning rate |
|
|
| lrf | 0.01 | Final OneCycleLR learning rate |
|
|
| momentum | 0.937 | Use as `momentum` for SGD and `beta1` for Adam |
|
|
| weight_decay | 0.0005 | Optimizer weight decay |
|
|
| warmup_epochs | 3.0 | Warmup epochs. Fractions are ok. |
|
|
| warmup_momentum | 0.8 | Warmup initial momentum |
|
|
| warmup_bias_lr | 0.1 | Warmup initial bias lr |
|
|
| box | 0.05 | Box loss gain |
|
|
| cls | 0.5 | cls loss gain |
|
|
| cls_pw | 1.0 | cls BCELoss positive_weight |
|
|
| obj | 1.0 | bj loss gain (scale with pixels) |
|
|
| obj_pw | 1.0 | obj BCELoss positive_weight |
|
|
| iou_t | 0.20 | IOU training threshold |
|
|
| anchor_t | 4.0 | anchor-multiple threshold |
|
|
| fl_gamma | 0.0 | focal loss gamma |
|
|
| label_smoothing | 0.0 | |
|
|
| nbs | 64 | nominal batch size |
|
|
| overlap_mask | `True` | **Segmentation**: Use mask overlapping during training |
|
|
| mask_ratio | 4 | **Segmentation**: Set mask downsampling |
|
|
| dropout | `False` | **Classification**: Use dropout while training |
|
|
|
|
### Prediction
|
|
|
|
Prediction settings for YOLO models refer to the various hyperparameters and configurations used to make predictions
|
|
with the model on new data. These settings can affect the model's performance, speed, and accuracy. Some common YOLO
|
|
prediction settings include the confidence threshold, non-maximum suppression (NMS) threshold, and the number of classes
|
|
to consider. Other factors that may affect the prediction process include the size and format of the input data, the
|
|
presence of additional features such as masks or multiple labels per box, and the specific task the model is being used
|
|
for. It is important to carefully tune and experiment with these settings to achieve the best possible performance for a
|
|
given task.
|
|
|
|
| Key | Value | Description |
|
|
|----------------|----------------------|-------------------------------------------------|
|
|
| source | `ultralytics/assets` | Input source. Accepts image, folder, video, url |
|
|
| show | `False` | View the prediction images |
|
|
| save_txt | `False` | Save the results in a txt file |
|
|
| save_conf | `False` | Save the condidence scores |
|
|
| save_crop | `Fasle` | |
|
|
| hide_labels | `False` | Hide the labels |
|
|
| hide_conf | `False` | Hide the confidence scores |
|
|
| vid_stride | `False` | Input video frame-rate stride |
|
|
| line_thickness | `3` | Bounding-box thickness (pixels) |
|
|
| visualize | `False` | Visualize model features |
|
|
| augment | `False` | Augmented inference |
|
|
| agnostic_nms | `False` | Class-agnostic NMS |
|
|
| retina_masks | `False` | **Segmentation:** High resolution masks |
|
|
|
|
### Validation
|
|
|
|
Validation settings for YOLO models refer to the various hyperparameters and configurations used to
|
|
evaluate the model's performance on a validation dataset. These settings can affect the model's performance, speed, and
|
|
accuracy. Some common YOLO validation settings include the batch size, the frequency with which validation is performed
|
|
during training, and the metrics used to evaluate the model's performance. Other factors that may affect the validation
|
|
process include the size and composition of the validation dataset and the specific task the model is being used for. It
|
|
is important to carefully tune and experiment with these settings to ensure that the model is performing well on the
|
|
validation dataset and to detect and prevent overfitting.
|
|
|
|
| Key | Value | Description |
|
|
|-------------|---------|-----------------------------------|
|
|
| noval | `False` | ??? |
|
|
| save_json | `False` | |
|
|
| save_hybrid | `False` | |
|
|
| conf | `0.001` | Confidence threshold |
|
|
| iou | `0.6` | IoU threshold |
|
|
| max_det | `300` | Maximum number of detections |
|
|
| half | `True` | Use .half() mode. |
|
|
| dnn | `False` | Use OpenCV DNN for ONNX inference |
|
|
| plots | `False` | |
|
|
|
|
### Export
|
|
|
|
Export settings for YOLO models refer to the various configurations and options used to save or
|
|
export the model for use in other environments or platforms. These settings can affect the model's performance, size,
|
|
and compatibility with different systems. Some common YOLO export settings include the format of the exported model
|
|
file (e.g. ONNX, TensorFlow SavedModel), the device on which the model will be run (e.g. CPU, GPU), and the presence of
|
|
additional features such as masks or multiple labels per box. Other factors that may affect the export process include
|
|
the specific task the model is being used for and the requirements or constraints of the target environment or platform.
|
|
It is important to carefully consider and configure these settings to ensure that the exported model is optimized for
|
|
the intended use case and can be used effectively in the target environment.
|
|
|
|
### Augmentation
|
|
|
|
Augmentation settings for YOLO models refer to the various transformations and modifications
|
|
applied to the training data to increase the diversity and size of the dataset. These settings can affect the model's
|
|
performance, speed, and accuracy. Some common YOLO augmentation settings include the type and intensity of the
|
|
transformations applied (e.g. random flips, rotations, cropping, color changes), the probability with which each
|
|
transformation is applied, and the presence of additional features such as masks or multiple labels per box. Other
|
|
factors that may affect the augmentation process include the size and composition of the original dataset and the
|
|
specific task the model is being used for. It is important to carefully tune and experiment with these settings to
|
|
ensure that the augmented dataset is diverse and representative enough to train a high-performing model.
|
|
|
|
| hsv_h | 0.015 | Image HSV-Hue augmentation (fraction) |
|
|
|-------------|-------|-------------------------------------------------|
|
|
| hsv_s | 0.7 | Image HSV-Saturation augmentation (fraction) |
|
|
| hsv_v | 0.4 | Image HSV-Value augmentation (fraction) |
|
|
| degrees | 0.0 | Image rotation (+/- deg) |
|
|
| translate | 0.1 | Image translation (+/- fraction) |
|
|
| scale | 0.5 | Image scale (+/- gain) |
|
|
| shear | 0.0 | Image shear (+/- deg) |
|
|
| perspective | 0.0 | Image perspective (+/- fraction), range 0-0.001 |
|
|
| flipud | 0.0 | Image flip up-down (probability) |
|
|
| fliplr | 0.5 | Image flip left-right (probability) |
|
|
| mosaic | 1.0 | Image mosaic (probability) |
|
|
| mixup | 0.0 | Image mixup (probability) |
|
|
| copy_paste | 0.0 | Segment copy-paste (probability) |
|
|
|
|
### Logging, checkpoints, plotting and file management
|
|
|
|
Logging, checkpoints, plotting, and file management are important considerations when training a YOLO model.
|
|
|
|
- Logging: It is often helpful to log various metrics and statistics during training to track the model's progress and
|
|
diagnose any issues that may arise. This can be done using a logging library such as TensorBoard or by writing log
|
|
messages to a file.
|
|
- Checkpoints: It is a good practice to save checkpoints of the model at regular intervals during training. This allows
|
|
you to resume training from a previous point if the training process is interrupted or if you want to experiment with
|
|
different training configurations.
|
|
- Plotting: Visualizing the model's performance and training progress can be helpful for understanding how the model is
|
|
behaving and identifying potential issues. This can be done using a plotting library such as matplotlib or by
|
|
generating plots using a logging library such as TensorBoard.
|
|
- File management: Managing the various files generated during the training process, such as model checkpoints, log
|
|
files, and plots, can be challenging. It is important to have a clear and organized file structure to keep track of
|
|
these files and make it easy to access and analyze them as needed.
|
|
|
|
Effective logging, checkpointing, plotting, and file management can help you keep track of the model's progress and make
|
|
it easier to debug and optimize the training process.
|
|
|
|
| Key | Value | Description |
|
|
|-----------|---------|---------------------------------------------------------------------------------------------|
|
|
| project: | 'runs' | The project name |
|
|
| name: | 'exp' | The run name. `exp` gets automatically incremented if not specified, i.e, `exp`, `exp2` ... |
|
|
| exist_ok: | `False` | ??? |
|
|
| plots | `False` | **Validation**: Save plots while validation |
|
|
| nosave | `False` | Don't save any plots, models or files | |