← 전체 프로젝트 목록

수업 프로젝트 · 인공지능융합프로젝트2 (대학원 수업) · 기업 산학 멘토링

게임 연령등급·위험요소 멀티모달 분류

평균 정확도만 보지 않고, 등급을 크게 틀리는 오류와 일부 데이터에만 있는 위험요소 라벨을 학습과 평가 구조에 반영했습니다.

기간
2026.03 – 2026.07
소속
인공지능융합프로젝트2 (대학원 수업) · 기업 산학 멘토링
역할
데이터 전처리·학습셋 구성, 멀티모달 모델 구조 수정, 학습·평가, 웹 프로토타입과 판정 근거 시각화
협업
산학 멘토(모델 아이디어 제안·검토), 수업 담당자, 서버 담당자
  • Python
  • PyTorch
  • Transformers
  • XLM-RoBERTa
  • ViT
  • Cross-modal attention
  • Flask

게임 설명 텍스트와 스크린샷으로 연령등급과 7개 위험요소를 함께 예측하는 대학원 수업 산학 프로젝트(ARGUS)입니다. 전달받은 42만여 건의 데이터를 정제해 학습셋을 만들고, 멘토 아이디어와 기존 코드를 바탕으로 멀티모달 모델과 손실 함수를 수정·구현했으며, 판정 근거를 보여주는 웹 프로토타입까지 연결했습니다.

해결하려던 문제

게임 콘텐츠가 늘어나면서 수작업 심의의 부담과 판정 일관성이 문제가 되고 있었습니다. 평균 정확도만으로는 모델을 판단하기 어려웠습니다.

  • 오류의 비용이 다릅니다. 전체이용가를 청소년이용불가로 판정하는 것처럼 등급 차이가 큰 오분류는 실제 심의에서 훨씬 치명적입니다.
  • 위험요소 라벨이 일부에만 있습니다. 라벨이 없는 데이터를 “위험요소 없음”으로 학습하면 모델이 잘못된 정답을 배웁니다.
데이터에서 판정 화면까지개념도 · 직접 작성
  1. 플랫폼별 게임 데이터42만여 건
  2. 원천 데이터
  3. 정제·학습셋 구성병합·중복 제거·등급 매핑
  4. 학습·평가
  5. 멀티모달 모델텍스트 + 이미지 · 손실 수정
  6. 추론 서버
  7. 웹 프로토타입예상 등급·위험점수·근거
  • 본인 담당
  • 외부 장비·시스템
모델 아이디어는 산학 멘토가 제안했고, 본인은 기존 코드를 이어받아 구조를 수정·구현하고 검토받았습니다.

담당 범위와 협업

직접 한 일

  • Steam·IGDB·Google Play 데이터 병합, 중복 제거, 통합 등급 매핑, 이미지·등급 누락 데이터 제외
  • XLM-RoBERTa 텍스트 특징과 ViT 이미지 특징을 cross-modal attention으로 결합하는 구조 수정
  • 4단계 연령등급과 7개 위험요소(폭력·선정·도박·공포·언어·범죄·약물) 동시 예측
  • 등급 차이 기반 Distance Penalty, 라벨 보유 데이터만 반영하는 Masked Risk Loss 구현
  • 학습·파라미터 조정, 다각도 평가와 실패 원인 분석
  • Flask 추론 서버와 웹 화면, 판정 근거 시각화

협업 범위

  • 원천 데이터 수집 (산학 협력 기업)
  • 모델 아이디어 제안과 검토 (산학 멘토)
  • 학습 서버 운영 (서버 담당자)

