최종 프로젝트

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

devjjun 2026. 6. 29. 20:54

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

타겟변수 Y_Class & Y_Quality 분포

 

Y_Class 별 Y_Quality 박스플롯 분포

 

라인별 Y_Class 비율
제품 코드 별 Y_Class 비율

인사이트 정리

  1. Class1이 전체의 70.5%로 정상 위주 편향 -> 불균형 주의
  2. 70% 이상의 피처가 60% 이상의 결측 보유 -> 전처리 신중하게
  3. Product_Code 별 불량률의 격차가 크다, O_31의 경우 표본 부족 
  4. Line 별 정상품의 비율이 크게 차이나 핵심 변수 가능성

💡 느낀점

피처가 2,875개라 많다고 생각했는데, 정작 30% 미만 결측인 피처가 단 하나도 없었다. Product_Code와 Line 별로 타겟 변수의 비율 또한 다르게 나타났고, 이를 통해 제품 코드와 라인 중 선택적으로 그룹화하여 진행해야 함을 알 수 있었다. 추후에 어떤 방식으로 전처리를 진행하여 어떤 모델에 넣을지 EDA 및 근거에 따라 상세하게 파이프라인을 구성하는 것이 중요할 것 같다.