Recognition


인식


scene understanding의 한계와 극복

한 scene에 각각의 어떠한 장소를 대표하는 사물이 여러개 있을 경우, 잘못된 결과를 가져올 수 있음

단, 그러한 abnormal에 대해 상세하게 specify해줌으로써 올바른 recognition 결과를 얻을 수 있음


도로변만 봤을때 Urban, 도로변 뒷쪽에 성만 봤을때 Castle로써 해당 장면을 해석하기 어려움.

이때 scene이 Urban 과 Castle 그리고 몇가지 feature를 더 포함하여 학습시키면 정상적으로 recognition 가능


Sliding window approach

  recognition을 위한 window를 순차적으로 sliding하면서 찾는 것


Q. 32x32 window를 사용하면 64x64나 16x16은 못 찾지 않나?

A. 못찾는다. 그래서 Image pyramid를 사용해서 작은 사이즈부터 큰 사이즈까지 detection을 진행해야 모두 찾아낼 수 있다.


*face unlock처럼 특수 목적이 있는 애플리케이션들은 작은 window로부터 진행하며 recognition을 진행함

1개만 찾아 낸 이후로부터는 보통 크기나 큰 크기의 window를 사용할 필요가 없어지기 때문임


Image pyramid를 사용한 recognition

  32x32 -> 64x64 -> 128x128 순으로 Sliding window의 Image pyramid를 구성하고, 작은 것 부터 큰 것까지 recognition하게 되면 scene내의 검출 가능한 모든 얼굴 등을 찾아낼 수 있다.


Recognition models

1. Parts-and-shape model

  Parts만을 사용하면 shape 정보가 없어서 실제와는 다르게 recognition 할 수 있음. 그래서 shape 정보 또한 혼합형 모델로써 사용.

예시) 머리카락, 눈, 코, 입의 배치 관계 (shape)


2. Constellation model

  삼각측량법을 이용해 중요한 3파트만 이용해 분류하고 recognition함



Bag of Words

  이미지에 등장하는 Feature의 모음


Histogram에서의 Bag of words


  그림처럼, Quantization을 통해 패턴을 생성(Bag of words)하고 이들이 input image에서 얼마나 반복되는지를 recognition함

sliding window of quickpoint (얼마나 패턴이 자주 등장하는지 counting, 의미 있는 patch 만드는 것이 중요)


Patch (words)를 생성하는 방법

  K-means clustering (local patch)



Bag of words를 통한 recognition을 위해서는 Visual words를 잘 구성하기, 의미있는 patch만드는 것이 중요


Regular grid vs interest regions

  Regular grid: stride(shift)를 통해 모든 이미지를 스캔해서 feature extraction하는 것: 정보량이 많으나 느리고 Occlusion에 약함

  Interest regions: quickpoint, 특정 코너에서만 뽑기 때문에 정보를 잃을 수 있으나 Occlusion에 강함



Precision and Recall

Precision: true positive / true + false positive (아닌데 맞다고 한거)

Recall: true positive / false negatives (원래 맞는데 아니라고 한거)

Dataset의 종류

Training set: 학습을 위한 데이터셋

Validation set: validation을 위한 데이터셋 (for tuning hyperparameters 등)

Testing set: 정상적으로 학습되었는지 확인하기 위해 사용하는 데이터셋


Q. 왜 데이터셋을 나눈거지?

A. 교차검증을 위해서 나눔 (local minimum에 빠지는 등의 위험요소를 피하며 제대로 학습 했는지)

Q. Validation set을 Training set으로 써도 될까? (적당히 많은 학습이 성능 향상을 불러오므로)

A. 하지 않는게 원칙이며 가능하면 하지 않는게 좋다.


Training


Image features

 - 이미지의 feature를 뽑아낸다.


SURF/SIFT vector라던지, deep-learning feature라던지


