디스플레이, 추가 및 Tell 이동, 설명 생성

읽은 이미지에서 설명을 생성하는 모델 중 하나인 Show, Attend and Tell의 이동 방법을 적어 둡니다.
https://github.com/kelvinxu/arctic-captions
(Issue로 보아 많은 사람들이 난처해하며 자신도 처음에는 좀 넘어졌다)
아마도 대부분의 사람들이 데이터 집합의 제작 방법을 모르기 때문에 이 점과 관련이 있다고 나는 생각한다.

자막 생성례, 말 두 마리가 보이는 것 같아요.

먼저 실행하다


https://github.com/AAmmy/show-attend-and-tell-8x512
. 자술한 라이브러리가 필요합니다. Caffe가 필요하지 않습니다.
이미지 피쳐 및 설명
http://cs.stanford.edu/people/karpathy/deepimagesent/
(COCO 750MB) 다운로드, coco.py 아래에 설명된 위치에 놓고,
scripts.py의 노트에서 보듯이THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python evaluate_coco.py실행하면 공부가 시작됩니다.
250update마다 제목 예시와 생성된 제목을 표시합니다. 처음에는 아무것도 출력되지 않지만 천천히 문장을 형성합니다.
TITAN X로 3시간 정도 BLEU 값과 논문 차이가 많지 않습니다. 15시간 정도 early stop 학습이 끝났습니다.

어떤 그림을 넣을까


잠시 후 (generate_caps와neraltalk의 extract featurepy 사용)

이미지 특징


다운로드 파일을 포함하는 이미지의 특징은 4096비트입니다. 이것은coco입니다.py에서 8x512로 사용합니다.
논문에서 196x512에서 꺼낸 것을 사용했는데 4096차원도 순조롭다.

align.pkl


원래의 코드는 사전 학습, 개발, 테스트 데이터 집합과 사전이지만, 나의 코드는coco이다.py로 공부를 시작할 때 만들어요.
데이터의 형식,
train = [
            [["a dog is running.", 0], ...], # キャプション
            [[000000000000], ...] # 特徴
        ]
설명은 문장과 숫자가 목록이 된다는 것이다. 숫자는 이 문장을 가진 이미지의 특징 벡터가 특징 목록에 들어가는 몇 번째를 가리킨다.

사전


모든 자막의 단어 수를 주파수순으로 출력할 뿐입니다. collections를 잘 사용하면 더 쉽게 할 수 있을 것 같습니다.
coco.py
from collections import OrderedDict
dict_count = {}
for cs in cap_:
    for c in cs:
        for w in c.split():
            if w in dict_count:
                dict_count[w] += 1
            else:
                dict_count[w] = 1
dict_ordered_by_count = OrderedDict(sorted(dict_count.items(), key = lambda x:x[0]))
dict_ordered_by_count = OrderedDict(sorted(dict_ordered_by_count.items(), key = lambda x:-x[1]))
worddict = {k:i+2 for i,k in enumerate(dict_ordered_by_count.keys())}
예를 들어 "a"가 가장 많이 나오는 단어일 때worddict['a'] = 2그 다음으로 많은 단어가'on'일 때worddict['on'] = 3출력. 0과 1은 및 UNK에서 열립니다.

거치다


처음에 Show, Attend and Tell을 터치할 때 잘 움직이지 못해서 newraltalk를 사용해 봤어요https://github.com/karpathy/neuraltalk
왠지 이해가 가는 것 같아서 Show, Attend and Tell을 사용합니다. 특징 추출에 시간이 걸리기 때문에 newraltalk를 사용하는 사람들이 사용하는 것을 사용합니다. Flickr8k에서 공부에 실패했습니다. 30k는 시도하지 않았습니다.
이후 attention을 표시하고 싶어서 이미지에서 CNN으로 특징 추출을 했지만 BLEU 값이 낮았다.
Issue를 보면 몇 명이 BLEU가 낮다고 합니다.
특징을 추출하는 방법이 좋지 않은 것 같습니다. (Issue에 포함된 사람들)
http://www.statmt.org/wmt16/multimodal-task.html
시도하지 않은 것은 여기에 논문과 같은 형식의 Flickr30k 데이터가 있다는 것이다.

총결산


입력 데이터가 완료되면 즉시 이동합니다.
특징 벡터가 잘 추출되지 않으면 BLEU가 아닙니다.
학습 매개 변수는capgen입니다.py의train()에는flickr8k용,evaluate_coco.py에 적힌coco용.flickr30k는coco파라미터의 숨겨진 층을 1300등으로 하는 것이 가장 좋다.

좋은 웹페이지 즐겨찾기