當前位置:
首頁 > 最新 > 使用深度學習自動為圖像添加字幕

使用深度學習自動為圖像添加字幕

AiTechYun

編輯:yuxiangyu

深度學習現在發展十分迅猛,每天都會出現多種應用程序。而想要了解深度學習的最好方法就是親自動手。儘可能嘗試自己做項目。這將幫助你更深入地了解它們,並幫助你成為更好的深度學習實踐者。

在本文中,我們將結合圖像和文本處理來構建一個有用的深度學習應用程序,即圖像字幕(Image Captioning)。它是指從圖像生成文本描述的過程,主要根據圖像中物體和物體的動作。例如:

這個應用在現實生活中有很多潛在的應用場景。要注意保存圖像的文本描述,以便在稍後的階段就可以根據此描述輕鬆檢索。


假設你看到這張照片:

你會首先想到什麼呢?也許通常人們可以想出以下幾句話:

一個男人和一個女孩坐在地上吃東西。

一個男人和一個小女孩坐在人行道上,靠近一個藍色的袋子吃東西。

一個穿著黑襯衫的男人和穿橙色連衣裙的小女孩分享一種吃的。

快速瀏覽一下就足以讓你了解和描述圖片中發生的事情。從人工系統自動生成這個文本描述就是圖像字幕的任務。

任務很簡單:生成的輸出期望用單個句子描述圖像中顯示的內容,如物體的存在,它的屬性,它正在進行的動作以及對象之間的交互等。但是,要在與任何其他圖像處理問題一樣,用人工系統複製這種行為是個極為艱巨的任務,因此我們使用複雜和先進的技術(如深度學習)來解決任務。


圖像字幕的任務從邏輯上可以分為兩個模塊:一個是基於圖像的模型,從圖像中提取特徵和細微差別,另一個是基於語言的模型,它將第一個模塊的所給出的特徵和對象轉換為的自然語句。

對於我們的基於圖像的模型(編碼器),我們通常依賴於CNN。對於我們的基於語言的模型(解碼器) – 我們依賴於RNN。如下圖所示:

在通常情況下,預訓練的CNN從我們的輸入圖像中提取特徵。特徵向量線性轉換後,與RNN/LSTM網路的輸入維數相同。這個網路被訓練成特徵向量的語言模型。

為了訓練我們的LSTM模型,我們預定義了我們的標籤和目標文本。例如,如果字幕是「A man and a girl sit on the ground and eat」,我們的標籤和目標如下:

這樣做是為了讓我們的模型理解標籤序列的開始和結束。

下面我將使用Pytorch進行圖像字幕的實現。我們將圖像作為輸入,並使用深度學習模型預測其描述。

完整代碼:https://github.com/yunjey/pytorch-tutorial/tree/master/tutorials/03-advanced/image_captioning

我們使用預訓練的resnet-152模型作為編碼器,而解碼器是LSTM網路。

要運行本例中給出的代碼,首先要必須有一個工作的python環境,最好安裝了anaconda。然後運行以下命令以安裝其他需要的庫。

設置完系統後,應下載訓練模型所需的數據集。這裡我們將使用MS-COCO數據集。要自動下載數據集,可以運行以下命令:

現在你可以繼續構建你的模型了。首先,你必須處理輸入:

現在你可以運行以下命令開始訓練模型:

python train.py --num_epochs 10 --learning_rate 0.01

只要查看並查看我們怎樣在背後定義我們的模型,可以參考model.py文件中編寫的代碼 。

現在我們可以使用以下命令進行測試:

對於我們的示例圖像,我們的模型給了我們這個輸出:

a group of giraffes standing in a grassy area .

我們上面看到的模型只是冰山一角。目前,圖像字幕中最先進的模型是微軟的CaptionBot。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AiTechYun 的精彩文章:

從自編碼器到變分自編碼器
又一顆巨星隕落 盤點霍金生前關於人工智慧發表過的言論

TAG:AiTechYun |