Labels

 - human inputs, 이미지가 무엇인지 레이블링 하는 것.


  바이크를 찾고 싶으면 바이크의 이미지와 그 이름을, 바이크의 엔진, 체인 등을 찾고 싶으면 그것보다 더 많은 레이블링을 해야 함


Weakly supervised - 자동차의 위치를 파악하는 것 (있어요/없어요)

Fully supervised - 위치와 경계를 포함하여 동시에 여러개의 물체를 인식


Training

 - Training 결과가 weighted되지 않도록 균일하게 training


Trained Classifier: trained model (단위벡터, hyperparameter 등)


The machine learning framework


형태로 이루어져 있음


x = 이미지의 feature

y = label



trained model의 경우



의 값이 최소가 되는 f(x_i) 값을 찾으면 됨.


f(x_i) = estimation 

y = ground truth


Classification

  종류의 개수를 나눌 수 있는 만큼의 decision boundary들을 구성한다.


Classifiers



  단순히 classification 작업은 training을 요구하지 않음. input에 대해 가장 가까운 training example을 찾아내기 위함.


Q. 문제점은?

A. 가장 가까운 example을 찾아내기 때문에 잘못 학습된 데이터가 존재할 경우 잘못된 데이터가 만들어질 수 있음.

    해결 방법으로는 K-nearest neighborhood를 사용해서 여러개를 가지고 판단하면 됨.


Linear classifiers: SVM (Support vector machine)


f(x) = sgn(w*x+b) // 형태: y = ax+b (linear; 1차함수 형태)


Q. non-linear하게 분포되어 있지 않은 데이터들은 어떻게 하는가?

A. 한 차원 더 높여서 decision boundary를 생성한다.



  실제적으로 vector의 차원이 높아지는 것은 아니지만, 차원을 늘리는 kernel과 해당 kernel의 hyperparameter를 통해 데이터를 non-linear하게 mapping한다.


*Polynomial과 RBF가 대표적이다.


Q. 클래스가 2개가 아닌 3개 그 이상인 경우는 어떻게 해결하는가?

A. One vs the others(One vs one)로 해결하면 된다.


Multi-class SVM은 확실히 정해진 방법이 없으나, One vs the others로 해결할 수 있음.


  예를 들어 A, B, C라는 3개의 class가 있을 때 A를 제외한 B, C를 the others로 보고 2-class SVM으로 취급하여 classification하고, B와 C의 경우에도 A를 classification했던 것 처럼 진행하면 된다.


Q. One vs the others (one)의 문제점은 무엇인가?

A. 그림 내에 negative set(the others로 삼아지는 데이터들)이 많지 않은 경우 성능이 좋지 않음.


SVM의 좋은점과 나쁜점

최적화만 잘 하면 Support vector만 뽑아낼 수 있게 되어 작은 training sample size를 가지게 됨.

직접적인 multi-class SVM이 존재하지 않아서 two-class SVM의 조합으로 사용해야 함.

이때 발생하는 문제점으로 computing power와 memory가 더 많이 필요해짐. (Learning capacity가 좋은 편은 아니다)


Bias-Variance Trade-off

Bias(편향, underfitting): estimated된 평균 model과 true model의 차이

Variance(분산, overfitting): 서로 다른 training set들과 estimated된 model의 차이


  너무 적은 수의 parameter가 학습되는 모델일수록 bias가 심해져서 부정확하며, 너무 많은 수의 parameter가 학습되는 모델일수록 variance가 심해져 부정확해진다. (적당한 선의 학습이 필요함)


Testing


Image features: training할 때 feature extraction method에 의해 생성된 feature들을 의미

About K-means


좋은점

다양한 데이터셋에 적용이 가능하다. (데이터 간 distance가 정의 가능하다면)

데이터의 사전 분석이 필요하지 않다. (탐색적인 기법)

빠르고 구현하기 쉬움


나쁜점

직접 K값과 threshold를 지정해야 한다. (dataset에 적합한 hyperparameter를 찾아줘야 함)

