Spaces:
Running
Running
| All In 1 | |
| ======== | |
| is a packaged file that includes :guilabel:`training`, :guilabel:`validation`, and :guilabel:`inference` tasks. | |
| For detailed function documentation, thercheck out the IPython notebooks to learn how to import and use these function | |
| the following section will break down operation inside of lazy, also supporting directly import/call the function. | |
| [TOC], setup, build, dataset, train, validation, inference | |
| To train the model, you can run: | |
| Train Model | |
| ---------- | |
| - batch size check / cuda | |
| - training time / check | |
| - build model / check | |
| - dataset / check | |
| .. code-block:: bash | |
| python yolo/lazy.py task=train | |
| You can customize the training process by overriding the following common arguments: | |
| - ``name``: :guilabel:`str` | |
| The experiment name. | |
| - ``model``: :guilabel:`str` | |
| Model backbone, options include [model_zoo] v9-c, v7, v9-e, etc. | |
| - ``cpu_num``: :guilabel:`int` | |
| Number of CPU workers (num_workers). | |
| - ``out_path``: :guilabel:`Path` | |
| The output path for saving models and logs. | |
| - ``weight``: :guilabel:`Path | bool | None` | |
| The path to pre-trained weights, False for training from scratch, None for default weights. | |
| - ``use_wandb``: :guilabel:`bool` | |
| Whether to use Weights and Biases for experiment tracking. | |
| - ``use_TensorBoard``: :guilabel:`bool` | |
| Whether to use TensorBoard for logging. | |
| - ``image_size``: :guilabel:`int | [int, int]` | |
| The input image size. | |
| - ``+quiet``: :guilabel:`bool` | |
| Optional, disable all output. | |
| - ``task.epoch``: :guilabel:`int` | |
| Total number of training epochs. | |
| - ``task.data.batch_size``: :guilabel:`int` | |
| The size of each batch (auto-batch sizing [WIP]). | |
| Examples | |
| ~~~~~~~~ | |
| To train a model with a specific batch size and image size, you can run: | |
| .. code-block:: bash | |
| python yolo/lazy.py task=train task.data.batch_size=12 image_size=1280 | |
| Multi-GPU Training with DDP | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| For multi-GPU training, we use Distributed Data Parallel (DDP) for efficient and scalable training. | |
| DDP enable training model with mutliple GPU, even the GPUs aren't on the same machine. For more details, you can refer to the `DDP tutorial <https://pytorch.org/tutorials/intermediate/ddp_tutorial.html>`_. | |
| To train on multiple GPUs, replace the ``python`` command with ``torchrun --nproc_per_node=[GPU_NUM]``. The ``nproc_per_node`` argument specifies the number of GPUs to use. | |
| .. tabs:: | |
| .. tab:: bash | |
| .. code-block:: bash | |
| torchrun --nproc_per_node=2 yolo/lazy.py task=train device=[0,1] | |
| .. tab:: zsh | |
| .. code-block:: bash | |
| torchrun --nproc_per_node=2 yolo/lazy.py task=train device=\[0,1\] | |
| Training on a Custom Dataset | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| To use the auto-download module, we suggest users construct the dataset config in the following format. | |
| If the config files include `auto_download`, the model will automatically download the dataset when creating the dataloader. | |
| Here is an example dataset config file: | |
| .. literalinclude:: ../../yolo/config/dataset/dev.yaml | |
| :language: YAML | |
| Both of the following formats are acceptable: | |
| - ``path``: :guilabel:`str` | |
| The path to the dataset. | |
| - ``train, validation``: :guilabel:`str` | |
| The training and validation directory names under `/images`. If using txt as ground truth, these should also be the names under `/labels/`. | |
| - ``class_num``: :guilabel:`int` | |
| The number of dataset classes. | |
| - ``class_list``: :guilabel:`List[str]` | |
| Optional, the list of class names, used only for visualizing the bounding box classes. | |
| - ``auto_download``: :guilabel:`dict` | |
| Optional, whether to auto-download the dataset. | |
| The dataset should include labels or annotations, preferably in JSON format for compatibility with pycocotools during inference: | |
| .. code-block:: text | |
| DataSetName/ | |
| βββ annotations | |
| β βββ train_json_name.json | |
| β βββ val_json_name.json | |
| βββ labels/ | |
| β βββ train/ | |
| β β βββ AnyLabelName.txt | |
| β β βββ ... | |
| β βββ validation/ | |
| β βββ ... | |
| βββ images/ | |
| βββ train/ | |
| β βββ AnyImageNameN.{png,jpg,jpeg} | |
| β βββ ... | |
| βββ validation/ | |
| βββ ... | |
| Validation Model | |
| ---------------- | |
| During training, this block will be auto-executed. You may also run this task manually to generate a JSON file representing the predictions for a given validation dataset. If the validation set includes JSON annotations, it will run pycocotools for evaluation. | |
| We recommend setting ``task.data.shuffle`` to False and turning off ``task.data.data_augment``. | |
| You can customize the validation process by overriding the following arguments: | |
| - ``task.nms.min_confidence``: :guilabel:`str` | |
| The minimum confidence of model prediction. | |
| - ``task.nms.min_iou``: :guilabel:`str` | |
| The minimum IoU threshold for NMS (Non-Maximum Suppression). | |
| Examples | |
| ~~~~~~~~ | |
| .. tabs:: | |
| .. tab:: git-cloned | |
| .. code-block:: bash | |
| python yolo/lazy.py task=validation task.nms.min_iou=0.9 | |
| .. tab:: PyPI | |
| .. code-block:: bash | |
| yolo task=validation task.nms.min_iou=0.9 | |
| Model Inference | |
| --------------- | |
| .. note:: | |
| The ``dataset`` parameter shouldn't be overridden because the model requires the ``class_num`` of the dataset. If the classes have names, please provide the ``class_list``. | |
| You can customize the inference process by overriding the following arguments: | |
| - ``task.fast_inference``: :guilabel:`str` | |
| Optional. Values can be `onnx`, `trt`, `deploy`, or `None`. `deploy` will detach the model auxiliary head. | |
| - ``task.data.source``: :guilabel:`str | Path | int` | |
| This argument will be auto-resolved and could be a webcam ID, image folder path, video/image path. | |
| - ``task.nms.min_confidence``: :guilabel:`str` | |
| The minimum confidence of model prediction. | |
| - ``task.nms.min_iou``: :guilabel:`str` | |
| The minimum IoU threshold for NMS (Non-Maximum Suppression). | |
| Examples | |
| ~~~~~~~~ | |
| .. tabs:: | |
| .. tab:: git-cloned | |
| .. code-block:: bash | |
| python yolo/lazy.py model=v9-m task.nms.min_confidence=0.1 task.data.source=0 task.fast_inference=onnx | |
| .. tab:: PyPI | |
| .. code-block:: bash | |
| yolo model=v9-m task.nms.min_confidence=0.1 task.data.source=0 task.fast_inference=onnx | |