영상처리 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

댓글을 달아 주세요

VR, AR, MR 2019. 11. 27. 17:06

Unity 2018.1.0f2 버전에서 진행

 

 

1.핸드폰, 오큘러스 GO 연동

1) 핸드폰으로 오큘러스 모바일 다운받기

2) 오큘러스 계정생성

3) 핸드폰과 오큘러스 연동하기

4) 연동 후 오큘러스 설정에 들어가서 개발자 모드 on하기

 

2. Unity setting

1) 오큘러스 유니티 패키지 다운로드

https://developer.oculus.com/downloads/unity/

 

Unity | Developer Center | Oculus

Oculus Audio Profiler for Windows

developer.oculus.com

2) 오큘러스 Integration 다운로드

https://developer.oculus.com/downloads/package/unity-integration/

 

Unity Integration | Developer Center | Oculus

Oculus Integration for Unity - 1.43 Unity provides built-in VR support for the Oculus Rift, Oculus Quest, and Oculus Go. The Oculus Integration for Unity package adds scripts, prefabs, samples, and other resources to supplement Unity’s built-in support. Th

developer.oculus.com

오큘러스 고에서 다른 사람의 계정과 연동되어 있으면, 초기화를 해줘야 함!

초기화: 오큘러스고 음향조절 -버튼과 전원버튼을 5초 누르면 영어로 셋팅창이 나오고

2번째의 공장초기화를 누르면 모든 데이터가 초기화된다.

 

3) 유니티에 안드로이드 셋팅

Edit -> Preferences -> External Tool

초기에는 아래 SDK, JDK, NDK, 이 3부분이 비어있는데 옆에 Download로 다운로드 받고 해당경로 추가하기!

SDK의 경우 안드로이드 스튜디오를 다운로드 받고 스튜디오 내부에서 SDK를 추가적으로 다운로드 받아야함

File-> setting -> Appearance & Behavior -> System settings -> Android SDK에서 다운로드 가능하며

본인은 어떤 버전을 사용할지 몰라 모든 버전을 전부 다운로드 받음.

SDK의 경우 경로가 user\user\AppData\Local\Android\Sdk 이런식인데 여기서 AppData는 숨겨져 있어서 처음 다운로드 받을 때 경로를 잘 확인해야한다. 위의 사진에서 빨간 박스로 표시해둔게 SDK가 다운로드될 경로

 

 

 

4) Build Setting에서 안드로이드로 플랫폼 변경하기! (switch Platform)

 

5) Player Setting- XRSettings > Virtual Reality Supported 체크를 해주고 아래에 있는 플러스 (+) 눌러서 Oculus를 추가하기

 

6) Oculus > Tools에서 플랫폼 설정

 

3. 유니티 apk 빌드

위의 모든 셋팅이 끝난 후 

1) 빌드할 secene 로드

2) 연동된 오큘러스 확인

3) build and run 하면 apk 생성

 

4. 오큘러스 고 apk 실행

1) 오큘러스 고 ADB 드라이버를 설치하고, inf파일을 마우스 우클릭으로 설치한다.

https://developer.oculus.com/downloads/package/oculus-adb-drivers/

 

Oculus ADB Drivers | Developer Center | Oculus

Oculus ADB Drivers 2.0 This download contains the drivers required to use ADB with Android-based Oculus devices. Version 2 adds support for MTP mode connections. For more information, review the ADB documentation.

developer.oculus.com

설치된 adb 드라이버는 C:\Users\사용자윈도우계정\AppData\Local\Android\Sdk\platform-tools 내에 설치됨

 

2) cmd창 관리자권한으로 실행

3) cd ..  2번 입력 후 위의  adb 드라이버 위치로 들어가야함!

>> cd Users\사용자윈도우계정\AppData\Local\Android\Sdk\platform-tools

4) 오큘러스와 컴퓨터 USB로 연동 (오큘러스에서 디버깅허용버튼을 눌러야함! 안나오면 오큘러스 재부팅시켜보기)

5) cmd 창에 adb devices를 쳤을때 기기 아이디가 나오면 제대로 연결된것

6) 빌드한 apk 경로 확인후 adb install __apk경로를 치면 success라고 나오며, 알수없는 라이브러리에 해당앱이 설치

'VR, AR, MR' 카테고리의 다른 글

유니티 오큘러스 GO 연동, 빌드하기  (0) 2019.11.27
MR 홀로렌즈의 spatial mapping  (0) 2019.02.26
posted by hide in lab MasterPark