느려질 수가 있음 (time complexity: O(KNd) *K=threshold, N=height, d=dimensions)

Local minimum에 빠질 확률이 높음


어떨 때 적용하면 좋을까?

Data mining에서 classification 알고리즘으로 활용


Design choices

Randomly하게 K point로 initial cluster를 활용함, Optimization 시 local minimum에 빠질 위험이 높아짐. (Global minimum이 있음에도 불구하고 local mininum에 빠지게 되는 현상)


이상적인 클러스터링과 현실 (K값 선택의 딜레마)

  개체가 K-means의 K값인 2만큼 clustering되어야 하는데, outlier를 포함해야 하므로 hyperparameter인 k값을 찾지 못하면 아래처럼 outlier까지 잘못 분류해내는 현상이 나타남.

Validation Set*

여러 수의 cluster 수로 돌려봄과 동시에 performance를 비교함

K-means의 K 값을 validation set으로 활용

hyperparameter를 도출하는 set


최종은 test set을 쓰는데, validation set으로 greedy search를 함.


Agglomerative clustering


이 clustering 방법은 K-means와는 다르게 initial K 를 주지 않아도 됨


procedure

1. 모든 point들을 each cluster로 취급한다.

2. 가장 비슷한 pair를 찾고 tree로 clustering한다.

3. parent cluster로 merge한다

4. 2-3과정을 반복해서 binary tree 구축


결과적으로 그림과 같은 tree가 구축되고, 원하는 distance level (depth)에서 짜름으로써 cluster 개수 결정 가능


Pros and cons

Pros

적용 범위가 넓고 구현하기 쉬움

클러스터들은 적응형의 모양을 가지게 됨

클러스터의 수직계층구조를 제공 (binary tree 형태 구성의 특징)


Cons

weighted될 수 있음

K-means처럼 cluster의 수와 threshold를 지정해줘야 함

ultrametric(hyperparameter와 유사한 의미)를 사용해여 의미있는 계층 생성 가능



Attraction basin


  모집단이 가우시안 분포를 따르고 있으면 데이터들이 중앙으로 모이도록 한다.



Mean shift (평균 이동)


Region에 대해 중심값의 boundary(k-means의 k같이)를 주고 mean shift vector만큼 이동한다.

mean shift vector은 kernel density estimation을 통해서 계산한다.

* cluster와 tracking에도 사용이 가능함


Spectral clustering

특징: 개느림 (N개에 대한 모든 distance를 계산하기 때문에)



Segmentation as a result


  segmentation의 결과는 영상에서 최대한 많은 부분을 차지하고 있을 때 가장 좋다.

위쪽 사진은 K값이 2이기 때문에 2개의 꽃을 찾아냈다.




Cable Modem

Upstream: download를 위한 스트림

Upstream: upload를 위한 스트림


Headend scheduler에 의해서 데이터를 송수신할 Time slot을 관리한다.


  Headend scheduler는 그림과 같이 어떠한 Station이 데이터를 보내기 위한 time slot 요청이 들어오면 time slot을 할당(사용허가;Grant)해준다.


Cable spectrum division

  케이블에 Television data와 data channel을 함께 보내기 위해서는 cable spectrum은 세 갈래로 나뉘어야 하는데, User-to-network (Upstream), network-to-user (downstream), Television delivery로 구성된다.


User-to-network (Downstream): 5-40MHz (35MHz bandwidth)

Television Delivery (Downstream; TV): 50~550MHz (500MHz bandwidth)

Network-to-user (Upstream): 550~750MHz (200MHz bandwidth)


Multiplexing 관점에서는 TDM, Up/downstream을 나누는 관점에서는 FDM을 사용하고, Up/downstream의 내부에서는 TDM으로 데이터를 전송한다.


Q. Upstream은 왜 downstream에 비해 상대적으로 bandwidth가 좁은가?

