[CV] Yolo를 통한 Image Segment

최원석·2026년 2월 28일
post-thumbnail

모델 돌려보기

jonathandinu/페이스파싱 · 포옹하는 얼굴 (huggingface.co)

import torch
from torch import nn
from transformers import SegformerImageProcessor, SegformerForSemanticSegmentation

from PIL import Image
import matplotlib.pyplot as plt
import requests

# convenience expression for automatically determining device
device = (
    "cuda"
    # Device for NVIDIA or AMD GPUs
    if torch.cuda.is_available()
    else "mps"
    # Device for Apple Silicon (Metal Performance Shaders)
    if torch.backends.mps.is_available()
    else "cpu"
)

# load models
image_processor = SegformerImageProcessor.from_pretrained("jonathandinu/face-parsing")
model = SegformerForSemanticSegmentation.from_pretrained("jonathandinu/face-parsing")
model.to(device)

# expects a PIL.Image or torch.Tensor
url = "https://images.unsplash.com/photo-1539571696357-5a69c17a67c6"
image = Image.open(requests.get(url, stream=True).raw)

# run inference on image
inputs = image_processor(images=image, return_tensors="pt").to(device)
outputs = model(**inputs)
logits = outputs.logits  # shape (batch_size, num_labels, ~height/4, ~width/4)

# resize output to match input image dimensions
upsampled_logits = nn.functional.interpolate(logits,
                size=image.size[::-1], # H x W
                mode='bilinear',
                align_corners=False)

# get label masks
labels = upsampled_logits.argmax(dim=1)[0]

# move to CPU to visualize in matplotlib
labels_viz = labels.cpu().numpy()
plt.imshow(labels_viz)
plt.show()

Image Segmentation - Hugging Face Community Computer Vision Course

[CV] Image Segmentation (이미지 분할) (tistory.com)


Yolo26

yolo26n-seg를 사용해 보았다.

from torch.serialization import save
import cv2

model = YOLO("yolo26n-seg.pt")

results = model(img_path, save = True)

for result in results:
    p = result.plot()

    img_rgb = cv2.cvtColor(p, cv2.COLOR_BGR2RGB)
    plt.imshow(img_rgb)
    plt.show()

    masks = result.masks  # SegMask objects
    boxes = result.boxes  # Boxes objects
    print(f"Detected {len(boxes)} objects.")

print(type(results))
print(results)

Instance Segmentation

Ultraltice에서 제공하는 개발자 문서를 토대로 새로운 데이터 셋을 학습시켰다.

yolo26의 모델별 성능

