'2019/12'에 해당되는 글 3건

  1. 2019.12.19 :: 저조도 영상 색 복원 기법
  2. 2019.12.19 :: CNN기반의 object detection 동향
  3. 2019.12.19 :: VOS(Video Object Segmentation)
영상처리 2019. 12. 19. 15:20

영상개선기법(저조도 영상 색복원) under-exposed image enhancement

- 영상의 구조적으로 어두운 부분과 밝은부분을 개선한다. (색감을 유지해야 한다)

 

1. statistical information-based approach

-stretch the dynamic range using histograms

 

2.Retinex-based approach

image can be decomposed into illumination and reflectance

 

2번을 더 많이 사용하고 있다. 

 

 -Single-scale Retinex output(SSR)

 -Multi-scale Retinex output(MSR)

 

---matrix 기반 optimazion을 진행한 기법들

Decomposition and enhancement 

-Bright-pass filter based decomposition

   1. Bright-pass filter baesed decomposition

   2. Variational framework for Retinex

   3. Compute L and R simultaneously

   4. Preserver overall structure and smooth textural details simultaneously

   5. Principal energy-based decomposition

   6. Max pooling on the diffusion space

 

 

Deep neural network-based generation

  -Concept of image translation

  =Residual convolutional neural network with content, color, ...

 

 1. Deep photo enhancer: GAN-based approach

 2. Deep illumination estimation: 중간에 illumination을 한번 예측하자.

 

Technical review of image enhancement

-Retinex-based decomposition has been widely emploted

-Estimated illuminations are adjusted for visibility

-Deep learning-based schemes also have been studied

-Various VQMs can be employed for performance evaluation

 

posted by hide in lab MasterPark

댓글을 달아 주세요

딥러닝(Machine Deep learning) 2019. 12. 19. 13:46

---

object detection = object classification + localization

객체 검출(detection)이란 위의 그림과 같이, 이미지에서 다른 객체들을 찾고 그들을 분류(classify)하는 것을 말한다. 

물체의 바운딩 박스를 추정

 

Two stage: region proposal을 뽑고 분류를 진행하는것

-RCNN: 어떤 영역이 물체가 있을법하면 feature를 뽑아내고 뽑아낸 feature를 SVM으로 분류한다.

Input: 이미지
Outputs: 박스로 영역 표시(Bouding box) + 각 객체에 대한 라벨링(class label)

무수히 많은 박스들을 생각한 다음에 그 중에 어떤 것이든 실제 객체에 해당하는 것을 찾는 방식이다.

 

Selective search를 통해 이 상자들, 또는 region proposal라고 불리는 영역을 생성해낸다.

 

문제점:

  1. 매번 하나 이미지에서 나오는 모든 각각의 제안된 영역을 각각 CNN(AlexNet)을 통과시켜야 하는데, 이는 하나의 이미지당 2000번의 forward pass를 거쳐야 한다는 이야기이다.
  2. 3개의 다른 모델을 학습시켜야 했다. Image feature를 생성하는 것, classifier가 class를 예측하는 것, regression model이 bouding box를 찾아낸 것. 이것이 전체적인 pipeline을 학습시키 어렵게 하였다.

 

RCNN의 속도가 느린것을 빠르게 하기 위해 변형한것이 아래의 2가지 기법

-fast RCNN: 전체 피처를 뽑고 selective search

-faster RCNN

 

==오래걸리고 비효율적 but 정확하다

 

 

One stage(또는 Single stage) 제일 마지막의 피처맵을 사용하는 방식에서 벗어남

-YOLO: 다크넷으로 피처를 뽑고 각 그리드마다 요소를 ESTIMATION을 통해 

-SSD: 중간 피처맵마다 뽑아내 합친다

 

==속도가 빠르다

 

---

최근 기법들

1. Anchor box는 반드시 필요한가?-필요없다.

2. Pre-trained 모델이 필요한가?

3. 더 나은 구조가 있는가?

 

ExtremeNet

 

CenterNet #1

중앙을 찾고 양쪽 점을 찾아 잘 grouping후 바운딩박스를 찾자

 

CenterNet #2

코너도 필요없고 센터만 잘 찾자.

 

FCOS

기존의 포인터 기반의 물체감지 방식

 

2. Pre-trained 모델이 필요한가?

DSOD, ScratchDet

pre-trained 모델을 사용하지 않고 처음부터 학습

 

---

Rethinking ImageNet Pre-Training

-Normalization

-Training Time

 

-배치노말라이제이션

모든 채널마다 배치사이즈에 대해서 값을 구한다.

모든 채널을 축으로 값을 구한다.

 

-그룹노말라이제이션

몇개의 정해진 채널간의 variance를 구한다..

==

큰영상 사용시 배치노말라이제션을 사용하기 어려울때, 그룹노말라이제션을 사용하자 

 

학습시간이 길어질수록, Pre-Training과 scratch의 결과가 비슷해진다.

 

 

 

References:

https://junn.net/archives/2517

posted by hide in lab MasterPark

