![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 은서 | 국현 | 은태 | 어진 |
| 팀원 | 팀원 | 팀원 | 팀원 |
| 항목 | 내용 |
|---|---|
| 📅 Date | 2026.01.12 ~ 2026.01.16 |
| 👥 Type | 팀 프로젝트 |
| 🎯 Goal | PCB 보드 결함 실시간 검출 시스템 구축 |
| 🔧 Tech Stack | PyTorch, YOLO, ONNX, Streamlit, OpenCV |
| 📊 Dataset | Kaggle PCB Defect Dataset, Roboflow PCB Dataset (최종) |
PCB(Printed Circuit Board) 제조 공정에서 발생하는 다양한 결함을 자동으로 검출하는 딥러닝 기반 객체 인식 시스템입니다.
- ✅ YOLO 기반 실시간 검출: 빠르고 정확한 결함 탐지
- 🚀 ONNX 경량화: 실시간 추론을 위한 모델 최적화
- 🎨 Streamlit 데모: 사용자 친화적인 웹 인터페이스
- 📊 데이터 증강: Albumentations를 활용한 강건한 학습
- 🔬 재현 가능한 파이프라인: 학습/평가/추론 모듈화
- Missing Hole (구멍 누락)
- Mouse Bite (모서리 결함)
- Open Circuit (개방 회로)
- Short Circuit (단락)
- Spur (돌기)
- Spurious Copper (불필요한 구리)
- YOLO 기반 Object Detection
- 다양한 데이터 증강 기법
- 학습 과정 모니터링
- ONNX 변환을 통한 경량화
- Streamlit 기반 웹 데모
- 실시간 이미지/비디오 추론
dataset/
├── roboflow/ # Primary dataset (Roboflow format)
│ ├── train/ # 학습 데이터 (증강 데이터 포함)
│ │ ├── images/
│ │ └── labels/
│ ├── valid/
│ │ ├── images/
│ │ └── labels/
│ ├── test/
│ │ ├── images/
│ │ └── labels/
│ └── data.yaml # YOLO 데이터셋 설정
└── kaggle/ # 원본 Kaggle 데이터 (optional)
- Base Model: YOLOv5/YOLOv8/YOLOv11 (n/s/m/l 사이즈 지원)
- Backbone: CSPDarknet
- Framework: Ultralytics
- Export Format: ONNX Runtime
git clone https://github.com/PCB-object-detection/PCB.git
cd PCB# uv 설치 (없는 경우)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 패키지 설치
uv sync# Kaggle API 토큰 설정 (~/.kaggle/kaggle.json)
# https://www.kaggle.com/settings/account 에서 API 토큰 생성
# 데이터셋 다운로드 (자동으로 dataset/raw/에 저장됨)
python scripts/download_kaggle.py# 전체 파이프라인 (학습 + 평가)
python main.py --mode pipeline
# 학습만 실행
python main.py --mode train
# 평가만 실행 (best weights 자동 탐지)
python main.py --mode eval
# 특정 weights로 평가
python main.py --mode eval --weights path/to/weights.ptpython src/inference/predict.py --weights weights/best.pt --source dataset/test/images/python src/models/export_onnx.py --weights weights/best.ptstreamlit run src/app/app.pyPCB/
├── dataset/ # 데이터셋
│ ├── roboflow/ # Primary dataset (Roboflow format)
│ │ ├── train/ # 학습 데이터 (images, labels)
│ │ ├── valid/ # 검증 데이터
│ │ ├── test/ # 테스트 데이터
│ │ └── data.yaml
│ └── kaggle/ # 원본 Kaggle 데이터 (optional)
│
├── src/ # 소스 코드
│ ├── app/ # Streamlit 데모
│ ├── data/ # 데이터 로딩/전처리 (augmentation)
│ ├── models/ # 모델 정의 (ModelFactory)
│ ├── training/ # 학습 스크립트
│ ├── evaluation/ # 평가 스크립트
│ ├── inference/ # 추론 스크립트
│ └── utils/ # 유틸리티 함수
│
├── main.py # CLI 엔트리포인트 (train/eval/pipeline)
├── configs/ # 설정 파일 (config.yaml)
├── weights/ # 모델 가중치
├── outputs/ # 학습 결과 (weights, logs)
├── logs/ # 학습 로그
├── onnx_models/ # ONNX 모델
├── scripts/ # 유틸리티 스크립트
└── notebooks/ # Jupyter 노트북
프로젝트 진행 과정 및 실험 결과는 Notion를 참고해주세요.
This project is licensed under the MIT License.
Made with ❤️ by Likelion Team




