基于深度学习的图像语义分析及其应用
本文 轉(zhuǎn)自“火光搖曳”博客:語義分析的一些方法(三),主要論述了基于深度學(xué)習(xí)方法的圖像語義分析,包括圖片分類、圖片搜索、圖片標(biāo)注(image2text、image2sentence),以及訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的一些tricks,并介紹語義分析方法在騰訊廣點通上的實際應(yīng)用。以下為全文內(nèi)容:
 
3 圖片語義分析
3.1 圖片分類
圖片分類是一個最基本的圖片語義分析方法。
基于深度學(xué)習(xí)的圖片分類
傳統(tǒng)的圖片分類如下圖所示,首先需要先手工提取圖片特征,譬如SIFT, GIST,再經(jīng)由VQ coding和Spatial pooling,最后送入傳統(tǒng)的分類模型(例如SVM等)。
圖23. 傳統(tǒng)圖片分類流程圖
傳統(tǒng)方法里,人工特征提取是一個巨大的消耗性工作。而隨著深度學(xué)習(xí)的進(jìn)展,不再需要人工特征,通過深度學(xué)習(xí)自動提取特征成為一種可能。接下來主要講述卷積神經(jīng)網(wǎng)絡(luò)在圖片分類上的使用。
下圖是一個經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型圖,由Hinton和他的學(xué)生Alex Krizhevsky在ILSVRC(Imagenet Large Scale Visual Recognition Competition) 2012中提出。 整個網(wǎng)絡(luò)結(jié)構(gòu)包括五層卷積層和三層全連接層,網(wǎng)絡(luò)的最前端是輸入圖片的原始像素點,最后端是圖片的分類結(jié)果。一個完整的卷積層可能包括一層convolution,一層Rectified Linear Units,一層max-pooling,一層normalization。
圖24. 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
對于每一層網(wǎng)絡(luò),具體的網(wǎng)絡(luò)參數(shù)配置如下圖所示。InputLayer就是輸入圖片層,每個輸入圖片都將被縮放成227*227大小,分rgb三個顏色維度輸入。Layer1~ Layer5是卷積層,以Layer1為例,卷積濾波器的大小是11*11,卷積步幅為4,本層共有96個卷積濾波器,本層的輸出則是96個55*55大小的圖片。在Layer1,卷積濾波后,還接有ReLUs操作和max-pooling操作。Layer6~ Layer8是全連接層,相當(dāng)于在五層卷積層的基礎(chǔ)上再加上一個三層的全連接神經(jīng)網(wǎng)絡(luò)分類器。以Layer6為例,本層的神經(jīng)元個數(shù)為4096個。Layer8的神經(jīng)元個數(shù)為1000個,相當(dāng)于訓(xùn)練目標(biāo)的1000個圖片類別。
圖25. CNN網(wǎng)絡(luò)參數(shù)配置圖
基于Alex Krizhevsky提出的cnn模型,在13年末的時候,我們實現(xiàn)了用于廣點通的圖片分類和圖片檢索(可用于廣告圖片作弊判別),下面是一些示例圖。
圖片分類示例:
圖26. 圖片分類示例圖
圖片檢索示例:
圖27. 圖片檢索示例圖
圖片分類上的最新進(jìn)展
在ILSVRC 2012中,Alex Krizhevsky基于GPU實現(xiàn)了上述介紹的,這個有60million參數(shù)的模型(簡稱為AlexNet),贏得了第一名。這個工作是開創(chuàng)性的,它引領(lǐng)了接下來ILSVRC的風(fēng)潮。2013年,Clarifai通過cnn模型可視化技術(shù)調(diào)整網(wǎng)絡(luò)架構(gòu),贏得了ILSVRC。2014年,google也加入進(jìn)來,它通過增加模型的層數(shù)(總共22層),讓深度更深[48],并且利用multi-scale data training,取得第一名。baidu最近通過更加“粗暴”的模型[44],在GooLeNet的基礎(chǔ)上,又提升了10%,top–5錯誤率降低至6%以下。具體結(jié)果如下圖所示。
圖28. ImageNet Classification Result
先簡單分析一下“GoogLeNet”[48,51]所采用的方法:
-  
大大增加的網(wǎng)絡(luò)的深度,并且去掉了最頂層的全連接層:因為全連接層(Fully Connected)幾乎占據(jù)了CNN大概90%的參數(shù),但是同時又可能帶來過擬合(overfitting)的效果。
 -  
