Conditional Random Field(CRF)

패턴인식 & 기계학습 2015. 10. 8. 00:32

Conditional Random Field(CRF) 란?


 만약에 우리가 어떤 여행지에 가서 여행한 순서에 따라 사진을 찍었다고 가정해보자. 집에 돌아와서 여행중 찍었던 사진을 정리하려고 하니 하나하나 분류하기가 매우 귀찮다. 따라서 분류기를 만들어 행동을 보고 각각의 행동(먹다, 노래부르다.. 등) 기준으로 사진을 분류하고자 한다. 예를 들면 오전 6시는 아침이라 어두우니 자고있다로 분류하고, 자동차 이미지가 있으면 운전하다로 분류, 입에 무엇을 가져다 대면 먹다로 분류하는 기준을 세웠다. 하지만 잘 분류 될것 처럼 보이지만, 엄청난 문제가 존재한다. 만약 아래 사진과 같이 어떤 사람이 입에 가까이 무엇을 대고 있으면 분류기 기준에 따라 먹다로 분류되기도 하고 어떻게 보면 노래하는 것 처럼 보이기도 할 것이다.



이러한 문제를 어떻게 해결할 수 있을까? 한가지 좋은 방법은 사진을 찍었을때의 sequence를 잘 보고 식당에 있고 손으로 입에 무엇을 가져다 대면 먹다로 분류하고, 주위가 어둡고 입에 무엇인가를 가져다 대면 노래하다로 분류하면 위 문제를 어느정도 해결할 수 있지 않을까? 이렇게 하나의 sequence를 보고 판단하는 것이 아니라 사진을 찍었던 순간 이전 혹은 이후를 참조해 지금 상태를 결정하는 것을 Conditional Random Field(CRF)라고 한다.


참조 : http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

Automatically image Description(Auto Caption)

패턴인식 & 기계학습 2015. 10. 6. 20:11

1. Deep Learning의 등장

 2010년대 초반 딥러닝(Deep Learning)의 문제점 및 한계를 극복해 여러 인공지능의 분야에 적용하면서 전체적인 성능 및 인식률이 매우 상승했다. 그 중 가장 획기적인 아이디어 중 하나인 방법으로 사람이 아닌 컴퓨터가 스스로 이미지를 보고 이미지를 표현(representation)하는 것이다. 이 것은 Language translation의 분야중 하나였지만, Deep Learning을 이용하여 이미지의 인식(recognition)성능이 많이 상승하여 이미지와 번역(translation)을 결합하여 컴퓨터 스스로 이미지를 보고 영상을 분석할 수 있게 되었다. 





2. Auto Caption(Automatically Image Description)

 Language Expression이 가능해 진 이후로 Deep Learning과 여러 모델을 결합하여 이미지의 표현(Image Representation)을 정확히 해내는 여러 대회(ImageNet, Microsoft COCO 등..) 에서 어느 모델이 더 이미지를 언어로 표현을 잘 하는지?(이미지를 보고 문장을 만들어 냈을때 오류가 없는)를 측정하여 순위를 매겨 수상하는 대회를 매년 진행하고 있다. 아래 그림은 최근 Microsoft에서 주최하는 Image Caption대회의 결과를 보여준다. 사람의 표현 능력과 각 기업, 연구소, 연구실에서 개발한 모듈 별로 얼마나 표현을 잘 하는지를 나타낸 순위이다. 모든 모델이 어떻게 설계되었고 어떻게 문장(언어)를 표현하는지는 아직 밝혀져 있지는 않지만 여러 논문에서 소개하는 방법을 간단히 설명하고자 한다.


Fig1. Microsoft COCO Captioning Challenge[1]



3. Show and Tell : A Neural Image Caption Generator [2]

 2014년 Google에서 발표한 Show and Tell 이라는 논문에서 소개된 방법은 영상인식을 위해 CNN모듈과 RNN(LSTM)을 결합한 모듈로 Auto Caption하는 방법을 소개한 논문이다. 


