圖像描述開原始碼整理

2021-02-16 可視計算與安全

  圖像描述(Image Captioning)是從圖片中自動生成一段描述性文字。可以認為是一種動態的目標檢測,由全局信息生成圖像摘要。對於人來說,圖像描述是一件簡單的事,但對於機器來說,這項任務卻充滿了挑戰性。原因在於機器不僅要能檢測出圖像中的物體,而且要理解物體之間的相互關係,最後還要用貼近人類的語言表達出來。

早期的研究例如《Baby Talk》,《Everypicture tell a story》等都是利用圖像處理的一些算子提取出圖像的特徵,經過SVM分類等等得到圖像中可能存在的目標。根據提取出的目標以及它們的屬性利用CRF或者是一些人為規則來生成出圖像的描述。這種做法非常依賴於1)圖像特徵的提取2)生成句子時所需要的規則。

隨著深度學習技術的發展和COCO等圖像標註數據集的出現,圖像描述相關的技術得到了快速的發展。目前圖像描述的方法主要是在編碼器-解碼器框架上進行改進與不斷嘗試。

圖1 圖像描述示意圖

本文著重介紹幾個基於深度學習的圖像描述技術的開原始碼,包括訓練深度學習模型的常用數據集和幾個經典的圖像描述模型。

1.Flickr數據集

介紹:Flickr數據集,是雅虎發布的一個大型數據集,這個數據集由1億張圖片和70萬個視頻的URL以及與之相關的元數據(標題、描述、標籤)所組成的。Flickr8k、Flickr30K分別包含8000和31000張圖片,每一張圖片都有人工標註的5句話。

主頁:http://shannon.cs.illinois.edu/DenotationGraph/

2. SBU captioned photo數據集

         介紹: SBU captioned photo數據集是Flickr數據集的一個子集,是從Flickr數據集中經過篩選出100萬張圖像以及相關的描述。

主頁:http://www.cs.virginia.edu/~vicente/sbucaptions/

論文:http://tamaraberg.com/papers/-

generation_nips2011.pdf

3.MSCOCO Caption 數據集

介紹:MS COCO 數據集是微軟構建的一個數據集,圖片主要從複雜的日常場景中截取,數據集中一共包括91類別,328,000張圖像和2,500,000個標籤,以及通過精確的語義分割進行標定的位置。

主頁:http://cocodataset.org

4.nocaps數據集

介紹:nocaps包含了來自OpenImages平臺上一共15100張圖像,以及相應的166100個人工描述。數據集中包括MS COCO缺失的400多種類別。

主頁:http://places2.csail.mit.edu/

論文:https://nocaps.org/paper.pdf

5.AICHALLENGER數據集

介紹:AI CHALLENGER圖像中文描述是場景最豐富、語言描述最豐富、規模最大的圖像中文描述圖像數據集。每一張圖片都有對應的五句話的中文描述。描述句子符合自然語言習慣,點明了圖像中的重要信息,涵蓋主要人物、場景、動作等內容。數據集包含30萬張圖片,150萬句中文描述。

主頁:https://challenger.ai/dataset/caption

論文:https://arxiv.org/abs/1711.06475

6.VISUALGENOME數據集

介紹:VISUAL GENOME數據集是一個致力於將語言描述與結構化圖像聯繫在一起的數據集。圖像包括三種描述屬性:地區、屬性和關係。數據集一共包括108,077張圖片,540萬地域性描述,3.8百萬個對象實例,2.8百萬個屬性,230萬關係以及170萬視覺問答對,

主頁:http://visualgenome.org

論文:http://visualgenome.org/static/paper/-

Visual_Genome.pdf

7.IAPRTC-12數據集

介紹:IAPR TC-12數據集包含20000張真實圖像,這些圖像包括不同運動和動作的照片,人物,動物,城市,風景和當代生活的許多其他方面的照片。每個圖像都有最多三種不同語言(英語,德語和西班牙語)的描述。      

主頁: https://www.imageclef.org/photodata

論文: http://nla.gov.au/anbd.bib-an43036734 

8.Adaptive attention

論文:Gao L, Li X, SongJ, et al. Hierarchical LSTMs with Adaptive Attention for Visual Captioning[J].IEEE Transactions on Pattern Analysis & Machine Intelligence (1): 1-1.

工作:目前大多數基於注意力機制的圖像描述採用的都是編碼器-解碼器框架,然而解碼器應該對不同的詞有不同的注意策略。一些英文代詞連詞等不需要視覺信息的詞彙生成更多依賴語義信息而不是視覺信息。這種非視覺詞的梯度會影響視覺信息的有效性。本文提出了一種帶有視覺標記的自適應注意力模型,模型可以決定在一個時間點依賴於視覺信息還是語義結構。具體架構如下:

圖2 自適應注意力模型

代碼:https://github.com/jiasenlu/AdaptiveAttention

9.Neural Baby Talk

論文:Lu J, Yang J,Batra D, et al. Neural baby talk[C]//Proceedings of the IEEE Conference onComputer Vision and Pattern Recognition. 2018: 7219-7228.

工作:該論文認為當前典型的圖像描述模型過分依賴於語言模型,導致生成的圖像描述與圖像內容關聯不夠。論文的基本思想是採用物體檢測器檢測圖像中的物體,然後借鑑了自適應注意力模型的做法,學習了一個哨兵參數來決定在生成每個詞的時候是選取數據集中的詞彙還是檢測到的詞彙。下圖為具體架構:

圖3 Neural Baby Talk

代碼:https://github.com/jiasenlu/NeuralBabyTalk

10.Self-critical Sequence Training for Image Captioning

論文:Rennie S J, Marcheret E, Mroueh Y, et al. Self-criticalsequence training for image captioning[C]//Proceedings of the IEEE Conferenceon Computer Vision and Pattern Recognition. 2017: 7008-7024.

工作:該論文認為當前圖像描述主要存在的問題是模型訓練時,輸入RNN的上一時刻的單詞是來自訓練集的單詞。而在測試的時候依賴的是自己生成的單詞,一旦生成得不好就會導致誤差的積累,導致後面的單詞也生成得不好。模型訓練的時候用的是交叉熵損失函數,而評估性能的時候卻用的是BLEU、ROUGE、METEOR、CIDEr等衡量指標,存在不對應的問題。由於生成單詞的運算是不可微的,本文的思路是用強化學習來優化誤差。

圖4 強化學習網絡結構圖

代碼:https://github.com/ruotianluo/self-critical.pytorch

11.Show, Attend and Tell: Neural Image Caption Generation withVisual Attention

論文:Xu K, Ba J, Kiros R, et al. Show, attend and tell: Neuralimage caption generation with visual attention[C]//International conference onmachine learning. 2015: 2048-2057.

工作:該方法提出了將注意力機制與傳統的encoder-decoder框架結合的方法。在編碼器端,模型使用一些預訓練的模型來提取特徵,本方法提取的特徵向量來自於低層,這樣解碼器可以通過選擇特徵向量的子集來聚焦圖像的某些部分。在解碼器端採用RNN來解碼並生成詞序列,與傳統方法不同的地方在於本文採用兩種注意力機制的結合併增加一個跟時間有關的維度因子,從而讓模型的注意力更加集中在目標圖像區域,進而解碼得到更加合理的詞序列。

兩種注意力機制分別是 Stochastic 「Hard」 Attention和 Deterministic 「Soft」 Attention。「硬」注意力機制是計算將不同圖像區域輸入解碼器的信息的概率,「軟」注意力機制是計算將圖像區域輸入解碼器所佔的比例。下圖為該方法的網絡結構圖:

圖5 Visual Attention網絡結構圖

代碼:https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Image-Captioning

12.DenseCaps:     Fully ConvolutionalLocalization Networks for Dense Captioning

論文:Johnson J, Karpathy A, Fei-Fei L. Densecap: Fullyconvolutional localization networks for dense captioning[C]//Proceedings of theIEEE Conference on Computer Vision and Pattern Recognition. 2016: 4565-4574.      

工作:這篇文章的主要貢獻在於提出了新的密集定位層,它完全可微並且可以將其單獨插入其他任何圖像處理的網絡中來實現區域定位的訓練和預測。該層預測了圖片中的一系列感興趣的區域(ROI)並使用了雙線性插值來較為平滑得提取區域中的激活值。其網絡模型由三部分組成:卷積網絡、密集定位層和RNN語言模型。其模型結構如下圖示:

圖6 DenseCaps模型結構圖

代碼:https://github.com/deepsemantic/image_captioning

 13.Towards Diverse and Natural ImageDescriptions via a Conditional GAN

論文:Dai B, Fidler S,Urtasun R, et al. Towards diverse and natural image descriptions via aconditional gan[C]//Proceedings of the IEEE International Conference onComputer Vision. 2017: 2970-2979.

工作:當前的Image Captioning工作由於大多使用極大似然估計來訓練模型。這種類似的方法會帶來模型產生的圖片描述高度與ground truth一致,缺失了多樣性,顯得生硬。該論文提出利用ConditionalGAN讓模型產生的圖片更加描述貼合人類的表達,改善句子的多樣性。