댓글을 달아 주세요

학술대회 2019. 11. 5. 20:06

11월 1일부터 11월 2일 금,토 2일동안 제주대학교 개최된 정보처리학회 추계학술대회에 참가했다.

 

춘계학술대회는 숭실대학교에서 개최되었는데 이번 추계는 제주도에서 개최되었고 좋은 기회로 제주도를 다녀올 수 있었다.

 

1박 2일과 학술대회 참여로 개인 시간이 많지 않아서 스케줄이 촉박했다.

 

김포공항에서 새벽 6시 비행기로 출발하여 제주도 도착시간은 7시 30분 정도였다. 전날 미리 도착한 친구들이렌트한 스쿠터와 함께 일정을 다 짜두어서 수월하게 여행할 수 있었다. 

 

제주도의 날씨는 서울과 다르게 푸근하고 공기가 너무 좋았다. 

제주도 공항 도착

 

 

 

첫날 일정은 공항 근처 몸국을 먹었다. 처음 먹었지만 정말 맛있었다. 재방문 의사 아주 높음.

 

몸국

 

 

그 이후 렌트한 스쿠터로 동해방향으로 해안도로를 타고 풍경을 구경했다. 바닷바람도 좋았고 날씨가 너무 좋아서 여러모로 기분이 좋았다.

 

앞서가며 길안내를 해주는 친구

 

 

 

 

동해쪽 해안도로를 타며 바다 앞에서 딱봐도 자리를 너무 잘잡은 카페가 있어서 커피 한잔 했다. 바다색이 정말 이쁘다.

보기만 해도 힐링이 된거 같다.

 

 

 

 

점심은 제주대학교 10분 근방의 탐라버거를 먹었다. 마찬가지로 맛이 좋았다.

 

탐라버거

 

 

늦은 점심 후 제주대학교로 들어가서 논문을 발표했다. 학교는 정말 컸다.

발표 논문 포스터는 종이 포스터로 해서 생각보다 많이 구겨져서 파일로 첨부했다. 논문포스터 양식이 필요하신 분들은 가서 사용이 가능하다.

 

발표 후 숙소로 돌아와서 동문시장에 회를 먹으러 갔다. 특방어를 시켰지만 생각보다 좋은 부위는 주지 않았다. 딱새우는 달달하고 처음보는 한라산 17도가 아주 잘 들어갔다. 술을 잘 못하는 친구도 안주가 좋아서 생각보다 잘 마셨다.

 

방어

 

딱새우

 

 

둘째날은 친구 2명이 12시 비행기 본인이 18:30 분 비행기라서 오전 10시에 일찍 각자 길을 가기로 했다. 친구들 조언으로 어제 스쿠터로 다녀간 동해 해안도로보다 서해쪽이 좀 더 풍경이 좋다고 해서 직접 걸어가는 계획을 짰다. 

 

탑골공원을 시작으로 용두암, 마지막은 이호해변으로 대략 4시간정도 걸은거 같다.

 

용두암
제주 하늘

 

이호해변에서

 

혼자 좋아하는 팝송을 들으면서 바다 풍경을 보며 걷는 길은 생각보다 힘들지도 않고 좋은 경험이었다. 물론 공항에서는 굉장히 피곤했다. 평소 운동을 해서 이호해변까지 무사히 도착할 수 있었다.

 

하르방 라이언

가족 기념품으로 감귤 초콜릿은 절대 사오지말라는 말을 여러번 들어서 제주도에서만 살 수 있는 하르방 라이언과 와인을 사갔다. 가족 모두 만족해서 다행이라 생각했다.

 

제주대학교 학회 발표로 갔지만 친구들과 좋은 시간 그리고 혼자만의 여행도 하고 좋은 경험을 했다. 조만간 혼자 또다시 해안도로를 걷고 싶다.

 

 

KIPS_C2019B0216F.pdf
0.51MB
2019_정보처리학회_춘계학술대회_poster.pptx
2.07MB

논문과 논문포스터 첨부

'학술대회' 카테고리의 다른 글

191101-191102 제주대학교 추계학술대회 후기  (0) 2019.11.05
posted by hide in lab MasterPark

댓글을 달아 주세요

정보처리기사 2019. 10. 13. 14:23

#2019/11/22 정보처리기사 실기 3회 합격(90점)

 

2019년 필기 1회차 합격후 오랜 시간이 지나서 실기 후기를 쓰게 되었습니다.

가답안 채점 결과 93점으로 가볍게 합격을 생각하고 있습니다.

