基於tensorflow的視覺問答系統構建
視覺問答(Visual Question Answering,VQA),是多模態資料探勘的前沿應用之一,裡面涉及計算機視覺和自然語言處理的學習任務。VQA系統需要將圖片和問題作為輸入,結合這兩部分資訊,產生一條人類語言作為輸出。針對一張特定的圖片,如果想要機器以自然語言來回答關於該圖片的某一個特定問題,我們需要讓機器對圖片的內容、問題的含義和意圖以及相關的常識有一定的理解。
現有視覺問答的模型基本上都是基於LSTM來實現,其輸入一部分是問答的詞向量,一部分是圖片的CNN特徵。
因此常見的如採用VGG模型所產生的特徵,而問答的詞向量則採用常見的word2vec.
網上已經有很多相關的程式碼,因此首先找了一個比較經典的VQA來複現一下。主要參考:https://github.com/paarthneekhara/neural-vqa-tensorflow。主要是裡面有預訓練好的模型。
測試結果:
(1) 測試圖片一:http://img1.lvyou114.com/TukuMax/46/200912214425.JPG。
結果為:
問題: Which animal is this? | 相應的答案:giraffe 排名前5的答案: giraffe lion zebra goat bird |
問題: how many giraffes in the picture? | 相應的答案:2 排名前5的答案: 2 3 1 4 5 |
What is the color of the animal shown? | 相應的答案:brown 排名前5的答案: brown white tan black gray |
可以看出,對於動物的識別效果還可以,不過數量上就不行了,這也與VGG網路有關係,畢竟VGG網路沒有實現物體目標檢測。而顏色和類別識別還是可以的。
測試二:
問題:What are they doing?
相應的答案:surfing
排名前5的答案:
surfing
swimming
parasailing
water skiing
flying kite
測試圖片三:專門找個卡通的圖片測試一下。
相應的答案:tennis
排名前5的答案:
tennis
baseball
frisbee
surfing
skiing
從上述的動作識別來說,雖然比較接近,不過在排名第四,第五的動作卻相距甚遠,有可能是訓練資料集本身就不包含這樣的場景吧。
整個模型可能還少了些Attention機制,還只能處於實驗階段。