丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給三川
發(fā)送

0

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

本文作者: 三川 2017-05-02 18:44
導語:深度學習在 CV 和 NLP 領(lǐng)域的交叉應(yīng)用。

雷鋒網(wǎng)按:本文刊載于 Oreilly,雷鋒網(wǎng)編譯。閱讀原文地址請點此 。

玩過圖像分類的開發(fā)者不少,許多人或許對圖像分割(image segmentation)也不陌生,但圖像注解(image caption)的難度,無疑比前兩者更進一步。

原因無他:利用神經(jīng)網(wǎng)絡(luò)來生成貼合實際的圖像注釋,需要結(jié)合最新的計算機視覺和機器翻譯技術(shù),缺一不可。對于為輸入圖像生成文字注解,訓練神經(jīng)圖像注解模型能使其成功幾率最大化,并能生成新奇的圖像描述。舉個例子,下圖便是在 MS COCO 數(shù)據(jù)集上訓練的神經(jīng)圖像注解生成器,所輸出的潛在注解。

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

左圖注解:一個灰衣男子揮舞棒子,黑衣男子旁觀;右圖注解:一輛大巴車“坐”在一個人旁邊

本文是一篇中級教程,旨在教給大家如何在 Flickr30k 數(shù)據(jù)集上訓練圖像注解生成模型,使用的是谷歌 Show and Tell 模型的變體。我們使用  TensorFlow 框架來創(chuàng)建、訓練、測試模型,因為 TensorFlow 相對容易使用,并且有不斷增長的龐大用戶社群。

圖像注解技術(shù)的價值

近來深度學習在 CV(計算機視覺)和 NLP(自然語言處理)領(lǐng)域的成功,激發(fā)了 AI 研究人員在這兩者的交叉領(lǐng)域探索新的應(yīng)用。而作為結(jié)果的注解生成模型,需要平衡對視覺線索和自然語言的理解。

這兩門傳統(tǒng)上涇渭分明、并不相關(guān)的領(lǐng)域之間所產(chǎn)生的交集,有潛力在業(yè)內(nèi)產(chǎn)生廣泛的影響。該技術(shù)有一些直接應(yīng)用場景,比如為 YouTube 視頻生成簡介,又比如為無標簽圖像做注解,但其價值遠不止于此。類似于傳統(tǒng)的 CV 技術(shù)試圖讓現(xiàn)實世界變得讓計算機更容易接觸更容易理解,該技術(shù)有潛力讓現(xiàn)實世界變得對于我們來說更容易理解。它可以作為我們的導游、日常生活的視覺輔助,比如意大利 AI 公司 Eyra 的為視覺障礙患者開發(fā)的可穿戴設(shè)備 Horus (古埃及神話中的荷魯斯之眼)。

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

準備工作

首先,你需要安裝 TensorFlow。

其次,你需要 pandas, opencv2 以及 Jupyter 來跑相關(guān)代碼。但是,為了簡化安裝過程,我們強烈推薦你在我們的 GitHub 資源庫里跟隨 Docker 的安裝指南。

你還需要下載 Flickr30k 數(shù)據(jù)集的圖像注解和 image embeddings。下載鏈接也在 GitHub 資源庫里。

現(xiàn)在教程開始。

圖像注解生成模型

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

在高層級,這就是我們將要訓練的模型。每一幅圖像將會用深度 CNN 編碼成 4,096 維的矢量表示。一個語言生成 RNN 會隨后對其按次序解碼,成為自然語言描述。

注解生成——作為圖像分類的延伸

作為一個歷史悠久的 CV 任務(wù),圖像分類背后有許多強大模型。圖像分類能把圖像中相關(guān)聯(lián)的形狀、物體的視覺信息拼湊到一起,把圖像放入物體類別中。針對其他 CV 任務(wù)的機器學習模型,建立在圖像分類的基礎(chǔ)之上,比如物體識別和圖像分割。它們不僅能對提供的信息進行識別,還能學習如何解讀 2D 空間,調(diào)和兩種理解,并決定圖像中物體信息的位置分布。

對于注釋生成,這引發(fā)了兩個問題:

  1. 我們?nèi)绾纬浞掷脠D像分類模型的成功,從圖像提取重要信息?

  2. 我們的模型,該如何調(diào)和對語言和圖像的理解?

利用遷移學習

我們可以利用已有的模型,推動圖像注解。遷移學習使得——在不同任務(wù)上訓練神經(jīng)網(wǎng)絡(luò)而學習到的數(shù)據(jù)變形,能用于我們的數(shù)據(jù)。在我們的例子中,VGG-16 圖像分類模型導入 224x224 分辨率的圖像,生成對分類圖像非常有用的 4,096 維特征矢量。

我們可以把 VGG-16 模型的表示(即 image embedding)用于訓練其他模型上面。受篇幅限制,本文對 VGG-16 的架構(gòu)不欲詳述,并預(yù)先計算好了 4,096 維特征,來加速訓練。

載入 VGG 圖像特征和圖像注解比較直接:

def get_data(annotation_path, feature_path):
   annotations = pd.read_table(annotation_path, sep='\t', header=None, names=['image', 'caption'])
   return np.load(feature_path,'r'), annotations['caption'].values

理解注解

有了圖像表示,我們需要模型來學習把它解碼為可理解的注解。由于文本的序列本質(zhì),我們需利用 RNN/LSTM 中的循環(huán)。對于序列中的給定詞語,這些網(wǎng)絡(luò)被訓練,用以預(yù)測下一個詞語以及圖像表示。

LSTM 單元允許模型在注解詞語序列中,更好地選擇使用哪條信息、記憶什么、又要忘記什么。TensorFlow 提供了一個 wrapper 函數(shù),來對給定輸入、輸出維度生成 LSTM 層。