지금까지 총 3회의 실기를 보았고 1,2회 40, 50점대로 불합격이었습니다. 물론 하루 전날 공부한 결과인 것 같습니다.

이번 3회차 실기는 2020년부터 개정이 들어간다는 이야기를 듣고 이 악물고 3일전부터 공부를 시작했습니다.

 

 

---공부방법

1. 업무프로세스, 신기술용어, 전산영어 공부법

18년 3회 실기를 공부하던중 제가 발견한 것은 매해 3회차 실기에는 동일 년도에 1, 2회차에 나온 업무프로세스, 신기술용어 등이 무조건 포함되어 있다는 것입니다.

더불어 이전 년도 1,2,3회차에 나온 것도 반드시 1문제 이상씩 나왔습니다.

 

그래서 제 공부법은 17년 1,2,3회, 18년 1,2,3회 19년 1,2회의 업무프로세스, 신기술용어, 전산영어를 먼저 공부했습니다.

 

실제로 오늘 응시한 3회 실기에서도 예상한대로 지문의 글자 하나 바뀌지 않고 문항들이 그대로 나왔고, 제가 나올 것이라고 예상하고 만든 30개 문항에서 2문제 외에 15문제가 그대로 출제되었습니다. 이는 아래 가답안을 보면 확인하실 수 있습니다.

 

앞으로 실기 보시는 분들도 전년도 기출과 해당년도 기출을 반드시 숙지하고 가시면 좋을 것 같습니다.

 

2019년 정보처리기사 3회 신기술, 업프, 전산용어 가답안

* 신기술(25점)

1. 보안 용어(15점)

① ITIL -19년 1회

② 트러스트존 -18년 3회

③ BCP -18년 2회

④ 타이포스쿼팅 -18년 1회

⑤ DDOS -18년 2회

 

2. 신기술 용어(10점)

① RAID -19년 1회

② AJAX -18년 1회 

③ QOS -18년 2회

④ SDN -17년 3회

⑤ NFC -12년 3회

 

* 업무프로세스(15점)

1. 용어(7점)

- 답안: SCP, SCE -17년 2회

2. 용어,지문속답(8점)

- 답안: DSS, SIS, Mypage -17년 2회

 

* 전산영어(10점)

- 답안: Field, DBMS, DBA -17년 2회 

 

 

2. 데이터베이스 공부법

데이터베이스 공부법은 마찬가지로 기출을 우선적으로 공부하면서 아래의 내용은 반드시 숙지했습니다.

ALTER TABLE 테이블이름 ~

DROP TABLE 테이블이름 ~

INSERT INTO 테이블이름 ~

DELETE FROM 테이블이름 WHERE ~

UPDATE 테이블이름 SET ~

GRANT 권한을 부여할 기능 ON 테이블이름 TO 권한 줄사람 

더불어 INSERT를 이용한 데이터 삽입, CREATE TABLE, 뷰만들기 또한 반드시 숙지하고 가시면 좋을 것 같습니다.

 

개념부분에서는

-1NF~5NF 각각의 내용

-제약조건

-ACID

-보안 3대 용어 

-DBMS 도시화된 그림

-회복 기법, 로그와 데이터 덤프  즉각 연기 그림자페이지 검사점기법

-로킹

-공유잠금, 베타잠금

-트리거, 이벤트 이번 3회차 출제

-이력데이터 3가지 이번 3회차 출제

이 정도를 공부하고 갔습니다. 이부분 꼭 공부하고 가세요!

 

그외에 알고리즘과 자바 C언어는 따로 공부하진 않았습니다. 다들 열심히 하셔서 좋은 결과 받으셨으면 좋겠습니다.

마지막으로 3회차 전체 가답안 보여드리겠습니다.

 

 

2019 정보처리기사 실기 3회차 가답안

* 알고리즘(25점)

1. 순서도(10점)

- 답안: N, S -약수 개수 구하기 (17년2회)

 

2. 자바(3점)

10

11

10

20

 

3. 자바(6점)

- 답안: min, num[i]

- 최소값 (17년1회)

 

4. C언어(6점)

- 답안: n == -1, a

 

* 데이터베이스(25점)

1. (10점)

- 답안: Trigger(영문 입력), 이벤트 또는 event(한글 또는 영문), max, 선분, 변경 -16년 3회

 

2. SQL(3점)

- 답안: CASCADE 

 

3. (12점)

- 답안: 5, 4, 중복에 대한 설명, 사원번호

 