模型比以前AlexNet的模型大大縮小,并且減輕了過擬合帶來的副作用。Alex模型參數(shù)是60M,GoogLeNet只有7M。
 -  
對于google的模型,目前已有開源的實現(xiàn),有興趣請點擊Caffe+GoogLeNet。
 
再分析一下“Deep Image by baidu[44]”所采用的方法:
-  
Hardware/Software Co-design。baidu基于GPU,利用36個服務(wù)節(jié)點開發(fā)了一個專為深度學(xué)習(xí)運算的supercompter(名叫Minwa,敏媧)。這臺supercomputer具備TB級的host memory,超強的數(shù)據(jù)交換能力,使能訓(xùn)練一個巨大的深層神經(jīng)網(wǎng)絡(luò)成為可能。而要訓(xùn)練如此巨大的神經(jīng)網(wǎng)絡(luò),除了硬件強大外,還需要高效的并行計算框架。通常而言,都要從data-parallelism和model-data parallelism兩方面考慮。
-  
data-parallelism:訓(xùn)練數(shù)據(jù)被分成N份。每輪迭代里,各個GPU基于各自的訓(xùn)練數(shù)據(jù)計算梯度,最后累加所有梯度數(shù)據(jù)并廣播到所有GPU。
 -  
model-data parallelism:考慮到卷積層參數(shù)較少但消耗計算量,而全連接層參數(shù)相對比較多。所以卷積層參數(shù)以local copy的形式被每個GPU所持有,而全連接層的參數(shù)則被劃分到各個CPU。每輪迭代里,卷積層計算可以由各個GPU獨立完成,全連接層計算需要由所有GPU配合完成,具體方法請參考[46]。
 
 -  
 -  
Data augmentation。訓(xùn)練一個如此巨大的神經(jīng)網(wǎng)絡(luò)(100billion個參數(shù)),如果沒有充分的訓(xùn)練數(shù)據(jù),模型將很大可能陷入過擬合,所以需要采用眾多data augmentation方法增加訓(xùn)練數(shù)據(jù),例如:剪裁,不同大小,調(diào)亮度,飽和度,對比度,偏色等(color casting, vignetting, lens distortion, rotation, flipping, cropping)。舉個例子,一個彩色圖片,增減某個顏色通道的intensity值,就可以生成多張圖片,但這些圖片和原圖的類目是一致的,相當(dāng)于增加了訓(xùn)練數(shù)據(jù)。
 -  
Multi-scale training:訓(xùn)練不同輸入圖片尺度下(例如512*512,256*256)的多個模型,最后ensemble多個模型的輸出結(jié)果。
 
3.2 Image2text,Image2sentence
上面講述的圖片分類對圖片語義的理解比較粗粒度,那么我們會想,是否可以將圖片直接轉(zhuǎn)化為一堆詞語或者一段文本來描述。轉(zhuǎn)化到文本后,我們積累相對深的文本處理技術(shù)就都可以被利用起來。
Image2text
首先介紹一種樸素的基于卷積神經(jīng)網(wǎng)絡(luò)的image to text方法。
-  
首先它利用深度卷積神經(jīng)網(wǎng)絡(luò)和深度自動編碼器提取圖片的多層特征,并據(jù)此提取圖片的visual word,建立倒排索引,產(chǎn)生一種有效而準(zhǔn)確的圖片搜索方法。
 -  