A. 서버가 아닌 클라이언트이기 때문. 다운로드를 많이 쓰기 때문에 bandwidth를 downstream에 많이 할당한다.


Television에는 보통 64/256-QAM을 사용하고, Data transmission에는 QPSK나 16-QAM을 사용한다.

*QPSK (Quadrant-phase Shift Keying): 위상을 4개로 쪼개서 데이터 전달에 씀 (2비트)

 QAM (Quadrant Amplitude Modulation): 진폭과 위상 정보를 활용해서 데디터 전달에 씀 (4비트)


ADSL

Asymmetric Digital Subscriber Line


비대칭형 (upstream과 downstream의 크기가 다름)

Multiplexing에 FDM을 사용 (POTS - 음성데이터: 25KHz)



  그림과 같이, ADSL은 0-20kHz를 Voice(POTS)에 할당하고, 25-200kHz는 Upstream과 250-1000kHZ는 Downstream에 사용한다. upstream과 downstream 사이에는 약 50kHz의 간격이 있는데, 이는 Guard band로써 인접 주파수끼리 간섭을 제거하기 위해 띄어놓은 주파수이다.


Echo cancellation

  그림의 (b)는 Echo cancellation으로 Upstream과 downstream간에 guard band가 없이도 데이터 전송에 간섭 현상을 제거하는 방법이다. Upstream과 downstream은 서로 간섭을 받게 되는데, crosstalk이 생기는 downstream 데이터에서 겹치는 upstream의 데이터를 빼면 원래 downstream의 데이터만 남게 된다.

  이 방법으로써 frequency bandwidth를 온전히 다 사용할 수 있게 된다.


Discrete Multitone (DMT)


Gain이 떨어지는 구간에서는 더 낮은 주파수로 보내서 SNR을 높이는 방법이다.


캐리어 시그널을 여러 주파수로 보낼 수 있도록 하는 것 (Multiple carrier signals)

4KHz의 서브채널로 나누어서 subchaannel 별로 다른 carrier(QPSK, QAM 등)를 걸어준다.

이론상 15.36Mbps, 실제로는 1.5~9Mbps의 전송률을 가짐.



VDSL

HDSL & SDSL의 경우는 2B1Q 코딩을 사용는데, VDSL의 경우 DMT와 QAM을 사용함

서비스마다 밴드를 나눠서 사용한다.



  (a)에 오타가 있다 (TDD -> FDD)

  

  무선에서는 Downlink/uplink라고 부르며, 유선에서는 downstream/upstream이라고 부른다.



FDD vs TDD

FDD

Uplink와 downlink 모뎀을 분리할 수 있어 구현 입장에서는 좋다.

동기화 이슈가 없음

2G, 3G, LTE(OFDMA)들이 이 방식 사용


TDD

Uplink와 Downlink사이에 guard time이 보장되어야 한다.

UL/DL을 time sharing 함 (flexible UL/DL link)

Wi-Fi

Effective data rate: R = B / 2(Tp + Tb + Tg)

Actual data rate: A = B / Tb = 2R (1 + (Tp + Tg) / Tb)

 *Tb = 실제로 전송된 데이터,  Tp = propagtion delay, Tg = guard time


FDMA + FDD vs TDMA + FDD

  전자의 경우 up/downlink를 FDD로 나누고, FDMA방식으로 분배해서 제공하며, 후자는 up/downlink를 FDD로 구분하고 그 내에서 TDD로 사용자에게 대역 제공.


Multiplexing

<Abstration of Multiplexing>



1개의 link에 N개의 channel을 태워 전송하는 것을 이야기한다.


Methodology

FDM (Frequency Division Modulation)

Frequency를 분할해서 Channel을 assign한다.


<FDM System>


  Receiver는 특이하게 Bandpass filter 라는 것을 사용하는데, 이는 특정 주파수만을 filtering해서 결과적으로 해당 채널의 signal만 추출할 수 있도록 해준다.