為了把詞語轉(zhuǎn)換成適合 LSTM 輸入的固定長度表示,我們使用了一個 embedding 層,它能學習把詞語映射到 256 維的特征(或 word-embedding)。Word-embedding 幫助我們把詞語表示為矢量,相近的詞語矢量在語義上也是近似的。

在 VGG-16 圖像分類器里,卷積層提取了 4,096 維表示,傳入最終的 softmax 層進行分類。由于 LSTM 單元需要 256 維文本特征作為輸入,我們需要把圖像表示轉(zhuǎn)譯為針對目標注解的表示。為實現(xiàn)這一點,我們使用了另一個 embedding 層,學習把 4,096 維圖像特征映射到 256 維文本特征的空間。

創(chuàng)建和訓練模型

整體上,這就是谷歌 Show and Tell 模型看起來的樣子:

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

上圖中, {s0, s1, ..., sN}代表了注解中我們想要預(yù)測的詞語, {wes0, wes1, ..., wesN-1} 是每個詞的 word embedding 矢量。LSTM 的輸出 {p1, p2, ..., pN} 是模型生成的概率分布,針對句子中的下一個詞。該模型被訓練來最小化每個詞語對數(shù)概率(log probabilities )的負數(shù)總和。

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

使用推理生成注解

訓練之后,我們有了一個模型。給定圖像和所有此前的詞語,它能給出下一步某個詞出現(xiàn)在注解中的概率。如何用它來生成新注解呢?

最簡單的辦法,是拿來一個輸入圖像,輸出下一個可能性最高的詞語,創(chuàng)建一個簡單的圖像注解。

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

這在許多情況下會奏,但“貪婪”地使用每一個概率最大的詞語,未必能獲得整體上概率最大的注解。

繞過這個難題的一個潛在方案,是采用一個名為"Beam Search"的方法。該算法會對長度 t 以內(nèi)的 k 個最佳語句集反復考量,作為候選來生成 t + 1 大小的句子,只保留結(jié)果中的 k 個最佳選擇。這允許開發(fā)者探索一個較大的優(yōu)質(zhì)注解空間,同時讓推理在計算上可追蹤。在下面的例子里,算法保持了一個 k = 2 的候選句子列表,即每個垂直時間步到每個加粗詞語的路線。

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

局限性

對于學習把圖像映射到人類級別的文字注解,該神經(jīng)圖像注解生成器提供了一個十分有用的框架。銅鼓偶在大量圖像—注解成對數(shù)據(jù)上訓練,該模型學會了通過視覺特征抓取相關(guān)語義信息。

但對于靜態(tài)圖片而言,嵌入我們的注解生成器,將會聚焦于圖像中對分類有用的特征,而不是對注解生成有用的特征。為提升每個特征里涵蓋的與任務(wù)相關(guān)的信息,我們可以訓練圖像嵌入模型(用來對特征進行編碼的 VGG-16 網(wǎng)絡(luò))作為注解生成模型的一部分。這使得我們能為圖像編碼器調(diào)參,以更符合注解生成器的角色。

另外,如果我們仔細觀察生成的注解,會發(fā)現(xiàn)它們基本是日常、常見的情形。下圖便是例子:

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!


幾乎可以肯定,這圖片是“長頸鹿站在一棵樹旁邊”。但是,如果我們看看其他圖片,會立刻發(fā)現(xiàn)無論對于哪一張生成的注解都是“長頸鹿站在一棵樹旁邊”。這是因為訓練集中的長頸鹿都出現(xiàn)在樹旁邊。

下一步

首先,如果你想要提升該模型,你需要看看谷歌的開源 Show and Tell 神經(jīng)網(wǎng)絡(luò)。它用 MS COCO 數(shù)據(jù)集和 Inception-v3 圖像嵌入訓練。

現(xiàn)有的前沿圖像注解模型會包含一個視覺注意力機制(visual attention mechanism),使得模型能發(fā)現(xiàn)圖像中感興趣的部分,因而能在生成注解時選擇性地聚焦。

另外,如果你對注解生成的前沿執(zhí)行非常好奇,不妨看看這一篇論文:Show, Attend, and Tell: Neural Image Caption Generation with Visual Attention

雷鋒網(wǎng)提醒:作者已將本文所有 Python 代碼上傳于 GitHub,請戳這里。

 “TensorFlow & 神經(jīng)網(wǎng)絡(luò)算法高級應(yīng)用班”要開課啦!

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!


從初級到高級,理論+實戰(zhàn),一站式深度了解 TensorFlow!

本課程面向深度學習開發(fā)者,講授如何利用 TensorFlow 解決圖像識別、文本分析等具體問題。課程跨度為 10 周,將從 TensorFlow 的原理與基礎(chǔ)實戰(zhàn)技巧開始,一步步教授學員如何在 TensorFlow 上搭建 CNN、自編碼、RNN、GAN 等模型,并最終掌握一整套基于 TensorFlow 做深度學習開發(fā)的專業(yè)技能。

兩名授課老師佟達、白發(fā)川身為 ThoughtWorks 的資深技術(shù)專家,具有豐富的大數(shù)據(jù)平臺搭建、深度學習系統(tǒng)開發(fā)項目經(jīng)驗。

時間:每周二、四晚 20:00-21:00

開課時長:總學時 20 小時,分 10 周完成,每周2次,每次 1 小時

線上授課地址:http://www.mooc.ai/

相關(guān)文章:

教你從零開始在 TensorFlow 上搭建 RNN(完整代碼)!

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

在玩圖像分類和圖像分割?來挑戰(zhàn)基于 TensorFlow 的圖像注解生成!

分享:
相關(guān)文章

用愛救世界
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說