再充分利用大量的互聯(lián)網(wǎng)資源,預(yù)先對大量種子圖片做語義分析,然后利用相似圖片搜索,根據(jù)相似種子圖片的語義推導(dǎo)出新圖片的語義。
 
其中種子圖片,就是可以覆蓋所有待研究圖片的行業(yè),但較容易分析語義的圖片集。這種方法產(chǎn)生了更加豐富而細(xì)粒度的語義表征結(jié)果。雖說簡單,但效果仍然不錯,方法的關(guān)鍵在于種子圖片。利用比較好的種子圖片(例如paipai數(shù)據(jù)),簡單的方法也可以work得不錯。下圖是該方法的效果圖。
圖29. 圖片語義tag標(biāo)注示例圖
上面的baseline方法,在訓(xùn)練數(shù)據(jù)優(yōu)質(zhì)且充分的情況下,可以取得很不錯的圖片tag提取效果,而且應(yīng)用也非常廣泛。但上面的方法非常依賴于訓(xùn)練數(shù)據(jù),且不善于發(fā)現(xiàn)訓(xùn)練數(shù)據(jù)之外的世界。
另一個直觀的想法,是否可以通過word embedding建立image與text的聯(lián)系[26]。例如,可以先利用CNN訓(xùn)練一個圖片分類器。每個類目label可以通過word2vec映射到一個embedding表示。對于一個新圖片,先進(jìn)行分類,然后對top-n類目label所對應(yīng)的embedding按照權(quán)重(這里指這個類目所屬的概率)相加,得到這個圖片的embedding描述,然后再在word embedding空間里尋找與圖片embedding最相關(guān)的words。
Image detection
接下來再介紹下image detection。下圖是一個image detection的示例,相比于圖片分類,提取到信息將更加豐富。
圖30. 圖片detection示例
目前最先進(jìn)的detection方法應(yīng)該是Region-based CNN(簡稱R-CNN)[75],是由Jeff Donahue和Ross Girshick提出的。R-CNN的具體想法是,將detection分為尋找object和識別object兩個過程。在第一步尋找object,可以利用很多region detection算法,譬如selective search[76],CPMC,objectness等,利用很多底層特征,譬如圖像中的色塊,圖像中的邊界信息。第二步識別object,就可以利用“CNN+SVM”來做分類識別。
圖31. Image detection系統(tǒng)框圖
-  
給定一張圖片,利用selective search方法[76]來產(chǎn)生2000個候選窗口。
 -  
然后利用CNN進(jìn)行對每一個候選窗口提取特征(取全連接層的倒數(shù)第一層),特征長度為4096。
 -  
最后用SVM分類器對這些特征進(jìn)行分類(每一個目標(biāo)類別一個SVM分類器),SVM的分類器的參數(shù)個數(shù)為:4096*N,其中N為目標(biāo)的類別個數(shù),所以比較容易擴展目標(biāo)類別數(shù)。
 
這里有R-CNN的實現(xiàn),請點擊rcnn code
Image2sentence
那能否通過深度學(xué)習(xí)方法,直接根據(jù)image產(chǎn)生sentence呢?我們先看一組實際效果,如下圖所示(copy from 文獻(xiàn)[43])。
圖32. image2sentence示例圖
關(guān)于這個方向,最近一年取得了比較大的突破,工業(yè)界(Baidu[77],Google[43],Microsoft[80,81]等)和學(xué)術(shù)界(Stanford[35],Borkeley[79],UML[19],Toronto[78]等)都發(fā)表了一系列論文。
簡單歸納一下,對這個問題,主要有兩種解決思路:
-  
Pipeline方法。這個思路相對直觀一點,先學(xué)習(xí)到image中visual object對應(yīng)的word(如上一節(jié)image detection所述),再加上language model,就可以生成sentence。這種方法各個模塊可以獨立調(diào)試,相對來說,更靈活一點。如下圖所示,這是microsoft的一個工作[81],它分為三步:(1)利用上一節(jié)提到的思路detect words;(2)基于language model(RNN or LSTM)產(chǎn)生句子;(3)利用相關(guān)性模型對句子打分排序。
圖33. “pipeline” image captioning
 -  