* 신기술(25점)

1. 보안 용어(15점)

① ITIL -19년 1회

② 트러스트존 -18년 3회

③ BCP -18년 2회

④ 타이포스쿼팅 -18년 1회

⑤ DDOS -18년 2회

 

2. 신기술 용어(10점)

① RAID -19년 1회

② AJAX -18년 1회 

③ QOS -18년 2회

④ SDN -17년 3회

⑤ NFC -12년 3회

 

* 업무프로세스(15점)

1. 용어(7점)

- 답안: SCP, SCE -17년 2회

2. 용어,지문속답(8점)

- 답안: DSS, SIS, Mypage -17년 2회

 

* 전산영어(10점)

- 답안: Field, DBMS, DBA -17년 2회 

posted by hide in lab MasterPark

댓글을 달아 주세요

-----서론

사람들은 사진을 촬영할 때, 필연적으로 여러 장애 요소들로 사진이 손상되는 경우가 존재한다. 이런 요소들 중 역광은 사진의 윤곽 이외 부분은 어둡게 표현되며 이미지가 손상된다. 이런 손상은 사진을 촬영하는 각도 또는 방향을 바꾸는 것으로 해결되지 않을 수 있다.  밝은 영역의 묘사를 포함하면, 어두운 영역이 보이지 않고, 어두운 영역의 세부묘사를 포함하고자하면 밝은 영역이 보이지 않기 때문이다. 따라서 위 문제를 해결하고자 본 논문에서는 손상된 영상의 동적범위를 확장시키는 기법에 대해서 소개하고자 한다. 

 

-----영상을 향상시키는 기존의 기법들 소개

1. 사진 촬영시 노출도를 다양하게 촬영해서, 여러 LDR이미지를 카메라 노출곡선을 이용해서 단일 HDR이미지로 합성

2. 최적의 셔터속도를 이용해서 촬영된 2장의 LDR이미지로 단일 HDR이미지 합성

 

영상의 동적범위를 확장시키는 기존의 기법들은 여러 LDR(Low Dynamic Range)영상을 카메라 노출곡선을 이용해서 단일 HDR(High Dynamic Range)영상으로 합성시키는 기법과 최적의 셔터 속도를 이용하여 촬영된 2장의 LDR영상을 단일 HDR영상으로 합성시키는 기법이 존재한다.

 

-----HDR 이미지란?

High Dynamic Range (HDR) 이미지는 한 노출에 대하여 일반 카메라로 촬영해서 얻을 수 있는 Dynamic Range보다 더 큰 범위를 가지는 이미지이다. 또한 실세계의 모든 광도 값에 정확히 비례하여 표현되고, 이 정보를 저장하기 때문에 실세계의 장면을 촬영할 때 노출을 조정하는 것처럼 HDR이미지의 노출을 조절할 수 있다. 쉽게 표현하면 흰색은 더욱 흰색으로, 검정색은 더욱 검게 표시하며, 이 두 색상 사이에 존재하는 다양한 색상을 모두 사용하게 한다.

 

밝은 영역은 세부 묘사가 포함되지만 어두운 영역이 클리핑된 이미지 (그림 1)
어두운 영역은 세부묘사가 포함되지만 밝은 영역은 클리핑된 이미지 (그림 2)
위 두 사진을 합성한 HDR이미지 (그림 3)

이처럼 카메라로 촬영을 할때, (그림 1), (그림 2)의 클리핑된 부분을 동시에 표현할 수 없기 때문에, 이를 해결하기 위해서 두 이미지를 합쳐서 모든 동적범위가 포함된 HDR이미지를 만들어 낼 수 있다.

여러 LDR이미지의 노출도로 한 장의 HDR이미지 합성 (그림 4)

 

-----우리가 개발한 기술, 이 논문에서 소개하고자 하는 기술

본 논문에서 구현한 기법은 기존에 사용되는 여러 LDR이미지의 동적범위를 합성해서 만드는 것이 아닌, 오토인코더를 이용해서 단일 이미지의 동적범위를 확장시켰다.

 

 

 

-----개발한 오토인코더 구조

 

본 네트워크 (KeroNET에 사용된 기법들)

본 네트워크에 사용된 기법은 오토인코더, CNN, ResNet이 사용되었다.

 

 

네트워크 상세설명

