YOLO: 객체 탐지 프로젝트 (저용량, CPU Only, Windows)

calico·2026년 1월 6일

Artificial Intelligence

목록 보기
162/186

YOLO11 객체 탐지 프로젝트: 학습부터 추론까지


본 문서는 인공지능 모델의 이론적 학습 구조와 실제 업무 환경에서의 적용 과정을 단계별로 통합하여 설명합니다.


1단계: 데이터 준비 및 환경 구축 (Setup & Data)


AI가 학습할 수 있는 환경을 만들고 데이터를 로드할 준비를 합니다.

  • 환경 격리 (.venv): 프로젝트별 독립된 가상환경을 구축하여 라이브러리 충돌을 방지합니다.

  • 데이터 로더 설정: batch: 16, imgsz: 640 등의 설정을 통해 데이터를 효율적으로 CPU/GPU에 전달합니다.

  • 데이터 증강 (Augmentation): mosaic: 1.0 설정을 통해 여러 이미지를 합쳐 모델에게 고난도 문제를 제시합니다.



2단계: 모델 정의 및 로드 (Model Definition)


학습의 기초가 되는 모델 구조를 결정합니다.

  • Pre-trained Model 활용: 처음부터 배우는 대신, 이미 검증된 yolo11n.pt의 지식을 가져오는 전이 학습(Transfer Learning) 방식을 채택합니다.

  • 로컬 가중치 우선: 외부 서버 다운로드보다 로컬 폴더의 .pt 파일을 직접 호출하여 네트워크 의존도를 낮춥니다.



3단계: 학습 엔진 및 손실 함수 (Loss & Optimizer)


모델이 어떻게 정답을 맞히고 틀린 지를 계산하는 '두뇌의 보정 방식'을 설정합니다.

  • 손실 함수(Loss Function): 박스 위치(box), 클래스 분류(cls), 경계 정밀도(dfl)를 종합하여 오차를 계산합니다.

  • 최적화(Optimizer): lr0: 0.01 (학습률) 설정을 통해 모델이 정답을 향해 이동하는 보폭을 결정합니다.



4단계: 100-에포크 학습 로드맵 (Training Roadmap)


학습 프로세스는 크게 세 구간으로 나뉘어 진행됩니다.

구간 (Phase)에포크 범위핵심 메커니즘역할
1. 예열 (Warmup)1 ~ 3 Epochwarmup_epochs: 3.0급격한 가중치 변화 방지 및 초기 안정화
2. 안정 학습4 ~ 90 Epochmosaic: 1.0다양한 환경(배경, 크기)에 대한 적응력 극대화
3. 정밀 튜닝91 ~ 100 Epochclose_mosaic: 10증강을 끄고 실제 데이터 정밀도 향상에 집중



5단계: 실무 트러블슈팅 (Practical Troubleshooting)


실행 과정에서 발생하는 변수를 해결하는 단계입니다. (사용자 경험 반영)

  • SSL 인증서 오류: 기업 보안망 환경에서 ssl._create_unverified_context를 통해 외부 연결 차단 문제를 해결했습니다.

  • 파일명 정밀 매칭: yolov11nyolo11n의 명칭 차이를 바로잡아 불필요한 네트워크 통신을 차단했습니다.

  • 리소스 최적화: CPU 환경에서의 무의미한 100 에포크 학습 대신, 기학습된 모델을 활용한 즉각 추론(Inference)으로 전략을 수정하여 효율성을 높였습니다.



6단계: 성능 평가 및 시각화 (Evaluation & Plotting)


모델이 얼마나 잘 맞히는지 성적표를 확인합니다.

  • 성능 지표: mAP(mean Average Precision)를 통해 객체 탐지의 정확도를 측정합니다.

  • 시각화: runs/detect/predict 폴더에 생성된 결과 이미지를 통해 AI가 판단한 근거(Box, Confidence Score)를 육안으로 확인합니다.



7단계: 모델 저장 및 배포 (Save & Deploy)


완성된 AI를 실제 서비스나 업무에 적용합니다.

  • best.pt: 전체 과정 중 가장 성능이 좋았던 시점의 가중치를 저장합니다.

  • 파이썬 스크립트화: travel.py와 같이 독립적인 실행 파일을 만들어 사진/영상을 넣으면 즉시 결과가 나오도록 자동화합니다.


from ultralytics import YOLO
import os

model = YOLO("yolo11n.pt")

img_path = "travel_sample.jpeg"

if os.path.exists(img_path):
    result = model.predict(source=img_path, save=True, conf=0.25, show=True)
    print(f"분석 완료: {result[0].save_dir}")
    
else:
    print(f"이미지 파일을 찾을 수 없습니다: {img_path}")
    

내가 찍은 교토 택시 사진🚕



최종 정리


  1. 이론: 100 에포크 로드맵은 모델의 '정밀도'를 완성하는 과정입니다.

  2. 실무: 하지만 이미 학습된 모델(yolo11n.pt)이 있다면, 추론(Predict)만으로도 90% 이상의 업무를 즉시 처리할 수 있습니다.

  3. 최적화: 나머지 10%의 특수한 사물(나만의 여행 기념품 등)은 freeze 기능을 활용한 짧은 미세 조정(Fine-tuning)으로 해결하는 것이 가장 스마트한 전략입니다.



profile
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글