Fig2. Show and Tell Auto caption Model[2]


 CNN 모듈로는 GoogLeNet[3]을 기반으로 Batch Normalization을 적용한 모델[4]을 사용하였다. Batch Normalization을 기존 GoogLeNet에 적용하여 Inception Module을 수정하여 기존 에러률(error rate) 6.7%보다 (ImageNet Class Top-5 error 4.9%)을 보인 정확한 이미지 표현이 가능한 모듈(Fig3.Left)을 사용한뒤, Language Presentation모듈로는 LSTM(Long Short Term Memory) Fig3.Right을 적용하여 하였다.


Fig3. (Left) CNN & LSTM 모델 결합, (Right) LSTM [2]



4. From Captions to Visual Concepts and Back [5]

 Multiple Instance Learning을 통하여 Auto Caption 을 수행하는 논문으로 총 3단계의 표현 과정을 거친다. 첫번째로 이미지 내에서 표현 가능한 단어를 각각 추출 한뒤, 각각의 표현된 단어로 문장을 구성한다. 구성된 문장을 re-rank과정을 통해 최종적으로 문장 하나를 선택해 표현하는 순서로 알고리즘이 구성되어 있다.


Fig4. Caption Generate Pipeline[3]


 위 모델의 특징으로는 이미지 부분(region)을 기반으로 각각의 Object에 대한 정보를 추출했을때, Open혹은 Beautiful 같은 형용사의 뜻을 가진 단어는 표현하기 힘든 문제로 이미지 부분이 아닌 전체를 기반으로 Object에 대한 정보를 추출하였고, 기존 CNN들과는 다르게 Convolutional Neural Network 과정에 포함된 Fully Connected Layer(7~8 Layer)에 Image의 region 정보와 word correspond정보, image 정보를 전파 할수 있도록 Layer를 수정하여 이미지 내부에 Logistic Function을 추가하여 이미지 위치 정보와 word를 표현이 동시에 가능하도록 표현하는 모델을 제안하였다. Language Representation 표현된 단어 정보로 caption을 generation하기 위해 Maximum entropy(ME) Language Model(LM)을 이용하여 지금 상태(condition)에서 확률적으로 모든 단어를 계산한 뒤, 높은 likelihood를 detection하여 각각의 단어를 연결하는 방법을 사용하였다.



Reference


[1] http://mscoco.org/dataset/#captions-leaderboard

[2] Vinyals, Oriol, et al. "Show and tell: A neural image caption generator." arXiv preprint arXiv:1411.4555 (2014).

[3] Szegedy, Christian, et al. "Going deeper with convolutions." arXiv preprint arXiv:1409.4842 (2014).

[4] Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." arXiv preprint arXiv:1502.03167 (2015).

[5] Fang, Hao, et al. "From captions to visual concepts and back." arXiv preprint arXiv:1411.4952 (2014).

[6] Caffe Model Zoo : https://github.com/BVLC/caffe/wiki/Model-Zoo


'패턴인식 & 기계학습' 카테고리의 다른 글

Conditional Random Field(CRF)  (3) 2015.10.08
Jaccard similarity 계산  (0) 2015.10.02
Deep Learning 두번째 세미나  (0) 2015.09.29
딥러닝 framework Theano 설치  (0) 2015.09.21
에이다부스트(adaboost)  (0) 2015.02.27

Jaccard similarity 계산

패턴인식 & 기계학습 2015. 10. 2. 15:19

Jaccard Semilarity 계산


Jaccard Index는 Paul Jaccard이 제안한 유사성 계산 알고리즘이다.


기본적으로 Jaccard similarity measure방법은 두 데이터 집합의 교집합을 합집합으로 나눈것으로 정의한다.



  



Jaccard Distance는 1에서 Jaccard Similarity를 뺀값으로 계산하거나, 합집합에서 교집합을 뺀 크기를 


합집합의 크기로 나눈 것으로 계산할 수 있다.




Jaccard Distance의 값은 0~1사이의 값을 갖고 A와 B가 empty일 경우 1의 값을 갖는다.


보통 binary attributes의 similarity를 계산할때 많이 사용된다. (위키피디아 참조 - Jaccard_index)