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.
440 lines
47 KiB
440 lines
47 KiB
|
6 months ago
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"id": "ed856410",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"\n",
|
||
|
|
"📂 폴더 분석: /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/train\n",
|
||
|
|
"📄 파일 개수: 45623\n",
|
||
|
|
"🧮 클래스별 개수:\n",
|
||
|
|
" class 0 (shirt, blouse): 6161\n",
|
||
|
|
" class 1 (top, t-shirt, sweatshirt): 16548\n",
|
||
|
|
" class 2 (sweater): 1494\n",
|
||
|
|
" class 3 (cardigan): 1107\n",
|
||
|
|
" class 4 (jacket): 7833\n",
|
||
|
|
" class 5 (vest): 719\n",
|
||
|
|
" class 6 (pants): 12414\n",
|
||
|
|
" class 7 (shorts): 2756\n",
|
||
|
|
" class 8 (skirt): 5046\n",
|
||
|
|
" class 9 (coat): 3124\n",
|
||
|
|
" class 10 (dress): 18739\n",
|
||
|
|
" class 11 (jumpsuit): 922\n",
|
||
|
|
" class 12 (cape): 152\n",
|
||
|
|
" class 13 (glasses): 4855\n",
|
||
|
|
" class 14 (hat): 2518\n",
|
||
|
|
" class 15 (hair accessory): 3470\n",
|
||
|
|
" class 16 (tie): 1457\n",
|
||
|
|
" class 17 (glove): 1385\n",
|
||
|
|
" class 18 (watch): 3389\n",
|
||
|
|
" class 19 (belt): 6851\n",
|
||
|
|
" class 20 (leg warmer): 112\n",
|
||
|
|
" class 21 (tights, stockings): 4326\n",
|
||
|
|
" class 22 (sock): 2582\n",
|
||
|
|
" class 23 (shoe): 46374\n",
|
||
|
|
" class 24 (bag, wallet): 7217\n",
|
||
|
|
" class 25 (scarf): 1374\n",
|
||
|
|
" class 26 (umbrella): 135\n",
|
||
|
|
" class 27 (hood): 1226\n",
|
||
|
|
" class 28 (collar): 10159\n",
|
||
|
|
" class 29 (lapel): 5972\n",
|
||
|
|
" class 30 (epaulette): 874\n",
|
||
|
|
" class 31 (sleeve): 59448\n",
|
||
|
|
" class 32 (pocket): 27179\n",
|
||
|
|
" class 33 (neckline): 34258\n",
|
||
|
|
" class 34 (buckle): 3300\n",
|
||
|
|
" class 35 (zipper): 7991\n",
|
||
|
|
" class 36 (applique): 3529\n",
|
||
|
|
" class 37 (bead): 5084\n",
|
||
|
|
" class 38 (bow): 528\n",
|
||
|
|
" class 39 (flower): 1367\n",
|
||
|
|
" class 40 (fringe): 588\n",
|
||
|
|
" class 41 (ribbon): 274\n",
|
||
|
|
" class 42 (rivet): 4893\n",
|
||
|
|
" class 43 (ruffle): 2407\n",
|
||
|
|
" class 44 (sequin): 929\n",
|
||
|
|
" class 45 (tassel): 335\n",
|
||
|
|
"\n",
|
||
|
|
"📂 폴더 분석: /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/val\n",
|
||
|
|
"📄 파일 개수: 1158\n",
|
||
|
|
"🧮 클래스별 개수:\n",
|
||
|
|
" class 0 (shirt, blouse): 102\n",
|
||
|
|
" class 1 (top, t-shirt, sweatshirt): 477\n",
|
||
|
|
" class 2 (sweater): 21\n",
|
||
|
|
" class 3 (cardigan): 12\n",
|
||
|
|
" class 4 (jacket): 183\n",
|
||
|
|
" class 5 (vest): 22\n",
|
||
|
|
" class 6 (pants): 314\n",
|
||
|
|
" class 7 (shorts): 106\n",
|
||
|
|
" class 8 (skirt): 162\n",
|
||
|
|
" class 9 (coat): 104\n",
|
||
|
|
" class 10 (dress): 508\n",
|
||
|
|
" class 11 (jumpsuit): 21\n",
|
||
|
|
" class 12 (cape): 5\n",
|
||
|
|
" class 13 (glasses): 130\n",
|
||
|
|
" class 14 (hat): 74\n",
|
||
|
|
" class 15 (hair accessory): 109\n",
|
||
|
|
" class 16 (tie): 3\n",
|
||
|
|
" class 17 (glove): 31\n",
|
||
|
|
" class 18 (watch): 84\n",
|
||
|
|
" class 19 (belt): 164\n",
|
||
|
|
" class 20 (leg warmer): 14\n",
|
||
|
|
" class 21 (tights, stockings): 122\n",
|
||
|
|
" class 22 (sock): 87\n",
|
||
|
|
" class 23 (shoe): 1566\n",
|
||
|
|
" class 24 (bag, wallet): 214\n",
|
||
|
|
" class 25 (scarf): 48\n",
|
||
|
|
" class 26 (umbrella): 5\n",
|
||
|
|
" class 27 (hood): 32\n",
|
||
|
|
" class 28 (collar): 218\n",
|
||
|
|
" class 29 (lapel): 135\n",
|
||
|
|
" class 30 (epaulette): 14\n",
|
||
|
|
" class 31 (sleeve): 1442\n",
|
||
|
|
" class 32 (pocket): 541\n",
|
||
|
|
" class 33 (neckline): 929\n",
|
||
|
|
" class 34 (buckle): 67\n",
|
||
|
|
" class 35 (zipper): 194\n",
|
||
|
|
" class 36 (applique): 61\n",
|
||
|
|
" class 37 (bead): 107\n",
|
||
|
|
" class 38 (bow): 6\n",
|
||
|
|
" class 39 (flower): 37\n",
|
||
|
|
" class 40 (fringe): 30\n",
|
||
|
|
" class 41 (ribbon): 9\n",
|
||
|
|
" class 42 (rivet): 143\n",
|
||
|
|
" class 43 (ruffle): 76\n",
|
||
|
|
" class 44 (sequin): 13\n",
|
||
|
|
" class 45 (tassel): 39\n",
|
||
|
|
"\n",
|
||
|
|
"=====================================\n",
|
||
|
|
"📊 전체(train + val) 클래스별 개수\n",
|
||
|
|
"=====================================\n",
|
||
|
|
" class 0 (shirt, blouse): 6263\n",
|
||
|
|
" class 1 (top, t-shirt, sweatshirt): 17025\n",
|
||
|
|
" class 2 (sweater): 1515\n",
|
||
|
|
" class 3 (cardigan): 1119\n",
|
||
|
|
" class 4 (jacket): 8016\n",
|
||
|
|
" class 5 (vest): 741\n",
|
||
|
|
" class 6 (pants): 12728\n",
|
||
|
|
" class 7 (shorts): 2862\n",
|
||
|
|
" class 8 (skirt): 5208\n",
|
||
|
|
" class 9 (coat): 3228\n",
|
||
|
|
" class 10 (dress): 19247\n",
|
||
|
|
" class 11 (jumpsuit): 943\n",
|
||
|
|
" class 12 (cape): 157\n",
|
||
|
|
" class 13 (glasses): 4985\n",
|
||
|
|
" class 14 (hat): 2592\n",
|
||
|
|
" class 15 (hair accessory): 3579\n",
|
||
|
|
" class 16 (tie): 1460\n",
|
||
|
|
" class 17 (glove): 1416\n",
|
||
|
|
" class 18 (watch): 3473\n",
|
||
|
|
" class 19 (belt): 7015\n",
|
||
|
|
" class 20 (leg warmer): 126\n",
|
||
|
|
" class 21 (tights, stockings): 4448\n",
|
||
|
|
" class 22 (sock): 2669\n",
|
||
|
|
" class 23 (shoe): 47940\n",
|
||
|
|
" class 24 (bag, wallet): 7431\n",
|
||
|
|
" class 25 (scarf): 1422\n",
|
||
|
|
" class 26 (umbrella): 140\n",
|
||
|
|
" class 27 (hood): 1258\n",
|
||
|
|
" class 28 (collar): 10377\n",
|
||
|
|
" class 29 (lapel): 6107\n",
|
||
|
|
" class 30 (epaulette): 888\n",
|
||
|
|
" class 31 (sleeve): 60890\n",
|
||
|
|
" class 32 (pocket): 27720\n",
|
||
|
|
" class 33 (neckline): 35187\n",
|
||
|
|
" class 34 (buckle): 3367\n",
|
||
|
|
" class 35 (zipper): 8185\n",
|
||
|
|
" class 36 (applique): 3590\n",
|
||
|
|
" class 37 (bead): 5191\n",
|
||
|
|
" class 38 (bow): 534\n",
|
||
|
|
" class 39 (flower): 1404\n",
|
||
|
|
" class 40 (fringe): 618\n",
|
||
|
|
" class 41 (ribbon): 283\n",
|
||
|
|
" class 42 (rivet): 5036\n",
|
||
|
|
" class 43 (ruffle): 2483\n",
|
||
|
|
" class 44 (sequin): 942\n",
|
||
|
|
" class 45 (tassel): 374\n"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"import os\n",
|
||
|
|
"from collections import defaultdict\n",
|
||
|
|
"import yaml\n",
|
||
|
|
"\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"# 1) YAML 파일에서 클래스 이름 불러오기\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"yaml_path = \"/home/cuuva/experiment/datasets/fashionpedia_yolo/fashionpedia_bak.yaml\"\n",
|
||
|
|
"\n",
|
||
|
|
"with open(yaml_path, \"r\") as f:\n",
|
||
|
|
" data = yaml.safe_load(f)\n",
|
||
|
|
"\n",
|
||
|
|
"names = data[\"names\"]\n",
|
||
|
|
"# keys가 문자열일 수도 있음 → 정수 key로 맞춰줌\n",
|
||
|
|
"class_names = {int(k): v for k, v in names.items()}\n",
|
||
|
|
"\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"# 2) Label 파일 읽어서 클래스별 개수 계산\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"label_root = \"/home/cuuva/experiment/datasets/fashionpedia_yolo/labels\"\n",
|
||
|
|
"folders = [\"train\", \"val\"]\n",
|
||
|
|
"\n",
|
||
|
|
"total_counts = defaultdict(int)\n",
|
||
|
|
"\n",
|
||
|
|
"for folder in folders:\n",
|
||
|
|
" folder_path = os.path.join(label_root, folder)\n",
|
||
|
|
" class_counts = defaultdict(int)\n",
|
||
|
|
"\n",
|
||
|
|
" txt_files = [f for f in os.listdir(folder_path) if f.endswith(\".txt\")]\n",
|
||
|
|
"\n",
|
||
|
|
" print(f\"\\n📂 폴더 분석: {folder_path}\")\n",
|
||
|
|
" print(f\"📄 파일 개수: {len(txt_files)}\")\n",
|
||
|
|
"\n",
|
||
|
|
" for txt in txt_files:\n",
|
||
|
|
" with open(os.path.join(folder_path, txt), \"r\") as f:\n",
|
||
|
|
" lines = f.readlines()\n",
|
||
|
|
"\n",
|
||
|
|
" for line in lines:\n",
|
||
|
|
" class_id = int(line.split()[0])\n",
|
||
|
|
" class_counts[class_id] += 1\n",
|
||
|
|
" total_counts[class_id] += 1\n",
|
||
|
|
"\n",
|
||
|
|
" # --- 폴더별 결과 출력 ---\n",
|
||
|
|
" print(\"🧮 클래스별 개수:\")\n",
|
||
|
|
" for cid in sorted(class_counts.keys()):\n",
|
||
|
|
" print(f\" class {cid:2d} ({class_names.get(cid, 'Unknown')}): {class_counts[cid]}\")\n",
|
||
|
|
"\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"# 3) 전체 합산 결과 출력\n",
|
||
|
|
"# ---------------------------------------\n",
|
||
|
|
"print(\"\\n=====================================\")\n",
|
||
|
|
"print(\"📊 전체(train + val) 클래스별 개수\")\n",
|
||
|
|
"print(\"=====================================\")\n",
|
||
|
|
"for cid in sorted(total_counts.keys()):\n",
|
||
|
|
" print(f\" class {cid:2d} ({class_names.get(cid, 'Unknown')}): {total_counts[cid]}\")\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 2,
|
||
|
|
"id": "d94803f3",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"New https://pypi.org/project/ultralytics/8.3.237 available 😃 Update with 'pip install -U ultralytics'\n",
|
||
|
|
"Ultralytics 8.3.225 🚀 Python-3.10.18 torch-2.9.1+cu128 CUDA:0 (NVIDIA GeForce RTX 5090, 32109MiB)\n",
|
||
|
|
"\u001b[34m\u001b[1mengine/trainer: \u001b[0magnostic_nms=False, amp=True, augment=False, auto_augment=randaugment, batch=-1, bgr=0.0, box=7.5, cache=False, cfg=None, classes=None, close_mosaic=10, cls=0.5, compile=False, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=False, cutmix=0.0, data=/home/cuuva/experiment/datasets/fashionpedia_yolo/fashionpedia_bak.yaml, degrees=0.0, deterministic=True, device=0, dfl=1.5, dnn=False, dropout=0.0, dynamic=False, embed=None, epochs=500, erasing=0.4, exist_ok=False, fliplr=0.5, flipud=0.0, format=torchscript, fraction=1.0, freeze=None, half=False, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, imgsz=640, int8=False, iou=0.7, keras=False, kobj=1.0, line_width=None, lr0=0.001, lrf=0.01, mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=yolov8m.pt, momentum=0.937, mosaic=1.0, multi_scale=False, name=yolov8m_fashion_all, nbs=64, nms=False, opset=None, optimize=False, optimizer=AdamW, overlap_mask=True, patience=50, perspective=0.0, plots=True, pose=12.0, pretrained=True, profile=False, project=fashionpedia_exp, rect=False, resume=False, retina_masks=False, save=True, save_conf=False, save_crop=False, save_dir=/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all, 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=botsort.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=46\n",
|
||
|
|
"\n",
|
||
|
|
" from n params module arguments \n",
|
||
|
|
" 0 -1 1 1392 ultralytics.nn.modules.conv.Conv [3, 48, 3, 2] \n",
|
||
|
|
" 1 -1 1 41664 ultralytics.nn.modules.conv.Conv [48, 96, 3, 2] \n",
|
||
|
|
" 2 -1 2 111360 ultralytics.nn.modules.block.C2f [96, 96, 2, True] \n",
|
||
|
|
" 3 -1 1 166272 ultralytics.nn.modules.conv.Conv [96, 192, 3, 2] \n",
|
||
|
|
" 4 -1 4 813312 ultralytics.nn.modules.block.C2f [192, 192, 4, True] \n",
|
||
|
|
" 5 -1 1 664320 ultralytics.nn.modules.conv.Conv [192, 384, 3, 2] \n",
|
||
|
|
" 6 -1 4 3248640 ultralytics.nn.modules.block.C2f [384, 384, 4, True] \n",
|
||
|
|
" 7 -1 1 1991808 ultralytics.nn.modules.conv.Conv [384, 576, 3, 2] \n",
|
||
|
|
" 8 -1 2 3985920 ultralytics.nn.modules.block.C2f [576, 576, 2, True] \n",
|
||
|
|
" 9 -1 1 831168 ultralytics.nn.modules.block.SPPF [576, 576, 5] \n",
|
||
|
|
" 10 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n",
|
||
|
|
" 11 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1] \n",
|
||
|
|
" 12 -1 2 1993728 ultralytics.nn.modules.block.C2f [960, 384, 2] \n",
|
||
|
|
" 13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n",
|
||
|
|
" 14 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1] \n",
|
||
|
|
" 15 -1 2 517632 ultralytics.nn.modules.block.C2f [576, 192, 2] \n",
|
||
|
|
" 16 -1 1 332160 ultralytics.nn.modules.conv.Conv [192, 192, 3, 2] \n",
|
||
|
|
" 17 [-1, 12] 1 0 ultralytics.nn.modules.conv.Concat [1] \n",
|
||
|
|
" 18 -1 2 1846272 ultralytics.nn.modules.block.C2f [576, 384, 2] \n",
|
||
|
|
" 19 -1 1 1327872 ultralytics.nn.modules.conv.Conv [384, 384, 3, 2] \n",
|
||
|
|
" 20 [-1, 9] 1 0 ultralytics.nn.modules.conv.Concat [1] \n",
|
||
|
|
" 21 -1 2 4207104 ultralytics.nn.modules.block.C2f [960, 576, 2] \n",
|
||
|
|
" 22 [15, 18, 21] 1 3802330 ultralytics.nn.modules.head.Detect [46, [192, 384, 576]] \n",
|
||
|
|
"Model summary: 169 layers, 25,882,954 parameters, 25,882,938 gradients, 79.2 GFLOPs\n",
|
||
|
|
"\n",
|
||
|
|
"Transferred 469/475 items from pretrained weights\n",
|
||
|
|
"Freezing layer 'model.22.dfl.conv.weight'\n",
|
||
|
|
"\u001b[34m\u001b[1mAMP: \u001b[0mrunning Automatic Mixed Precision (AMP) checks...\n",
|
||
|
|
"\u001b[34m\u001b[1mAMP: \u001b[0mchecks passed ✅\n",
|
||
|
|
"\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 3322.6±3977.1 MB/s, size: 88.2 KB)\n",
|
||
|
|
"\u001b[K\u001b[34m\u001b[1mtrain: \u001b[0mScanning /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/train... 45623 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 45623/45623 7.9Kit/s 5.8s0.0s\n",
|
||
|
|
"\u001b[34m\u001b[1mtrain: \u001b[0m/home/cuuva/experiment/datasets/fashionpedia_yolo/images/train/19725.jpg: 1 duplicate labels removed\n",
|
||
|
|
"\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/train.cache\n",
|
||
|
|
"\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01, method='weighted_average', num_output_channels=3), CLAHE(p=0.01, clip_limit=(1.0, 4.0), tile_grid_size=(8, 8))\n",
|
||
|
|
"\u001b[34m\u001b[1mAutoBatch: \u001b[0mComputing optimal batch size for imgsz=640 at 60.0% CUDA memory utilization.\n",
|
||
|
|
"\u001b[34m\u001b[1mAutoBatch: \u001b[0mCUDA:0 (NVIDIA GeForce RTX 5090) 31.36G total, 0.25G reserved, 0.24G allocated, 30.87G free\n",
|
||
|
|
" Params GFLOPs GPU_mem (GB) forward (ms) backward (ms) input output\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "stderr",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"/home/cuuva/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
|
||
|
|
" from .autonotebook import tqdm as notebook_tqdm\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
" 25882954 79.21 2.898 28.43 155.4 (1, 3, 640, 640) list\n",
|
||
|
|
" 25882954 158.4 4.754 9.878 36.17 (2, 3, 640, 640) list\n",
|
||
|
|
" 25882954 316.8 5.887 13.6 50 (4, 3, 640, 640) list\n",
|
||
|
|
" 25882954 633.7 8.972 26.37 74.09 (8, 3, 640, 640) list\n",
|
||
|
|
" 25882954 1267 12.149 27.28 121.9 (16, 3, 640, 640) list\n",
|
||
|
|
" 25882954 2535 20.816 55.09 243.1 (32, 3, 640, 640) list\n",
|
||
|
|
" 25882954 5069 20.615 117.7 484.3 (64, 3, 640, 640) list\n",
|
||
|
|
"\u001b[34m\u001b[1mAutoBatch: \u001b[0mUsing batch-size 28 for CUDA:0 19.32G/31.36G (62%) ✅\n",
|
||
|
|
"\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 5333.7±2302.8 MB/s, size: 66.6 KB)\n",
|
||
|
|
"\u001b[K\u001b[34m\u001b[1mtrain: \u001b[0mScanning /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/train.cache... 45623 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 45623/45623 90.6Mit/s 0.0s\n",
|
||
|
|
"\u001b[34m\u001b[1mtrain: \u001b[0m/home/cuuva/experiment/datasets/fashionpedia_yolo/images/train/19725.jpg: 1 duplicate labels removed\n",
|
||
|
|
"\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01, method='weighted_average', num_output_channels=3), CLAHE(p=0.01, clip_limit=(1.0, 4.0), tile_grid_size=(8, 8))\n",
|
||
|
|
"\u001b[34m\u001b[1mval: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 3235.1±1428.7 MB/s, size: 71.1 KB)\n",
|
||
|
|
"\u001b[K\u001b[34m\u001b[1mval: \u001b[0mScanning /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/val... 1158 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 1158/1158 6.4Kit/s 0.2s4s\n",
|
||
|
|
"\u001b[34m\u001b[1mval: \u001b[0mNew cache created: /home/cuuva/experiment/datasets/fashionpedia_yolo/labels/val.cache\n",
|
||
|
|
"Plotting labels to /home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/labels.jpg... \n",
|
||
|
|
"\u001b[34m\u001b[1moptimizer:\u001b[0m AdamW(lr=0.001, momentum=0.937) with parameter groups 77 weight(decay=0.0), 84 weight(decay=0.0004375), 83 bias(decay=0.0)\n",
|
||
|
|
"Image sizes 640 train, 640 val\n",
|
||
|
|
"Using 8 dataloader workers\n",
|
||
|
|
"Logging results to \u001b[1m/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all\u001b[0m\n",
|
||
|
|
"Starting training for 500 epochs...\n",
|
||
|
|
"\n",
|
||
|
|
" Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n",
|
||
|
|
"\u001b[K 1/500 12.3G 1.118 1.526 1.247 379 640: 76% ━━━━━━━━━─── 1232/1630 8.0it/s 5:18<49.7s\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[2], line 8\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;124myolov8m.pt\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# 2. 학습 실행\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# 위에서 생성된 yaml 파일 경로를 넣어줍니다.\u001b[39;00m\n\u001b[0;32m----> 8\u001b[0m train_results \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/home/cuuva/experiment/datasets/fashionpedia_yolo/fashionpedia_bak.yaml\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m500\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 11\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 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcuda\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mAdamW\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[43m \u001b[49m\u001b[43mlr0\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.001\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 16\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatience\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m50\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 17\u001b[0m \u001b[43m \u001b[49m\u001b[43mproject\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mfashionpedia_exp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 18\u001b[0m \u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43myolov8m_fashion_all\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[43m)\u001b[49m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/engine/model.py:777\u001b[0m, in \u001b[0;36mModel.train\u001b[0;34m(self, trainer, **kwargs)\u001b[0m\n\u001b[1;32m 774\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[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mckpt \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, 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 775\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--> 777\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 778\u001b[0m \u001b[38;5;66;03m# Update model and cfg after training\u001b[39;00m\n\u001b[1;32m 779\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~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/engine/trainer.py:238\u001b[0m, in \u001b[0;36mBaseTrainer.train\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 235\u001b[0m ddp_cleanup(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mstr\u001b[39m(file))\n\u001b[1;32m 237\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 238\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~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/engine/trainer.py:422\u001b[0m, in \u001b[0;36mBaseTrainer._do_train\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 420\u001b[0m loss, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mloss_items \u001b[38;5;241m=\u001b[39m unwrap_model(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel)\u001b[38;5;241m.\u001b[39mloss(batch, preds)\n\u001b[1;32m 421\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 422\u001b[0m loss, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mloss_items \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 423\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mloss \u001b[38;5;241m=\u001b[39m loss\u001b[38;5;241m.\u001b[39msum()\n\u001b[1;32m 424\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m RANK \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m:\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/torch/nn/modules/module.py:1775\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[1;32m 1774\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1775\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/torch/nn/modules/module.py:1786\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1783\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1784\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1785\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1786\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1788\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1789\u001b[0m called_always_called_hooks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m()\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/nn/tasks.py:136\u001b[0m, in \u001b[0;36mBaseModel.forward\u001b[0;34m(self, x, *args, **kwargs)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Perform forward pass of the model for either training or inference.\u001b[39;00m\n\u001b[1;32m 124\u001b[0m \n\u001b[1;32m 125\u001b[0m \u001b[38;5;124;03mIf x is a dict, calculates and returns the loss for training. Otherwise, returns predictions for inference.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;124;03m (torch.Tensor): Loss if x is a dict (training), or network predictions (inference).\u001b[39;00m\n\u001b[1;32m 134\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mdict\u001b[39m): \u001b[38;5;66;03m# for cases of training and validating while training.\u001b[39;00m\n\u001b[0;32m--> 136\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloss\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 137\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpredict(x, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/nn/tasks.py:328\u001b[0m, in \u001b[0;36mBaseModel.loss\u001b[0;34m(self, batch, preds)\u001b[0m\n\u001b[1;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m preds \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 327\u001b[0m preds \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mforward(batch[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimg\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[0;32m--> 328\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcriterion\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpreds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/utils/loss.py:270\u001b[0m, in \u001b[0;36mv8DetectionLoss.__call__\u001b[0;34m(self, preds, batch)\u001b[0m\n\u001b[1;32m 266\u001b[0m pred_bboxes \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbbox_decode(anchor_points, pred_distri) \u001b[38;5;66;03m# xyxy, (b, h*w, 4)\u001b[39;00m\n\u001b[1;32m 267\u001b[0m \u001b[38;5;66;03m# dfl_conf = pred_distri.view(batch_size, -1, 4, self.reg_max).detach().softmax(-1)\u001b[39;00m\n\u001b[1;32m 268\u001b[0m \u001b[38;5;66;03m# dfl_conf = (dfl_conf.amax(-1).mean(-1) + dfl_conf.amax(-1).amin(-1)) / 2\u001b[39;00m\n\u001b[0;32m--> 270\u001b[0m _, target_bboxes, target_scores, fg_mask, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43massigner\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 271\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# pred_scores.detach().sigmoid() * 0.8 + dfl_conf.unsqueeze(-1) * 0.2,\u001b[39;49;00m\n\u001b[1;32m 272\u001b[0m \u001b[43m \u001b[49m\u001b[43mpred_scores\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdetach\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msigmoid\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 273\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mpred_bboxes\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdetach\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mstride_tensor\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgt_bboxes\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 274\u001b[0m \u001b[43m \u001b[49m\u001b[43manchor_points\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mstride_tensor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 275\u001b[0m \u001b[43m \u001b[49m\u001b[43mgt_labels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 276\u001b[0m \u001b[43m \u001b[49m\u001b[43mgt_bboxes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 277\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_gt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 278\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 280\u001b[0m target_scores_sum \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mmax\u001b[39m(target_scores\u001b[38;5;241m.\u001b[39msum(), \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;66;03m# Cls loss\u001b[39;00m\n\u001b[1;32m 283\u001b[0m \u001b[38;5;66;03m# loss[1] = self.varifocal_loss(pred_scores, target_scores, target_labels) / target_scores_sum # VFL way\u001b[39;00m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/torch/nn/modules/module.py:1775\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[1;32m 1774\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1775\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/torch/nn/modules/module.py:1786\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1783\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1784\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1785\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1786\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1788\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1789\u001b[0m called_always_called_hooks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m()\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/torch/utils/_contextlib.py:120\u001b[0m, in \u001b[0;36mcontext_decorator.<locals>.decorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mdecorate_context\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 119\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ctx_factory():\n\u001b[0;32m--> 120\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/utils/tal.py:79\u001b[0m, in \u001b[0;36mTaskAlignedAssigner.forward\u001b[0;34m(self, pd_scores, pd_bboxes, anc_points, gt_labels, gt_bboxes, mask_gt)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\n\u001b[1;32m 71\u001b[0m torch\u001b[38;5;241m.\u001b[39mfull_like(pd_scores[\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m, \u001b[38;5;241m0\u001b[39m], \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnum_classes),\n\u001b[1;32m 72\u001b[0m torch\u001b[38;5;241m.\u001b[39mzeros_like(pd_bboxes),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 75\u001b[0m torch\u001b[38;5;241m.\u001b[39mzeros_like(pd_scores[\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m, \u001b[38;5;241m0\u001b[39m]),\n\u001b[1;32m 76\u001b[0m )\n\u001b[1;32m 78\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 79\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpd_scores\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpd_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43manc_points\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_labels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmask_gt\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m torch\u001b[38;5;241m.\u001b[39mcuda\u001b[38;5;241m.\u001b[39mOutOfMemoryError:\n\u001b[1;32m 81\u001b[0m \u001b[38;5;66;03m# Move tensors to CPU, compute, then move back to original device\u001b[39;00m\n\u001b[1;32m 82\u001b[0m LOGGER\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCUDA OutOfMemoryError in TaskAlignedAssigner, using CPU\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/utils/tal.py:105\u001b[0m, in \u001b[0;36mTaskAlignedAssigner._forward\u001b[0;34m(self, pd_scores, pd_bboxes, anc_points, gt_labels, gt_bboxes, mask_gt)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_forward\u001b[39m(\u001b[38;5;28mself\u001b[39m, pd_scores, pd_bboxes, anc_points, gt_labels, gt_bboxes, mask_gt):\n\u001b[1;32m 88\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Compute the task-aligned assignment.\u001b[39;00m\n\u001b[1;32m 89\u001b[0m \n\u001b[1;32m 90\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;124;03m target_gt_idx (torch.Tensor): Target ground truth indices with shape (bs, num_total_anchors).\u001b[39;00m\n\u001b[1;32m 104\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 105\u001b[0m mask_pos, align_metric, overlaps \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_pos_mask\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 106\u001b[0m \u001b[43m \u001b[49m\u001b[43mpd_scores\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpd_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_labels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43manc_points\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmask_gt\u001b[49m\n\u001b[1;32m 107\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 109\u001b[0m target_gt_idx, fg_mask, mask_pos \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mselect_highest_overlaps(mask_pos, overlaps, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_max_boxes)\n\u001b[1;32m 111\u001b[0m \u001b[38;5;66;03m# Assigned target\u001b[39;00m\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/utils/tal.py:141\u001b[0m, in \u001b[0;36mTaskAlignedAssigner.get_pos_mask\u001b[0;34m(self, pd_scores, pd_bboxes, gt_labels, gt_bboxes, anc_points, mask_gt)\u001b[0m\n\u001b[1;32m 139\u001b[0m mask_in_gts \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mselect_candidates_in_gts(anc_points, gt_bboxes)\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# Get anchor_align metric, (b, max_num_obj, h*w)\u001b[39;00m\n\u001b[0;32m--> 141\u001b[0m align_metric, overlaps \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_box_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpd_scores\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpd_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_labels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgt_bboxes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmask_in_gts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mmask_gt\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;66;03m# Get topk_metric mask, (b, max_num_obj, h*w)\u001b[39;00m\n\u001b[1;32m 143\u001b[0m mask_topk \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mselect_topk_candidates(align_metric, topk_mask\u001b[38;5;241m=\u001b[39mmask_gt\u001b[38;5;241m.\u001b[39mexpand(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtopk)\u001b[38;5;241m.\u001b[39mbool())\n",
|
||
|
|
"File \u001b[0;32m~/anaconda3/envs/1stagedetect/lib/python3.10/site-packages/ultralytics/utils/tal.py:175\u001b[0m, in \u001b[0;36mTaskAlignedAssigner.get_box_metrics\u001b[0;34m(self, pd_scores, pd_bboxes, gt_labels, gt_bboxes, mask_gt)\u001b[0m\n\u001b[1;32m 172\u001b[0m bbox_scores[mask_gt] \u001b[38;5;241m=\u001b[39m pd_scores[ind[\u001b[38;5;241m0\u001b[39m], :, ind[\u001b[38;5;241m1\u001b[39m]][mask_gt] \u001b[38;5;66;03m# b, max_num_obj, h*w\u001b[39;00m\n\u001b[1;32m 174\u001b[0m \u001b[38;5;66;03m# (b, max_num_obj, 1, 4), (b, 1, h*w, 4)\u001b[39;00m\n\u001b[0;32m--> 175\u001b[0m pd_boxes \u001b[38;5;241m=\u001b[39m \u001b[43mpd_bboxes\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munsqueeze\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mexpand(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_max_boxes, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)[mask_gt]\n\u001b[1;32m 176\u001b[0m gt_boxes \u001b[38;5;241m=\u001b[39m gt_bboxes\u001b[38;5;241m.\u001b[39munsqueeze(\u001b[38;5;241m2\u001b[39m)\u001b[38;5;241m.\u001b[39mexpand(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, na, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)[mask_gt]\n\u001b[1;32m 177\u001b[0m overlaps[mask_gt] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39miou_calculation(gt_boxes, pd_boxes)\n",
|
||
|
|
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"from ultralytics import YOLO\n",
|
||
|
|
"\n",
|
||
|
|
"# 1. 모델 로드 (YOLOv8m 사용)\n",
|
||
|
|
"model = YOLO('yolov8m.pt')\n",
|
||
|
|
"\n",
|
||
|
|
"# 2. 학습 실행\n",
|
||
|
|
"# 위에서 생성된 yaml 파일 경로를 넣어줍니다.\n",
|
||
|
|
"train_results = model.train(\n",
|
||
|
|
" data=\"/home/cuuva/experiment/datasets/fashionpedia_yolo/fashionpedia_bak.yaml\", \n",
|
||
|
|
" epochs=500, \n",
|
||
|
|
" imgsz=640,\n",
|
||
|
|
" batch=-1, \n",
|
||
|
|
" device=\"cuda\",\n",
|
||
|
|
" optimizer='AdamW',\n",
|
||
|
|
" lr0=0.001,\n",
|
||
|
|
" patience=50,\n",
|
||
|
|
" project='fashionpedia_exp',\n",
|
||
|
|
" name='yolov8m_fashion_all',\n",
|
||
|
|
")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"id": "9de5e25b",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stdout",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"Ultralytics 8.3.225 🚀 Python-3.10.18 torch-2.9.1+cu128 CUDA:0 (NVIDIA GeForce RTX 5090, 32109MiB)\n",
|
||
|
|
"Model summary (fused): 92 layers, 25,866,394 parameters, 0 gradients, 78.8 GFLOPs\n",
|
||
|
|
"\n",
|
||
|
|
"\u001b[34m\u001b[1mPyTorch:\u001b[0m starting from '/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 50, 8400) (49.7 MB)\n",
|
||
|
|
"\n",
|
||
|
|
"\u001b[34m\u001b[1mONNX:\u001b[0m starting export with onnx 1.19.1 opset 20...\n",
|
||
|
|
"\u001b[34m\u001b[1mONNX:\u001b[0m slimming with onnxslim 0.1.71...\n",
|
||
|
|
"\u001b[34m\u001b[1mONNX:\u001b[0m export success ✅ 0.9s, saved as '/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.onnx' (98.9 MB)\n",
|
||
|
|
"\n",
|
||
|
|
"Export complete (1.4s)\n",
|
||
|
|
"Results saved to \u001b[1m/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights\u001b[0m\n",
|
||
|
|
"Predict: yolo predict task=detect model=/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.onnx imgsz=640 \n",
|
||
|
|
"Validate: yolo val task=detect model=/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.onnx imgsz=640 data=/home/cuuva/experiment/datasets/fashionpedia_yolo/fashionpedia_bak.yaml \n",
|
||
|
|
"Visualize: https://netron.app\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"'/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.onnx'"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 1,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"from ultralytics import YOLO\n",
|
||
|
|
"model = YOLO(\"/home/cuuva/experiment/fashion_yolo/fashionpedia_exp/yolov8m_fashion_all/weights/best_fashion_detect_all.pt\")\n",
|
||
|
|
"model.export(format=\"onnx\", imgsz=640, device=0)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"id": "a77ad845",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "1stagedetect",
|
||
|
|
"language": "python",
|
||
|
|
"name": "python3"
|
||
|
|
},
|
||
|
|
"language_info": {
|
||
|
|
"codemirror_mode": {
|
||
|
|
"name": "ipython",
|
||
|
|
"version": 3
|
||
|
|
},
|
||
|
|
"file_extension": ".py",
|
||
|
|
"mimetype": "text/x-python",
|
||
|
|
"name": "python",
|
||
|
|
"nbconvert_exporter": "python",
|
||
|
|
"pygments_lexer": "ipython3",
|
||
|
|
"version": "3.10.18"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 5
|
||
|
|
}
|