End-to-end方法,即通過一個模型直接將image轉(zhuǎn)換到sentence。google基于CNN+RNN開發(fā)了一個Image Caption Generator[43]。這個工作主要受到了基于RNN的機器翻譯[27][42]的啟發(fā)。在機器翻譯中,“encoder” RNN讀取源語言的句子,將其變換到一個固定長度的向量表示,然后“decoder” RNN將向量表示作為隱層初始值,產(chǎn)生目標(biāo)語言的句子。那么一個直觀的想法是,能否復(fù)用上面的框架,考慮到CNN在圖片特征提取方面的成功應(yīng)用,將encoder RNN替換成CNN,先利用CNN將圖片轉(zhuǎn)換到一個向量表示,再利用RNN將其轉(zhuǎn)換到sentence。可以通過圖片分類提前訓(xùn)練好CNN模型,將CNN最后一個隱藏層作為encoder RNN的輸入,從而產(chǎn)生句子描述。如下圖所示。
圖34. “CNN+LSTM” Image Caption Generator
Li-Feifei團隊在文獻(xiàn)[35]也提到一種image2sentence方法,如下圖所示。與google的做法類似,圖片的CNN特征作為RNN的輸入。
圖35. “CNN+RNN”生成圖片描述
此方法有開源實現(xiàn),有興趣請參考:neuraltalk
 
3.3 訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的tricks
考慮到圖片語義分析的方法大部分都是基于深度學(xué)習(xí)的,Hinton的學(xué)生Ilya Sutskever寫了一篇深度學(xué)習(xí)的綜述文章[47],其中提到了一些訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的tricks,整理如下:
-  
保證訓(xùn)練數(shù)據(jù)的質(zhì)量
 -  
使訓(xùn)練數(shù)據(jù)各維度數(shù)值的均值為0,方差為一個比較小的值
 -  
訓(xùn)練時使用minbatch,但不要設(shè)得過大,在合理有效的情況下,越小越好。
 -  
梯度歸一化,將梯度值除于minbatch size。
 -  
設(shè)置一個正常的learning rate,validation無提升后,則將原learning rate除于5繼續(xù)
 -  
模型參數(shù)隨機初始化。如果是深層神經(jīng)網(wǎng)絡(luò),不要設(shè)置過小的random weights。
 -  
如果是在訓(xùn)練RNN or LSTM,對梯度設(shè)置一個限值,不能超過15 or 5。
 -  
注意檢查梯度計算的正確性
 -  
如果是訓(xùn)練LSTM,initialize the biases of the forget gates of the LSTMs to large values
 -  
Data augmentation很實用。
 -  
Dropout在訓(xùn)練時很有效,不過記得測試時關(guān)掉Dropout。
 -  
Ensembling。訓(xùn)練多個神經(jīng)網(wǎng)絡(luò),最后計算它們的預(yù)測值的平均值。
 
4 總結(jié)
4.1 語義分析方法在實際業(yè)務(wù)中的使用
前面講述了很多語義分析方法,接下來我們看看如何利用這些方法幫忙我們的實際業(yè)務(wù),這里舉一個例子,用戶廣告的語義匹配。
在廣點通系統(tǒng)中,用戶與廣告的關(guān)聯(lián)是通過定向條件來匹配的,譬如某些廣告定向到“北京+男性”,那么當(dāng)“北京+男性”的用戶來到時,所有符合定向的廣告就將被檢索出,再按照“ecpm*quality”排序,將得分最高的展示給用戶。但是憑借一些人口屬性,用戶與廣告之間的匹配并不精確,做不到“廣告就是想用戶所想”,所以用戶和廣告的語義分析就將派上用場了,可以從這樣兩方面來說明:
-  
特征提取。基于上面介紹的方法,提取用戶和廣告的語義特征。
-  
用戶語義特征。可以從用戶的搜索,購物,點擊,閱讀記錄中發(fā)現(xiàn)用戶興趣。考慮到最終的用戶描述都是文本,那么文本topic分析,文本分類,文本keyword提取,文本核心term提取都可以運用起來,分析出用戶的語義屬性,還可以利用矩陣分解和文本分類找到相似用戶群。
 -  