<FDM of Three Voiceband Signals>


  (a)를 보면, 음성 시그널은 가청주파수 대역 내에서 300~4000Hz 대로 진동한다. 이를 64KHz의 중심주파수 (Bandpass 방식)로 modulation한다. Fourier transform을 이용하면 영점좌표계를 중심으로 좌우에 스펙트럼이 분포된 것을 볼 수 있는데, 이는 중심주파수로부터의 offset을 활용한 주파수 분포로 볼 수 있다.

  중심주파수로부터 왼쪽에 위치한 주파수를 Lower sideband, 오른쪽에 위치한 주파수를 Upper sideband라고 한다.


Analog Carrier Systems

채널(Group)의 채널(Supergroup)의 채널(Mastergroup)

original signal이 여러번의 채널링을 거칠 수 있다


긴 거리의 링크는 FDM 계층 구조를 사용하여 데이터를 전송한다.

미국의 AT&T와 국제표준인 ITU-T는 서로 상이한 정의를 가지고 있다.


<그림은 AT&T의 Carrier system>


  1개의 group은 12개의 voice channel(each 4KHz)을 탑재할 수 있고, 이는 60~108KHz인 총 48KHz의 대역폭을 요구한다.

  Supergroup의 경우 5개의 group으로 이루어져 있고 총 60개의 채널을 탑재할 수 있다. 420~612KHz인 188KHz의 대역폭을 요구하는데, 토탈 240KHz(4*12*5)가 공식이긴 하나 약간 모자르다.

  Mastergroup은 10개의 Supergroup으로 이루어져 있고 600개의 채널을 탑재할 수 있다.


  ITU-T에서는 Mastergroup이 5개의 supergroup으로 이루어져 있어 약 1.2MHz(4*12*5*5)의 대역폭을 요구한다.


WDM (Wavelength Division Multiplexing)

파장을 나누어 Multiplexing하는 방법, Optical fiber에 쓰이는 방식


<Wavelength equation, 출처: http://ka.do/kR7>


FDM과 비슷한 방식이긴 하지만 frequency대신 wavelength를 나누어 사용함



<Wavelength Division Multiplexing>


  서로 다른 wavelength를 가진 데이터를 Multiplexing하여 전송하고, demodulation해서 정보를 획득함


<ITU WDM Channel spacing>

  wavelength equation에 c값으로 빛의 속도가 들어가고 광자의 진동수로 인해 높은 frequency에서 operation되는 것을 볼 수 있고, 주파수가 0.05THz(50GHz) 단위로 spacing이 되어 있다.


TDM (Time Division Modulation)

시간을 분할해서 Channel을 assign한다.


<Synchronous Time Division Multiplexing>


  위에 살펴본 FDM과는 다르게 주파수 대신 시간으로 Time slotting을 해서 전송하는 방식이다.

  Receiver측에서는 Modem이 demodulation을 하고 Operation scan을 진행하여 다시 여러개의 시그널로 나누게 된다.


TDM Link Control

TDM의 특징으로는 Header와 Trailer가 없다.

또한 Data Link control protocol이 필요가 없다.

Error control의 경우 각 채널에서 직접한다. (TDM이 error control에 관여하지 않음)


<Use of Data Link Control on TDM Channels>


  Time slot에 순차적으로 input signal을 돌려 넣어 보낸다.


Framing

  시작지점이 일치하지 않아 TDM시 잘못 읽어버리는 문제가 발생할 수 있는데, 이를 Framing을 통해 해결한다. Framing이란 1개의 control bit을 TDM frame에 삽입하여 Synchronous한 TDM을 만드는 방법을 의미한다.


Pulse stuffing

각각의 Time slot에 미달되는 데이터가 있으면, dummy bit를 추가하여 slot을 완성시킨다.


<TDM of Analog and Digital Sources>


