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.
yolov5/tutorial.ipynb

733 lines
3.1 MiB

5 years ago
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "YOLOv5 Tutorial",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true,
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/ultralytics/yolov5/blob/master/tutorial.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "HvhYZrIZCEyo"
},
"source": [
"<img src=\"https://user-images.githubusercontent.com/26833433/82952157-51b7db00-9f5d-11ea-8f4b-dda1ffecf992.jpg\">\n",
"\n",
"This notebook contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://github.com/ultralytics/yolov5 and https://www.ultralytics.com."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7mGmQbAO5pQb",
"colab_type": "text"
},
"source": [
"#Initial Setup\n",
"\n",
"Clone repo, install dependencies and RESTART RUNTIME."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wbvMlHd_QwMG",
"colab_type": "code",
"colab": {}
},
"source": [
"!git clone https://github.com/ultralytics/yolov5 # clone repo\n",
"!pip install -U -r yolov5/requirements.txt # install dependencies and RESTART RUNTIME"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "3t8VD3WebfnI",
"colab_type": "text"
},
"source": [
"After restarting runtime, `%cd` back into `./yolov5` folder, import `torch` and check CUDA device."
]
},
{
"cell_type": "code",
"metadata": {
"id": "s5TuwHPkKGY1",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 33
},
"outputId": "e2648183-73d0-49e2-8361-7c8d65a1cfe8"
},
"source": [
"%cd yolov5"
],
"execution_count": 64,
"outputs": [
{
"output_type": "stream",
"text": [
"/content/yolov5\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ij5L0B5FXA6g",
"colab_type": "code",
"outputId": "6ab14e8e-392b-48ed-c77d-167f5a9d4a13",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 53
}
},
"source": [
"import torch\n",
"from IPython.display import Image # for displaying images\n",
"from utils.google_utils import gdrive_download # for downloading models/datasets\n",
"\n",
"print('torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))"
],
"execution_count": 66,
"outputs": [
{
"output_type": "stream",
"text": [
"torch 1.5.0+cu101 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', major=6, minor=0, total_memory=16280MB, multi_processor_count=56)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "gI6NoBev8Ib1",
"colab_type": "code",
"colab": {}
},
"source": [
"# Re-clone (only if necessary, not normally used)\n",
"%cd ..\n",
"!rm -rf yolov5 && git clone https://github.com/ultralytics/yolov5\n",
"%cd yolov5"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "N3qM6T0W53gh",
"colab_type": "text"
},
"source": [
"#1. Inference\n",
"\n",
"Run inference with a pretrained checkpoint on contents of `inference/images` folder. Models are downloaded automatically from our Google Drive [folder](https://drive.google.com/open?id=1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J) if available."
]
},
{
"cell_type": "code",
"metadata": {
"id": "zR9ZbuQCH7FX",
"colab_type": "code",
"outputId": "9ae9f2bb-6cf6-4573-c755-1f5d194230c2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 488
}
},
"source": [
"# Run inference\n",
"!python detect.py --weights yolov5s.pt --img 640 --conf 0.4 --source ./inference/images/\n",
"Image(filename='inference/output/zidane.jpg', width=600)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.4, device='', fourcc='mp4v', half=False, img_size=640, iou_thres=0.5, output='inference/output', save_txt=False, source='./inference/images/', view_img=False, weights='yolov5s.pt')\n",
"Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB)\n",
"\n",
"image 1/2 inference/images/bus.jpg: 640x512 3 persons, 1 buss, Done. (0.009s)\n",
"image 2/2 inference/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.009s)\n",
"Results saved to /content/yolov5/inference/output\n",
"Done. (0.118s)\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"image/jpeg": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": [],
"image/jpeg": {
"width": 600
}
},
"execution_count": 4
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0eq1SMWl6Sfn",
"colab_type": "text"
},
"source": [
"#2. Test\n",
"Test a model on COCO val or test-dev dataset to determine trained accuracy. Models are downloaded automatically from our Google Drive [folder](https://drive.google.com/open?id=1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J) if available. To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be 1-2% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eyTZYGgRjnMc",
"colab_type": "text"
},
"source": [
"###2.1 val2017\n",
"Download COCO val 2017 dataset, 1GB, 5000 images, and test model accuracy."
]
},
{
"cell_type": "code",
"metadata": {
"id": "WQPtK1QYVaD_",
"colab_type": "code",
"outputId": "6948ef69-40d6-434e-c5ba-cc67605a04cb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 33
}
},
"source": [
"# Download COCO val2017\n",
"gdrive_download('1Y6Kou6kEB0ZEMCCpJSKStCor4KAReE43','coco2017val.zip') # val2017 dataset\n",
"!mv ./coco ../ # move folder alongside /yolov5"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://drive.google.com/uc?export=download&id=1Y6Kou6kEB0ZEMCCpJSKStCor4KAReE43 as coco2017val.zip... unzipping... Done (25.8s)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "LLb8HhnP1awM",
"colab_type": "code",
"outputId": "279038a2-18af-46a9-ad12-9c3aeaf2fc33",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 622
}
},
"source": [
"# Run yolov5s on COCO val2017\n",
"!python test.py --weights yolov5s.pt --data ./data/coco.yaml"
],
"execution_count": 56,
"outputs": [
{
"output_type": "stream",
"text": [
"Namespace(augment=False, batch_size=16, conf_thres=0.001, data='././data/coco.yaml', device='', img_size=640, iou_thres=0.65, save_json=True, single_cls=False, task='val', verbose=False, weights='yolov5s.pt')\n",
"Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB)\n",
"\n",
"Downloading https://drive.google.com/uc?export=download&id=1R5T6rIyy3lLwgFXNms8whc-387H0tMQO as yolov5s.pt... Done (1.9s)\n",
"Model Summary: 99 layers, 6.99302e+06 parameters, 6.99302e+06 gradients\n",
"Caching labels ../coco/labels/val2017.npy (4952 found, 0 missing, 48 empty, 0 duplicate, for 5000 images): 100% 5000/5000 [00:00<00:00, 23176.56it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 313/313 [01:41<00:00, 3.07it/s]\n",
" all 5e+03 3.63e+04 0.317 0.621 0.52 0.314\n",
"Speed: 3.1/2.8/5.8 ms inference/NMS/total per 640x640 image at batch-size 16\n",
"\n",
"COCO mAP with pycocotools... saving detections_val2017_yolov5s_results.json...\n",
"loading annotations into memory...\n",
"Done (t=0.40s)\n",
"creating index...\n",
"index created!\n",
"Loading and preparing results...\n",
"DONE (t=13.01s)\n",
"creating index...\n",
"index created!\n",
"Running per image evaluation...\n",
"Evaluate annotation type *bbox*\n",
"DONE (t=130.84s).\n",
"Accumulating evaluation results...\n",
"DONE (t=24.98s).\n",
" Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.330\n",
" Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.528\n",
" Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350\n",
" Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.185\n",
" Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.374\n",
" Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.422\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.282\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.482\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.558\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.397\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.618\n",
" Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.691\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "kcJEsCk3PgQy",
"colab_type": "code",
"colab": {}
},
"source": [
"# Run multiple models on COCO val2017\n",
"%%shell\n",
"for x in yolov5s yolov5m yolov5l yolov5x yolov3-spp\n",
"do \n",
" python test.py --weights $x.pt --data ./data/coco.yaml\n",
"done"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "rc_KbFk0juX2",
"colab_type": "text"
},
"source": [
"###2.2 test-dev2017\n",
"Download COCO test2017 dataset, 7GB, 40,000 images, to test model accuracy on test-dev set, 20,000 images. Results are saved to a `*.json` file which can be submitted to the evaluation server at https://competitions.codalab.org/competitions/20794."
]
},
{
"cell_type": "code",
"metadata": {
"id": "V0AJnSeCIHyJ",
"colab_type": "code",
"outputId": "de02afec-83ce-4be1-d007-65f773947ada",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 82
}
},
"source": [
"# Download COCO test-dev2017\n",
"gdrive_download('1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L','coco2017labels.zip') # annotations\n",
"!f=\"test2017.zip\" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f # 7GB, 41k images\n",
"!mv ./test2017 ./coco/images && mv ./coco ../ # move images into /coco and move /coco alongside /yolov5"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://drive.google.com/uc?export=download&id=1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L as coco2017labels.zip... unzipping... Done (9.3s)\n",
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"100 6339M 100 6339M 0 0 16.2M 0 0:06:30 0:06:30 --:--:-- 16.3M\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "29GJXAP_lPrt",
"colab_type": "code",
"colab": {}
},
"source": [
"# Run yolov5s on COCO test-dev2017\n",
"!python test.py --weights yolov5s.pt --data ./data/coco.yaml --task test"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "VUOiNLtMP5aG",
"colab_type": "text"
},
"source": [
"# 3. Train\n",
"\n",
"Download the 128-image tutorial training dataset `./data/coco128.yaml`, start tensorboard and train a `yolov5s.yaml` model for **5 epochs**. Note that actual training is typically much longer, around **300-1000 epochs**, depending on your dataset."
]
},
{
"cell_type": "code",
"metadata": {
"id": "Knxi2ncxWffW",
"colab_type": "code",
"outputId": "b842bd43-67e3-4e0e-951a-7d80f3a6aa49",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 53
}
},
"source": [
"# Download tutorial dataset coco128.yaml\n",
"gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f','coco128.zip') # tutorial dataset\n",
"!mv ./coco128 ../ # move folder alongside /yolov5"
],
"execution_count": 57,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading https://drive.google.com/uc?export=download&id=1n_oKgR81BJtqk75b00eAjdv03qVCQn2f as coco128.zip... unzipping... Done (4.8s)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bOy5KI2ncnWd",
"colab_type": "code",
"colab": {}
},
"source": [
"# Start tensorboard\n",
"%load_ext tensorboard\n",
"%tensorboard --logdir runs"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "_pOkGLv1dMqh",
"colab_type": "text"
},
"source": [
"Train a yolov5s model on the coco128 dataset by specifying model configuration file `--cfg ./models/yolo5s.yaml`, and a dataset configuration file `--data ./data/coco128.yaml`. Start training from pretrained `--weights yolov5s.pt`, or from scratch (randomly initialized weights) using `--weights ''`\n",
"\n",
"Models are downloaded automatically from our Google Drive [folder](https://drive.google.com/open?id=1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J) if available.\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1NcFxRcFdJ_O",
"colab_type": "code",
"outputId": "0a1d64d9-b3a6-4055-8487-9741c89c1140",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"# Train yolov5s on coco128 for 5 epochs\n",
"!python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights '' --name yolov5s_coco128 --nosave --cache"
],
"execution_count": 62,
"outputs": [
{
"output_type": "stream",
"text": [
"Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex\n",
"{'lr0': 0.01, 'momentum': 0.937, 'weight_decay': 0.0005, 'giou': 0.05, 'cls': 0.58, 'cls_pw': 1.0, 'obj': 1.0, 'obj_pw': 1.0, 'iou_t': 0.2, 'anchor_t': 4.0, 'fl_gamma': 0.0, 'hsv_h': 0.014, 'hsv_s': 0.68, 'hsv_v': 0.36, 'degrees': 0.0, 'translate': 0.0, 'scale': 0.5, 'shear': 0.0}\n",
"Namespace(adam=False, batch_size=16, bucket='', cache_images=True, cfg='././models/yolov5s.yaml', data='././data/coco128.yaml', device='', epochs=5, evolve=False, img_size=[640], name='yolov5s_coco128', nosave=True, notest=False, rect=False, resume=False, single_cls=False, weights='')\n",
"Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB)\n",
"\n",
"2020-05-30 00:01:16.653829: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n",
"Start Tensorboard with \"tensorboard --logdir=runs\", view at http://localhost:6006/\n",
"\n",
" from n params module arguments \n",
" 0 -1 1 3520 models.common.Focus [3, 32, 3] \n",
" 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n",
" 2 -1 1 20672 models.common.Bottleneck [64, 64] \n",
" 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n",
" 4 -1 3 246912 models.common.Bottleneck [128, 128] \n",
" 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n",
" 6 -1 3 985344 models.common.Bottleneck [256, 256] \n",
" 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n",
" 8 -1 1 656896 models.common.SPP [512, 512, [5, 9, 13]] \n",
" 9 -1 1 1312256 models.common.Bottleneck [512, 512] \n",
" 10 -1 1 1312256 models.common.Bottleneck [512, 512, False] \n",
" 11 -1 1 130815 torch.nn.modules.conv.Conv2d [512, 255, 1, 1, 0] \n",
" 12 -2 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n",
" 13 [-1, 6] 1 0 models.common.Concat [1] \n",
" 14 -1 1 197120 models.common.Conv [768, 256, 1, 1] \n",
" 15 -1 1 328448 models.common.Bottleneck [256, 256, False] \n",
" 16 -1 1 65535 torch.nn.modules.conv.Conv2d [256, 255, 1, 1, 0] \n",
" 17 -2 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n",
" 18 [-1, 4] 1 0 models.common.Concat [1] \n",
" 19 -1 1 49408 models.common.Conv [384, 128, 1, 1] \n",
" 20 -1 1 82304 models.common.Bottleneck [128, 128, False] \n",
" 21 -1 1 32895 torch.nn.modules.conv.Conv2d [128, 255, 1, 1, 0] \n",
" 22 [-1, 16, 11] 1 0 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]]]\n",
"Model Summary: 99 layers, 6.99302e+06 parameters, 6.99302e+06 gradients\n",
"\n",
"Optimizer groups: 34 .bias, 34 conv.weight, 31 other\n",
"Caching labels ../coco128/labels/train2017 (126 found, 0 missing, 2 empty, 0 duplicate, for 128 images): 100% 128/128 [00:00<00:00, 6595.06it/s]\n",
"Caching images (0.1GB): 100% 128/128 [00:00<00:00, 154.24it/s]\n",
"Caching labels ../coco128/labels/train2017 (126 found, 0 missing, 2 empty, 0 duplicate, for 128 images): 100% 128/128 [00:00<00:00, 9849.04it/s]\n",
"Caching images (0.1GB): 100% 128/128 [00:00<00:00, 151.99it/s]\n",
"Image sizes 640 train, 640 test\n",
"Using 2 dataloader workers\n",
"Starting training for 5 epochs...\n",
"\n",
" Epoch gpu_mem GIoU obj cls total targets img_size\n",
" 0/4 9.65G 0.1222 0.08038 0.1221 0.3248 223 640: 100% 8/8 [00:06<00:00, 1.14it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:03<00:00, 2.31it/s]\n",
" all 128 929 0 0 0 0\n",
"\n",
" Epoch gpu_mem GIoU obj cls total targets img_size\n",
" 1/4 8.86G 0.1163 0.08987 0.1211 0.3273 348 640: 100% 8/8 [00:02<00:00, 3.64it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:00<00:00, 8.80it/s]\n",
" all 128 929 0 0 0 0\n",
"\n",
" Epoch gpu_mem GIoU obj cls total targets img_size\n",
" 2/4 8.86G 0.1145 0.08071 0.1214 0.3166 187 640: 100% 8/8 [00:02<00:00, 3.62it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:00<00:00, 8.62it/s]\n",
" all 128 929 0 0 0 0\n",
"\n",
" Epoch gpu_mem GIoU obj cls total targets img_size\n",
" 3/4 8.86G 0.113 0.07988 0.1199 0.3128 236 640: 100% 8/8 [00:02<00:00, 3.53it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:00<00:00, 8.79it/s]\n",
" all 128 929 0 0 0 0\n",
"\n",
" Epoch gpu_mem GIoU obj cls total targets img_size\n",
" 4/4 8.86G 0.1109 0.08885 0.1198 0.3196 257 640: 100% 8/8 [00:02<00:00, 3.62it/s]\n",
" Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:00<00:00, 8.56it/s]\n",
" all 128 929 0 0 0 0\n",
"Optimizer stripped from weights/last_yolov5s_coco128.pt\n",
"5 epochs completed in 0.007 hours.\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DLI1JmHU7B0l",
"colab_type": "text"
},
"source": [
"#4. Visualize\n",
"\n",
"After training starts, view `train*.jpg` images to see training images, labels and augmentation effects. Note a mosaic dataloader is used for training (shown below), a new dataloading concept developed by Ultralytics and first featured in [YOLOv4](https://arxiv.org/abs/2004.10934)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "W40tI99_7BcH",
"colab_type": "code",
"outputId": "1c838e44-79fe-433f-a334-59a037ee322e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 917
}
},
"source": [
"Image(filename='./train_batch1.jpg', width=900) # view augmented train images"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/jpeg": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": [],
"image/jpeg": {
"width": 900
}
},
"execution_count": 17
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7uOowJKI-Qak",
"colab_type": "text"
},
"source": [
"View `test_batch0_gt.jpg` to see test batch 0 ground truth labels."
]
},
{
"cell_type": "code",
"metadata": {
"id": "PF9MLHDb7tB6",
"colab_type": "code",
"outputId": "b7a874f7-dad3-4611-e777-56c724c7ee81",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 647
}
},
"source": [
"Image(filename='./test_batch0_gt.jpg', width=900) # view test image labels"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/jpeg": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": [],
"image/jpeg": {
"width": 900
}
},
"execution_count": 20
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EGrb16Mu-jif",
"colab_type": "text"
},
"source": [
"View `test_batch0_pred.jpg` to see test batch 0 predictions."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ycP4UTEZ82_I",
"colab_type": "code",
"outputId": "c7c1238d-e0fa-4fc5-f393-bf5bce55d245",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 647
}
},
"source": [
"Image(filename='./test_batch0_pred.jpg', width=900) # view test image predictions"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/jpeg": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": [],
"image/jpeg": {
"width": 900
}
},
"execution_count": 19
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7KN5ghjE6ZWh",
"colab_type": "text"
},
"source": [
"Training losses and performance metrics are saved to Tensorboard and also to a `results.txt` logfile. `results.txt` is plotted as `results.png` after training completes. Partially completed `results.txt` files can be plotted with `from utils.utils import plot_results; plot_results()`. Here we show yolov5s trained on coco128 to 100 epochs, starting from scratch (blue), and starting from pretrained `yolov5s.pt` weights (orange)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "C60XAsyv6OPe",
"colab_type": "code",
"outputId": "70c2254e-9caf-46b0-afbe-f7fe1967b19b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 517
}
},
"source": [
"from utils.utils import plot_results; plot_results() # plot results.txt as results.png\n",
"Image(filename='./results.png', width=1000) # view results.png"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAACWAAAASwCAYAAAB/pHGBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd1gU1/oH8O/SQUE6IhYsKESMCopgVCDRJBpRYy9JbDGJMcbEFMuNPdZUNSZeS+TGRG+iJrF3QQXBBiJGxV5BiqAonWV+f/hj7g5sZ5cV+X6eh+eZs3vmnbO7umfO7DvnyARBEEBEREREREREREREREREREREREQ6MzN1A4iIiIiIiIiIiIiIiIiIiIiIiGoqJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFhERERERERERERERERERERERkZ6YgEVERERERERERERERERERERERKQnJmARERERERERERERERERERERERHpiQlYREREREREREREREREREREREREemICFtEz6tGjRzh06BA2bNiAZcuWYf78+Vi+fDnWr1+PuLg45OXlmbqJREREepHJZOJfdHS0QWPPnj1bjB0WFmbQ2ERERMZizL6xJouMjBTfF29vb632efjwIb7++muEhYXB3d0dlpaWSmNER0dL3vfa7MaNG5L34saNG6ZuEhERPSNMcY7j7e0tHjMyMrJajklERESVaXutXp+xP5GxWJi6AURkOAUFBVi1ahU2bdqE48ePo7S0VGVdMzMztGvXDgMHDsSQIUPQrFkzjfEVLyqPHDmy2geg0dHRCA8PF8vr1q3DqFGjdIoRGRmJ0aNHi+WoqCj+wE5EZCSCICAhIQHXrl1Deno6Hj16BDc3N3h4eCAgIABeXl6mbiIREZFJZWZm4tSpU8jIyEBWVhZKSkrg5OQEDw8PBAYGolGjRqZuYq1y4cIF9OzZEzdv3jR1U4iIiIiIiIiIqIZhAhbRM2LNmjWYOXMm0tLStKpfVlaGhIQEJCQk4IsvvsCwYcMwa9Ys+Pj4GLmlRET0rLt+/ToWLlyI7du34969eyrrBQQEYMSIEZgwYQKsra2rsYW1S2RkpDgTRVhYGBOPiYhM7NGjR1i+fDm2bNmCxMRECIKgsq6XlxeGDRuGUaNGoXXr1tXYytqnrKwMAwcOlCRf2drawsPDA+bm5gCAhg0bmqp51SI6OlqcXcTb21vnG56IiEi1ijeFKlOnTh04OjrCx8cHnTp1wvDhw/H8889XUwuJiIhIV9r073Z2dqhXrx6aNWuGwMBADBw4EF27dq2mFhJRdWMCFlENV1JSggkTJmD16tWSx62srBASEoLg4GC4u7vDyckJDx48wL1795CcnIyoqCgUFhYCeHKh+bfffkNhYSE2b95sipdBRETPgJKSEsyYMQPff/89ioqKNNYvTwT+4YcfsGLFCvTs2bMaWln7REZG4vDhw2KZCVhERKazYsUKzJ49G1lZWVrVv3v3Lr7++mt88803GDFiBBYsWMBZsYxk9+7dOH/+PIAnsz+vWrUKo0aNgoVF7bl0Fh0djTlz5gAAQkNDmYBFRFTN8vLykJeXh7t37yI6OhqLFy/Ga6+9hlWrVqFBgwambh4RERHpIT8/H/n5+UhLS0NsbCyWLVuGjh07Yt26dbzRiugZVHuuIhE9gwRBwJAhQ/DXX3+Jjzk6OuKTTz7BpEmTYG9vr3Lf/Px87NixA/Pnz8fZs2ero7lERPQMy8/Px8CBA7F7927J402bNkVERASaNGmCevXqiYnAO3bsQF5eHoAnM2ZFRERg5cqVePvtt03RfNHs2bMxe/Zsk7aBiIiePSUlJXj33Xexbt06yeN16tRBWFgYAgMD4ebmBltbW9y7dw+3bt3Cvn37xBkMBUHAr7/+ChcXF3z//fcmeAU106hRo7ROIjp06JC43aNHD43nJGFhYWpnL6tNvL29+V4QEemoQYMGsLW1lTz26NEjZGZmSr5Td+7ciaCgIMTFxdXKJGxT9C/l519ERES6Uta/5+XlITMzE3K5XHzs5MmT6Ny5M44cOYK2bdtWdzOJyIiYgEVUg3399deS5KuWLVtiz549aNq0qcZ97ezsMHjwYAwaNAi///47JkyYYMymEhHRM0wul6N3796IiooSH2vUqBFWrFiBiIgIpfvk5+dj3rx5+Prrr1FaWgq5XI5x48bB3Nxc47TNRERENYkgCBg8eDD+/vtv8TEnJydMnz4dH3zwAWxsbFTum5SUhHnz5mHLli3V0dRa7dq1a+I2L4ATEZGx/fbbb0pnJ87JycGWLVvwr3/9CxkZGQCezIg5bNgwxMTEVHMriYiISBeq+vf8/Hzs378fM2fOFCfFyM3NxdChQ3Hu3Dlx2XsiqvnMTN0AItLPpUuXMH36dLHs4eGBo0ePapV8pUgmk2Ho0KE4c+YMXnjhBUM3U/TgwQNs27YNP/30ExYuXIhVq1Zhz549KCgoMNoxiYioeixYsECSfPX888/jzJkzKpOvgCeJwAsXLsS2bdtgZWUlPv7BBx/g0qVLRm0vERFRdfr2228lyVc+Pj5ITEzEp59+qjb5CniSCLR582YcO3YMjRs3NnZTa7Xc3Fxx287OzoQtISKi2szJyQlvv/02Tp06BU9PT/Hx2NhYHDhwwIQtIyIiIn3Z2dmhb9++OH78ODp16iQ+fvHiRclEG0RU83EGLKIaqnzGkHL//ve/4e7urne8Ro0a4eOPPzZE0yRSUlIwZcoU7Ny5U9Lecra2thgyZAgWLFgguahAREQ1w/nz5zF37lyx7OHhgf3798PZ2Vmr/Xv27IlVq1aJywPl5+djzJgxet/Ze/r0afzzzz9IS0uDg4MDWrZsidDQUFhYGP+0t6ysDCdOnEBKSgrS09NhaWkJT09PdO3aFV5eXlWKnZubi5iYGNy9exdZWVmwsLCAh4cH/P390bZt22q/S6qgoABRUVG4ceMGcnNz4ebmhuDgYLRu3bpKcS9duoTTp08jPT0dxcXF8PDwQPv27fH888/rFS81NRUnT57ErVu3kJubCwsLCzg4OKBx48Zo3bo1vL29TRKLiGqPK1euYNq0aWLZ1dUVhw8f1nnsExISglOnTuHw4cMGa1tOTg7Onj2LS5cuITs7G4IgwMXFBc2bN0dISEilZRO0lZubi1OnTiElJQUPHjwA8GSpRS8vL7Rs2RKtW7eGmZl29wMaMpYmistBVIc7d+4gPj4e6enpePDgAezs7NC4cWO0bdsWLVq00DpOeno6kpOTceXKFTx48ABmZmZwcXGBr68vgoKCYGlpacRXUXUlJSWIiYnB1atXk
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"tags": [],
"image/png": {
"width": 1000
}
},
"execution_count": 9
}
]
}
]
}