廣告語義特征。在廣點通里,廣告可以從兩個維度來描述,一方面是文本,包括廣告title和landing page,另一方面是廣告展示圖片。利用文本和圖片的語義分析方法,我們可以提取出廣告的topic,類目,keyword,tag描述。
 
 -  
 -  
語義匹配。提取到相應(yīng)的語義特征之后,怎么用于改善匹配呢?
-  
用戶-廣告的語義檢索。基于keyword、類目以及topic,對廣告建立相應(yīng)的倒排索引,直接用于廣告檢索。
 -  
用戶-廣告的語義特征。分別提取用戶和廣告的語義特征,用于計算用戶-廣告的relevance,pctr,pcvr,達(dá)到精確排序。
 
 -  
 
4.2 Future
對于文本和圖片的語義分析,可以看到:最近幾年,在某些任務(wù)上,基于深度學(xué)習(xí)的方法逐漸超過了傳統(tǒng)方法的效果。但目前為止,對于深度學(xué)習(xí)的發(fā)掘才剛剛開始,比較驚艷的神經(jīng)網(wǎng)絡(luò)方法,也只有有限幾種,譬如CNN,RNN,RBM等。
上文只是介紹了我們在工作中實踐過的幾個小點,還有更多方法需要我們?nèi)ネ诰?#xff1a;
-  
Video。Learn about 3D structure from motion。如文獻(xiàn)[19]所示,研究將視頻也轉(zhuǎn)換到自然語言。
 -  
Deep Learning + Structured Prediction,用于syntactic representation。
 