1. 이미지처리에서 검증된 CNN의 VGG16을 좀 더 LIGHT하게 구현

  -인코더부분 - 입력된 동적범위가 확장된 이미지를 합성곱층으로 압축하며 feature map을 잡아낸다

   압축이 진행되면서 만들어진 feature map에 이전의 feature map을 합치는 residual learning 사용

 

  -디코더부분 - 

인코더의 결과물인 feature map을 다시 복원시키며 동적범위가 확장된 이미지로 만든다.

 

2. VGG16 뉴럴넷으로 나온 이미지를 RESNET의 개념을 이용

 

3. loss function = mse || mae , optimizer = Adam

loss function을 mse말고 mae로 사용한 이유

mse는 제곱으로 계산하기 때문에 이미지가 뿌옇게 되면 loss가 내려가는 문제가 있음.

mae는 절대값을 취하여 계산하기 때문에 mae에서 성능이 더 좋아졌다.

 

-----오토인코더란?

오토인코더 구조 (그림 5 이미지참조1)

오토인코더(Autoencoder)는 위 그림과 같이 입력을 출력으로 복사하는 신경망이다. 특징은 hidden layer의 뉴런 수를 input layer(입력층)보다 작게 만들며 데이터나 차원을 압축하고, 압축된 데이터를 다시 입력층에 들어온 입력물로 만든다. 이런 제약들로 오토인코더가 단순히 입력을 바로 출력으로 복사하지 못하도록 방지하며, 데이터를 효율적으로 표현하는 방법을 학습하도록 제어한다. 오토인코더가 training data로 부터 자동적으로 학습하는 것은 굉장히 유용한 성질이다. 이 의미는 특정 종류의 입력값에 대해 잘 작동하는 특별한 형태의 알고리즘을 쉽게 훈련시킬 수 있다는 의미이다. 

encoder에서는 이미지를 압축하며 특성지도(feature map)을 만들어내고, decoder부분에서는 압축된 feature map을 다시 본래의 형태로 복원시킨다.

 

 

-----CNN(Convolutional Neural Network)

CNN 신경망 구조(그림 6 이미지참조2)

CNN은 이미지를 위치나 기울기 등이 아닌, 특징을 찾아서 이미지를 인식하는 방법이다. 초기에는 가장 기초가 되는 특징(feature)를 확인하고, 그 특징들을 조합해서 보다 복잡한 특징이 존재하는 지 확인하고, 최종적으로 물체를 분류하는 과정이다.

 

 

-----Residual Learning

ResNet 구조

ResNet은 층이 깊어질수록 역전파되는 그래디언트가 중간에 죽어서 학습이 잘 되지 않는 문제(gradient vanishing)을 해결하기 위해 도입되었다. 핵심 아이디어는 residual block이다. 그래디언트가 잘 흐를 수 있도록 일종의 지름길(shortcut, skip connection)을 만들어 준다. 이러한 residual block의 skip connectrion 덕분에 입력데이터와 그래디언트가 오고 갈수 있는 통로가 늘어나게 되는 것이다.

초기 입력이미지를 합성곱층의 결과로 나온 이미지와 초기 입력이미지를 합하여, 만들고자하는 H(x)와 비교하며 학습시킨다.

네트워크는 H(x)를 얻는 것이 아닌, H(x) - x  즉 출력과 입력의 잔차를 얻도록 학습하게 된다. 이를 통해서 네트워크 구조가 가져야할 가중치에 대한 부담이 줄어 들게 된다.

 

-----개발환경

1. 사용한 컴퓨터 H/W

CPU: i9-9900k

VGA: RTX2080ti

 

 

-----참고논문

1. "HDR image reconstruction from a single exposure using deep CNNs"

https://arxiv.org/pdf/1710.07480.pdf

2. 박태장, 박인규, "두 장의 LDR 영상을 이용한 HDR 영상 취득 기법"

http://image.inha.ac.kr/paper/HDR.pdf

3. 박대근, 박기현, 하영호, “다중 노출 복수 영상에서 장면의 다이내믹 레인지 추정을 통한 HDR 영상 획득,” 전자공학회논문지-SP, vol. 45, no. 2,pp. 10-20, 2008년 3월.

https://kspp.org/article=10518790

4. Xue T, Rubinstein M, Liu C, Freeman WT (2015) A computational approach for obstruction-free photography.

https://people.csail.mit.edu/mrub/papers/ObstructionFreePhotography_SIGGRAPH2015.pdf

 

 

-----참고블로그

1. 오토인코더

https://excelsior-cjh.tistory.com/187

2. 오토인코더 

https://keraskorea.github.io/posts/2018-10-23-keras_autoencoder/

