看圖說話實戰教程 | 第一節 | 教程簡介及準備工作

引言

在這裏插入圖片描述

從上圖中你看到了什麼?

你會說"一條站在草地上的小狗"、"草地上的一條白色小狗"等等,這些都是能夠描述這張圖片傳達的信息的。

對我們人類而言,用文字描述圖片這項任務非常簡單,即使是5歲的小孩子也能非常準確地總結出圖片中的信息。但是,對於計算機來說,這項任務並不簡單,不僅需要準確理解包含在圖片中的內容,而且還需要將這些內容組織成一段語意連貫的文字描述。

我們將這種用一段文字概述圖片內容的任務定義爲看圖說話 (Image Captioning) ,其輸入是一張圖片,輸出是一段文字描述。看圖說話是一種結合了計算機視覺 (Computer Vision) 和自然語言處理 (Natural Language Processing) 兩大領域的綜合性的智能任務,既需要計算機視覺技術來理解圖片裏面包含的內容,也需要自然語言處理技術來將對圖片的理解轉換成相應的語意連貫的描述性的文字。

在現實生活中,看圖說話有很多的應用場景。比如,用戶拍了一張照片後,利用Image Captioning技術可以爲其生成合適的文字方便以後檢索或省去用戶手動配文。此外,它還可以幫助視覺障礙者去理解圖像內容。視頻解說 (Video Captioning) 任務與看圖說話任務相類似,兩者不同之處在輸入的形式不同。視頻解說任務的輸入是一段視頻,輸出是一段對視頻的描述。

除了在計算機視覺及自然語言處理領域被廣泛使用並取得非常好的效果之外,深度學習方法在看圖說話任務上也取得了當前最優的結果。但是,在深度神經網絡取得巨大進展之前,即使是最頂尖的計算機視覺研究人員,也無法使用一種行之有效的方法來解決這個難題。有了深度學習方法,這個問題相比過去變得非常容易解決,只要有理想的數據集。深度學習方法爲解決看圖說話任務帶來的一個巨大的優勢在於我們不再需要異常複雜的數據處理或者一套精心設計的模型工作流,取而代之的是定義一個端到端模型直接生成一張圖片的文字描述。

斯坦福大學李飛飛教授的博士生Andrej Karapathy在其博士論文《Connecting images and natural language》中已經對這個問題進行了詳細的研究。建議感興趣的同學去讀一讀,加深對這個任務的理解。

教程安排

在這篇教程中,你將會學習到如何從頭開始開發並部署自己的基於深度學習技術的看圖說話模型。完成這個教程,你將會知道:

  1. 如何準備圖片和文本數據用於看圖說話模型的訓練、評估與測試
  2. 如何設計並訓練你的基於深度學習技術的看圖說話模型
  3. 如何評估訓練好的看圖說話模型並用來爲新的照片生成準確的文字描述
  4. 如何部署你的看圖說話模型

本篇教程將被劃分爲如下六小節:

第一節:教程介紹及準備工作

第二節:圖像及文本數據預處理

第三節:看圖說話模型的構建及訓練

第四節:看圖說話模型評估

第五節:測試及部署你的模型

第六節:模型優化及思路擴展

教程基礎

完成這篇教程,你需要有Python編程語言基礎,熟悉Python的語法及數據結構,做過文本處理,對Keras、Numpy等框架有所瞭解,還要了解並熟悉一些深度學習的基本概念,如多層感知器,卷積神經網絡,循環神經網絡,遷移學習,梯度下降,反向傳播,過擬合等。

開發環境配置

這篇教程需要安裝Python 3.5及以上版本,Python數值計算庫NumPy,以及深度學習庫Keras 2.0.6及以上版本。確保你已經在自己的電腦上安裝瞭如下的依賴包:

pip install Keras==2.0.6, numpy=1.18.1, tqdm, Pillow==7.0.0
pip install tensorflow==1.9.0 (如果沒有GPU)
pip install tensorflow-gpu==1.9.0 (如果有GPU)

Keras的默認後端計算框架是TensorFlow。

爲了能夠保證更快地訓練本篇教程中的看圖說話模型,強烈建議大家使用帶有GPU的計算機進行訓練。詳細的GPU深度學習環境配置,請參考這篇博客《深度學習環境配置》。如果沒有GPU計算資源,也不會妨礙完成本教程的學習,安裝對應的CPU版本的tensorflow即可。

看圖說話數據集

有很多開放的數據集可供使用,比如Flickr8K、Flickr30K以及MS COCO等。在這篇教程中,我們使用伊利諾伊大學香檳分校發佈的Flickr8K數據集。之所以選擇這個數據集是因爲它相對來說比較小,即使沒有GPU計算資源,你能在自己的工作機上也能使用CPU構建模型。

Flickr8K數據集包含了約8000張圖片,每張圖片包含了5條文字描述。其中,訓練集、驗證集與測試集的大小分別爲6000、1000、1000。關於這個數據集更多的細節參見論文《Framing Image Description as a Ranking Task: Data, Models and Evaluation Metrics》。

在這裏插入圖片描述

關注“語言智能技術筆記簿”公衆號或掃描博客底部二維碼添加關注,回覆"Flickr8k"獲取下載鏈接。


想要了解更多的自然語言處理最新進展、技術乾貨及學習教程,歡迎關注微信公衆號“語言智能技術筆記簿”或掃描二維碼添加關注。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章