diff --git a/YOLO_model.ipynb b/YOLO_model.ipynb index 18f9bdb..8a0efa8 100644 --- a/YOLO_model.ipynb +++ b/YOLO_model.ipynb @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "a3e69197-7565-4464-8381-ffc871818819", "metadata": {}, "outputs": [ @@ -118,7 +118,7 @@ "-> Initializing YOLO training...\n", "New https://pypi.org/project/ultralytics/8.4.96 available 😃 Update with 'pip install -U ultralytics'\n", "Ultralytics 8.4.92 🚀 Python-3.10.12 torch-2.5.1+cu124 CUDA:0 (NVIDIA GeForce GTX 1050 Ti, 4030MiB)\n", - "\u001b[34m\u001b[1mengine/trainer: \u001b[0magnostic_nms=False, amp=False, angle=1.0, augment=False, auto_augment=randaugment, batch=4, bgr=0.0, box=7.5, cache=False, cfg=None, classes=None, close_mosaic=10, cls=0.5, cls_pw=0.0, cls_remap=True, compile=False, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=False, cutmix=0.0, data=dataset.yaml, degrees=0.0, deterministic=True, device=, dfl=1.5, dis=6.0, distill_model=None, dnn=False, dropout=0.0, dynamic=False, embed=None, end2end=None, epochs=50, erasing=0.4, exist_ok=False, fliplr=0.5, flipud=0.0, format=torchscript, fraction=1.0, freeze=None, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, imgsz=640, iou=0.7, keras=False, kobj=1.0, line_width=None, lr0=0.01, lrf=0.01, mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=yolov8n.pt, momentum=0.937, mosaic=1.0, multi_scale=0.0, name=train-22, nbs=64, nms=False, opset=None, optimize=False, optimizer=auto, overlap_mask=True, patience=5, perspective=0.0, plots=True, pose=12.0, pretrained=True, profile=False, project=None, quantize=None, rect=False, resume=False, retina_masks=False, rle=1.0, save=True, save_conf=False, save_crop=False, save_dir=/home/nathan/HadesStarYOLO/runs/detect/train-22, save_frames=False, save_json=False, save_period=-1, save_txt=False, scale=0.5, seed=0, shear=0.0, show=False, show_boxes=True, show_conf=True, show_labels=True, simplify=True, single_cls=False, source=None, split=val, stream_buffer=False, task=detect, time=None, tracker=tracktrack.yaml, translate=0.1, val=True, verbose=True, vid_stride=1, visualize=False, warmup_bias_lr=0.1, warmup_epochs=3.0, warmup_momentum=0.8, weight_decay=0.0005, workers=8, workspace=None\n", + "\u001b[34m\u001b[1mengine/trainer: \u001b[0magnostic_nms=False, amp=False, angle=1.0, augment=False, auto_augment=randaugment, batch=4, bgr=0.0, box=7.5, cache=False, cfg=None, classes=None, close_mosaic=10, cls=0.5, cls_pw=0.0, cls_remap=True, compile=False, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=False, cutmix=0.0, data=dataset.yaml, degrees=0.0, deterministic=True, device=, dfl=1.5, dis=6.0, distill_model=None, dnn=False, dropout=0.0, dynamic=False, embed=None, end2end=None, epochs=50, erasing=0.4, exist_ok=False, fliplr=0.5, flipud=0.0, format=torchscript, fraction=1.0, freeze=None, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, imgsz=640, iou=0.7, keras=False, kobj=1.0, line_width=None, lr0=0.01, lrf=0.01, mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=yolov8n.pt, momentum=0.937, mosaic=1.0, multi_scale=0.0, name=train-23, nbs=64, nms=False, opset=None, optimize=False, optimizer=auto, overlap_mask=True, patience=5, perspective=0.0, plots=True, pose=12.0, pretrained=True, profile=False, project=None, quantize=None, rect=False, resume=False, retina_masks=False, rle=1.0, save=True, save_conf=False, save_crop=False, save_dir=/home/nathan/HadesStarYOLO/runs/detect/train-23, save_frames=False, save_json=False, save_period=-1, save_txt=False, scale=0.5, seed=0, shear=0.0, show=False, show_boxes=True, show_conf=True, show_labels=True, simplify=True, single_cls=False, source=None, split=val, stream_buffer=False, task=detect, time=None, tracker=tracktrack.yaml, translate=0.1, val=True, verbose=True, vid_stride=1, visualize=False, warmup_bias_lr=0.1, warmup_epochs=3.0, warmup_momentum=0.8, weight_decay=0.0005, workers=8, workspace=None\n", "Overriding model.yaml nc=80 with nc=5\n", "\n", " from n params module arguments \n", @@ -149,115 +149,36 @@ "\n", "Transferred 319/355 items from pretrained weights\n", "Freezing layer 'model.22.dfl.conv.weight'\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 1663.3±1491.0 MB/s, size: 29.1 KB)\n", - "\u001b[K\u001b[34m\u001b[1mtrain: \u001b[0mScanning /home/nathan/HadesStarYOLO/dataset_v5/labels.cache... 165 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 165/165 57.7Mit/s 0.0s\n", - "\u001b[34m\u001b[1mval: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 1137.3±892.6 MB/s, size: 122.5 KB)\n", - "\u001b[K\u001b[34m\u001b[1mval: \u001b[0mScanning /home/nathan/HadesStarYOLO/dataset_v5/labels.cache... 165 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 165/165 6.4Mit/s 0.0s\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 2103.6±2034.2 MB/s, size: 51.9 KB)\n", + "\u001b[K\u001b[34m\u001b[1mtrain: \u001b[0mScanning /home/nathan/HadesStarYOLO/dataset_v5/labels.cache... 165 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 165/165 53.2Mit/s 0.0s\n", + "\u001b[34m\u001b[1mval: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 930.4±461.8 MB/s, size: 102.7 KB)\n", + "\u001b[K\u001b[34m\u001b[1mval: \u001b[0mScanning /home/nathan/HadesStarYOLO/dataset_v5/labels.cache... 165 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 165/165 8.0Mit/s 0.0s\n", "\u001b[34m\u001b[1moptimizer:\u001b[0m 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically... \n", "\u001b[34m\u001b[1moptimizer:\u001b[0m AdamW(lr=0.001111, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0)\n", - "Plotting labels to /home/nathan/HadesStarYOLO/runs/detect/train-22/labels.jpg... \n", + "Plotting labels to /home/nathan/HadesStarYOLO/runs/detect/train-23/labels.jpg... \n", "Image sizes 640 train, 640 val\n", "Using 8 dataloader workers\n", - "Logging results to \u001b[1m/home/nathan/HadesStarYOLO/runs/detect/train-22\u001b[0m\n", + "Logging results to \u001b[1m/home/nathan/HadesStarYOLO/runs/detect/train-23\u001b[0m\n", "Starting training for 50 epochs...\n", "\n", " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 1/50 1.08G 2.321 4.195 1.342 23 640: 100% ━━━━━━━━━━━━ 42/42 3.0it/s 13.9s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.5it/s 2.8s0.1s\n", - " all 165 1385 0.00152 0.0802 0.00995 0.00372\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 2/50 1.5G 2.381 3.269 1.243 22 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.4it/s 2.8s0.1s\n", - " all 165 1385 0.193 0.0698 0.0897 0.0345\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 3/50 1.5G 2.294 2.919 1.206 11 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 3.0s0.1s\n", - " all 165 1385 0.145 0.265 0.122 0.0526\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 4/50 1.5G 2.236 2.837 1.239 5 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 2.9s0.1s\n", - " all 165 1385 0.236 0.265 0.179 0.0837\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 5/50 1.5G 2.097 2.685 1.182 42 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.2s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.2it/s 2.9s0.1s\n", - " all 165 1385 0.258 0.314 0.196 0.0898\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 6/50 1.5G 2.172 2.574 1.236 13 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.3it/s 2.9s0.1s\n", - " all 165 1385 0.183 0.287 0.155 0.0649\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 7/50 1.5G 2.086 2.504 1.192 14 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.2it/s 2.9s0.1s\n", - " all 165 1385 0.273 0.293 0.224 0.106\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 8/50 1.5G 2.058 2.468 1.152 17 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.3it/s 2.9s0.1s\n", - " all 165 1385 0.319 0.312 0.253 0.118\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 9/50 1.5G 2.044 2.458 1.174 6 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.2s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 3.0s0.1s\n", - " all 165 1385 0.35 0.385 0.301 0.151\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 10/50 1.5G 2.025 2.307 1.142 49 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.2s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.2it/s 2.9s0.1s\n", - " all 165 1385 0.339 0.384 0.334 0.158\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 11/50 1.5G 2.001 2.215 1.146 5 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 3.0s0.1s\n", - " all 165 1385 0.363 0.379 0.352 0.171\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 12/50 1.56G 1.995 2.167 1.124 17 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.3it/s 2.9s0.1s\n", - " all 165 1385 0.414 0.453 0.395 0.195\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 13/50 1.56G 1.971 2.122 1.129 14 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 3.0s0.1s\n", - " all 165 1385 0.417 0.439 0.429 0.216\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 14/50 1.56G 1.946 2.055 1.146 4 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.2it/s 2.9s0.1s\n", - " all 165 1385 0.47 0.479 0.473 0.236\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 15/50 1.56G 1.917 2.042 1.126 69 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.3it/s 2.9s0.1s\n", - " all 165 1385 0.492 0.473 0.476 0.228\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 16/50 1.56G 1.961 2.012 1.112 14 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 3.0s0.1s\n", - " all 165 1385 0.477 0.485 0.499 0.254\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 17/50 1.56G 1.886 1.972 1.086 13 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.1it/s 2.9s0.1s\n", - " all 165 1385 0.459 0.506 0.475 0.241\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 18/50 1.56G 1.862 1.877 1.096 9 640: 100% ━━━━━━━━━━━━ 42/42 3.1it/s 13.4s0.2s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.0it/s 3.0s0.1s\n", - " all 165 1385 0.54 0.546 0.566 0.291\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 19/50 1.56G 1.835 1.865 1.112 21 640: 100% ━━━━━━━━━━━━ 42/42 3.2it/s 13.3s0.6s\n", - "\u001b[K Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 21/21 7.2it/s 2.9s0.1s\n", - " all 165 1385 0.58 0.584 0.602 0.308\n", - "\n", - " Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n", - "\u001b[K 20/50 1.56G 1.864 1.849 1.139 61 640: 92% ━━━━━━━━━━━─ 39/42 3.1it/s 13.0s<1.0s" + "\u001b[K 1/50 1.02G 2.342 4.545 1.479 58 640: 9% ━─────────── 4/42 2.7it/s 1.6s<13.9s\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m model \u001b[38;5;241m=\u001b[39m YOLO(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myolov8n.pt\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Train the model on your 130 annotations\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43myaml_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m50\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mimgsz\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m640\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m4\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatience\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mamp\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mis_1050\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Conditionaly enable this when not on a potato GPU\u001b[39;49;00m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m-> Training complete!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/HadesStarYOLO/venv/lib/python3.10/site-packages/ultralytics/engine/model.py:814\u001b[0m, in \u001b[0;36mModel.train\u001b[0;34m(self, trainer, **kwargs)\u001b[0m\n\u001b[1;32m 811\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mget_model(weights\u001b[38;5;241m=\u001b[39mweights, cfg\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel\u001b[38;5;241m.\u001b[39myaml)\n\u001b[1;32m 812\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mmodel\n\u001b[0;32m--> 814\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 815\u001b[0m \u001b[38;5;66;03m# Update model and cfg after training\u001b[39;00m\n\u001b[1;32m 816\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m RANK \u001b[38;5;129;01min\u001b[39;00m {\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m0\u001b[39m}:\n", + "File \u001b[0;32m~/HadesStarYOLO/venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:241\u001b[0m, in \u001b[0;36mBaseTrainer.train\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 238\u001b[0m ddp_cleanup(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mstr\u001b[39m(file))\n\u001b[1;32m 240\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 241\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_train\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/HadesStarYOLO/venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:496\u001b[0m, in \u001b[0;36mBaseTrainer._do_train\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 494\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m \u001b[38;5;66;03m# restart epoch loop with reduced batch size\u001b[39;00m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ni \u001b[38;5;241m-\u001b[39m last_opt_step \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maccumulate:\n\u001b[0;32m--> 496\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptimizer_step\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 497\u001b[0m last_opt_step \u001b[38;5;241m=\u001b[39m ni\n\u001b[1;32m 499\u001b[0m \u001b[38;5;66;03m# Timed stopping\u001b[39;00m\n", + "File \u001b[0;32m~/HadesStarYOLO/venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:793\u001b[0m, in \u001b[0;36mBaseTrainer.optimizer_step\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 791\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptimizer\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[1;32m 792\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mema:\n\u001b[0;32m--> 793\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mema\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupdate\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/HadesStarYOLO/venv/lib/python3.10/site-packages/ultralytics/utils/torch_utils.py:-1\u001b[0m, in \u001b[0;36mModelEMA.update\u001b[0;34m(self, model)\u001b[0m\n\u001b[1;32m 0\u001b[0m \n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -275,7 +196,16 @@ " batch=4,\n", " patience=5,\n", " amp=not is_1050, # Conditionaly enable this when not on a potato GPU\n", - " verbose=True)\n", + " verbose=True,\n", + " \n", + " # --- MANGLE ROTATION ---\n", + " degrees=20.0, # Random rotation between -180 and +180 degrees (full rotation)\n", + " flipud=0.2, # 50% chance of vertical flip\n", + " fliplr=0.2, # 50% chance of horizontal flip\n", + " \n", + " # --- MANGLE SIZE & DISTORTION ---\n", + " scale=0.1, # Randomly scale images between 10% and 190% of their size\n", + ")\n", "print(\"\\n-> Training complete!\")" ] }, @@ -297,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "138e1424-8ecd-4b76-a487-345bcb3b69f1", "metadata": {}, "outputs": [], @@ -307,10 +237,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "693c7e66-9c2f-427f-b2a0-311c4e5e8a38", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "-> Running full-frame inference test...\n", + "Error: Could not open video Screen_Recording_20260710_142109_Hades' Star.mp4\n" + ] + } + ], "source": [ "# === STEP 3: EXTRACT A RANDOM FRAME AND TEST DETECTION ===\n", "print(\"\\n-> Running full-frame inference test...\")\n", @@ -356,10 +296,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "2fd1b368-0363-4a7e-8035-566adbd8db19", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "-> Processing video and compiling to file...\n", + "Error: Could not open source video Screen_Recording_20260710_142109_Hades' Star.mp4\n" + ] + } + ], "source": [ "import cv2\n", "import random\n",