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), 대시보드 기본 구조 설계 | 보고서 제출 + 대시보드 구조 설계 착수 |
중점적으로 확인할 것
- 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이 품질과 밀접한 관련이 있을 가능성을 확인하였다. 추후에는 이러한 도메인 정보를 적극 활용하여 전처리와 변수 선정을 수행하는 것이 모델 성능 향상에 중요한 지표가 될 것 같다.
'최종 프로젝트' 카테고리의 다른 글
| Chapter.9 최종 실전 자동화 프로젝트 (6) (0) | 2026.07.01 |
|---|---|
| Chapter.9 최종 실전 자동화 프로젝트 (5) (0) | 2026.06.30 |
| Chapter.9 최종 실전 자동화 프로젝트 (4) (0) | 2026.06.29 |
| Chapter.9 최종 실전 자동화 프로젝트 (2) (0) | 2026.06.25 |
| Chapter.9 최종 실전 자동화 프로젝트 (1) (0) | 2026.06.24 |