문제점 1. 2KHz와 4KHz 신호에게 Time slot을 동일하게 분배해도 괜찮을까?

  - 기본적으로 각각의 input에게는 동일한 time slot이 돌아가게 된다. 그러나 4KHz 신호에 대해서는 2KHz의 신호보다 2배 높은 대역폭을 가지고 있으므로 Time slot 또한 2배로 늘려줘야 한다.

  그래야 대역폭이 2배니깐.


문제점 2. bitrate가 모자른 신호의 경우 time slot에 태우기 전 어떻게 해야할까?

  - Pulse stuffing을 하면 된다. 8Kbps의 신호를 받아야 하는데 7.2Kbps의 신호를 받은 경우, 나머지 0.8Kbps를 pulse stuffing을 통해 dummy bit로 채워줘서 전송하면 scan operation시 synchronization에 관한 문제가 발생하지 않는다.


<North American and ITU-T's TDM Carrier Standards>


  NA TDM Carrier Standard 의 경우 DS-1/2/3이 각각 Voice channel을 24, 96, 672개씩 태울 수 있다.

  ITU-T의 Carrier Standard는 Level 5에서 7680개의 voice channel을 태울 수 있다.


DS-1 Transmission Format

<DS-1 Tranmission Format>


  DS-1 Transmission format의 특이점으로는 각 채널이 8개의 Time slot으로 이루어져 있다는 점과 맨 앞 1칸을 비워서 sync를 맞추는 용도로 사용한다는 것이다.

  또, 24번 채널은 Signaling 전용으로 사용되는 경우가 있다.

  1-7번 비트는 56Kbps의 서비스에 사용되고, 2-7번비트는 비교적 낮은 9.6Kbps, 4.8Kbps, 2.4Kbps의 서비스에 사용된다.

  총 193bits를 125microsec에 보내는데, 1.544Mbps (193/125)의 전송률을 보이는 것을 알 수 있다.


SONET/SDH

ANSI(NA)에서는 Synchronous Optical Network, ITU-T에서는 Synchronous Digital Hierarchy로 부른다.

광 네트워크는 속도가 느린 대신 많은 Multiplexing이 가능해져서 백본 등 용도에 적합하다.


SONET/SDH에는 header 정보가 들어간다.

Data rate(총 데이터의 양) - Payload rate(실제 의미있는 데이터의 양) = overhead


<SONET/SDH Frame Formats)


  SONET의 STS-1 frame format은 특이하게 section overhead라는 부분과 line overhead, path overhead가 존재하며 section overhead와 line overhead를 합쳐 transport overhead라고 부른다. 총 810옥텟(6480비트, 90*9)의 크기를 가지고 있으며 section overhead를 제외한 부분을 payload라고 부른다.

  반면 STM-N은 STS-1에 비해 간단하게 section overhead를 제외하고는 line overhead가 존재하지 않는다.





Error Control Techniques

Positive ACK / Negative ACK

Positive ACK: TCP에서 사용하는 방식. ACK를 보냄으로써 전송이 성공적임을 sender에게 알림
Negative ACK: Error인 것을 알림. timeout을 걸고 일정 시간 내 프레임이 도착하지 않을 시 재전송하도록

수신단 입장에서의 Lost frame, Damaged frame은 구별할 필요가 없다.
어쨌든 receiver는 받지 못한 frame이기 때문.

ARQ (Automatic Repeat Request)

ARQ를 통해 unreliable한 data link를 reliable하게 바꿔줌
Stop-and-wait, Go-back-N, Selective-reject가 있음

Stop-and-wait ARQ


receiver가 한 frame 받으면 ACK보내는 것
receiver가 damaged frame을 받거나 받지 못 한 경우 응답하지 않고, sender의 timeout이 만료되면 retransmit함

ACK가 damaged된 경우??

이미 받았는데 또 보내는 경우이므로 receiver는 다른 숫자(alternate)의 ACK를 보냄


Go-back-N ARQ

