Skip to content

EWHA-RYSH/AP.SIGNAL

Repository files navigation

AP.SIGNAL

이미지 기반 콘텐츠 성과 인사이트 분석 플랫폼

📋 프로젝트 개요

AP.SIGNAL은 소셜 미디어 콘텐츠의 성과를 분석하고 예측하는 Streamlit 기반 웹 애플리케이션입니다. 대한민국 화장품 브랜드 Laneige의 7개 국가별(싱가포르, 말레이시아, 태국, 인도네시아, 필리핀, 베트남, 일본) 인스타그램 계정의 콘텐츠 데이터를 분석하여 이미지 타입별 활용도, 성과 패턴, 전략적 인사이트를 제공합니다.

🔗 사이트 링크

https://ap-signal-2026.streamlit.app

🏗️ 프로젝트 구조

project/
│
├─ app.py                  # 앱 엔트리 (라우팅 + 레이아웃만)
│
├─ tabs/                   # 탭 단위 화면
│   ├─ tab1_usage.py       # 콘텐츠 활용도 모니터링
│   ├─ tab2_performance.py  # 성과 분석 & 패턴 도출
│   └─ tab3_predict.py      # CV 기반 성과 예측
│
├─ utils/                   # 계산/로직
│   ├─ data_loader.py       # 엑셀 로드, 전처리
│   ├─ eda_metrics.py       # 국가별 집계, 상위 10%/30%, 안정성
│   ├─ charts.py            # 공통 차트 함수 (Plotly)
│   ├─ insight_text.py      # 자동 인사이트 문구 생성
│   ├─ insights_store.py    # JSON 인사이트 데이터 로드
│   └─ metrics.py           # KPI 계산 함수
│
├─ models/                  # ML 관련
│   ├─ cv_model.py         # 모델 정의 및 로드
│   ├─ final_multitask_logengZ_model.pth
│   ├─ logengZ_scaler.pkl
│   └─ country_encoder.pkl
│
├─ components/              # UI/디자인
│   ├─ layout.py           # 헤더, 섹션 타이틀, 공통 컴포넌트
│   ├─ style.py            # CSS 스타일 주입
│   ├─ design_tokens.py    # 디자인 토큰 (색상, 폰트, 간격 등)
│   └─ landing.py          # 랜딩 페이지
│
├─ data/                    # 데이터 파일
│   ├─ agent6_final_db.xlsx
│   ├─ agent6_final_reg_db.xlsx
│   └─ insights/           # JSON 인사이트 데이터
│       ├─ tab1.json
│       └─ tab2.json
│
├─ fonts/                   # 폰트 파일
│   ├─ AritaDotumKR-*.ttf
│   └─ AritaSansLTN-*.ttf
│
├─ assets/                  # 이미지 에셋
│   └─ 1.jpg ~ 6.jpg       # 이미지 타입 가이드 이미지
│
├─ requirements.txt         # Python 의존성
├─ runtime.txt             # Python 버전
└─ README.md

🚀 주요 기능

Tab 1: 콘텐츠 활용도 모니터링

2개의 서브섹션으로 구성:

  1. 이미지 타입별 활용 분포 모니터링
  • 각 국가별로 사용되는 이미지 타입의 개수 및 비율
  • 가장 많이 사용된 이미지 타입 TOP 2
  • 시각화: Bar Chart (Plotly)
  • AI 분석 및 전략 요약
  1. 이미지 타입별 참여율 분포 모니터링
    • 이미지 타입별 참여율
    • 좋아요/댓글 수(engagement score) 분포
    • AI 해석 요약

Tab 2: 성과 분석 & 패턴 도출

4개의 서브섹션으로 구성:

  1. 성과 및 반응 성격 분석

    • 이미지 타입별 성과 분석
    • 이미지 타입별 반응 패턴
    • 평균/중앙값 성과 비교
    • AI 분석 요약
  2. 고성과 분석

    • Top 10% / Top 30% 성과 달성 구성
    • 고성과 콘텐츠 내 이미지 타입 집중도
    • Top 10% / Top 30% 달성 확률
    • AI 분석 요약
  3. 안정성 분석

    • 분석 지표
      • 표준편차(STD): 성과 변동성 측정
      • IQR(사분위수 범위): 중간 50% 퍼짐 정도
      • 변동계수(CV): 상대적 변동성
    • AI 안정성 요약
  4. 전략 인사이트

    • 활용도 vs 성과 분석
    • 과소 활용 타입 (확대 후보)
    • 과대 활용 타입 (축소/개선 후보)
    • 종합 인사이트 요약

Tab 3: AI 콘텐츠 성과 예측

  • 이미지 업로드 기반 성과 예측
  • 국가별 상대적 성과 위치(Percentile) 제공
  • 이미지 타입 자동 분류
  • AI 해석 및 인사이트 제공

📦 모듈 설명

app.py

  • Streamlit 앱의 메인 엔트리 포인트
  • 페이지 설정, 헤더 렌더링
  • 사이드바 필터 (국가 선택)
  • 탭 라우팅

tabs/

  • tab1_usage.py: 콘텐츠 활용도 모니터링 화면
  • tab2_performance.py: 성과 분석 및 패턴 도출 화면
  • tab3_predict.py: AI 기반 성과 예측 화면