주요 판단과 선택 이유

  • 등급을 크게 틀릴수록 더 큰 벌점을 줬습니다. 등급 차이의 제곱과 클래스 가중치를 반영하는 Distance Penalty를 손실에 넣었고, 평가에서도 이런 대폭 오분류를 따로 보는 지표(CER)를 썼습니다.
  • 위험요소 라벨이 없는 데이터는 위험요소 손실에서 뺐습니다. 라벨이 없다고 위험이 없는 것은 아니어서, 라벨이 있는 데이터만 반영하는 Masked Risk Loss를 구현했습니다.
  • 결과는 지표 여러 개로 나눠 봤습니다. Accuracy와 함께 Macro·Weighted F1, 혼동행렬, 위험요소별 F1·ROC-AUC를 봐서 강한 부분과 실패한 부분을 나눠 설명했습니다.
  • 서버 접근이 제한된 환경에서는 실험 조건을 미리 묶어 전달했습니다. 필요한 실험 조건, 파라미터, 확인 사항을 사전에 정리해 서버 담당자에게 한 번에 전달했습니다.

구현·실험 과정

  1. 회사가 수집한 게임 420,747건을 플랫폼별로 병합하고, 중복과 이미지·등급 누락 데이터를 제외해 학습셋을 만들었습니다. 학습·검증·테스트는 90:5:5로 나눴습니다.
  2. 텍스트와 이미지 특징을 결합한 모델에 위 두 손실을 넣어 학습하고 파라미터를 조정했습니다.
게임 스크린샷은 ViT로, 게임 설명 텍스트는 XLM-RoBERTa로 들어가 MatMul·Scale·Softmax·MatMul·FC·Norm으로 이루어진 Cross-modal Attention 블록을 거친 뒤 Rating Head와 Risk Head로 나뉘는 구조도
과제 문서 그림모델 구조입니다. XLM-RoBERTa로 뽑은 텍스트 특징과 ViT로 뽑은 이미지 특징을 cross-modal attention으로 결합하고, 연령등급(Rating Head)과 위험요소(Risk Head)를 함께 예측합니다. 구조 아이디어는 산학 멘토가 제안했고, 본인은 기존 코드를 이어받아 이 구조로 수정·구현했습니다.
  1. Flask 추론 서버와 HTML·CSS·JavaScript 화면을 만들어, 게임 제목·설명·스크린샷을 넣으면 예상 등급(GRAC·ESRB), 7개 위험점수, 판정 근거가 나오게 했습니다.
청소년 이용불가 판정좀비 게임을 입력해 청소년 이용불가·AO 등급과 Violence 22.7%가 가장 높은 위험요소 점수, 이미지 heatmap과 단어 기여도가 나온 화면
전체 이용가 판정액션 RPG를 입력해 전체 이용가·E 등급과 Horror 19.1%가 가장 높은 위험요소 점수, 이미지 heatmap과 단어 기여도가 나온 화면
실제 화면웹 프로토타입입니다. 게임 제목·설명·스크린샷을 넣으면 한국(GRAC)·북미(ESRB) 예상 등급, 7개 위험요소 점수와 설명, 이미지 attention heatmap과 단어별 기여도가 나옵니다.
  1. 중간발표에서 설명 가능성이 부족하다는 피드백을 받아, 이미지 attention heatmap, cross-modal attention 가중치, 텍스트 기여도 시각화를 추가했습니다.
좀비 게임 스크린샷 원본과 같은 장면에 attention heatmap을 겹친 이미지, 그 아래 이미지 주목도 100% 막대
실제 화면중간발표 피드백 뒤 추가한 판정 근거 화면입니다. 왼쪽은 입력 스크린샷, 오른쪽은 모델이 주목한 영역을 겹친 attention heatmap이고, 아래 막대는 이미지별 cross-modal attention 가중치입니다.

결과와 검증

평가값
테스트 표본21,038건
연령등급 Accuracy67.4%
Macro F1 / Weighted F10.62 / 0.72
대폭 오분류 비율 (CER)31.68%
위험요소 F1 (라벨 보유 테스트 2,084건)폭력 91.0%, 언어 89.4%, 도박·범죄·약물 0

출처: 최종발표·보고서 평가표. CER은 개선 폭이 아니라 최종 모델의 오류를 측정한 값입니다.

  • 위험요소별로 나눠 평가해, 평균 정확도에 가려져 있던 실패를 찾았습니다. 도박·범죄·약물은 양성 데이터가 부족해 F1이 0이었고, 원인을 데이터 불균형으로 분석해 보고서에 정리했습니다.