← 모델 목록
수업 실습 2026-10-02 · object-detection
YOLO 계열 (CNN 기반 1단계 탐지)

yolo26n

YOLO26n 객체 탐지 - 고양이·강아지 커스텀 학습 (수업 실습)
모델
이미지 한 장을 한 번에 훑어 객체의 위치(박스)와 종류를 동시에 예측하는 1단계 탐지 모델의 가장 작은(nano) 버전
사용 목적
사전학습 탐지 모델로 예측 결과(박스·신뢰도·클래스)를 읽는 법과, 직접 라벨링한 데이터로 파인튜닝하는 과정을 익히려고 사용
코드
mnmms/data-analysis
가중치
best.pt 5.2MB · 로컬 보관
runs/detect/train-2/weights/best.pt (노트북 폴더 기준)
mAP5095.1%
mAP50-9549.6%
precision97.4%
학습 시간13.7분
추론 CPU / GPU측정 안 함

데이터

  • 직접 수집 20장 · cat / dog
  • Roboflow 수동 라벨링
  • train 14 · valid 4 · test 2

학습

  • yolo26n.pt → 100 에폭 × 2회 이어 학습
  • imgsz 640 · batch 16 · AdamW
  • CPU · 13.7분

결과

  • valid mAP50 0.834 → 0.951
  • precision 0.974 · recall 0.869
  • valid 4장이라 변동 큼

배운 점

  • 이어 학습 효과 vs 검증 데이터 부족
  • boxes.data = x1·y1·x2·y2·conf·cls
  • 다음: 데이터 확장 · test 평가 · CPU/GPU 속도
