heheh
히히
heheh
전체 방문자
오늘
어제
  • 히히 (75)
    • AI (14)
      • Model (Study) (3)
      • Model (Paper) (7)
      • Tip! (4)
    • Backend (3)
      • ASP.NET (1)
      • Spring (2)
      • program (0)
      • JAVA (0)
    • Program (11)
      • Docker (3)
      • Github (5)
      • AWS (3)
    • OS (1)
      • Window (1)
      • Linux (0)
    • Python (14)
      • Python Lib (11)
      • Pytorch (1)
      • Tensorflow (1)
      • 크롤링 (1)
    • Spark (3)
      • Scala (2)
      • Pyspark (0)
      • SQL (1)
    • IOS (Swift) (0)
      • 기본 개념 (0)
    • 프로젝트 (3)
      • [AI] GAN (0)
      • [IOS] Swift (3)
      • [AI] 추천시스템 (0)
    • 분석 (1)
    • 알고리즘 풀이 (22)
      • 백준 (22)
    • 기타 (3)
      • 장비세팅 (3)
      • 소개 (0)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
heheh

히히

NIC : 이미지 문장 번역
AI/Model (Paper)

NIC : 이미지 문장 번역

2021. 8. 9. 00:02

Show and Tell: A Neural Image Caption Generator

이번에 리뷰할 논문은 NIC 이다.

 

논문 : https://arxiv.org/abs/1411.4555

해석에 참고한 영상 : https://www.youtube.com/watch?v=yfsFW-mfOEY&t=146s (동빈나)

 

 

 

1. 모델

해당 모델은 이미지를 글로 번역하여 출력하는 기술이다.

모델은 크게 CNN + RNN 형태로 이루어져 있으며, 여기서 RNN은 LSTM을 사용하고 있다.
(해당 논문은 2015 논문이며 그 당시 최고의 번역 모델을 사용했다 볼 수 있다.)

 

[  CNN  ]     ->     context vextor(고정크기)     ->     [  RNN  ]    형태

 

  • 히든 스테이트 : 이전에 처리한 정보와, 지금 들어온 입력을 sigmoid 한 것.
    히든 스테이트도 입력과 같은 차원을 가진다 (?)

 

  • 출력 : FC를 거쳐 스팸 여부 (binary)를 출력 가능.
  • LSTM : 장기기억(cell state)와 단기기억(hidden state)의 두가지 상태를 가진다.
    forget gate : 어떤 정보를 잊게 만들지 결정하는 레이어. 가중치를 시그모이드 한 값이며, 오래된 정보중 필요없는 정보는 잊도록 만든다.
  • input gate: 새로운 정보를 cell state에 반영한다. 즉 새롭게 특정한 정보를 기억하도록 만든다.
  • 장기기억 : 이 forget gate와 input gate를 통해 만들어진다.
  • ouput gate : 장기기억과 현재 데이터를 이용해 단기기억을 갱신한다.
  • 모든 가중치(weight, 행렬형태)는 전체적으로 공유된다.
     
  • BLEU 스코어로 결과를 확인하였다. (보통 1부터 4까지 확인한다.)
    (논문에서는 이 스코어도 불완전하기에 높은 값을 가져도 결과가 안좋을수 있다함.)

 

2. 코드 말풀이

  • Fliker8k로 학습
  • 단어가 등장할때마다 카운트해서, 실제로 차원으로 사용할 단어사전을 정한다.
  • 파이토치에 사용할수 있는 데이터셋으로 정의
  • 이미지는 rgb로 바꾸고 transform.
  • 캡션 문자열은 토큰을 붙여 학습용으로. (sos, eos)
  • 위 이미지와 캡션으로 구성된 튜플을 배치로 만들기.
  • 이미지 : (batchsize, 3, 256, 256)  (파이토치에서 이미지처리에 많이쓰는 shape)
    타겟 : (batch size, padded_length)
  • 파이토치의 데이터 로더 적용
  • 인코더CNN
    resnet의 기존 FC레이어를 제거하고 우리의 워드임베딩차원의 FC레이어를 새로 붙인다.
    def forward : 이미지를 resnet에 넣고, flatten해서 FC에 넣음.
  • 디코더RNN
    일반적 LSTM.
    임베딩 - lstm - linear
    forward : 짧은 문장엔 패딩넣기. lstm - FC레이어
    매번 hidden 뽑아서 쌓아서 결과 내기.
  • 학습 및 평가
    학습 이미지셋에 대해 Augmentation, Nomalization .
    val과 test는 리사이즈, Nomalization .
    인코더, 디코더정의. 여기선 Adam으로 옵티마이저 업뎃

 

 

 

 

3. 후속 연구

Neural Image Caption with Visual Attention (ICML 2015)

- NIC에 어텐션 기법 적용

고정된 context vector는 병목 현상 및 정보 손실이 일어난다.

s2s 모델에 어텐션 매커니즘을 사용한다. 즉, 디코더는 인코더의 모든 출력을 참고한다.

각 h의 중요한 정도를 가중치로(w) 저장한 다음 출력에 활용하는 어텐션 매커니즘을 활용.

 

장점은 결과에 설명이 가능하다는 것.

시각화를 하면 어떤 정보를 중요하게 여겼는지 확인이 가능하다!

'AI > Model (Paper)' 카테고리의 다른 글

Attention : NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE  (0) 2021.06.28
[Seq2Seq] Sequence to Sequence Learning with Neural Networks  (0) 2021.06.19
[코드] 오토인코더 - Training Deep AutoEncoders for Collaborative Filtering  (0) 2021.03.02
[논문] 오토인코더 - Training Deep AutoEncoders for Collaborative Filtering  (0) 2021.02.26
(진행중)Transformer : Attention Is All You Need 리뷰  (0) 2021.01.18
    heheh
    heheh

    티스토리툴바