Generator方面,以CNN提取的圖像特徵及噪聲作為輸入,用LSTM生成句子,隨後通過蒙特卡洛方法從Evaluator那裡得到反饋,並通過策略梯度算法來更新參數。

Evaluator方面,使用LSTM對句子編碼,然後與圖像特徵向量合併再處理,得到一個概率值。Evaluator既要判別句子是否像是人類生成的,同時要判別句子和圖片是否相關。在訓練時,作者就把對句子是否自然和對與圖像內容是否相關的區分開。

該模型結構如下圖所示:

圖7 Conditional GAN示意圖

代碼:https://github.com/msracver/Deep-Exemplar-based-Colorization

14. Contrastive Learning for ImageCaptioning

論文:Dai B, Lin D.Contrastive learning for image captioning[C]//Advances in Neural InformationProcessing Systems. 2017: 898-907.

工作:本文是為了解決一些圖像描述算法由於採用極大似然估計來訓練模型,使得生成的描述不具備獨特性的問題。本文就此提出了通過構造損失函數利用了負樣本參與訓練,來提高模型的獨特性。

最終的損失函數:

代碼:https://github.com/doubledaibo/clcaption_nips2017

相關焦點

  • 騰訊推出HTML5開源專業在線圖像處理引擎
    這兩個圖像處理引擎都提供開原始碼下載。騰訊打造HTML5開源圖形處理引擎騰訊的AlloyPhoto界面比較親民,功能就如另一個在線圖像處理工具――美圖秀秀網頁版相類似,定位專業級的 AlloyImage
  • CVPR 2020論文開源項目一頁看盡,附代碼論文
    今日GitHub上便出現了一個項目,將本屆CVPR論文開源項目做了個集合。本文便基於此GitHub項目,對中選CVPR 2020論文的開源項目做了整理,主要內容如下:目標檢測論文題目:Bridging the Gap Between Anchor-based and Anchor-free Detection
  • Facebook 開源三款圖像識別人工智慧軟體
    Facebook今天開源了三款人工智慧圖像分割(Image Segmentation)軟體,分別是DeepMask、SharpMask和MultiPathNet,三款工具相互配合完成一個完整的圖像識別分割處理流程,DeepMask
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • 分享程序--Verilog HDL代碼分析及整理軟體
    2.2功能該軟體是一款對Verilog HDL描述的行為級代碼進行自動分析整理的軟體,具有代碼分析功能和自動整理功能。代碼分析,可以對代碼的注釋率,所有模塊的調用關係,文件路徑及文件夾的關係,以及所有模塊中的狀態機等進行識別提取,並轉化為可視化的圖形顯示腳本,方便的採用開源軟體Graphviz進行查看;代碼整理,可以將代碼中所有的輸入輸出、內部變量、參數定義、always模塊、assign語句及例化調用等進行識別提取,按照固定格式(統一的縮進)輸出,保留原來的注釋代碼。
  • CVPR 2020|看圖說話之隨心所欲:細粒度可控的圖像描述自動生成
    本文介紹的是CVPR 2020上錄用為Oral的論文《Say As You Wish: Fine-grained Control of Image Caption Generation with Abstract Scene Graph》(已開源),文章作者是中國人民大學博士生陳師哲同學,這項工作是陳師哲同學在澳大利亞阿德萊德大學吳琦老師組訪問時所完成。
  • CVPR 2020文本圖像檢測與識別論文/代碼
    ,圖像分類&檢測&分割、視覺目標跟蹤、視頻內容分析、人體姿態估計、模型加速、網絡架構搜索(NAS)、生成對抗(GAN)、光學字符識別(OCR)、人臉識別、三維重建等方向。# 圖像處理1. Deep Image Harmonization via Domain Verification論文:Deep Image Harmonization via Domain Verification代碼:bcmi/Image_Harmonization_Datasets2.
  • 圖像描述(ImageCaption)任務簡析
    圖像描述(ImageCaption)任務是多模態領域的一個經典任務。但人們認為電腦可以從圖像中得到的信息遠不止於此,人們希望電腦可以學到類似於人類的描述圖像的語言,於是圖像描述任務應運而生[2]。圖片識別與文本生成正是立足於機器學習的兩個不同領域,而將兩者結合起來,便是當今的圖片描述任務。現在許多image caption 的研究內容也在如火如荼的進行。在中高考語文卷英語卷中,也都或多或少存在著看圖寫作等相關題目。
  • LEON3開源軟核處理器動態圖像邊緣檢測SoC設計
    此外,由於動態圖像邊緣檢測是圖像處理應用中必不可少的一部分,因此文中設計的動態圖像邊緣檢測SoC可以方便的移植到其他圖像處理應用中,具有廣泛的應用前景。  1 SoC和LEON3開源軟核處理器  SoC是系統級晶片的簡稱,系統不僅包含了處理器內核、存儲器等硬體系統,同時還含有相應的嵌入式軟體,是一個真正的軟、硬體均具備的完整體系。利用SoC設計方法,可以將一個複雜的系統集成到單一晶片中,並具有低功耗,低成本及高速性的特點。
  • 伯克利大學和Adobe開源最新的深度學習圖像編輯工具 iGAN
    近日,伯克利和 Adobe 在 Github 上開源了新的深度學習圖像編輯工具 iGAN。這是在 ECCV 2016 接收的的論文 Generative Visual Manipulation on the Natural Image Manifold 中作者們介紹的工具。
  • 18種熱門GAN的PyTorch開原始碼 | 附論文地址
    夏乙 編譯整理量子位 出品 | 公眾號 QbitAI想深入探索一下以腦洞著稱的生成對抗網絡(GAN),生成個帶有你專屬風格的大作
  • 代碼搜尋引擎和代碼瀏覽器 Sourcegraph 宣布開源
    知名流行的代碼查看工具 Sourcegraph 日前已宣布開源(Apache License),代碼託管在 GitHub 上 https
  • 不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad
    tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。 在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。而這些大公司也花費了很大的精力來維護 TensorFlow、PyTorch 這樣龐大的深度學習框架。
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    雷鋒網 AI 科技評論按,ImagePy 是一款 python 開源圖像處理框架,其 UI 界面支持開放插件。在 github:https://github.com/Image-Py/imagepy 上,不僅有關於這款圖像處理軟體的詳細介紹,還有一些使用示例,雷鋒網 AI 科技評論接下來將詳細介紹這一開源圖像處理框架。
  • 圖像特徵點|SIFT特徵點之圖像金字塔
    比如SIFT算法中一個重要的操作:求取描述子的主方向。好多文章只是一提而過或忽略,然後直接給出一個公式,SIFT算法的原作者也提使用拋物線插值,但是具體怎麼插的就不太詳盡了,對於初學者來說更是不知所云。因此本文打算在參看的文章上對有關這些細節給出一些比較詳細的說明,還有本文儘量對操作過程配備對應圖片或示意圖說明,同時附上robwhesss開源SIFT C代碼對應程序塊並給予註解,方便理解。
  • GAN快速入門資料推薦:17種變體的Keras開原始碼,附相關論文
    夏乙 編譯整理量子位 出品 | 公眾號 QbitAI圖片來源:Kaggle blog從2014年誕生至今,生成對抗網絡(GAN)始終廣受關注,已經出現了200多種有名有姓的變體。通過自己動手、探索模型代碼來學習,當然是墜吼的~如果用簡單易上手的Keras框架,那就更贊了。一位GitHub群眾eriklindernoren就發布了17種GAN的Keras實現,得到Keras親爸爸Franois Chollet在Twitter上的熱情推薦。
  • 從零開始實現穿衣圖像分割完整教程(附python代碼演練)
    它輸入原始的圖像(從網絡上下載或用智慧型手機拍照),並提取圖像中的連衣裙。 分割的難點在於原始圖像中存在了大量的噪聲,但是我們會在預處理期間通過一個技巧來解決這個問題。最後,您還可以嘗試將此解決方案與之前引用的解決方案合併。 這允許您通過外出和拍攝時拍攝的照片,開發一個實時推薦和標記服裝的系統。
  • 10月機器學習開源項目Top10
    作者 | Mybridge譯者 | 林春眄整理 | Jane出品 | AI科技大本營過去一個月裡
  • 讓你如紳士般基於描述編寫 Python 命令行工具的開源項目:docopt
    若你仍在使用 Python 2,請注意兩者之間語法和庫的使用差異哦~二、介紹 docopt[2]基於長久以來在幫助信息和手冊中描述程序接口的約定,其接口描述是形式化的幫助信息。它能夠根據命令行程序中定義的接口描述,來自動生成解析器。
  • 計算機視覺基於圖像的三維重建入門介紹
    在實踐的過程中,會有很多與圖像處理相關的代碼程序,可以查閱 《Learning OpenCV》、《數字圖像處理》這兩本書,這兩本書作為工具書,需要經常查閱。在代碼實踐的過程中,嚴禁複製粘貼,每一行代碼必須手敲,這樣才能起到很好的學習效果。