3. ResNet

https://ratsgo.github.io/deep%20learning/2017/10/09/CNNs/

https://laonple.blog.me/220761052425

4. CNN 

https://gomguard.tistory.com/188?category=712467

 

 

-----Image reference

1. 오토인코더 이미지

https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798

2. ResNet 이미지

https://jusonn.github.io/blog/2018/01/26/cnn-imagenet/

3. CNN VGG16 이미지

https://gomguard.tistory.com/188?category=712467

 

 

posted by hide in lab MasterPark

댓글을 달아 주세요

영상처리 2019. 5. 14. 18:27

Dynamic range란 사진에서 밝기가 가장 밝은 부분과 가장 어두운 부분의 밝기의 비율(Ratio)을 의미한다. 실 세계의 동적 범위는 사람의 시각이 감지할 수 있는 범위와 모니터에 표시되거나 인쇄되는 이미지의 범위보다 훨씬 넓다. 하지만 사람의 눈이 많은 종류의 서로 다른 명도 레벨을 수용할 수 있는 반면, 대부분의 카메라와 컴퓨터 모니터가 재현할 수 있는 동적 범위는 이보다 훨씬 적은 수로 제한되어 있다. 하지만 HDR이미지를 사용하여 실 세계의 Dynamic range의 전 영역을 표현할 수 있다.

 

High Dynamic Range (HDR) 이미지는 한 노출에 대하여 일반 카메라로 촬영해서 얻을 수 있는 Dynamic Range보다 더 큰 범위를 가지는 이미지이다. 또한 실세계의 모든 광도 값에 정확히 비례하여 표현되고, 이 정보를 저장하기 때문에 실세계의 장면을 촬영할 때 노출을 조정하는 것처럼 HDR이미지의 노출을 조절할 수 있다. 쉽게 표현하면 흰색은 더욱 흰색으로, 검정색은 더욱 검게 표시하며, 이 두 색상 사이에 존재하는 다양한 색상을 모두 사용하게 한다.

 

밝은 영역은 세부 묘사가 포함되지만 어두운 영역이 보이지 않는 이미지
어두운 영역은 세부 묘사가 포함되지만 밝은 영역은 보이지 않는 이미지
위의 두 사진을 합성한 HDR이미지

이처럼 카메라가 촬영을 할때, 밝아서 보이지 않는 부분과, 어두워서 보이지 않는 부분을 모두 보이게 촬영할 수 없기때문에 위의 2개의 이미지를 합쳐서 모든 동적범위가 포함된 HDR이미지를 만들어 낼 수 있다.

 

 

실세계에서 가지고 있는 밝기의 범위는 약 108cd/m2정도

사람의 눈이 한번에 수용할 수 있는 밝기의 범위는 약 105cd/m2

일반 디지털 카메라의 센서에서 받아들이는 밝기의 범위 약 102cd/m2

 

일반 이미지는 채널당 8비트로 총 24비트의 RGB포맷으로 밝기를 포함하며, 이를 통해서 실세계의 밝기 정보를 쉽게 HDR 이미지를 얻을 수 있는 방법은, 서로 다른 노출로 촬영한 여러 개의 이미지를 하나로 합쳐서 만들 수 있다.

광원효과와 심도 효과를 얻기 위해서는, 같은 피사체를 다양한 셔터 스피드를 통해 조리개의 값을 달리해서 여러 번 촬영 해야 한다.

 

일반적으로 HDR이미지는 채널당 32 bits이며 넓은 범위에서 색상과 밝기의 정보가 포함되어 있다.

따라서 실세계의 색을 표현하기 위해서는 각 채널이 실수 정보를 표현할 수 있어야 한다. 

 

reference 

1. 박대근, 박기현, 하영호, “다중 노출 복수 영상에서 장면의 다이내믹 레인지 추정을 통한 HDR 영상 획득,” 전자공학회논문지-SP, vol. 45, no. 2,pp. 10-20, 2008년 3월.

2. https://m.post.naver.com/viewer/postView.nhn?volumeNo=10051871&memberNo=34130352

3. https://translate.google.com/translate?hl=ko&sl=en&u=https://www.dummies.com/photography/digital-photography/types-of-photography/what-are-hdr-images-and-hdr-files/&prev=search

4. https://helpx.adobe.com/kr/photoshop/using/high-dynamic-range-images.html

5. https://www.acer.com/ac/ko/KR/content/hdr

posted by hide in lab MasterPark

댓글을 달아 주세요