Add Dockerfiles and update Docs README (#124)
Co-authored-by: Ayush Chaurasia <ayush.chaurarsia@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
df4fc14c10
commit
a9b9fe7618
18 changed files with 608 additions and 167 deletions
202
docs/config.md
Normal file
202
docs/config.md
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
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 settings
|
||||
|
||||
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_size | 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 Settings
|
||||
|
||||
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 |
|
||||
| view_img | `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 settings
|
||||
|
||||
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_thres | `0.001` | Confidence threshold |
|
||||
| iou_thres | `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 settings
|
||||
|
||||
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 settings
|
||||
|
||||
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 |
|
||||
Loading…
Add table
Add a link
Reference in a new issue