최종 프로젝트

Chapter.9 최종 실전 자동화 프로젝트 (3)

devjjun 2026. 6. 26. 19:59

TIL(Today I Learned)


1️⃣이미지 데이터와 불량 검출 4회차

Ultralytics 소개

YOLO 시리즈의 개발과 배포를 담당하는 AI 비전 전문 기업

YOLOv5 ~ YOLOv11 Ultralytics에서 개발하고 유지보수

Ultralytics 설치 확인

# pip install ultralytics
import ultralytics
ultralytics.checks()

Ultralytics 프레임워크 장점

항목 장점 요약
다양한 Task 지원 Detect, Classify, Segment, Pose 전부 지원
배포 편의성 ONNX, TensorRT, CoreML 등 export 지원
문서 & 튜토리얼 https://docs.ultralytics.com 에 매우 잘 정리되어 있음
지속적 업데이트 YOLOv8 이후도 꾸준히 유지보수됨

YOLOv8 특징

YOLOv8은 YOLO 시리즈 중 처음으로:

  • 완전한 Ultralytics 내부 구조로 리디자인
  • detect, classify, segment, pose까지 전 task 공식 지원
  • CLI + API + Python class 모두 지원하는 유일한 완성형 구조

YOLOv8 실습(pytorch)

.pt 파일 ⇒ 가중치

  • 네트워크 구조 (model.yaml or 정의된 클래스)
  • 학습된 파라미터 (Weights)
  • 옵티마이저 상태 등 (선택)

상황 추천 모델 크기
모바일 / IoT / 엣지 디바이스 yolov8n.pt nano
실시간 CCTV / 제한된 GPU 자원 yolov8s.pt small
정확도와 속도 균형 필요한 서비스용 yolov8m.pt medium
정확도 중요하고 서버 자원이 충분할 때 yolov8l.pt large
오프라인 분석 / 연구용 / 최고 성능 yolov8x.pt extra large

Ultralytics 튜토리얼

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

YOLO 순서

# 1. 사전학습 모델 불러오기
model = YOLO('yolov8s-cls.pt')

# 2. 학습
model.train(data='casting.yaml', epochs=20, imgsz=224)

# 3. 평가 (테스트셋 기준)
metrics = model.val(split='test')

# 4. 예측 (추론)
model.predict(source='path/to/image_or_folder')


2️⃣실전 자동화 프로젝트 (2)

이번 주차 팀 회고 

  • 프로젝트 기획서 작성
  • EDA 결과 캔바 內 시각화 진행사항 공유 완료
  • 깃허브 협업 구성

다음주차 계획

날짜 공식 일정 계획
6/29(월) 데이터 수집 및 정제 시작 즉시 처리 3종 코드 작성 (999→NaN, 누수 컬럼 제거, 상수 피처 제거)
6/30(화) 튜터 미팅 A_31·T_31 분리 후 결측 처리 파이프라인 구현
7/1(수) EDA 1차 (기초 통계, 분포 확인) EDA 심화 — 피처 분포 시각화, 타깃 상관 분석
7/2(목) EDA 중간 보고서 작성, 튜터 미팅 변수 후보 정리, LINE별 불량 패턴 시각화
7/3(금) EDA 중간 보고서 제출(-21:00), 대시보드 기본 구조 설계 보고서 제출 + 대시보드 구조 설계 착수

중점적으로 확인할 것 

  1. Product_code 와 Line의 관계
    • 제품 하나가 여러 Line에서 생산되는지
    • 제품마다 고정된 Line이 있는지
  •  Product_code 별 분포
PRODUCT Class0 Class1 Class2
A_31 60 118 71
O_31 0 4 2
T_31 28 285 30
  • Line 별 분포
LINE Class0 Class1 Class2
T010305 13 35 11
T010306 6 37 27
T050304 30 37 11
T050307 11 9 22
T100304 17 144 14
T100306 11 145 18

결론 

 

  • T050307은 Class2 비율이 상대적으로 높다
  • T100304/T100306은 Class1 비율이 매우 높다
LINE 자체가 품질과 관련된 중요한 정보일 가능성

 


💡 느낀점

오늘은 YOLOv8의 전체 학습 과정을 이해하고, Ultralytics 프레임워크를 활용한 모델 학습 방법을 익힐 수 있었다. 또한 프로젝트에서는 EDA를 진행하며 PRODUCT_CODE와 LINE의 관계를 분석한 결과, LINE이 품질과 밀접한 관련이 있을 가능성을 확인하였다. 추후에는 이러한 도메인 정보를 적극 활용하여 전처리와 변수 선정을 수행하는 것이 모델 성능 향상에 중요한 지표가 될 것 같다.