댓글을 달아 주세요

딥러닝(Machine Deep learning) 2019. 12. 19. 11:19

Video Object Segmentation

비디오를 프레임별로 나눠서 segmentation진행

원활한 segmentation과 성능개선을 위해서 아래의 기법들을 사용

각 기법별로 네트워크 구조도 존재

 

용어들

Warping

찌그러지거나 손상된 이미지를 정규화하기 위해 사용하는 기법

 

Propagation

-순전파(forwards propagation)은 뉴럴 네트워크의 그래프를 계산하기 위해서 중간 변수들을 순서대로 계산하고 저장합니다. 즉, 입력층부터 시작해서 출력층까지 처리합니다.

-역전파(back propagation)은 중간 변수와 파라미터에 대한 그래디언트(gradient)를 반대 방향으로 계산하고 저장합니다.

-딥러닝 모델을 학습시킬 때, 순전파(forward propagation)과 역전파(back propagation)는 상호 의존적입니다.

-학습은 상당히 많은 메모리와 저장 공간을 요구합니다.

 

Refinement

- 네트워크 개선, 정제

마스크 refinement

결과로 segmentation output이 더 좋아진다.

 

Fine-Tuning

기존에 학습되어 있는 모델을 기반으로 아키텍쳐를 새로운 목적(나의 이미지 데이터에 맞게)변형하고 이미 학습된 모델 Weights로부터 학습을 업데이트하는 방법

 

-시간이 오래 걸린다.

 

-모델의 파라미터를 미세하게 조정하는 행위 (특히 딥러닝에서는 이미 존재하는 모델에 추가 데이터를 투입하여 파라미터를 업데이트하는 것을 말한다)

 

파인튜닝은 정교한 파라미터 튜닝이라고 생각하면 되는데 정교한과 파라미터가 키포인트들이다.

고양이와 개 분류기를 만드는데 다른 데이터로 학습된 모델(VGG16, ResNet 등)을 가져다 쓰는 경우를 생각해보자.

ex) VGG16 모델의 경우 1000개의 카테고리를 학습시켰기 때문에 고양이와 개, 2개의 카테고리만 필요한 우리 문제를 해결하는데 모든 레이어를 그대로 쓸 수는 없다.

 

따라서 가장 쉽게 이용하려면 내 데이터를 해당 모델로 predict하여 보틀넥 피쳐만 뽑아내고, 이를 이용하여 어파인 레이어(Fully-connected layer)만 학습시켜서 사용하는 방법을 취하게 된다. 하지만 이 경우는 파인튜닝이라고 부르지 않는다. 피쳐를 추출해내는 레이어의 파라미터를 업데이트하지 않기 때문이다.

 

어파인 레이어를 업데이트하지 않냐고 생각할 수 있지만 내가 새로 구성한 레이어이기 때문에 업데이트가 아니며 초기 웨이트가 랜덤이기 때문에 정교하지도 않다.

인튜닝을 했다고 말하려면 기존에 학습이 된 레이어에 내 데이터를 추가로 학습시켜 파라미터를 업데이트해야 한다.

이 때 주의할 점은, 튜토리얼에서도 나오듯, 정교해야 한다.

완전히 랜덤한 초기 파라미터를 쓴다거나 가장 아래쪽의 레이어(일반적인 피쳐를 학습한 덜추상화된 레이어)의 파라미터를 학습해버리면 오버피팅이 일어나거나 전체 파라미터가 망가지는 문제가 생기기 때문이다.

 

Embedding(임베딩)

범주형 자료를 연속형 벡터 형태로 변환시키는 것을 embedding이라고 한다. 주로 인공신경망 학습을 통해 범주형 자료를 벡터 형태로 바꾼다. 인공신경망 학습 과정을 통해 각 벡터에 가장 알맞는 값을 할당하게 된다. 이 과정에서 각 범주(category)는 각각의 특징을 가장 잘 표현할 수 있는 형태의 벡터값을 가지게 된다. t-SNE와 같은 방법을 활용하면 이 벡터들을 시각화해서 표현할 수도 있으며, 매우 직관적으로 표현된다.

 

임베딩 사용하는 이유?

1. 차원을 축소할 수 있다.
범주형 자료를 one-hot-encoding으로 표현할 경우 n-1개의 차원이 필요한 반면,
embedding을 활용하면 2,3차원으로도 자료를 표현할 수 있다.

2. 범주형 자료를 연속형으로 표현할 수 있다.

3. 의미를 도출하기에 용이하다

vector space로 나타낼 경우, 직관적으로 이해할 수 있는 형태를 띠므로 의미를 도출하기에 편리하다.

 

임베딩 스페이스

RGB가 인코더 통과후의 얻어지는 feature map을 통해서 위치 관계를 확인할수 있으므로 그 자체를 임베딩 스페이스라 한다.

 

References:
https://eehoeskrap.tistory.com/186

https://github.com/tkwoo/visualization-segmentation-process

posted by hide in lab MasterPark

댓글을 달아 주세요