개요용도 의도한 용도: Ultralytics YOLO로 (1) COCO 사전학습 모델의 예측 결과( boxes.data = x1,…

용도

  • 의도한 용도: Ultralytics YOLO로 (1) COCO 사전학습 모델의 예측 결과(boxes.data = x1, y1, x2, y2, conf, cls)를 코드로 읽고 그리는 법, (2) Roboflow로 만든 데이터로 파인튜닝하는 흐름을 익히기
  • 대상 사용자: 해당 없음 (학습용)
  • 의도하지 않은 용도: 실제 서비스의 고양이·강아지 판별. 학습 이미지가 18장(train 14 + valid 4)이라 일반화 성능을 보장하지 못함

모델 정보

항목 값
베이스 모델 yolo26n.pt (Ultralytics 배포 가중치, COCO 80클래스). 노트북에서 models/yolo26n.pt로 로드
크기 · 변형 nano. 260 layers, 2,504,580 파라미터, 5.9 GFLOPs (cat/dog 2클래스 헤드 기준, 학습 로그)
리비전 Ultralytics 8.4.171. 가중치 다운로드 리비전은 [미확인]
아키텍처 백본 Conv + C3k2 + SPPF + C2PSA, Detect 헤드 (nc=2)
학습 방식 전체 파인튜닝. 2단계로 진행: train (yolo26n.pt → 100 에폭) 후 train-2 (train의 best.pt → 100 에폭 추가)
프롬프트 · 에이전트 구성 해당 없음
데이터확보 방식 직접 수집 (이미지) + 직접 라벨링 (Roboflow 수동 라벨링·내보내기) 출처 이미지: Bing 이미지 검색 …
항목 값
확보 방식 직접 수집 (이미지) + 직접 라벨링 (Roboflow 수동 라벨링·내보내기)
출처 이미지: Bing 이미지 검색 스크래핑. 노트북 셀 21의 better_bing_image_downloader로 "주변에 여러 물체가 있는 개 사진", "도심 속 고양이 사진" 각 10장 요청. 라벨링·내보내기: Roboflow 프로젝트 yolo-project-eeyy5 version 1, 형식 yolo26
직접 수집 내용 수집 대상: Bing 이미지 검색. 기간: 2026-10-02. 도구: better-bing-image-downloader (icrawler도 설치 언급). 수집 코드: 위 노트북 셀 21. 라벨링 방법: 직접 수동 라벨링 (Roboflow에서 박스 지정). 스크래핑 결과 폴더(images/dogsncats)는 21장이고, 이 중 학습에 쓴 20장의 대응은 코드로 [미확인]
이용 조건 확인 [미확인] (Bing·원본 사이트 이용약관과 이미지 저작권을 확인하지 않음). Roboflow 프로젝트 라이선스는 data.yaml에 Private로 적혀 있음
규모 이미지 20장 (yolo-project-1/*/images 14 + 4 + 2)
분할 train 14 / valid 4 / test 2 (70% / 20% / 10%에 해당). 나눈 방식·시드는 Roboflow 설정이라 [미확인]
레이블·클래스 분포 박스 수 기준: train cat 11 · dog 10 (21), valid cat 3 · dog 5 (8), test cat 1 · dog 5 (6). 총 cat 15 · dog 20 (labels/*.txt 집계). 클래스 2개 ['cat', 'dog']
전처리 Roboflow 내보내기 전처리(내용은 [미확인]). 학습 시 Ultralytics 기본 증강(mosaic, HSV, fliplr 0.5 등), imgsz 640
개인정보·민감정보 처리 사람 얼굴이 담긴 이미지가 섞였는지는 [미확인]
학습하이퍼파라미터 model.train(data="yolo-project-1/data.yaml", epochs=100, imgsz…
항목 값
하이퍼파라미터 model.train(data="yolo-project-1/data.yaml", epochs=100, imgsz=640) 외는 기본값. batch 16, optimizer=auto (AdamW, lr 0.001667 자동 선택), close_mosaic 10
에폭 / 스텝 100 에폭 × 2회 (train, train-2) = 누적 200 에폭
학습 시간 train 367초(6.1분) + train-2 455초(7.6분) = 약 13.7분 (runs/detect/*/results.csv의 마지막 time 값)
하드웨어 CPU, Intel Core Ultra 9 185H (학습 로그 torch-2.14.1+cpu)
프레임워크 Ultralytics 8.4.171, Python 3.11.15, PyTorch 2.14.1 (CPU)
시드 · 재현 방법 seed 0 (기본값, deterministic). 노트북 위에서부터 실행. 단, 데이터셋(yolo-project-1/)이 레포에 없어 Roboflow에서 다시 받아야 함
결과학습 곡선 정규화 혼동행렬 검증 이미지 예측 결과 (valid) COCO 사전학습 모델 예측 (yolo_image.jpg, 6…
학습 곡선
학습 곡선
정규화 혼동행렬
정규화 혼동행렬
검증 이미지 예측 결과 (valid)
검증 이미지 예측 결과 (valid)
COCO 사전학습 모델 예측 (yolo_image.jpg, 6 persons, 3 bicycles, 1 umbrella)
COCO 사전학습 모델 예측 (yolo_image.jpg, 6 persons, 3 bicycles, 1 umbrella)

최종 train-2의 100 에폭 검증 결과입니다. test 2장은 평가하지 않았습니다.

지표 값 테스트셋 비교 대상 (baseline 등)
mAP50 0.951 valid 4장 (박스 8개) train 1차 학습 0.834
mAP50-95 0.496 같음 train 1차 학습 0.472
precision / recall 0.974 / 0.869 같음 train 1차 학습 0.810 / 0.682
  • 검증 이미지가 4장(박스 8개)뿐이라 수치의 변동이 매우 큽니다. 마지막 20 에폭의 mAP50도 0.86~0.96 사이를 오갑니다 (results.csv).
  • 같은 valid로 에폭마다 확인하며 best.pt를 골랐기 때문에 이 값은 낙관적입니다.
  • COCO 사전학습 yolo26n.pt의 cat/dog 성능은 같은 조건으로 재지 않았습니다.

추론 성능 (CPU / GPU)

측정 안 함. 노트북에는 같은 조건으로 장비별 비교를 한 코드가 없습니다. 참고로 model(...) 호출 한 번씩의 출력만 있습니다.

장비 장비 이름 배치 크기 지연 시간 (샘플당, p50 / p95) 처리량 (샘플/초) 메모리 사용
CPU Intel Core Ultra 9 185H 1 측정 안 함 (참고: 단발 추론 74.7ms, 121.6ms) 측정 안 함 측정 안 함
GPU - - 측정 안 함 측정 안 함 측정 안 함
  • 참고 출력의 조건: 사전학습 yolo26n.pt, 입력 448×640, 워밍업·반복 없음, 같은 이미지를 두 번 실행한 값. 파인튜닝 모델은 320×640 이미지에서 142.4ms (1회). 이 값들은 벤치마크가 아니며 infer_ms에도 넣지 않았습니다.
한계 · 배운 점한계 알려진 실패 유형: 파인튜닝 모델( train-2/best.pt )로 images/yolo-test.jpeg 를 예측하면…

한계

  • 알려진 실패 유형: 파인튜닝 모델(train-2/best.pt)로 images/yolo-test.jpeg를 예측하면 탐지 결과가 없음 (no detections). 이 이미지의 내용은 [미확인]
  • 편향 / 공정성 이슈: 학습 이미지가 20장이고 검색어(개: "주변에 여러 물체가 있는 개 사진", 고양이: "도심 속 고양이 사진")에 맞춰 모인 사진이라 품종·배경·구도가 매우 한정적
  • 성능이 떨어지는 입력 조건: 여러 마리가 겹치거나 작게 찍힌 경우 (val 예측에서 개 한 마리를 cat 0.3으로 잘못 예측한 사례가 있음)
  • train-2는 train의 가중치에서 이어서 학습했고 같은 valid를 계속 사용했으므로 과적합 여부를 이 지표로 판단할 수 없음

배운 점

  • 같은 100 에폭을 한 번 더 이어서 학습해(train → train-2) valid mAP50이 0.834 → 0.951로 올랐지만, 검증이 4장이라 개선인지 변동인지 구분하기 어렵다. 다음엔 이미지를 늘리고 test로 한 번만 평가해 볼 것
  • 예측 결과 boxes.data는 [x1, y1, x2, y2, conf, cls]라서, 신뢰도 임계값으로 걸러 직접 그리는 코드를 짤 수 있다
  • 다음에 해 볼 것: 같은 조건으로 CPU·GPU 추론 시간 재기 (측정 코드를 노트북에 추가할지 결정 필요)
사용 방법코드 셀 3개
In [1]모델 불러오기
from ultralytics import YOLO

# 파인튜닝한 가중치
model = YOLO("runs/detect/train-2/weights/best.pt")
In [2]예측 실행
results = model("images/yolo-test.jpeg", save=True)
result = results[0]
for x1, y1, x2, y2, conf, cls in result.boxes.data.tolist():
    print(result.names[int(cls)], round(conf, 3), (x1, y1, x2, y2))
Out[2] 출력 보기
image 1/1 ...\images\yolo-test.jpeg: 320x640 (no detections), 142.4ms
Speed: 4.0ms preprocess, 142.4ms inference, 0.9ms postprocess per image at shape (1, 3, 320, 640)
In [3]학습 재현
model = YOLO("models/yolo26n.pt")  # COCO 사전학습 가중치에서 시작
model.train(data="yolo-project-1/data.yaml", epochs=100, imgsz=640)
# 결과: runs/detect/train/ (이어서 학습한 train-2는 train/weights/best.pt에서 시작)
Out[3] 출력 보기
Ultralytics 8.4.171  Python-3.11.15 torch-2.14.1+cpu CPU (Intel Core Ultra 9 185H)

같은 과제·데이터셋 비교

같은 과제·데이터셋으로 학습한 모델이 생기면 여기에서 비교됩니다.