TIL(Today I Learned)
1️⃣ 이미지 데이터와 불량 검출 5회차
멀티모달이란?
정의
멀티모달 AI는 여러 개의 데이터 형식(modality)을 동시에 처리하고 학습할 수 있는 인공지능 기술입니다.
- Multi = 여러 개
- Modal = Modality (데이터 형식)
- Modality = 텍스트, 이미지, 오디오, 비디오 등의 데이터 형식
핵심 특징
- 2개 이상의 데이터 형식을 동시에 입력 가능
- 다양한 형태의 정보를 통합적으로 이해
- 인간의 지각 방식과 유사한 정보 처리
멀티모달 vs 멀티모델


멀티모달의 3가지 아키텍처

- Early Fusion은 다양한 모달리티의 데이터를 입력 단계에서 결합한다. 여러 유형의 데이터를 하나의 통합된 특성 벡터로 변환해 모델에 입력하는 방식이다.
- Late Fusion은 모델의 출력 단계에서 여러 모달리티로부터의 예측 결과를 결합한다. 각 모달리티를 독립적으로 처리하며, 최종적인 결정은 이들 모델의 예측을 조합해 이루어진다. 이 방법은 각 모달리티가 독립적으로 중요한 특성을 학습할 수 있게 해주지만, 모델이 데이터 간의 복잡한 상호 작용을 학습하는 데 한계가 있을 수 있다.
- Joint or Intermediate Fusion은 모델의 중간 단계에서 여러 모달리티의 정보를 결합한다. Early Fusion과 Late Fusion의 장점을 결합한 형태로, 여러 모달리티에서 추출된 특성을 결합해 더 복잡한 표현을 학습할 수 있다. 이 접근법은 모델이 데이터 간의 상호 작용을 더 효과적으로 학습할 수 있도록 해주지만, 구현이 더 복잡할 수 있다.
Fusion 전략 3가지
- Early Fusion: 입력 단계에서 CSV와 이미지 데이터를 결합해 공동 학습. 성능이 잘 나오지만 설계 난이도가 높음.
- Joint/Intermediate Fusion: 각 모달을 인코더로 임베딩 후 중간 레이어에서 결합. 실전에서 가장 많이 쓰이며 안정적 성능을 보임.
- Late Fusion: 각 모달을 독립적으로 학습 후 최종 예측을 앙상블로 결합. 구현이 쉽고 재사용성이 높지만 상호작용은 부족.
| Joint/Intermediate | 중간 | 모달별 인코더 → 임베딩 → Fusion | 가장 안정적/성능 좋음(실전 최다) | 구조 선택지 많음 | 대부분의 멀티모달 |
| Late | 마지막 | 각 모델 예측을 앙상블 | 구현/운영 쉬움, 재사용 강함 | 특징 상호작용 부족 | 빠른 결합, 분리 운영 필요 |
| Early | 입력 초반 | 입력/초기 특징을 합쳐 공동학습 | 상호작용 극대화 가능 | 형태 차이로 설계 어려움/과적합 위험 | 데이터 충분, 강한 상호의존 |
실습 및 구현 포인트
- 데이터 준비: CSV 행과 이미지 파일을 1:1 매칭해야 의미 있는 학습 가능.
- 전처리:
- 수치형 → 정규화(StandardScaler)
- 범주형 → 원핫 인코딩
- 이미지 → 크기 통일, 정규화, 사전학습 모델(ResNet, VGG, MobileNet 등) 활용
- 모델 구조:
- 이미지 특징 추출 → CNN 기반 임베딩
- CSV 데이터 → MLP로 임베딩
- 두 임베딩을 Concat하여 최종 예측
- 학습 전략:
- 1단계: CNN 백본 고정 후 Fusion Head만 학습
- 2단계: CNN 일부 레이어를 풀어 미세 조정(Fine-tuning)
2️⃣실전 자동화 프로젝트 (3)
진행 사항
학습 데이터 병합 (train_concat)
- train_concat.ipynb 노트북 작업 → train.csv와 train_2.csv를 합쳐 새 train.csv 생성
레이블 삭제 (label_source)
- obj.ipynb에서 레이블 관련 처리 추가
- train.csv에서 레이블 컬럼 제거
레이블 소스 코드 정리 (label_source_delete)
- obj.ipynb에 133줄 추가 — 레이블 생성 소스 관련 로직 삭제 및 개선
데이터 EDA




인사이트 정리
- Class1이 전체의 70.5%로 정상 위주 편향 -> 불균형 주의
- 70% 이상의 피처가 60% 이상의 결측 보유 -> 전처리 신중하게
- Product_Code 별 불량률의 격차가 크다, O_31의 경우 표본 부족
- Line 별 정상품의 비율이 크게 차이나 핵심 변수 가능성
💡 느낀점
피처가 2,875개라 많다고 생각했는데, 정작 30% 미만 결측인 피처가 단 하나도 없었다. Product_Code와 Line 별로 타겟 변수의 비율 또한 다르게 나타났고, 이를 통해 제품 코드와 라인 중 선택적으로 그룹화하여 진행해야 함을 알 수 있었다. 추후에 어떤 방식으로 전처리를 진행하여 어떤 모델에 넣을지 EDA 및 근거에 따라 상세하게 파이프라인을 구성하는 것이 중요할 것 같다.
'최종 프로젝트' 카테고리의 다른 글
| Chapter.9 최종 실전 자동화 프로젝트 (6) (0) | 2026.07.01 |
|---|---|
| Chapter.9 최종 실전 자동화 프로젝트 (5) (0) | 2026.06.30 |
| Chapter.9 최종 실전 자동화 프로젝트 (3) (0) | 2026.06.26 |
| Chapter.9 최종 실전 자동화 프로젝트 (2) (0) | 2026.06.25 |
| Chapter.9 최종 실전 자동화 프로젝트 (1) (0) | 2026.06.24 |