Open NaJeehye opened 3 years ago
dataset download시 (ubuntu 기준) //dropbox 데이터가 너무 커서 다운이 잘 안되므로, wget를 개별적으로 다 해서 살펴봐야함.
//======================= mkdir pre-trained-models cd pre-trained-models wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAC467iM_vQEHzJPKeSDdd-ja/pretrained-models/best_model.tar wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAstCvRzGPukOnqupbbZOJHa/pretrained-models/evalai_test.json wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAwh2pnuhK7sQCNBx-n9JJfa/pretrained-models/evalai_val.json
//=================================== cd .. mkdir vocabs cd vocabs wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAsh4wvfr23zyEHp8ZSsPKza/data/vocabs/fixed_answer_vocab_stvqa_5k.txt wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAUjcJTWJzBAuszte2KBsEoa/data/vocabs/fixed_answer_vocab_textvqa_5k.txt
//=================================== cd .. mkdir evaluation cd evaluation wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABqzgIT3XBNGIixgXtCaBQOa/data/evaluation/stvqa_eval_df_test.pkl wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACuq0Xw4gWgjfpT6fmFx1BTa/data/evaluation/stvqa_eval_df.pkl wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACVYaHJGtSmsfIGXY7sucV4a/data/evaluation/tvqa_eval_df_test.pkl wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABUWaSjULW27rYnLGMP0u5qa/data/evaluation/tvqa_eval_df.pkl
//===== 아래쪽이 큰덩어리임에 유의 cd .. mkdir stvqa cd stvqa wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAN5Adbk3_qQmRQ9ddie7cIa/data/stvqa/stvqa_test_imdb.npy wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADdHQ8i1dAD7dtTZH9O782ga/data/stvqa/stvqa_train_imdb.npy wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACFqtjJRDGBMk7A--AfFSVIa/data/stvqa/stvqa_val_imdb.npy
mkdir stvqa_test_obj.lmdb cd stvqa_test_obj.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADLsAG7SLpFEB3Sje_F35jaa/data/stvqa/stvqa_test_obj.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABp1UAe7F45tf3RZvW2Yv0Ha/data/stvqa/stvqa_test_obj.lmdb/lock.mdb
cd .. mkdir stvqa_test_ocr.lmdb cd stvqa_test_ocr.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABu0V7iHa3KJ0RWkYn_hD_Ha/data/stvqa/stvqa_test_ocr.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABp1UAe7F45tf3RZvW2Yv0Ha/data/stvqa/stvqa_test_obj.lmdb/lock.mdb
cd .. mkdir stvqa_trainval_obj.lmdb cd stvqa_trainval_obj.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACiUHt7Gj15AT263z9e6CG7a/data/stvqa/stvqa_trainval_obj.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAQZcu2DCsF3fJH646Nwjrca/data/stvqa/stvqa_trainval_obj.lmdb/lock.mdb
cd .. mkdir stvqa_trainval_ocr.lmdb cd stvqa_trainval_ocr.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACER67wlAdGTnqAhq-uQAkma/data/stvqa/stvqa_trainval_ocr.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACyAXAnlut5fNog7bfjKeSba/data/stvqa/stvqa_trainval_ocr.lmdb/lock.mdb?dl=0
//=================================== (data가 pwd가 되도록) 해당 것이 큰 덩어리임 cd .. cd .. mkdir textvqa cd textvqa wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAA0JiTo2qs9FVUaqusP9R3Ba/data/textvqa/tvqa_test_imdb.npy wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAD3_VsEL_DoGGj8If8i93-Da/data/textvqa/tvqa_train_imdb.npy wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACxHbS1_P-7UEfabyEuxNvPa/data/textvqa/tvqa_val_imdb.npy
mkdir tvqa_test_obj.lmdb cd tvqa_test_obj.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADer5SCqmKM16OesQpRryANa/data/textvqa/tvqa_test_obj.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADLL7HskzZn4OjfpPDjbJYta/data/textvqa/tvqa_test_obj.lmdb/lock.mdb
cd .. mkdir tvqa_test_ocr.lmdb cd tvqa_test_ocr.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAB1qg_hIfNTOUPCDaJQ_lGZa/data/textvqa/tvqa_test_ocr.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AABkbDmByTOqjXPr-IEJxitua/data/textvqa/tvqa_test_ocr.lmdb/lock.mdb
cd .. mkdir tvqa_trainval_obj.lmdb cd tvqa_trainval_obj.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AAAdPd6Yz2IsPQS_dFUjyz8na/data/textvqa/tvqa_trainval_obj.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADs_Mxx5pFXZJOfiMYPWIFCa/data/textvqa/tvqa_trainval_obj.lmdb/lock.mdb
cd .. mkdir tvqa_trainval_ocr.lmdb cd tvqa_trainval_ocr.lmdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AADHHI58aFQuAim4BSJqC2HZa/data/textvqa/tvqa_trainval_ocr.lmdb/data.mdb wget https://www.dropbox.com/sh/dk6oubjlt2x7w0h/AACbwDa_bkdk3nMg9EnClEXAa/data/textvqa/tvqa_trainval_ocr.lmdb/lock.mdb
//======================================끝
//11-21일 stvqa_val_imdb.npy 빼먹어서 추가합니다.
ver1.0.0
. Download ver 1.2.0
save/debug
foldersrv/share/ykant3/...
to the path you download (ex. /home/sam-textvqa/wiki.en.bin
)sam-m4c와 성능 비교할 수 있는 textvqa model
qa model
11/22 모델 팀 회의
우리의 모델 처럼 mmf를 기반으로 한 모델인데, 실시간으로 VQA를 진행하고 있음 http://vqa.cloudcv.org/ https://github.com/Cloud-CV/VQA ( code)
evaluation을 기존에 있던 것 말고, 다른 곳으로 하는 것은 어떨까? https://arxiv.org/pdf/1802.08218.pdf (해당 것은 시각장애인들을 위한 데이터 셋이다. 그들의 기준에서 맞춰진 것이니까, 더 타당한 기준일 듯싶다.)
사용 서버: ubuntu 사용 GPU: RTX 2080 *2
# => 위의 문제를 해결 하기위해서, 중간에 학습했던 것을 이어서 학습하는 epochs에 대한 기록을 해줄 필요가 있다. (--more_training 에대한 옵션을 training에 줘서 해보자.)
## 1-1. TVQA만 학습 :A Localized, Compositional Video Question Answering Dataset
### tag tvqa_changed1 => 이후 하려고 하니깐, 다른 분들이 1500mib 정도만 processes를 돌렸는데도 터져서 못 돌림.
### [Validation] Current VQA: 0.40772005915641785 at 6498 | Best VQA: 0.40547996759414673 at 6137 (17 epochs)
## [실패]1-2. TVQA 전부 학습 => shared memory의 부족때문에 불가능함. (어차피 stvqa, tvqa 맥락은 비슷한 데이터 셋이니까,넘기도록 하자.: epoch 1도 못넘기고 실패함)
## 1-3. STVQA만 학습: 장면 기반한 데이터셋 (100 epochs)
### tag stvqa_changed1
### [Validation] Current VQA: 0.40905630588531494 at 24500 | Best VQA: 0.41286149621009827 at 10290
결론: 시도는 했지만, 논문에서 만큼의 성능을 기대하기가 어렵다. (아직 beam search를 안했으니, 아래 4번에서 성능 개선의 여지가 있는지를 살펴보도록 하겠다. 하지만, 논문의 결과를 보면 그렇게 까지 나아지지 않을 것같긴하다.)
# build_map "3" :["1","31","32"], "5":["3","51","52"], ...
'''if self.needs_spatial:
# In the first iteration expand all the spatial relation matrices
if "spatial_adj_matrices" not in entry:
entry["spatial_adj_matrices"] = {}
build_map = {
"3": ["1", "31", "32"],
"5": ["3", "51", "52"],
"7": ["5", "71", "72"],
"9": ["7", "91", "92"],
}
'''
## 3-1.share5 ## => memory 부족해서 결국 실패 ==> beach_size 줄여서 다시 시도해보기
init 부분까지 작성하고 진수님께 전달해드렸는데, 해당 코드중에서 "self.model.load_state_dict(torch.load(self.textVQA_pretrained))"에 문제가 발생할 가능성 있음(train.py에서 직접적으로 load_state_dict를 불러왔는데, state_dict가 매치되지 않는 현상이 벌어짐) 아마 다른 방법으로 접근을 해야할 것같기도함. 아에 "evaluator.py"의 코드를 더 파보는 것이 맞는 접근 방법인 것같음
-최적화 TensorRT를 통한 최적화 https://github.com/NVIDIA-AI-IOT/torch2trt 원래 모델과 같은 방법으로 사용할 수 있음.
참고했던 웹사이트: https://eehoeskrap.tistory.com/414 혹시 우리가 사용하는 model에 적용되지 않으면 위 웹사이트에 제시된 방법 사용해야함
-인터페이스 원문 코드의 다양한 함수에서는 dataloader를 이용하여 batch_dict를 얻는다. 이를 잘 이용해보면 dataloader에서 split이 ["test"]인 dataset을 하나 가져와서 이 dataset에 있는 image, question을 우리가 원하는 image, question으로 바꾸면 가능할 것 같다. 다만 batch_dict안에 있는 key의 이름과 value의 type을 모르는 것이 문제이다.
mmf demo 로컬에서 구현하기 위한 세팅 (https://colab.research.google.com/drive/1Z9fsh10rFtgWe4uy8nvU4mQmqdokdIRR?usp=sharing#scrollTo=V1ROyH7yG11V)
우선 우리 팀 깃을 clone한 후, git checkout popup를 통해 popup branch를 연다. 구글 크롬에서 extention에 들어가서 load unpacked를 하면 'Ask your question'이 다운받아진다.
cd CS470 mkdir model_data wget -O ~/CS470/model_data/answers_vqa.txt https://dl.fbaipublicfiles.com/pythia/data/answers_vqa.txt wget -O ~/CS470/model_data/vocabulary_100k.txt https://dl.fbaipublicfiles.com/pythia/data/vocabulary_100k.txt wget -O ~/CS470/model_data/detectron_model.pth https://dl.fbaipublicfiles.com/pythia/detectron_model/detectron_model.pth wget -O ~/CS470/model_data/pythia.pth https://dl.fbaipublicfiles.com/pythia/pretrained_models/vqa2/pythia_train_val.pth wget -O ~/CS470/model_data/pythia.yaml https://dl.fbaipublicfiles.com/pythia/pretrained_models/vqa2/pythia_train_val.yml wget -O ~/CS470/model_data/detectron_model.yaml https://dl.fbaipublicfiles.com/pythia/detectron_model/detectron_model.yaml wget -O ~/CS470/model_data/detectron_weights.tar.gz https://dl.fbaipublicfiles.com/pythia/data/detectron_weights.tar.gz tar xf ~/CS470/model_data/detectron_weights.tar.gz
pip install yacs cython matplotlib pip install git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI
git clone https://github.com/facebookresearch/mmf.git mmf cd mmf sed -i '/torch/d' requirements.txt pip install -e .
cd cd CS470 git clone https://gitlab.com/meetshah1995/vqa-maskrcnn-benchmark.git cd vqa-maskrcnn-benchmark python setup.py build python setup.py develop
script.js파일에서 ajax를 통해 vqa.py로 데이터 전송하려고 시도중. vqa.py에서는 flask를 통해 데이터를 받은 후 모델을 통해 prediction얻은 뒤 다시 script.js에 전달해야함.
깃헙에 올려둔 ajax-flask 폴더에 있는 파일들을 CS470에 옮겨서 테스트 중.
[목표] textVQA fine-tuning 시켜서 training 하기
[기한 목표] ~11.20 : textVQA 다시 학습 & pretrained model학습 ~11.21 : 모델 팀 회의후, 결론 내기