Sliding-window에 사용하는 방식 (가장 많이 사용되는 error control)

오류난 frame으로부터 N개를 다시 재전송


Selective-reject ARQ (Selective retransmission)

못 받은 frame만 재전송

못 받은 프레임은 건너뛰고 후의 프레임들은 buffering해 놓음

SREJ보내는 시점부터 요청한 frame이 도착할 때까지의 시간 사이에 도착한 frame은 buffering

잘 받으면 RR을 날림 (홀/짝수 프레임마다) 




HDLC (High level Data Link Control)

Station types

Primary: 컨트롤을 하는 스테이션

Secondary: primary에 의해 컨트롤 당하는 스테이션

Combined: 주거니받거니 가능한 스테이션


Link Configuration

Unbalanced: 1개의 primary, 다수의 secondary

Balanced: 2개의 combined station


Data Transfer modes

NRM, ABM, ARM(거의 안씀)


NRM (Normal Response Mode)

Unbalance configuration에서 사용

primary가 transfer를 초기화함


8-bit control field를 사용


N(s) = sender의 window, N(r) = receiver의 window

앞의 bit에 따라 information, supervisory, unnumbered가 구분됨


I-frame 의 경우 보내면서 받을 수 있음 (상대에게 데이터를 받으며 ARQ를 보내야 할 때 사용)

S-frame 의 경우 받기만 가능


Bit stuffing


일반적 데이터를 flag로 오인하여 처리하지 않도록 하기 위해 bit-stuffing 기법 사용

1이 5번 연속 나타날 경우 0을 삽입


Control Field (P/F field)

Poll/Final, P가 1인 경우 primary -> secondary로 response request(응답 요청)를 함

F가 1인 경우 secondary -> primary로 응답하며 설정하고 보냄


Information field and Frame check sequence field (FCS)

Info 필드는 I,U-Frame에서만 나타남
FCS 필드는 error detecting code가 frame에 남은 비트에 기록됨. 일반적으로 16bit CRC-CCITT사용.

HDLC Commands

Supervisory: RR(receiver ready), RNR(receiver not ready), REJ(reject), SREJ(selective-reject)



'Research & Development > Network' 카테고리의 다른 글

[컴퓨터통신] Multiplexing (2)  (0) 2019.05.11
[컴퓨터통신] Multiplexing (1)  (0) 2019.05.02


Image frequency로부터 Feature를 뽑아 내는 일련의 작업들을 전처리라고 한다면, 후처리도 존재한다.

후처리에는 대표적으로 Recognition작업과 Reconstruction으로 나누게 된다.


Recognition은 CNN(Convolution Neural Network)등을 통해 장면/장소/물체를 인식하는 것.

Reconstruction은 이미지를 복원하는 것. 


Recognition과 Detection은 엄연히 다른데, 가장 큰 차이점으로써 Detection은 물체의 유/무를 가린다고 하면 Recognition의 경우 물체가 무엇인지에 대해 판단하는 것이라고 볼 수 있다.


Machine Learning

데이터에 대해 학습하고 데이터를 예측하는 것


대표적 예시

1. Face recognition

2. Object classification (등록된 물체를 구분없이 찾는 것)

3. Scene Segmentation (Unsupervised learning)


ImageNet

카테고리별 굉장히 많은 이미지들이 있는 사이트 (WordNet에 있는 각각의 카테고리에 해당하는 이미지)


Top 5 error



  위 사진 중 달마시안과 체리가 나온 사진을 보면 달마시안과 체리가 함께 있는데도 불구하고, Recognition의 결과 중 Top 5에서 1st의 결과가 recognition의 결과로 표시되는 것을 확인할 수 있다.

Ground truth는 cherry인데 Top 5 이내에서 인식하지 못한 것을 Top 5 error라고 한다.


ImageNet Competition

2012년, Krizhevsky가 ImageNet competition에서 처음으로 Traditional CV의 recognition rate를 이겨먹는 결과를 보여줌.

