Subscribe

📚 Project & TIL

Project [Personal]
2
SONTAROT
Project [Personal]
  • Jaenoo
Python
4
Basic Python
Python
  • Jaenoo
Advanced Python
Python
  • Jaenoo
Numpy
Python
  • Jaenoo
SQL
1
JAVA
3
Basic JAVA
JAVA
  • Jaenoo
Advanced JAVA
JAVA
  • Jaenoo
Scala
1

[EST soft]비정형프로젝트 #나만의 VIBE코드

Status
Project [EST soft]
Assignee
  • Jaenoo
Created by
  • Jaenoo

Data & Code :

1. 프로젝트 개요

목표
사진 한 장으로 사용자의 감정을 자동 분류하고, 감정 흐름 시각화까지 제공하는 AI 서비스
감정 기록의 번거로움과 주관성을 보완
심리학 기반의 **3차원 감정모델(PAD)**을 적용하여 결과를 직관적이고 재미있게 해석
배경
기존 감정 기록 도구는 사용자가 직접 텍스트로 작성 → 주관적이고 번거로움
감정은 자기이해와 정신건강 관리의 핵심이지만 기록률이 낮음
이미지 기반 감정 인식 기술 발전 → 자동화된 감정 분석 가능
💡 한 줄 요약
EfficientNet-B0 + CBAM을 활용해 사진 속 사용자의 감정을 4클래스로 분류하고, PAD 심리 모델을 통해 직관적인 VIBE 코드로 시각화한 실시간 웹 서비스

2. 데이터셋 & EDA

데이터 구조

학습(train), 검증(val), 테스트(test) 폴더 분리
각 폴더에 img/, label/, segmentation/ 구조
클래스: Anger, Happy, Panic, Sadness
데이터 수량: Train 약 1500장, Val 300장, Test 300장

데이터 분석

라벨 .json에 이미지 파일명, 성별, 나이, 업로더 감정, annotator 3명의 판단 결과, 얼굴 Bbox 좌표 포함
성별·연령 분포 균형 양호
Bbox 위치 분포 고르게 분포 → 모델 학습 적합

3. 모델링

후보 모델

1.
EfficientNet-B0 → 정확도 높고 추론 속도 우수, 전이학습 효과 큼
2.
ResNet50 → 깊은 구조, 과적합 방지 효과
3.
MobileNet-V3 → 가벼운 모델, 실시간 추론 적합
4.
ViT (Vision Transformer) → 전역적 특징 학습 강점

실험 결과

최종 선택: EfficientNet-B0 + CBAM
성능 향상 기법:
OneCycleLR + Label Smoothing
MixUp / CutMix 교차 적용
클래스 불균형 완화: Weighted Sampler
CBAM(Channel & Spatial Attention) → 얼굴의 세밀한 특징 강조

성능 지표

Train/Val Loss 안정적으로 감소 → 과적합 없음
F1-score 일정하게 유지 → 일반화 성능 확보
Grad-CAM 시각화로 얼굴 주요 부위에 집중하는 Attention 확인

4. 웹 서비스 통합

아키텍처

Front-end: HTML, CSS, JavaScript
Back-end: Flask REST API
AI Model: EfficientNet-B0 + CBAM

기능

이미지 업로드 → 감정 분류(Anger, Happy, Panic, Sadness)
PAD 모델 기반 감정 수치 산출
Pleasure(쾌락), Arousal(각성), Dominance(지배)
NRC VAD Lexicon 활용 (과학적 신뢰도 Valence 0.99, Arousal 0.98, Dominance 0.96)
VIBE 코드 생성: MBTI처럼 직관적·재미있게 감정을 유형화
예: P(+), A(+), D(+) = 긍정·활성·통제

5. 문제 해결 전략

문제
해결 방법
효과
클래스 불균형
Weighted Sampler + MixUp/CutMix
특정 클래스 쏠림 완화
배경·표정 다양성
ColorJitter, RandomResizedCrop, HorizontalFlip
데이터 다양성 확보
세밀한 감정 구분
CBAM 적용
얼굴 핵심 부위 집중, 성능 향상
사용자 결과 이해도 낮음
PAD → VIBE 코드 변환
심리학 기반, 직관적 시각화

6. 결과

F1-score: 기존 CNN 대비 10%↑
실시간 추론 속도 확보 → 웹 서비스 적용 가능
감정 인식 결과를 MBTI형 VIBE 코드로 제공해 재미·공감성 향상
참고문헌