Modelsize(pixels)mAPbox50-95(e2e)mAPmask50-95(e2e)SpeedCPU ONNX(ms)SpeedT4 TensorRT10(ms)params(M)FLOPs(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5

Train

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.yaml")  # build a new model from YAML
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

모델을 가져오는 방법은 3가지로 나누어진다

  • YOLO("yolo26n-seg.yaml")
    • yolo26모델의 아키텍쳐만 가지고 온다.
    • 사전에 학습이 없고 새로운 데이터 셋을 학습시킬 때 가지고 사용한다.
  • YOLO("yolo26n-seg.pt")
    • 사전에 학습된 모델의 가중치를 가지고 온다.
    • 파인튜닝 할때 사용된다.
  • YOLO("yolo26n-seg.yaml").load("yolo26n.pt")
    • -seg 모델의 아키텍쳐를 가지고 오고 가중치는 객체 탐지 가중치를 가지고 온다.
    • 특수한 구조 변경이 필요할 때 사용한다.
  • model.train()
    • 모델을 학습시킨다.

      매개변수기본값설명
      modelNone학습에 사용할 모델 파일 경로 (.pt 또는 .yaml)
      dataNone데이터셋 설정 파일 경로 (data.yaml)
      epochs100전체 데이터를 반복 학습할 횟수
      imgsz640입력 이미지 크기 (정사각형 기준)
      batch16한 번에 학습할 이미지 개수 (-1로 설정 시 자동 최적화)
      saveTrue학습 결과 및 체크포인트를 저장할지 여부
      deviceNone실행 장치 (예: device=0, device='cpu')
      projectNone결과가 저장될 상위 폴더 이름
      nameNone결과가 저장될 하위 폴더 이름
      resumeFalse마지막 중단된 지점부터 학습을 재개할지 여부

data.yml 구조

# Root directory containing the dataset
path: ../datasets/my_dataset
# Paths to training, validation, and optional test sets
train: images/train
val: images/val
test: images/test # Optional
# Number of classes in the dataset
nc: 3
# Class names (zero-indexed)
names:
 0: cat
 1: dog
 2: bird

Predict

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.masks.xy  # mask in polygon format
    xyn = result.masks.xyn  # normalized
    masks = result.masks.data  # mask in matrix format (num_objects x H x W)
  • model 학습된 모델로 판단해보기 위해서는 먼저 모델을 가져온다. YOLO("yolo26n-seg.pt") yolo에서 ****제공된 사전 학습된 모델
    • YOLO("path/to/best.pt") 새로운 데이터셋을 이용한 커스텀 모델
  • model("https://ultralytics.com/images/bus.jpg") model()에 이미지 경로를 넣어주면 잘 나오는 것을 볼 수 있다.

결과 이미지를 보기 위한 코드

t = results[0].plot() # 좌표등 숫자 데이터를 원본이미지에 합쳐줌
t = cv2.cvtColor(t, cv2.COLOR_BGR2RGB)# 색상 체계를 BGR에서 RGB로 변환합니다.
plt.imshow(t)
plt.show()

Val

모델이 얼마나 정확하게 물체를 찾고(Box), 그 형태를 따냈는지(Segmentation)를 수치

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
  • map50-95 IoU 임계값(0.5에서 0.95까지)에 대한 평균 정밀도(mAP) ← 전반적인 탐지 능력을 나타냄
  • map50 정답 값과 얼마나 겹치는지 판단하는 지표 → 50% 겹쳐도 정답 인정
  • map75 정답 값과 얼마나 겹치는지 판단하는 지표 → 75% 겹쳐도 정답 인정 engine/trainer:

Data set


code

!pip install ultralytics
from ultralytics import YOLO
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import cv2

model = YOLO("yolo26n-seg.pt")

ex_img = model('/content/drive/MyDrive/yolo26_seg/valid/images/1-1-_jpg.rf.c27b687ae48fe13d078a73965bcbae4e.jpg')

t = ex_img[0].plot()
t = cv2.cvtColor(t, cv2.COLOR_BGR2RGB)
plt.imshow(t)
plt.show() # 데이터 셋 확인

model = YOLO("yolo26n-seg.pt")

new_model = model.train(data="/content/drive/MyDrive/yolo26_seg/data.yaml", epochs = 20, imgsz = 640)

네트워크 너무 불안하여 학습을 시키면서 많은 어려움이 있었다… (계속 날라감 ;;;)

그래서 resume을 이용해 어찌 저찌 했다…

model = YOLO("/content/drive/MyDrive/yolo26_seg/runs/segment/train5/weights/last.pt")

model.train(resume=True)

초반에 1 epoch당 4분 16초 씩 걸려서 뭔가 봤더니 1 ~ 10 epoch 까지 데이터 증강 (모자이크) 로 학습되고 있었다.

  • 출력로그
    Starting training for 20 epochs...
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
           5/20      5.39G      1.774      1.801      1.436   0.006005     0.7486        499        640: 100% ━━━━━━━━━━━━ 202/202 4.8s/it 16:16
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.4s/it 16.7s
                       all        362      12168       0.73      0.677      0.738      0.425      0.473      0.441      0.375      0.165
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
           6/20      5.64G      1.722      1.702      1.291   0.005731     0.7424        435        640: 100% ━━━━━━━━━━━━ 202/202 1.3s/it 4:17
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.3s/it 15.4s
                       all        362      12168      0.739       0.67      0.742      0.451      0.455      0.422      0.359      0.144
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
           7/20      5.67G      1.685      1.657      1.241   0.005478     0.6747        592        640: 100% ━━━━━━━━━━━━ 202/202 1.3s/it 4:17
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.3s/it 15.8s
                       all        362      12168      0.745      0.685      0.754      0.452      0.463      0.423      0.362      0.141
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
           8/20      5.48G      1.656      1.631      1.202   0.005329     0.6483        424        640: 100% ━━━━━━━━━━━━ 202/202 1.3s/it 4:16
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.2s/it 14.7s
                       all        362      12168      0.752      0.693      0.764      0.473      0.429      0.384      0.327       0.12
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
           9/20      5.53G      1.652      1.652       1.19   0.005447     0.6792        416        640: 100% ━━━━━━━━━━━━ 202/202 1.3s/it 4:16
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.3s/it 16.0s
                       all        362      12168      0.765       0.69      0.768      0.458       0.46      0.418      0.352      0.152
    
          Epoch    GPU_mem   box_loss   seg_loss   cls_loss   dfl_loss   sem_loss  Instances       Size
          10/20      5.54G       1.62      1.619      1.145   0.005209     0.6139        444        640: 100% ━━━━━━━━━━━━ 202/202 1.3s/it 4:17
                     Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.3s/it 15.8s
                       all        362      12168      0.773      0.703      0.775      0.484      0.481      0.432      0.371      0.158
    Closing dataloader mosaic

총 소요시간 : 1시간 20분 정도

Ultralytics 8.4.17 🚀 Python-3.12.12 torch-2.10.0+cu128 CUDA:0 (Tesla T4, 14913MiB)
YOLO26n-seg summary (fused): 139 layers, 2,689,079 parameters, 0 gradients, 9.0 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)     Mask(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 12/12 1.5s/it 18.1s
                   all        362      12168      0.842      0.769      0.842      0.585      0.499      0.449      0.378       0.15
Speed: 0.3ms preprocess, 4.9ms inference, 0.0ms loss, 6.0ms postprocess per image

mAP50 기준으로 BOX는 84%로 잘 찾아내는 모습을 보였지만 Mask는 37%로 처첨했다.

epochtimetrain/box_losstrain/seg_losstrain/cls_losstrain/dfl_losstrain/sem_lossmetrics/precision(B)metrics/recall(B)metrics/mAP50(B)metrics/mAP50-95(B)metrics/precision(M)metrics/recall(M)metrics/mAP50(M)metrics/mAP50-95(M)val/box_lossval/seg_lossval/cls_lossval/dfl_lossval/sem_losslr/pg0lr/pg1lr/pg2
1313.3992.578862.835642.749360.011142.222540.424290.456110.392860.194230.278950.317640.202110.087381.695911.587681.871980.0068100.0006633660.0006633660.000663366
2588.4711.954942.055941.859480.006690.985880.576550.546270.557550.268920.348430.361930.269710.108361.724931.307881.539960.0064100.00126420.00126420.0012642
3868.51.889131.928361.621280.006430.846970.635990.614120.650490.347540.441130.429820.368580.173921.663491.244261.272460.0055700.001799030.001799030.00179903
41148.991.856651.860491.47760.006340.77370.705140.609710.681820.38440.443370.402530.346780.157691.619171.299461.182470.0057100.0017030.0017030.001703
5993.121.773671.800911.436410.0060.748610.730140.67710.737870.42470.472770.440980.374590.164571.503561.158311.069620.0052300.0016040.0016040.001604
61268.21.721731.701751.290850.005730.742430.73940.670160.741860.451170.455010.421680.359440.143761.436831.214461.050610.0049900.0015050.0015050.001505
71543.261.684691.656821.24080.005480.674670.745470.684660.753890.451820.46310.422750.361830.141241.464491.134020.992070.0050300.0014060.0014060.001406
81815.971.656111.631231.201920.005330.648320.752340.693030.764220.472520.429070.383550.326550.120221.416251.114310.976240.0047100.0013070.0013070.001307
92089.881.651811.652371.189850.005450.679160.764990.690480.767520.457570.460090.417650.351610.152041.494591.14180.965730.004900.0012080.0012080.001208
102364.081.619991.618761.14520.005210.61390.773250.70340.775220.483930.48120.431620.370960.158391.388211.101380.936740.0047400.0011090.0011090.001109
112512.861.558641.548091.111540.006710.607050.781550.724190.793880.486710.482050.440170.369450.158491.442981.054540.875710.0048800.001010.001010.00101
122655.291.537341.50331.068360.006460.581830.774210.731670.794620.505770.461820.419740.355730.132671.340491.130420.872330.0043700.0009110.0009110.000911
132796.761.500631.491431.026690.006070.569710.810260.75370.820020.532070.487750.442640.369520.149361.304341.050640.800920.0040700.0008120.0008120.000812
142937.891.470591.484790.991730.005980.54960.812740.740710.816960.536810.522310.456030.411190.17661.315991.08550.803440.0039800.0007130.0007130.000713
153079.451.445261.44940.967970.005790.509940.831830.758970.832580.556350.484520.436970.36280.144661.258561.03480.744960.0040300.0006140.0006140.000614
163222.221.444871.440950.956490.005910.513170.818470.764810.832610.561810.490680.450360.382910.156911.243231.062870.747550.0040500.0005150.0005150.000515
173365.011.405011.440340.924290.005490.517630.831730.761660.832410.560330.497870.453730.386530.155781.247531.089170.749440.003800.0004160.0004160.000416
183507.231.389131.414330.897960.005410.511460.830540.7680.837660.574050.48050.44560.3650.144341.193760.993510.715660.0038200.0003170.0003170.000317
193649.051.348171.405540.882730.005170.490790.839420.768240.842710.57630.474950.43910.35820.138311.199411.00360.705780.0035800.0002180.0002180.000218
203788.21.332571.38620.868270.005010.50780.842610.766880.842270.584530.498290.44880.378280.150361.173181.00620.704260.0035500.0001190.0001190.000119

일단 결과를 해석해보면 train loss 값이 떨어짐과 동시에 val loss 값도 같이 떨어지는 모습을 보이고 있다. 특히 데이터 증강이 있던 에포크 10을 기점으로 loss 값이 튀는 걸 볼 수 있지만 다행히 잘 줄어 들었다.

종합해 봤을 때 적은 에포크 수로 인해 학습이 덜 되었던 것 같다.

정확도를 높이기 위하여

정확도를 높이기 위해 뭘 생각해야할까?

  • 에포크가 너무 부족했나?
  • 데이터 셋이 부족한가? 증강이 더 필요하나?
  • 이미지크기가 너무 작았나? (현재 640)

에포크수와 이미지 크기를 조금더 키워서 다시 학습시켜 보겠다.

model = YOLO("yolo26n-seg.pt")

model.train(data="/content/drive/MyDrive/yolo26_seg/data.yaml", epochs = 50, imgsz = 800, name = "train_is800_e50")

하으…. 하루 사용량을 다 사용한 것 같다.

  • log 메세지
    TimestampLevelMessage
    Feb 26, 2026, 5:57:10 PMWARNING0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
    Feb 26, 2026, 5:57:10 PMWARNING0.00s - to python to disable frozen modules.
    Feb 26, 2026, 5:57:10 PMWARNING0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
    Feb 26, 2026, 5:57:10 PMWARNING0.00s - Debugger warning: It seems that frozen modules are being used, which may
    Feb 26, 2026, 5:57:08 PMWARNINGkernel 3bc7ac6d-2692-417e-b5ff-4f53a4ad0116 restarted
    Feb 26, 2026, 5:57:08 PMINFOAsyncIOLoopKernelRestarter: restarting kernel (1/5), keep random ports
    Feb 26, 2026, 5:53:16 PMWARNING0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
    Feb 26, 2026, 5:53:16 PMWARNING0.00s - to python to disable frozen modules.
    Feb 26, 2026, 5:53:16 PMWARNING0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
    Feb 26, 2026, 5:53:16 PMWARNING0.00s - Debugger warning: It seems that frozen modules are being used, which may
    Feb 26, 2026, 5:53:14 PMWARNINGkernel 3bc7ac6d-2692-417e-b5ff-4f53a4ad0116 restarted
    Feb 26, 2026, 5:53:14 PMWARNINGkernel 3bc7ac6d-2692-417e-b5ff-4f53a4ad0116 restarted

imgsz를 800으로 돌렸더니 메모리부족으로 병목현상이 발생하였다.

해결방안으로 배치 크기를 8까지 줄였더니 돌아가긴 했지만 대략 1%올라가는데 2~3분 정도 걸리고 있다.

오늘 안으로 학습이 힘들것 같아 gpu가 죽기 전에 23 에포크 까지의 결과로 비교를 해보겠다.

epochtimetrain/box_losstrain/seg_losstrain/cls_losstrain/dfl_losstrain/sem_lossmetrics/precision(B)metrics/recall(B)metrics/mAP50(B)metrics/mAP50-95(B)metrics/precision(M)metrics/recall(M)metrics/mAP50(M)metrics/mAP50-95(M)val/box_lossval/seg_lossval/cls_lossval/dfl_lossval/sem_losslr/pg0lr/pg1lr/pg2
1359.9852.365362.59372.804310.009932.064950.423970.457260.381480.182480.280520.32820.199440.090511.678071.645521.952080.0068500.0006633660.0006633660.000663366
2681.9061.778861.8611.820770.006220.844580.615650.5830.615280.307270.383850.375240.294850.111921.693461.532841.46580.0071500.00130370.00130370.0013037
31002.181.786571.754091.541080.00620.721970.655450.646370.679490.360190.454770.439920.380360.160651.648261.351111.30480.0076400.001917630.001917630.00191763
41330.691.7341.66321.383440.005940.668950.72190.686290.750250.449110.531790.487260.45550.211791.423831.242071.080620.0053400.00188120.00188120.0018812
51651.61.657591.585891.265470.005570.657910.753210.698290.770630.475220.508780.465650.43050.186171.407591.297960.997390.0056200.00184160.00184160.0018416
61972.481.655211.54511.219610.005580.585060.77040.702740.780160.447630.56710.496850.482820.220341.518971.147191.00120.0053500.0018020.0018020.001802
72293.531.593521.490331.127520.005250.566080.790610.733570.804710.524880.568670.516440.49020.22551.316521.160290.872680.0046500.00176240.00176240.0017624
82613.041.568811.483831.105260.005030.573680.772880.735620.798340.516120.533550.490220.459610.195071.345811.228350.885790.0047600.00172280.00172280.0017228
92937.561.550231.487651.06870.004990.556170.807820.744170.822530.537330.53350.47970.431090.178091.29661.186830.833160.0048300.00168320.00168320.0016832
103257.491.521561.440671.037570.004930.526450.80120.751520.828680.548890.541920.483650.454840.195951.286381.236030.787210.0043300.00164360.00164360.0016436
113573.321.499931.418551.003460.004720.549720.801130.752510.824830.555870.556430.489230.462760.19451.250121.071640.793760.0047400.0016040.0016040.001604
123889.491.507611.438160.989010.004850.523850.819710.764140.834310.5420.565170.53120.486680.221561.292971.119530.779220.004500.00156440.00156440.0015644
134207.541.456621.403170.96680.004520.520540.834520.763480.842870.593530.57390.499260.48370.211871.146371.155280.749060.0041200.00152480.00152480.0015248
144524.551.43831.333370.92140.004430.490160.828070.759580.838690.570550.568020.521040.491640.223921.244291.103020.752750.0043900.00148520.00148520.0014852
154839.871.441261.361120.922820.004350.523890.822250.767570.839720.571740.538030.493430.446320.18511.198051.104260.731170.0042100.00144560.00144560.0014456
165156.941.428631.375160.910080.004310.50740.839370.786570.852280.592890.563240.52170.471960.203661.172541.056190.690820.0041300.0014060.0014060.001406
175471.491.398291.355020.884990.004290.47660.838580.76570.842190.579170.568250.518240.479390.20531.22741.111030.73380.0046500.00136640.00136640.0013664
185791.221.399451.333320.874470.004190.492250.857130.773570.855310.607850.571120.500160.473480.202981.136641.044880.666670.0038600.00132680.00132680.0013268
196110.691.383591.308570.851230.004130.488750.857480.785340.863990.612520.608870.536650.519880.221541.113231.045980.655630.0037100.00128720.00128720.0012872
206431.471.365731.327560.848320.0040.492790.847980.797220.86570.610330.569940.536490.483260.202851.134371.067890.658040.0041100.00124760.00124760.0012476
216747.871.358381.315650.837290.003980.448570.853260.790760.86380.617950.577350.518310.489840.208641.135421.075250.644320.0040400.0012080.0012080.001208
227063.861.345381.281380.812540.003980.436540.870710.796430.875970.635020.594760.530490.502170.217391.07341.005670.617250.0035900.00116840.00116840.0011684
237380.521.350321.2880.814780.003950.47310.864910.796110.870240.62640.612320.549060.519580.231481.099221.01580.630290.0035600.00112880.00112880.0011288

segmention만 비교하도록 하겠다.

20 에포크를 비교하였을 때 mAP50 기준 imgsz를 늘렸을 때 48%로 이전 37%였던 결과물에 비해 정확도가 많이 상승한 것을 확인할 수 있었다.

마지막 에포크인 23에포크 에서도 mAP50 - 51% mAP50-95 23%로 정확도가 상승곡선을 그리고 있었다.


💡 마무리 하며

하이퍼파라미터 튜닝을 통해 AI 성능 최적화의 흐름을 이해할 수 있었다.

또한, 물리적인 컴퓨팅 자원(GPU/RAM)과 학습 효율 간의 상관관계를 직접 경험할 수 있었다.

수치 너머의 맥락을 읽는 법을 배우며 인공지능을 다루는 큰 틀을 잡는 유익한 과정이었습니다.

Instance Segmentation - Ultralytics YOLO Docs

Ultralytics YOLO 하이퍼파라미터 튜닝 가이드 - Ultralytics YOLO Docs

0개의 댓글