이후로 deep learning은 폭발적으로 증가. 구글과 마소가 2015년 human score를 박살내버리는 쾌거 기록



Supervised and Unsupervised Learning

Supervised learning은 지도 학습, 사람이 학습을 직접 시키는 모델. 예를 들어 어떤 물체에 대해 label을 기록해주는 것. 예시로써 얼굴 인식, 지문 인식이 있다.


Unsupervised learning은 비 지도 학습, 학습을 지가 알아서 하는 모델. 대표적으로 Compressing(압축)이 있다.

asdf


Dimensionality Reduction

다차원을 낮은 차원으로 변환하는 작업

PCA, ICA, LLE, Isomap 등의 method가 있는데, 대표적으로 PCA를 사용함


PCA (Principal component analysis)

데이터를 가장 잘 나타내는 새로운 축을 생성해서, Mean 값을 빼버려서 0으로 재정렬

축에 대해 Minimization을 진행함 (분산이 줄어들게 됨)

이 때, 생성한 eigenvector(Major vector)와 수직(orthogonal)인 vector인 Minor axis가 생김


특성

Compressing은 잘 되는데 classification이 잘 안됨

Representation에 특화되어 있고 classification에는 약함



Eigenvalue and Eigenvector

상세한 설명은 요 블로그에 잘 되어 있으니 참고: https://darkpgmr.tistory.com/105


Eigenfaces

Eigenanalysis(통계적 데이터 분석)를 활용한 얼굴 분석 기술 (99' MIT MediaLab)


Mean을 제거한 variance들. (얼굴들의 eigenvector들)

요 면상과 평균 얼굴을 합치면 원래 얼굴을 복원할 수 있음.


처리 시 mean을 제거하지 않으면 요것처럼 평균 얼굴이 나옴 (input 대비 평균 얼굴)


 -> coefficient + model = original faces



10*10 이미지를 1*100과 컨볼루션해서 100*400의 벡터를 만들어냄 (400개의 얼굴 vector)


Clustering

Image segmentation (이미지를 쪼개서 무엇인지 판단)에 많이 쓰임. Unsupervised learning의 한 종류.

잘게 쪼개서 비슷한 색상끼리 grouping해서 superpixel을 생성


Oversegmentation and Undersegmentation

Oversegmentation은 너무 많이 segmentation한 것 (ex> 100개의 Pixel value로 segmentation)

Undersegmentation은 너무 적게 segmentation한 것 (ex> 3개의 pixel value로 segmentation)


Hierarchical segmentations

Oversegmentation과 undersegmentation사이의 threshold값들

몇 개의 cluster로 이미지를 clustering할 것인가?


Process

1. Summerizing data

   데이터를 분류함 (남/여 -> 나이 -> 인종 등)

   patch-based compression 이나 denoising을 진행함 (quantization이라고 부르는데 이때, flunctuation이 낮아짐)

2. Counting

   텍스쳐, 색상, SIFT vector의 Histogram이 이용됨

3. Segmentation

   이미지를 서로 다른 구역으로 분리함

4. Prediction

   같은 클러스터에 있는 이미지들은 같은 label을 가짐


How do we cluster?

K-means, Agglomerative clustering, Mean-shift clustering, spectral clustering등의 methodologies 사용


K-means

1. K Center를 임의로 지정

2. 각각의 점을 가까운 center로 할당

3. 새로운 center(mean) 값을 연산

4. 2-3 과정 반복 (2 과정에서 center로 re-assigned되는 경우가 없을 경우 break)


문제점

initial seed가 randomly하게 변하기 때문에, 결과값이 상이한 문제점이 생김







'Photograph' 카테고리의 다른 글

say wio in tokyo  (0) 2023.08.31
초여름의 화성  (0) 2019.05.30
아주대학교 벚꽃나들이  (1) 2019.04.13