4.3 總結(jié)
上文主要從文本、圖片這兩方面講述了語義分析的一些方法,并結(jié)合個人經(jīng)驗做了一點總結(jié)。
原本想寫得更全面一些,但寫的時候才發(fā)現(xiàn)上面所述的只是滄海一粟,后面還有更多語義分析的內(nèi)容之后再更新。另外為避免看到大篇理論就頭痛,文中盡可能不出現(xiàn)復(fù)雜的公式和理論推導(dǎo)。如果有興趣,可以進(jìn)一步閱讀參考文獻(xiàn),獲得更深的理解。謝謝。
5 參考文獻(xiàn)
Term-weighting approaches in automatic text retrieval,Gerard Salton et.
New term weighting formulas for the vector space method in information retrieval
A neural probabilistic language model 2003
Deep Learning in NLP-詞向量和語言模型
Recurrent neural network based language models
Statistical Language Models based on Neural Networks,mikolov博士論文
Rnnlm library
A survey of named entity recognition and classification
Deep learning for Chinese word segmentation and POS tagging
Max-margin tensor neural network for chinese word segmentation
Learning distributed representations of concepts
Care and Feeding of Topic Models: Problems, Diagnostics, and Improvements
LightLda
word2vec
Efficient Estimation of Word Representations in Vector Space
Deep Learning實戰(zhàn)之word2vec
word2vec中的數(shù)學(xué)原理詳解 出處2
斯坦福課程-語言模型
Translating Videos to Natural Language Using Deep Recurrent Neural Networks
Distributed Representations of Sentences and Documents
Convolutional Neural Networks卷積神經(jīng)網(wǎng)絡(luò)
A New, Deep-Learning Take on Image Recognition
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
A Deep Learning Tutorial: From Perceptrons to Deep Networks
Deep Learning for Computer Vision
Zero-shot leanring by convex combination of semantic embeddings
Sequence to sequence learning with neural network
Exploting similarities among language for machine translation
Grammar as Foreign Language Oriol Vinyals, Lukasz Kaiser, Terry Koo, Slav Petrov, Ilya Sutskever, Geoffrey Hinton, arXiv 2014
Deep Semantic Embedding
張家俊. DNN Applications in NLP
Deep learning for natural language processing and machine translation
Distributed Representations for Semantic Matching
distributed_representation_nlp
Deep Visual-Semantic Alignments for Generating Image Descriptions
Convolutional Neural Networks for Sentence Classification
Senna
ImageNet Large Scale Visual Recognition Challenge
Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks
Gradient-Based Learning Applied to Document Recognition
Effetive use of word order for text categorization with convolutional neural network,Rie Johnson
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
Show and Tell: A Neural Image Caption Generator
Deep Image: Scaling up Image Recognition
Large-Scale High-Precision Topic Modeling on Twitter
A. Krizhevsky. One weird trick for parallelizing convolutional neural networks. arXiv:1404.5997, 2014
A Brief Overview of Deep Learning
Going deeper with convolutions. Christian Szegedy. Google Inc. 閱讀筆記
Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling
Semi-Supervised Learning Tutorial
http://www.zhihu.com/question/24904450
LONG SHORT-TERM MEMORY BASED RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE VOCABULARY SPEECH RECOGNITION
LSTM Neural Networks for Language Modeling
LONG SHORT-TERM MEMORY
Bengio, Y., Simard, P., Frasconi, P., “Learning long-term dependencies with gradient descent is difficult” IEEE Transactions on Neural Networks 5 (1994), pp. 157–166
AliasLDA
Gibbs sampling for the uninitiated
Learning classifiers from only positive and unlabeled data
TF-ICF: A New Term Weighting Scheme for Clustering Dynamic Data Streams
LDA數(shù)學(xué)八卦
Chinese Word Segmentation and Named Entity Recognition Based on Conditional Random Fields Models
Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
Chinese Segmentation and New Word Detection using Conditional Random Fields
Gregor Heinrich. Parameter estimation for text analysis
Peacock:大規(guī)模主題模型及其在騰訊業(yè)務(wù)中的應(yīng)用
L. Yao, D. Mimno, and A. McCallum. Efficient methods for topic model inference on streaming document collections. In KDD, 2009.
David Newman. Distributed Algorithms for Topic Models
Xuemin. LDA工程實踐之算法篇
Brian Lott. Survey of Keyword Extraction Techniques
Yi Wang, Xuemin Zhao, Zhenlong Sun, Hao Yan, Lifeng Wang, Zhihui Jin, Liubin Wang, Yang Gao, Ching Law, and Jia Zeng. Peacock: Learning Long-Tail Topic Features for Industrial Applications. TIST’2015.
劉知遠(yuǎn). 基于文檔主題結(jié)構(gòu)的關(guān)鍵詞抽取方法研究
Hinton. Reducing the Dimensionality of Data with Neural Networks
Samaneh Moghaddam. On the design of LDA models for aspect-based opinion mining;
The FLDA model for aspect-based opinion mining: addressing the cold start problem
Ross Girshick et. Rich feature hierarchies for accurate object detection and semantic segmentation
J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013.
Baidu/UCLA: Explain Images with Multimodal Recurrent Neural Networks
Toronto: Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models
Berkeley: Long-term Recurrent Convolutional Networks for Visual Recognition and Description
Xinlei Chen et. Learning a Recurrent Visual Representation for Image Caption Generation
Hao Fang et. From Captions to Visual Concepts and Back
Modeling Documents with a Deep Boltzmann Machine
A Deep Dive into Recurrent Neural Nets
Xiang zhang et. Text Understanding from Scratch
?
http://www.360doc.com/content/15/0521/18/20625606_472252788.shtml
?
總結(jié)
以上是生活随笔為你收集整理的基于深度学习的图像语义分析及其应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Spring Security Web
 - 下一篇: 诸葛io分享:真正的产品运营就是直面人的