월간데이콘 멀티모달 이미지 기반질의 응답 경진대회

미남홀란드·2023년 8월 8일

경진대회

목록 보기
2/2

🎊 대회결과


PUBLIC 3위

PRIVATE 2위

🎉WINNER 등급 2위로 대회 마감 🎉

💁‍♂️ 대회소개


💡 이미지 기반 질의응답 AI 모델 개발

  • 멀티모달 AI는 서로 다른 유형의 데이터를 결합하여 사용하는 기술로, 텍스트와 이미지 등 다양한 데이터를 종합적으로 다루는 기술입니다.
  • 이미지를 텍스트로 변환하는 것은 물론, 텍스트를 기반으로 이미지를 생성하는 등 광범위한 응용분야에서 활용되고 있습니다.

👉 대회일정

👉 대회규칙

📂 데이터설명


Dataset Info.

image [폴더]

  • train [폴더] : 107,231개 이미지
  • test [폴더] : 11,915개 이미지

train.csv [파일]

  • ID : 질문 ID
  • image_id : 이미지 ID
  • question : 이미지 관련 질문
  • answer : 질문에 대한 정답

test.csv [파일]

  • ID : 질문 ID
  • image_id : 이미지 ID
  • question : 이미지 관련 질문

sample_submission.csv [파일] - 제출 양식

  • ID : 질문 ID
  • answer : 질문에 대한 답변

📄  Code


https://github.com/jh941213/dacon-multimodal-vqa

🏆 대회 전략


Baseline Reference

  • 베이스코드만 공부해도 엄청난 도움이 될거라고 생각했다. 비전처리를 한 후 자연어처리로 넘어가는 멀티모달의 과정이기 때문에 베이스라인을 꼼꼼하게 코드리딩을 했던것 같다.
  • Resnet50 → EfficientNet 으로 변경
  • GPT2 → LLM 모델 으로 변경

BaseLine 근처의 점수를 순회하였다. 또한 LLM 수정 과정에서 많은 에러를 직면하였다.

GIT: A Generative Image-to-text Transformer for Vision and Language

코드 공유에서 참조한 git-base 모델이다. 마이크로소프트 리서치에서 개발한 멀티모달이고 트랜스포머를 활용한 디코더 모델이다.

  • https://github.com/ddobokki/dacon_vqa 위코드를 참조하여 ipynb 파일로 변경해서 가상환경에서 돌리게끔 코드를 수정
  • VQA Dataset 을 관련한 사전학습, 파인튜닝이 불가능했기에 coco dataset을 활용한 git-base-coco 모델을 활용하였다.
  • git-large 모델 크기가 큰 모델로 학습을 하였을때 조금이나마 성능이 증가한 모습이었다.
  • VATEX 관련데이터셋이 있었지만 무슨이유인지 모르겠으나 모델 학습이 되지 않았다.(추후 디버깅)
  • Transform 등을 활용한 전처리를 진행해보았으나 정규화말고는 불필요하다고 판단하였다. 다양한 기법들이 있겠지만 테스트셋도 동일한 이미지 위치의 환경일테고, 각도라던지 컬러관련해서 전처리하는것이 큰 의미가 없을것이라고 판단하였다. → 그래서 좋은 언어모델이 필요하다고 생각하였다.

가장 높은 점수를 기록하였으며 상위권 사람들과 비슷한 점수였다. 그러나 수상권의 점수에는 들지를 못했다.

Pix2Struct: Screenshot Parsing as Pretraining for Visual Language Understanding

Google-Reserch 에서 만든 멀티모달 모델이다. 위 모델도 비교적 최신에 나온 모델이라 모델셀렉션을 하면서 괜찮겠다 생각을 했다.

https://github.com/google-research/pix2struct

  • Task 별로 이미 모델자체가 매우 많이 만들어져있었으나 활용가능한 모델이 없었다.

  • DocVQA, ChartVQA 를 활용하면 fine-tunning 이 가능하지 않을까 생각
  • pix2struct 베이스 모델로 fine-tunning 작업을 선택하였으나 오류가 많이떠서 실패하였다.

결과론적으로 Trainning 에 성공하진 못하였다 시간이 없었기 때문에 deep 하게 코드를 볼 수 없었다.

LLAVA : Large Language and Vision Assistant

CVPR2023 에 소개도되고 ,GPT-4 수준의 기능을 갖춘 대규모 언어 모델

https://github.com/haotian-liu/LLaVA

  • LLaMA1을 자연어처리모델로 사용하고 있었고, 현재 LLaMA2 가 나와서 관련하여 업데이트 진행중이었다.
  • LLM 의 파라미터 7B, 13B 로 추론이 가능했으나 현실적인 자원문제로 인하여 7B 모델로 학습진행
  • Vicuna 7B 를 활용한 학습 진행 → LLaMA2 이전에 Open LLM 리더보드 좋은 점수를 가진 모델이었다. 팔콘 모델이전의 SOTA, LLaMA처럼 KoVicuna 등 다양하게 오픈소스가 활용되는 모델이다.
  • LLaVA-Pretrain 데이터셋을 활용하여 LLaVA Lighting 모델을 학습하였고, 앞선 여러모델을 사용해본 결과 비전쪽 처리는 어느정도 성능이 비슷하였기에 자연어처리 언어모델이 중요하다고 생각하였다.

→ Fine-Tunning 을 우리의 데이터셋으로 하였을때 얼마나 비슷하게 추론을 해주냐가 관건이라 생각함

  • pyfile 로 구성이 되어있었기에 코드를 리딩하며 수정을 하였다.

1epochs 당 10시간이 걸렸고 , 대회마감까지 2에폭을 학습시켜보며 추론을 할 수 있었다. 그 결과 리더보드 3등 점수에 도달하였고 에폭을 1회 더 학습을 시킨결과 private 점수에서 3등에서 2등으로 추월한 결과가 나오지 않았나 생각한다.

🙇‍♂️ Positive & Negative


🙆 Positive

  • 모델 셀렉션
  • 데이터셋에 대한 판단 모델에 맞는 데이터 구성

🙅 Negative

  • pyfile 관련 코드 실행 능력
  • reference 모델을 끝까지 실행 못한 점

🎥 대회를 마치며


멀티모달은 더욱더 중요해질 것이고, 여러분야에서 쓰일것이라고 생각한다. 하면서도 매우어려운 대회였다. 물론 누가 잘 만들어놓은 모델이 있었기에 학습을 시키는데 어려움은 없었지만, 엔지니어의 역량으로써 멀티모달은 또다른 숙제가아닐까 생각을 했다. 이번에 생각보다 높은 결과를 내어서 만족하지만 더욱 공부해야 될게 많다고 느끼게된 대회였던 것 같다.

profile
AI engineer

0개의 댓글