utils/

  • data_loader.py:

    • 엑셀 파일 로드 (@st.cache_data 사용)
    • 국가 목록 추출
  • eda_metrics.py:

    • 국가별 데이터 전처리
    • 이미지 타입별 분포 계산
    • 성과 요약 (평균, 중앙값)
    • Top N% 확률 및 집중도 계산
    • 안정성 지표 (STD, IQR, CV)
    • 활용도 vs 성과 분석
    • 반응 성격 분석
  • charts.py:

    • Plotly 기반 차트 생성 함수
    • 국가별 차트 (분포, 성과, Top N%, 안정성 등)
    • 국가 코드 → 한글 이름 변환
  • insight_text.py:

    • 자동 인사이트 문구 생성
    • 활용도, 성과, 고성과, 안정성, 전략 인사이트
  • insights_store.py:

    • JSON 형식의 사전 생성된 인사이트 데이터 로드
    • 탭별 인사이트 관리
  • metrics.py:

    • KPI 계산 함수
    • 활용도 및 성과 지표 계산

models/

  • cv_model.py:
    • MultiTaskModel 정의 (EfficientNet-B0 기반)
    • 모델 로드 및 추론
    • 이미지 전처리 변환
    • 이미지 타입 설명 딕셔너리

components/

  • layout.py: 헤더, 섹션 타이틀, 공통 UI 컴포넌트
  • style.py: CSS 스타일 주입
  • design_tokens.py: 디자인 시스템 토큰 (색상, 폰트 크기, 간격, 테두리 등)
  • landing.py: 랜딩 페이지 컴포넌트

🌏 지원 국가

  • SG: 싱가포르
  • MY: 말레이시아
  • TH: 태국
  • ID: 인도네시아
  • PH: 필리핀
  • VN: 베트남
  • JP: 일본

🖼️ 이미지 타입

  1. Type 1: 여러 제품을 함께 보여주는 제품 단체샷
  2. Type 2: 한 제품을 단독으로 강조한 제품 단독샷
  3. Type 3: 제품 제형/텍스처를 중심으로 한 제품 질감샷
  4. Type 4: 모델과 제품을 함께 배치한 이미지
  5. Type 5: 제품 없이 모델 중심으로 연출된 이미지
  6. Type 6: 여러 인물과 제품을 함께 보여주는 이미지

📊 주요 지표

참여율 (Engagement Rate)

eng_rate = (likes + comments) / followers

Top N% 확률

  • 각 이미지 타입이 상위 N% 성과를 달성할 확률
  • 국가별 기준선(threshold) 계산

안정성 지표

  • STD: 표준편차 (낮을수록 안정적)
  • IQR: 사분위수 범위 (낮을수록 퍼짐 적음)
  • CV: 변동계수 = STD / Mean

활용도 vs 성과

  • 과소 활용: 성과는 좋은데 활용도가 낮은 타입 (확대 후보)
  • 과대 활용: 활용도는 높은데 성과가 낮은 타입 (축소/개선 후보)

🛠️ 설치 및 실행

1. 의존성 설치

pip install -r requirements.txt

2. 앱 실행

streamlit run app.py

3. 브라우저에서 접속

기본적으로 http://localhost:8501에서 실행됩니다.

4. 배포 버전 확인

https://ap-signal-2026.streamlit.app

📝 주요 의존성

  • streamlit==1.31.1: 웹 애플리케이션 프레임워크
  • pandas==2.1.4, numpy==1.26.4: 데이터 처리
  • plotly==5.18.0: 인터랙티브 차트
  • torch==2.2.2, torchvision==0.17.2: 딥러닝 모델
  • scikit-learn==1.4.2: 머신러닝 유틸리티
  • openpyxl: 엑셀 파일 읽기
  • pillow==10.2.0: 이미지 처리
  • streamlit-option-menu==0.3.13: 옵션 메뉴 컴포넌트

🔄 데이터 흐름

  1. 데이터 로드: data_loader.py에서 엑셀 파일 로드
  2. 전처리: eda_metrics.pypreprocess_country_data()로 국가별 데이터 정제
  3. 분석: 각종 지표 계산 (분포, 성과, 안정성 등)
  4. 시각화: charts.py의 Plotly 함수로 차트 생성
  5. 인사이트: insight_text.py로 자동 인사이트 생성
  6. 표시: Streamlit으로 화면에 렌더링

📈 분석 워크플로우

사용자 국가 선택
    ↓
데이터 전처리 (preprocess_country_data)
    ↓
지표 계산 (eda_metrics 함수들)
    ↓
차트 생성 (charts 함수들)
    ↓
인사이트 생성 (insight_text 함수들)
    ↓
화면 표시 (Streamlit)

🎯 주요 분석 항목

1. 활용도 분석

  • 이미지 타입별 사용 빈도
  • TOP 2 타입 식별

2. 성과 분석

  • 평균/중앙값 참여율
  • 좋아요/댓글 수 분포
  • 이미지 타입별 성과 순위

3. 고성과 분석

  • Top 10%/30% 달성 확률
  • 고성과 콘텐츠 내 타입 집중도

4. 안정성 분석

  • 변동성 측정 (STD, IQR, CV)
  • 예측 가능성 평가

5. 전략 분석

  • 활용도 vs 성과 매트릭스
  • 과소/과대 활용 타입 식별
  • 최적 활용 전략 제안

📌 참고사항

  • 데이터 파일은 data/ 디렉토리에 위치해야 합니다.
  • 모델 파일은 models/ 디렉토리에 위치해야 합니다.
  • 인사이트 JSON 파일은 data/insights/ 디렉토리에 위치해야 합니다.
  • 폰트 파일은 fonts/ 디렉토리에 위치해야 합니다.
  • 국가별 데이터가 없는 경우 경고 메시지가 표시됩니다.
  • 모든 차트는 Plotly 기반으로 인터랙티브합니다.
  • 디자인 시스템은 components/design_tokens.py에서 중앙 관리됩니다.

About

메인 레포지터리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages