프린터가 오프라인이라서 갑자기 출력이 안되는 상황이 발생했다.

프린터는 연구실 프린터였고, 나를 제외한 연구원 분들은 다 잘 사용하고 있었기 때문에, 프린터 문제는 아닌 것으로 판명났다.

우리 연구실이 프린터기를 usb로 연결하지 않고, ip 주소로 연결하고 사용하고 있었기 때문에, usb 문제는 당연히도 아니었다.

내 컴퓨터에서 설정을 바꾸지 않았지만, 네트워크 상의 무언가 문제가 있어서 그렇겠구나, 하고

일주일을 이렇게 지냈다.

그런데 네트워크가 아무리 문제여도 프린터 관련 설정을 건드리지도 않았는데, 

일주일간 프린터기가 오프라인이라 출력이 되지 않는 다는 것이 너무 이상해서 드라이버를 새로 깔고 별짓을 다했다.

이것 저것 다해보다가 결과적으로 내가 해결한 방법은 쌩뚱맞은 방식이었기 때문에,

이 부분에 대해서 나중에 참고하고자 포스팅한다.


hp 프린터 센터에 들어가서 해보라는 것은 다 해본 것 같다.

1. 프린터 설정 자체에 오프라인으로 진행을 설정한 것은 아닌지

확인해보니 당연히도 아니었고, 이 부분을 설정하니까 뭔가 더 안되는 기분이 들었다.

2. 프린터를 일단 장치 해제를 하고, 프린터 스풀러도 중지했다가 다시 시작했다.

3. 그리고 드라이버를 깔았다.


그런데도 자꾸 프린터를 못찾는 것이다....

그래서 너무 속상해서 프린터가 왜 안찾아지지... 하면서 컴퓨터를 아예 끄고 다시 켰다.

그리고 다시 프린트 시도를 했는데, 역시 안되었다.^^


후.. 그래서 일단 화를 가라앉히고 아까의 프린터 드라이버를 찾기 위해서 윈도우에 hp 라고 쳤는데 hp smart라는 앱이 깔려져 있었다.


hp smart에 들어가보니까....

내가 연결하려고 했던 프린터가 이미 준비됨 이라고 적혀져있는것이었다!

왜 그냥 프린트를 했을 때는 계속 오프라인이다가 여기서는 되는지...

그래서 일단 그 프린터를 클릭했더니, 온라인으로 연결되었다는 안내(?) 를 발견하여 다시 프린트를 해보니까 매우 잘된다.

기계치인 나로서는 아무것도 안건드렸는데 프린터기 하나 때문에 삽질한 것이 매우 화가 났지만.. 그래도 연결이 되어서 기뻤다;)


일단 이거는 대학교를 졸업하자마자 처음으로 해석한 논문이므로, 

전문성이 떨어지는 문체와 내 뇌피셜이 일부 섞인 분석 글이다.

아직 쓰는 중이다. 다 쓸라면 한나절 걸릴 듯


* 논문이 진짜 내용이 궁금한 사람들은 원문을 읽기를 권한다.

혹시 몰라서 일단 원문도 긁어서 해석을 하긴 할건데... 너무 심한 오역이 아니라면

욕은 삼가해주시고 조용히 비댓으로 남겨주시거나 

'이 친구 참 연구도 처음이지만 참 영어를 못하는 군' 하고 넘어가주시길 바란다.


일단 논문의 출처는

Bolun Cai, Xiangmin Xu, Kui Jia, Chunmei Qing, and Dacheng Tao (2016). IEEE Transactions on Image Processing. DehazeNet: An End-to-End System for Single Image Haze Removal25(11), 243-45. doi: 10.1109/TIP.2016.2598681


자료를 구하기 위해서는 IEEE를 들어가봐야 되는데, 나는 귀찮아서 구글링했다.

https://arxiv.org/abs/1601.07661

-> 구글링 했을 때 제일 처음으로 발견할 수 있는 논문 다운로드 사이트이다.


Abstract—

요약>

Single image haze removal is a challenging ill-posed problem. 

한 이미지에서의 haze를 제거하는 것은 답이 정해져 있지 않은 문제이다. (ill-posed problem)

Existing methods use various constraints/priors to get plausible dehazing solutions. 

좋은 dehaze하는 방법을 찾기 위해서 지금까지의 방식은 다양한 조건과 우선 순위들을 사용했다.

The key to achieve haze removal is to estimate a medium transmission map for an input hazy image. 

haze를 없애기 위해서는 input으로 입력된 이미지에 대한 medium transmission map을 측정하는 것이 핵심이다.

In this paper, we propose a trainable end-to-end system called DehazeNet, for medium transmission estimation. 

이 논문에서는, 우리는 medium transmission 측정을 위해 학습 가능한 DehazeNet이라는 시스템을 소개한다.

DehazeNet takes a hazy image as input, and outputs its medium transmission map that is subsequently used to recover a haze-free image via atmospheric scattering model. 

DehazeNet은 hazy 이미지를 input으로 받고, 그 image의 medium transmission map을 output으로 낸다.

근데 이 output은 잠정적으로 haze한 image를 haze-free한 이미지로 복구할 수 있게 사용될 수 있다.

DehazeNet adopts Convolutional Neural Networks (CNN) based deep architecture, whose layers are specially designed to embody the established assumptions/priors in image dehazing. 

DehazeNet은 CNN방식을 기반으로 한 깊은 신경망 구조를 도입했다.

각 계층은 특히 이미지의 haze를 제거하기 위해 설정된 가정과 우선 순위를 구성할 수 있게 되어 있다.

Specifically, layers of Maxout units are used for feature extraction, which can generate almost all haze-relevant features. 

특히, maxout 계층이 특징 추출에 이용되는 대부분의 haze관련 특징들을 만들어내는 특징 추출에 사용된다.

We also propose a novel nonlinear activation function in DehazeNet, called Bilateral Rectified Linear Unit (BReLU), which is able to improve the quality of recovered haze-free image. 

우리는 그리고 BReLU라는 비 선형적인 활성 함수를 사용해서, haze가 없는 이미지로 복구하기 위한 품질 개선이 가능하게 했다.

We establish connections between components of the proposed DehazeNet and those used in existing methods. 

우리는 현재 사용되는 방식과, 제안하는 DehazeNet의 특성들을 연결해보았다.

Experiments on benchmark images show that DehazeNet achieves superior performance over existing methods, yet keeps efficient and easy to use. 

실험들을 통해 알 수 있다. 

기존 방식을 뛰어넘는, DehazeNet이 보여주는 뛰어난 퍼포먼스는 효율적이고, 사용하기 편리하다.

Keywords—Dehaze, image restoration, deep CNN, BReLU

핵심 단어 - Haze 제거, 이미지 복원, 깊은 CNN, BReLU



I. INTRODUCTION

1. 인트로

HAZE is a traditional atmospheric phenomenon where dust, smoke and other dry particles obscure the clarity of the atmosphere. 

haze는 먼지, 연기, 또는 다른 건조한 입자들이 선명한 공기를 방해하는 기상 현상이다.

Haze causes issues in the area of terrestrial photography, where the light penetration of dense atmosphere may be necessary to image distant subjects. 

haze는 밀집된 대기에서의 빛 투과가 멀리 떨어져 있는 사물 이미지에서는 필수적인 지형 사진에서 중요한 문제이다.

This results in the visual effect of a loss of contrast in the subject, due to the effect of light scattering through the haze particles. 

haze 입자들로 인해 빛이 산란되는 효과 때문에, 대상의 시각적 대비 감소를 초래한다.

For these reasons, haze removal is desired in both consumer photography and computer vision applications. 

이러한 이유들로 인해, haze 제거는 사진에서와 컴퓨터 비전 이 두 가지 어플에서 모두 요구되었다.

Haze removal is a challenging problem because the haze transmission depends on the unknown depth which varies at different positions. 

haze 제거는 도전적인 문제이다.

왜냐면, haze 전달은 각각 다른 위치에서의 알 수 없는 깊이에 의해 달라지기 때문이다.

Various techniques of image enhancement have been applied to the problem of removing haze from a single image, including histogram-based [1], contrast-based [2] and saturation-based [3]. 

이미지 개선을 위한 다양한 기술들은 haze를 제거하는데 이용되어져 왔다.

히스토그램 기반, 대비 기반, 포화도 기반 기술을 포함한 방식들이 적용되었다.

In addition, methods using multiple images or depth information have also been proposed. 

더불어, 다양한 이미지들을 이용하거나, 깊이 정보를 이용한 방법이 제안되었다.

For example, polarization based methods [4] remove the haze effect through multiple images taken with different degrees of polarization. 

예를 들어서, 분극화(여러 극으로 나뉘어서 분류되는 현상) 기반 방식은 다양한 이미지들을 다른 정도의 분극화를 이용해서 haze 효과를 제거한다.

In [5], multi-constraint based methods are applied to multiple images capturing the same scene under different weather conditions. 

다양한 제한 요소 기반 방식은 다른 날씨에서 똑같은 배경을 찍은 다양한 이미지들에 적용되었다. 

Depth-based methods [6] require some depth information from user inputs or known 3D models. 

깊이 기반 방식들은 사용자 입력 또는 알려진 3D 모델들로부터 몇 개의 깊이 정보를 필요로 한다 

In practice, depth information or multiple hazy images are not always available. 

실전에선, 깊이 정보또는 많은 hazy한 이미지들이 항상 사용 가능한 것은 아니다.

Single image haze removal has made significant progresses recently, due to the use of better assumptions and priors. 

이미지 haze 제거는 더 나은 조건과 우선순위의 사용으로, 최근 꽤 발전해왔다.

Specifically, under the assumption that the local contrast of the haze-free image is much higher than that of hazy image, a local contrast maximizing method [7] based on Markov Random Field (MRF) is proposed for haze removal. 

특히, haze가 없는 이미지의 부분적인 대비가 haze가 있는 이미지의 대비보다 더 크다는 가정하에, 부분적인 대비를 최대화하는 것(마콥 랜덤 필드)을 기반으로 한 방식이 haze제거에 제안되어왔다.

Although contrast maximizing approach is able to achieve impressive results, it tends to produce over-saturated images.

대비를 최대화하는 방식은 꽤 괜찮은 결과를 가져왔지만, 과포화된 이미지를 만들기가 쉽다.

In [8], Independent Component Analysis (ICA) based on minimal input is proposed to remove the haze from color images, but the approach is time-consuming and cannot be used to deal with dense-haze images.

8번에서, 최소화된 input을 기반으로 한 독립성분분석이 색깔이 있는 이미지에서 haze를 없애기 위해서 제안되었다.

하지만, 그 접근은 너무 시간이 오래 걸리고, 빽빽한 haze가 있는 이미지를 다룰 수 없다고 한다.

Inspired by dark-object subtraction technique, Dark Channel Prior (DCP) [9] is discovered based on empirical statistics of experiments on haze-free images, which shows at least one color channel has some pixels with very low intensities in most of non-haze patches. 

어두운 사물 추출 방식에서 착안되어, Dark Channel Prior(*이하 DCP로 쓰겠다.)는 haze가 없는 실험에서의 경험적 통계에 의해 발견되었다.

대부분의 haze가 없는 patch에서 적어도 하나의 색깔의 채널은 굉장히 낮은 강도의 (빛) 값을 가지고 있다고.

With dark channel prior, the thickness of haze is estimated and removed by the atmospheric scattering model. 

DCP에 의해서, haze의 강도는 평가되어졌고, haze가 있는 이미지에서 haze가 제거되었다.

However, DCP loses dehazing quality in the sky images and is computationally intensive. 

그러나, DCP는 하늘 이미지에서 dehaze를 잘 못할 수 있다. 그리고 계산하기 어렵다.

Some improved algorithms are proposed to overcome these limitations. 

이런 한계를 극복하기 위해서, 몇 개의 발전된 알고리즘이 제안되어졌다.

To improve dehazing quality, Kratz and Nishino et al. [10] model the image with a factorial MRF to estimate the scene radiance more accurately;

이러한 dehaze 성능을 좋게하기 위해서 누구누구는 이미지를 채광(빛)을 더 정확하게 측정하기 위한 factorial MRF로 모델링했다.

Meng et al. [11] propose an effective regularization dehazing method to restore the hazefree image by exploring the inherent boundary constraint. 

누구누구는 haze가 없는 이미지로 복구하기 위한 dehaze방법으로 경계 제약 조건을 연구함으로서 효과적인 정규화방식을 제안했다. 

To improve computational efficiency, standard median filtering [12], median of median filter [13], guided joint bilateral filtering [14] and guided image filter [15] are used to replace the time-consuming soft matting [16]. 

계산 효율을 위해서 표준 정규화 필터링, 정규화의 정규화(?) 필터링, 조인트 이진 필터링, 이미지 필터들이 시간을 소모하는 soft matting을 대신했다.

In recent years, hazerelevant priors are investigated in machine learning framework. 

최근에는, 머신러싱 프레임워크상에서 haze와 관련된 우선순위들이 조사되었다.

Tang et al. [17] combine four types of haze-relevant features with Random Forests to estimate the transmission. 

누구누구는 4개의 haze와 관련된 특징들을 합쳐서 random forest와 함께 transmission을 평가하였다.

Zhu et al. [18] create a linear model for estimating the scene depth of the hazy image under color attenuation prior and learns the parameters of the model with a supervised method.

누구누구는 색 감소도에 따라 haze 이미지의 깊이를 측정하는 선형적인 모델을 만들었고, 개정된 방식과 함께 모델의 파라미터에 대해 지정했다.

Despite the remarkable progress, these state-of-the-art methods are limited by the very same haze-relevant priors or heuristic cues - they are often less effective for some images. 

이런 놀라운 발전에도 불구하고, 이러한 방식은 매우 똑같은 haze와 관련된 것이나, 발견된 단서에 의해서 제한된다.

그들은 몇 개의 이미지에 대해서는 덜 효율적이다.

Haze removal from a single image is a difficult vision task.

haze를 제거하는 것은 어려운 비전 과제이다.

In contrast, the human brain can quickly identify the hazy area from the natural scenery without any additional information. 

대조적으로, 인간의 뇌는 특별히 다른 추가 정보가 없어도 자연의 경관으로부터 안개낀 공간을 빠르게 파악할 수 있다.

One might be tempted to propose biologically inspired models for image dehazing, by following the success of bio-inspired CNNs for high-level vision tasks such as image classification [19], face recognition [20] and object detection [21].

누군가는 이미지 처리, 얼굴 인식, 그리고 사물 인식과 같은 고차원의 비전 과제를 위한 생물학 기반의 DNN의 성공에 뒤따라 이미지 dehaze에 대한 생물학적 모델을 제안하고 싶을 수도 있다.

In fact, there have been a few (convolutional) neural network based deep learning methods that are recently proposed for low-level vision tasks of image restoration/reconstruction [22], [23], [24]. 

사실상, 최근의 이미지 복원의 저레벨 과제로 최근에 제안된 딥러닝 방식 기반의 몇 개의 합성곱 신경망이 있었다.

However, these methods cannot be directly applied to single image haze removal. 

하지만, 이러한 방식들을 직접적으로 이미지 haze를 제거하는데 적용될 수 없다.

Note that apart from estimation of a global atmospheric light magnitude, the key to achieve haze removal is to recover an accurate medium transmission map. 

국제적인 대기 조도의 측정과 관계없이, haze를 제거하기 위한 핵심은 정확한 medium transmission map을 복원하는 것이다.

To this end, we propose DehazeNet, a trainable CNN based end-to-end system for medium transmission estimation. 

결과적으로, 우리는 medium transmission estimation을 위한 시스템 기반의 학습 가능한 CNN인 DehazeNet을 제안한다.

DehazeNet takes a hazy image as input, and outputs its medium transmission map that is subsequently used to recover the haze-free image by a simple pixel-wise operation. 

DehazeNet은 hazy 이미지를 input으로 받는다. 그리고 한 픽셀 단위의 이미지를 복원하기 위해 사용될 수 있는 medium transmission map을 output으로 한다.

Design of DehazeNet borrows ideas from established assumptions/principles in image dehazing, while parameters of all its layers can be automatically learned from training hazy images. 

DehazeNet의 디자인은 hazy 이미지들을 트레이닝하면서 자동 학습된 각각의 계층들의 파라미터로, dehaze를 위해서 설정된 가정과 원리로부터 아이디어를 가져온다.

Experiments on benchmark images show that DehazeNet gives superior performance over existing methods, yet keeps efficient and easy to use. 

기준 이미지들의 실험에서, DehazeNet은 현존하는 방식들보다 훨씬 좋은 성능을 가져온다는 것을 알 수 있다, 효율적이고 사용하기 편리한데도 불구하고.

Our main contributions are summarized as follows. 

우리의 업적은 다음과 같이 요약할 수 있다.

1) DehazeNet is an end-to-end system. 

1) DehazeNet은 하나의 통합 시스템이다.

It directly learns and estimates the mapping relations between hazy image patches and their medium transmissions. 

그것은 직접적으로 hazy 이미지 패치들과 medium transmission을 학습하고, 평가한다.

This is achieved by special design of its deep architecture to embody established image dehazing principles. 

그것은 정립된 이미지 dehaze 원리를 구현한 깊은 구조의 특별한 디자인에 의해서 수행된다.

2) We propose a novel nonlinear activation function in DehazeNet, called Bilateral Rectified Linear Unit1 (BReLU). 

우리는 BReLU라는 비선형적인 활성함수를 DehazeNet에서 제안한다.

BReLU extends Rectified Linear Unit (ReLU) and demonstrates its significance in obtaining accurate image restoration. 

BReLU는 ReLU의 확장개념이고, 정확한 이미지 복원에서 중요한 요소이다.

Technically, BReLU uses the bilateral restraint to reduce search space and improve convergence.

기술적으로 BReLU는 탐색 공간을 양쪽에서 제한하는 방식을 사용하고, 수렴도를 향상시킨다. 

3) We establish connections between components of DehazeNet and those assumptions/priors used in existing dehazing methods, and explain that DehazeNet improves over these methods by automatically learning all these components from end to end. 

우리는 기존의 dehaze 방식에서의 가정과 우선순위와 DehazeNet의 요소들을 연관짓고, DehazeNet이 기존 방식들 이상으로 자동 학습에 의해 이러한 성분들

이 전반적으로 향상된 것을 설명한다.

The remainder of this paper is organized as follows. 

이 논문의 남은 부분은 다음과 같은 부분으로 구성되어 있다.

In Section II, we review the atmospheric scattering model and haze-relevant features, which provides background knowledge to understand the design of DehazeNet.

두번째 섹션에서, 우리는 DehazeNet의 디자인을 이해하기 위해 필요한 배경 지식인, 공기중에 흩어져 있는 모델과, haze와 관련된 특징들을 분석할 것이다.

In Section III, we present details of the proposed DehazeNet, and discuss how it relates to existing methods. 

세번째 섹션에서, 우리는 제안하는 DehazeNet의 주요 디테일에 대해서 설명하고, 그것이 현재 방식과 어떻게 연관이 되어 있는지를 설명한다.

Experiments are presented in Section IV, before conclusion is drawn in Section V. 

네번째 섹션에서 실험들을 보여주고, 결론이 5번 섹션에서 다뤄질 것이다.



II. RELATED WORKS 

2. 관련 작업들

Many image dehazing methods have been proposed in the literature. 

많은 이미지 dehaze방식들이 제안되어져왔다.

In this section, we briefly review some important ones, paying attention to those proposing the atmospheric scattering model, which is the basic underlying model of image dehazing, and those proposing useful assumptions for computing haze-relevant features. 

이 부분에서는, 제안하는 공기중에 흩어진 모델에 대해서 짧게 중요한 부분만을 검토해볼 예정이다.

그 모델은 이미지 dehaze의 기본적인 기저 모델이고, haze와 관련된 특징을 계산하는데, 이러한 제안은 유용할 것이다.

A. Atmospheric Scattering Model 

A. 공기중에 흩어진 모델

To describe the formation of a hazy image, the atmospheric scattering model is first proposed by McCartney [26], which is further developed by Narasimhan and Nayar [27], [28]. 

hazy 이미지의 구성을 설명하기 위해서, 공기중에 흩어진 모델은 처음으로 메카트니에 의해서 제안되었고, 이후에 누구누구가 개정했다.

The atmospheric scattering model can be formally written as I (x) = J (x)t(x) + α (1 − t(x)), (1) where I (x) is the observed hazy image, J (x) is the real scene to be recovered, t(x) is the medium transmission, α is the global atmospheric light, and x indexes pixels in the observed hazy image I. Fig. 1 gives an illustration. 

공기중에 흩어져 있는 모델은 형식적으로 이렇게 쓸 수 있는데, I(x)는 haze 이미지를 말하고, J(x)가 복원된 실제 배경을 말하고, t(x)는 medium transmission 을 말하고, 알파는 global 조도를 말하고, x는 관찰된 hazy이미지에서 픽셀을 가르킨다.

1번 그림이 그걸 설명한다.

There are three unknowns in equation (1), and the real scene J (x) can be recovered after α and t(x) are estimated. 

세개의 알려지지 않은 방정식 1번에서, 알파와 전달량이 평가되면, 실제 J(x)가 복원될 수 있다. 

The medium transmission map t(x) describes the light portion that is not scattered and reaches the camera. 

전달량은 산란되지 않고 카메라에 도달한 빛의 정도를 말한다.

t(x) is defined as t(x) = e −βd(x) , (2) where d (x) is the distance from the scene point to the camera, and β is the scattering coefficient of the atmosphere. 

전달량은 이렇게 표현될 수 있는데, d는 배경에서 카메라까지의 거리이고, 베타는 공기 중의 흩어진 정도를 나타낸다.( 빛 산란의 정도) 

Equation (2) suggests that when d (x) goes to infinity, t(x) approaches zero. 

2번 방정식은 결국 거리가 무한대로 증가하게 되면, 전달량이 0에 가까워진다는 것을 말한다.

Together with equation (1) we have α = I (x), d (x) → inf (3)

1번 방정식과 같이 생각하게 되면, 우리는 3번 방정식을 도출할 수 있다.

In practical imaging of a distance view, d (x) cannot be infinity, but rather be a long distance that gives a very low transmission t0. 

실제 거리뷰에서 적용한다면, 거리는 무한이 될 수 없지만, 먼 거리의 경우에는 낮은 전달량을 보여줄 수 있을 것이다.

Instead of relying on equation (3) to get the global atmospheric light α, it is more stably estimated based on the following rule α = max y∈{x|t(x)≤t0} I (y) (4) 

3번 방정식에 의존하는 것 대신에, 알파의 경우에는 4번 방정식에 의해서 측정될 수 있다.

The discussion above suggests that to recover a clean scene (i.e., to achieve haze removal), it is the key to estimate an accurate medium transmission map. 

그래서 더 선명한 사진으로 복원하는데 제안된 다음과 같은 것들은 정확한 전달량을 평가하는 것이 핵심이다.

B. Haze-relevant features 

haze와 관련된 특징

Image dehazing is an inherently ill-posed problem.

이미지 dehaze를 하는 것은 답이 없는 문제이다.

Based on empirical observations, existing methods propose various assumptions or prior knowledge that are utilized to compute intermediate haze-relevant features.

경험적 관찰에 근거해서, 존재하는 방식들은 정교한 haze와 관련된 특징을 계산하기 위해서 사용되는 다양한 가정들 또는 기존 지식을 제안한다.

Final haze removal can be achieved based on these haze-relevant features. 

최종적인 haze 제거는 이러한 haze와 관련된 특징들에 기반에서 실행될 수 있다.

1) Dark Channel: The dark channel prior is based on the wide observation on outdoor haze-free images. 

1) 다크 채널: 다크 채널은 haze가 없는 이미지들의 많은 관찰을 기반으로 한다.

In most of the haze-free patches, at least one color channel has some pixels whose intensity values are very low and even close to zero. 

대부분의 haze가 없는 patch의 경우에, 적어도 하나의 색깔의 채널이 매우 작거나 0에 가까운 값을 가진 픽셀들을 가지고 있다는 것이다.

The dark channel [9] is defined as the minimum of all pixel colors in a local patch: D (x) = min y∈Ωr(x) min c∈{r,g,b} I c (y) , (5) where I c is a RGB color channel of I and Ωr (x) is a local patch centered at x with the size of r × r. 

다크 채널은 한 패치 내부의 모든 픽셀 컬러들의 최소값으로 정의된다.

다크 채널은 D(x)라고 하고, I는 I의 RGB 색 채널이고, Ωr (x)는 rxr크기로 x에 중심을 잡은 패치이다.

The dark channel feature has a high correlation to the amount of haze in the image, and is used to estimate the medium transmission t(x) ∝ 1 − D (x) directly. 

다크 채널 특징은 이미지에서 haze의 정도와 높은 관련성을 가지고 있고, medium transmission을 평가하는데 사용된다.

2) Maximum Contrast: According to the atmospheric scattering, the contrast of the image is reduced by the haze transmission as P x k∇I (x)k = t P x k∇J (x)k ≤ P x k∇J (x)k . 

2) 최대 대비: 공기중의 산란에 의해, 이미지의 대비가 haze에 의해서 감소된다.

Based on this observation, the local contrast [7] as the variance of pixel intensities in a s×s local patch Ωs with respect to the center pixel, and the local maximum of local contrast values in a r × r region Ωr is defined as: C (x) = max y∈Ωr(x) vuut 1 |Ωs (y)| X z∈Ωs(y) kI (z) − I (y)k 2 , (6) where |Ωs (y)| is the cardinality of the local neighborhood. 

이런 관찰들에 의해, 중심 픽셀의 관점에서 지역 패티들의 픽셀 강도의 분산으로서 지역적인 대비와, 지역적인 대비 값의 최대값은 그 주변의 카디날리티 값과 연관된 것으로 정의된다.

The correlation between the contrast feature and the medium transmission t is visually obvious, so the visibility of the image is enhanced by maximizing the local contrast showed as (6). 

대비값과 medium transmission사이의 관계성은 시각적으로 중요하므로, 이미지의 가시성은 지역적인 대비를 증가하면서 향상될 수 있다.

3) Color Attenuation: The saturation I s (x) of the patch decreases sharply while the color of the scene fades under the influence of the haze, and the brightness value I v (x) increases at the same time producing a high value for the difference. 

3) 색의 감소: 배경의 색깔이 haze에 의해서 흐려질 때마다, 패치의 I의 포화도 s(x)는 급격하게 줄어든다.

그리고 I의 조도 v(x)는 그 차이에 의해서 높은 값으로 증가한다.

According to the above color attenuation prior [18], the difference between the brightness and the saturation is utilized to estimate the concentration of the haze: A (x) = I v (x) − I s (x), (7) where I v (x) and I h (x) can be expressed in the HSV color space as I v (x) = maxc∈{r,b,g} I c (x) and I s (x) = maxc∈{r,b,g} I c (x) − minc∈{r,b,g} I c (x) maxc∈{r,b,g} I c (x). 

색 감소에 의해서 발생하는, 밝기와 포화도 사이의 차이가 haze의 밀집도를 평가하기 위해서 사용되었다.

The color attenuation feature is proportional to the scene depth d (x) ∝ A (x), and is used for transmission estimation easily.

색감소 특징은 배경의 깊이에 비례하고, 그리고 전달량 평가를 쉽게 하기위해 사용되었다.

4) Hue Disparity: Hue disparity between the original image I (x) and its semi-inverse image, Isi (x) = max [I c (x), 1 − I c (x)] with c ∈ {r, g, b}, has been used to detect the haze. 

4) 색조의 격차: 원 이미지와의 색조 격차는 haze를 측정하기 위해서 사용되었다.

For haze-free images, pixel values in the three channels of their semi-inverse images will not all flip, resulting in large hue changes between Isi (x) and I (x). 

haze가 없는 이미지의 경우, 커다란 색조 격차를 보여주면서, 반역 이미지에서 세 개의 채널에서의 픽셀 값들은 모두 반전되는 것은 아니다.

In [29], the hue disparity feature is defined: H (x) = I h si (x) − I h (x) , (8) where the superscript ”h” denotes the hue channel of the image in HSV color space.

29번에서, 색조 차이 값은 이미지 세개의 채널에서 반역 이미지 채널들의 차 중에 가장 큰 값에서 이미지 채널의 값의 차의 크기로 정의된다. 

 According to (8), the medium transmission t(x) is in inverse propagation to H (x). 

8번에 따르면, medium transmission은 색조 차이와 역수관계에 있다.


III. THE PROPOSED DEHAZENET

3. 제안하는 DEHAZENET

The atmospheric scattering model in Section II-A suggests that estimation of the medium transmission map is the most important step to recover a haze-free image. 

2번 섹션에서의 공기중에 흩어진 모델은 전달량의 평가를 하는 것이 haze를 지우는 데 가장 중요한 단계라고 제안한다.

To this end, we propose DehazeNet, a trainable end-to-end system that explicitly learns the mapping relations between raw hazy images and their associated medium transmission maps.

결과적으로, 우리는 haze 이미지와 관련된 전달량 map간의 매핑관계를 학습 가능한 통합 시스템인 DehazeNet을 제안한다.

In this section, we present layer designs of DehazeNet, and discuss how these designs are related to ideas in existing image dehazing methods. 

이 섹션에서는 우리는 DehazeNet의 디자인을 보여줄 것이고, 어떻게 이러한 디자인들이 현재의 이미지 dehaze 방식에 연관되어 있는지를 설명할 것이다.

The final pixel-wise operation to get a recovered haze-free image from the estimated medium transmission map will be presented in Section IV. 

평가된 전달량으로 부터 haze가 없는 이미지를 복원하는 과정을 위해 결과적으로 제시되는 픽셀 단위의 함수는 섹션 4에서 안내될 것이다.

A. Layer Designs of DehazeNet 

A. DehazeNet의 계층 디자인

The proposed DehazeNet consists of cascaded convolutional and pooling layers, with appropriate nonlinear activation functions employed after some of these layers. 

제안된 DehazeNet은 연속된 합성곱과 풀링 계층으로 구성되어 있다. 또한 적절한 비선형 활성함수가 이러한 계층들 사이에 사용될 것이다.

Fig. 2 shows the architecture of DehazeNet. 

그림 2번은 DehazeNet에 대한 구조를 보여준다.

Layers and nonlinear activation of DehazeNet are designed to implement four sequential operations for medium transmission estimation, namely, feature extraction, multi-scale mapping, local extremum, and nonlinear regression.

DehazeNet에서의 계층들과 비 선형 활성화는 전달량 평가를 위해 4개의 함수를 실행하기 위해서 디자인 되었다.

특히, 형상 추출, 다중 척도 매핑, 국소 극단 및 비선형 회귀분석을 위한 것이다.

We detail these designs as follows. 

이러한 디자인의 상세 설명은 다음과 같다.

1) Feature Extraction: To address the ill-posed nature of image dehazing problem, existing methods propose various assumptions and based on these assumptions, they are able to extract haze-relevant features (e.g., dark channel, hue disparity, and color attenuation) densely over the image domain. 

1) 특징 추출: 답이 없는 이미지 dehaze 문제를 설명하기 위해서, 현재의 방식들은 다양한 조건들을 제안하고, 이러한 조건들을 기반으로, 그 이미지들은 이미지 영역 전반에서 haze와 관련이 있는 특징들을 추출할 수 있게 되었다.(예를 들어 dark channel, hue disparity, 그리고 color attenuation) 

Note that densely extracting these haze-relevant features is equivalent to convolving an input hazy image with appropriate filters, followed by nonlinear mappings. 

이러한 haze관련 특징들을 추출하는데에서 주목할 것은 input haze 이미지를 적절한 필터들을 이용해서 합성곱하고, 비 선형적인 매핑 과정과 같다. 

Inspired by extremum processing in color channels of those haze-relevant features, an unusual activation function called Maxout unit [30] is selected as the non-linear mapping for dimension reduction. 

이렇게 haze관련한 특징에서의 컬러 채널에서 극값 처리처럼, 차원 축소를 위해서 Maxout 유닛이라고 불리는 일반적이지 않은 활성함수가 비 선형 매핑으로서 사용된다.

Maxout unit is a simple feed-forward nonlinear activation function used in multi-layer perceptron or CNNs.

Maxout 유닛은 다계층 퍼셉트론이나, CNN에서 미리 자료를 제공 받는(지도? 로 추정) 간단한 비선형 활성 함수이다.

When used in CNNs, it generates a new feature map by taking a pixel-wise maximization operation over k affine feature maps. 

CNN에서 사용되는 경우, 맥스 아웃 유닛은 픽셀 단위의 최대값을 가져오면서, 새로운 k아핀(단위인 것으로 추정) 만큼의 특징 맵을 생성한다.

Based on Maxout unit, we design the first layer of DehazeNet as follows F i 1 (x) = max j∈[1,k] f i,j 1 (x), fi,j 1 = W i,j 1 ∗I + B i,j 1 , (9) where W1 = {W i,j 1 } (n1,k) (i,j)=(1,1) and B1 = {B i,j 1 } (n1,k) (i,j)=(1,1) represent the filters and biases respectively, and ∗ denotes the convolution operation. 

맥스아웃 유닛을 기반으로 해서, 우리는 가장 첫 계층을 이렇게 디자인 했다.

위의 식은 필터와 바이어스를 각각 나타내고, * 는 합성곱 함수를 나타낸다.

Here, there are n1 output feature maps in the first layer. 

그래서, n1 output 특징 맵이 첫 계층에서 나온다.

W i,j 1 ∈ R 3×f1×f1 is one of the total k × n1 convolution filters, where 3 is the number of channels in the input image I (x), and f1 is the spatial size of a filter (detailed in Table I). 

전체의 합성곱 필터들 중의 w는 하나의 필터이다. 긜고 3은 인풋으로 들어오는 이미지의 채널의 개수이다.

Maxout unit maps each of kn1-dimensional vectors into an n1-dimensional one, and extracts the haze-relevant features by automatic learning rather than heuristic ways in existing methods. 

Maxout 유닛 맵들은 kn1차원의 벡터들로 되어있고, 각각 n1차원의 벡터로 되어 있다. 그리고 기존 방식에서 발견하기보다는 자동 학습을 통해서 haze와 관련된 특징들을 추출한다.

2) Multi-scale Mapping: In [17], multi-scale features have been proven effective for haze removal, which densely compute features of an input image at multiple spatial scales. 

멀티 스케일 매핑: 멀티 스케일 특징들은 haze제거에 효과적이라는 것이 증명된 적 있다.

Multi-scale feature extraction is also effective to achieve scale invariance. 

멀티 스케일 특징 추출은 또한 스케일을 변화하지 않게 하는데, 효과적이다.

For example, the inception architecture in GoogLeNet [31] uses parallel convolutions with varying filter sizes, and better addresses the issue of aligning objects in input images, resulting in state-of-the-art performance in ILSVRC14 [32]. 

예를 들어서, 31번에서 초기 구조는 다양한 필터 사이즈를 이용한 평행의 합성곱을 사용하고, 인풋 이미지에서 객체가 정렬되는 문제를 해결하는데 더 낫다. 32번에서의 훨씬 좋은 퍼포먼스를 달성하면서,

Motivated by these successes of multi-scale feature extraction, we choose to use parallel convolutional operations in the second layer of DehazeNet, where size of any convolution filter is among 3 × 3, 5 × 5 and 7 × 7, and we use the same number of filters for these three scales. 

이러한 멀티 스케일 특징 추출의 성공으로, 우리는 두번째 DehazeNet 계층에서 평행의 합성곱 함수를 사용하기로 결정했다. 각각의 합성곱 필터는 3 5 7 의 크지 중에서 구성된다. 그리고 우리는 이 세 가지의 단위를 똑같은 수로 사용하기로 했다.

Formally, the output of the second layer is written as F i 2 = W di/3e,(i\3) 2 ∗F1 + B2 di/3e,(i\3) , (10) where W2 = {W p,q 2 } (3,n2/3) (p,q)=(1,1) and B2 = {B p,q 2 } (3,n2/3) (p,q)=(1,1) contain n2 pairs of parameters that is break up into 3 groups. 

형식적으로, 두 번째 계층의 아웃풋은 n2 페어의 파라미터는 3개의 그룹으로 나뉘어지는 것을 포함해서, 이렇게 적을 수 있다.

n2 is the output dimension of the second layer, and i ∈ [1, n2] indexes the output feature maps.

n2는 두번째 계층의 아웃풋 차원이다. 그리고 , i는 아웃풋 특징 맵을 가르킨다.

de takes the integer upwardly and \ denotes the remainder operation. 

그리고 숫자를 올림으로 계산하고, 나머지 들은 \로 나타낸다.

3) Local Extremum: To achieve spatial invariance, the cortical complex cells in the visual cortex receive responses from the simple cells for linear feature integration.

지역적인 극값: 공간적 불변성을 위해,(이미지 자체의 공간이 변하는 것을 막기 위한 것 같다.) 시각 피질의 피질 복합 세포는 선형 기능 통합을 위해 단순 세포로 부터의 반응을 받는다.

Ilan et al. [33] proposed that spatial integration properties of complex cells can be described by a series of pooling operations. 

누구누구는 제안했다 복합 세포로부터의 공간적 통합의 요소들은 pooling 함수들로 설명될 수 있다고.

According to the classical architecture of CNNs [34], the neighborhood maximum is considered under each pixel to overcome local sensitivity.

고전적인 CNN의 구조에 따라, 각각의 픽셀들 이웃의 최대값은 지역적인 민감도에 좌우되지 않게 고려된다.

In addition, the local extremum is in accordance with the assumption that the medium transmission is locally constant, and it is commonly to overcome the noise of transmission estimation. 

더불어, 지역적인 극값은 전달량이 지역적으로 상수값이라는 가정하에 정확한 것이라서, 전달 평가의 노이즈를 해결하기 위해서 일반적으로 사용된다.

Therefore, we use a local extremum operation in the third layer of DehazeNet. 

그러한 이유료 우리는 지역적인 극값 함수를 3번째 계층으로 사용한다.

F i 3 (x) = max y∈Ω(x) F i 2 (y), (11) where Ω (x) is an f3 × f3 neighborhood centered at x, and the output dimension of the third layer n3 = n2. 

계산식은 아후 나중에 수식 정확히 볼 수있을 때 해야지

In contrast to max-pooling in CNNs, which usually reduce resolutions of feature maps, the local extremum operation here is densely applied to every feature map pixel, and is able to preserve resolution for use of image restoration. 

주로 특징 맵의 해상도를 줄이게 되는 CNN에서의 max pooling 과 다르게, 지역적인 극값 함수는 모든 특징함수의 픽셀에 적용되어서, 해상도를 떨어트리지 않고 이미지 복원에 사용될 수 있다고 한다.

4) Non-linear Regression: Standard choices of nonlinear activation functions in deep networks include Sigmoid [35] and Rectified Linear Unit (ReLU). 

4) 비선형 회귀: 깊은 신경망에서의 일반적인 비선형 활성 함수들의 일반적인 선택은 sigmoid와 ReLU이다.

The former one is easier to suffer from vanishing gradient, which may lead to slow convergence or poor local optima in networks training. 

시그모이드는 지역최적화가 어려워지거나, 느린 융합으롷 인해, 변화도가 사라져서 힘들수 있다.

To overcome the problem of vanishing gradient, ReLU is proposed [36] which offers sparse representations. 

사라지는 변화도의 문제를 극복하기 위해서 드문드문한 표현을 하는 ReLU가 제안되었다.

However, ReLU is designed for classification problems and not perfectly suitable for the regression problems such as image restoration. 

그렇지만, ReLU는 문제를 분류하기 위해서 디자인 되었고, 이미지 복구 같은 회귀 문제에 최적합하지 않았다. 

In particular, ReLU inhibits values only when they are less than zero. 

이미지들이 0보다 작을 경우에만 값을 억제하기 때문이었다.

It might lead to response overflow especially in the last layer, because for image restoration, the output values of the last layer are supposed to be both lower and upper bounded in a small range. 

마지막 계층에서 오버플로우를 초래하기가 쉬워지게 된다.

왜냐면, 이미지 복원에서, 마지막 계층에서 아웃풋 값은 상한값과 하한값 둘다 적은 범위로 제한된다고 가정하기 때문이다.

To this end, we propose a Bilateral Rectified Linear Unit (BReLU) activation function, shown in Fig. 3, to overcome this limitation.

결과적으로 우리는 3번 그림과 같은 Bilateral Rectifued Linear Unit 활성함수를 적용해서,이 한계를 해결하고자 했다.

Inspired by Sigmoid and ReLU, BReLU as a novel linear unit keeps bilateral restraint and local linearity. 

시그모이드에 의해 영감을 받아, BReLU는 새로운 선형 활성 단위로서, 양쪽값 제한과 지역 선형성을 유지한다.

Based on the proposed BReLU, the feature map of the fourth layer is defined as F4 = min (tmax, max (tmin, W4 ∗ F3 + B4)) (12) Here W4 = {W4} contains a filter with the size of n3×f4×f4, B4 = {B4} contains a bias, and tmin,max is the marginal value of BReLU (tmin = 0 and tmax = 1 in this paper). 

BReLU에 의해서 이렇게 저렇게 계산이 된다.

According to (12), the gradient of this activation function can be shown as ∂F4 (x) ∂F3 =    ∂F4 (x) ∂F3 , tmin ≤ F4 (x) < tmax 0, otherwise (13) The above four layers are cascaded together to form a CNN based trainable end-to-end system, where filters and biases associated with convolutional layers are network parameters to be learned. 

12번에 의해서, 활성 함수의 성분은 이렇게 된다, 그렇지 않으면 13번 처럼 위의 4개의 계층이 연속적으로 CNN을 구성하면서 학습 가능한 통합 시스템을 형성하게 된다. 

그리고 그 시스템에서 합성곱 계층들과 관련된 필터와 바이어스들은 망 파라미터로 학습된다.

We note that designs of these layers can be connected with expertise in existing image dehazing methods, which we specify in the subsequent section. 

이러한 계층의 디자인이 현재 이미지 dehaze방식들과 관련이 있다는 것에 주목해야 한다. 


B. Connections with Traditional Dehazing Methods 

B. 전통적인 Dehaze 방식과의 연관성

The first layer feature F1 in DehazeNet is designed for hazerelevant feature extraction. 

첫 번째 계층의 특징은 haze와 관련된 특징 추출을 위해서 디자인 되었다.

Filter weight and Maxout unit in the first layer operation F1 example.

첫 번째 계층에 있는 필터값과 maxout 유닛은 f1 example를 수행한다.

If the weight W1 is an opposite filter (sparse matrices with the value of -1 at the center of one channel, as in Fig. 4(a)) and B1 is a unit bias, then the maximum output of the feature map is equivalent to the minimum of color channels, which is similar to dark channel [9] (see Equation (5)).

만약 w1이 어포짓 필터(4(a)처럼, 중앙에 하나의 채널이 -1이라는 값을 가진 매트릭스)라면, 그리고 B1이 유닛 편향이라고  하면, 그렇다면 특징 앱의 최대 결과는5번 방정식에 나온 9의 다크채널과 비슷한 컬러 채널의 최소값과 동일하게 된다.

In the same way, when the weight is a round filter as Fig. 4(c), F1 is similar to the maximum contrast [7] (see Equation (6)); when W1 includes all-pass filters and opposite filters, F1 is similar to the maximum and minimum feature maps, which are atomic operations of the color space transformation from RGB to HSV, then the color attenuation [18] (see Equation (7)) and hue disparity [29] (see Equation (8)) features are extracted. 

같은 방식으로, 4번 c 그림처럼 가중치가 라운드 필터인 경우에, f1는 6번 방정식에서 보듯이 최대 대조와 비슷하고, w1는 올패스필터와 오퍼짓 필터를 포함하고 있다. f1는 최대 또는 최소의 특징맵과 비슷하다. 색깔 공간 변화의 단위 함수들인 특징맵과, 그리고 색감소와 색차들도 뽑아져나온다.

In conclusion, upon success of filter learning shown in Fig. 4(e), almost all haze-relevant features can be potentially extracted from the first layer of DehazeNet.

결과적으로 4번 그림에서 보여진 필터 러닝의 성공으로 거의 모든 안개 관련된 특징들이 잠재적으로 첫번째 레이어에서 추출된다는 것을 볼 수 있다. 

On the other hand, Maxout activation functions can be considered as piece-wise linear approximations to arbitrary convex functions.

한편으로는 맥스아웃 활성화 함수가 고려될 수 있다. 임의의 컨벡스 함수로의 선형적인 접근이라고.

In this paper, we choose the maximum across four feature maps (k = 4) to approximate an arbitrary convex function, as shown in Fig. 4(d). 

이 논문에서, 우리는 최대 4개의 특징맵을 아우르는 것을 골랐다. 임의의 컨벡스 함수에 근접하는

White-colored objects in an image are similar to heavy haze scenes that are usually with high values of brightness and low values of saturation. 

이미지상에서 하얀색으로 된 물체들은 주로 높은 밝기와 낮은 포화도로 된 안개가 짙게 낀 배경과 비슷하다.

Therefore, almost all the haze estimation models tend to consider the white-colored scene objects as being distant, resulting in inaccurate estimation of the medium transmission. 

그래서, 거의 모든 안개 측정 모델은 하얀색을 가진 물체들은 멀리 떨어져있는 것으로 고려되었다. 중간 전달 측정이 부정확하다는 것을 초래하기 때문에,

Based on the assumption that the scene depth is locally constant, local extremum filter is commonly to overcome this problem [9], [18], [7]. 

배경의 깊이가 지역적으로 상수라는 가정하에 들어가서, 지역적인 익스트리멈 필터는 주로 이 문제를 극복할 수 있다.

In DehazeNet, local maximum filters of the third layer operation remove the local estimation error. 

dehazenet에서, 세번째 레이어 함수의 지역 최대 함수는 지역 평가 에러를 없애준다.

Thus the direct attenuation term J (x)t(x) can be very close to zero when the transmission t(x) is close to zero. 

그러므로, 직접적인 감쇠 기간인 jt는 거의 0에 가까워지게 된다. 전달량 t가 0에 가까워지게 될 수록.

The directly recovered scene radiance J (x) is prone to noise. 

직접적으로 복구된 배경 발광은 노이즈로 되기가 쉽다.

In DehazeNet, we propose BReLU to restrict the values of transmission between tmin and tmax, thus alleviating the noise problem. 

dehazenet에서 우리는 brelu를 제안한다. 최대 최소 값의 전달량을 제한하기 위해서 노이즈 문제를 해결하면서 

Note that BReLU is equivalent to the boundary constraints used in traditional methods [9], [18]. C. 

brelu가 전통적인 방식에서 사용된 경계 제한 조건과 동등하다는 것을 주목해봐라. 

Training of DehazeNet 1) Training Data: It is in general costly to collect a vast amount of labelled data for training deep models [19]. 

dehazenet의 학습에서, 1번 학습 데이터: 그것은 일반적으로 트레이닝 신경망 모델을 위해서 많은 양의 라벨링된 데이터들을 모은다.

For training of DehazeNet, it is even more difficult as the pairs of hazy and haze-free images of natural scenes (or the pairs of hazy images and their associated medium transmission maps) are not massively available. 

dehazenet을 학습하기 위해서 그것은 안개끼고, 안개가 끼지 않은 이미지들의 자연적인 이미지를 (또는 안개낀 이미지와 그것과 관련된 안개맵들)이 집단적으로 이용가능하게 하는 것이 어렵다.

Instead, we resort to synthesized training data based on the physical haze formation model [17].

대신에, 우리는 물리적인 안개 모델에 통일된 학습 데이터에 의지했다. 

More specifically, we synthesize training pairs of hazy and haze-free image patches based on two assumptions [17]: first, image content is independent of medium transmission (the same image content can appear at any depths of scenes); second, medium transmission is locally constant (image pixels in a small patch tend to have similar depths). 

더 특징적으로, 우리는 안개가 있는 안개가 없는 이미지 패치들의 학습 쌍을 일치시키겠다.: 먼저, 이미지 내용은 중간의 전달량에 독립적이다.(한 이미지는 어떤 거리든 나타낼 수 있다.); 두번째, 중간 전달량은 지역적으로 상수이다.(작은 이미지 패치 안에서는 같은 거리를 가진다)

These assumptions suggest that we can assume an arbitrary transmission for an individual image patch. 

이러한 가정들은 각각의 이미지 패치에 대해 우리가 임의의 전달량을 가정할 수 있다고 제안한다.

Given a haze-free patch J P (x), the atmospheric light α, and a random transmission t ∈ (0, 1), a hazy patch is synthesized as I P (x) = J P (x)t+α (1 − t). 

안개가 없는 패치 j를 가정해보았을 때, 공기중의 빛 알파와 임의의 전달량 t는 0과 1시아이고, 안개낀 패치는 다음과 같은 식을 가진다.

To reduce the uncertainty in variable learning, atmospheric light α is set to 1.

중요한 학습 과정에서 불확실성을 줄이기 위해서, 공기중의 빛 알파는 1로 설정된다.

In this work, we collect haze-free images from the Internet, and randomly sample from them patches of size 16 × 16. 

이 과정을 통해서 우리는 16 16 크기의 패치들로부터의 임의의 샘플과 안개가 없는 이미지를 인터넷에서 얻게 된다.

Different from [17], these haze-free images include not only those capturing people’s daily life, but also those of natural and city landscapes, since we believe that this variety of training samples can be learned into the filters of DehazeNet. 

17번과 다르게, 이러한 안개가 없는 이미지들은 사람들의 일상뿐만 아니라, 자연적인 삶, 도시 건축물 등을 잡아낸다. 우리는 이 다양한 학습 샘들을이 dehazenet의 필터들로부터 학습될 수 있다는 것을 믿기 때문이다.

Fig. 5 shows examples of our collected haze-free images. 

5번 그림은 우리의 수집된 안개가 없는 이미지들을 보여준다.

2) Training Method: In the DehazeNet, supervised learning requires the mapping relationship F between RGB value and medium transmission. 

2) 학습 방식: dehazenet에서, 강화 학습은 F를 RGB값과 중간 전달량으로  매핑된 관계가 필요하다.

Network parameters Θ = {W1, W2, W4, B1, B2, B4} are achieved through minimizing the loss function between the training patch I P (x) and the corresponding ground truth medium transmission t. 

네트워크 파라미터들은 학습 패치 P와 일치하는 그라운드 truth 중간 전달량 t간의 손실 함수를 최소화시키는데 이용되었다.

Given a set of hazy image patches and their corresponding medium transmissions, where hazy patches are synthesized from hazefree patches as described above, we use Mean Squared Error (MSE) as the loss function: L(Θ) = 1 N X N i=1 F I P i ; Θ − ti 2 (14) Stochastic gradient descent (SGD) is used to train DehazeNet. 

안개낀 이미지들의 집합과 그것에 일치하는 중간 전달량들을 기반으로, 안개낀 패치들은 안개가 없는 패치들과 합성될 수 있다. 위에 설명한 것과 같이, 손실 함수로는 mse를 이용한다. sgd는 dehazenet을 학습하는데 사용된다.

We implement our model using the Caffe package [37].

우리는 우리의 모델을 caffe 패키지를 이용해서 적용하겠다.

Detailed configurations and parameter settings of our proposed DehazeNet (as shown in Fig. 2) are summarized in Table I, which includes 3 convolutional layers and 1 max-pooling layer, with Maxout and BReLU activations used respectively after the first and last convolutional operations  

우리가 제안한 dehazenet에 대한 자세한 확인과 파라미터 설정은 표 1번에 요약되어 있다. 표 1은 맥스아웃과 brelu활성화 함수를 처음과 마지막 컨볼루션 함수이후에 각각 사용한 3개의 컨볼루션 레이어들과 하나의 맥스풀링 계층을 포함하고 있다.

IV. EXPERIMENTS 

IV. 실험

To verify the architecture of DehazeNet, we analyze its convergence and compare it with the state-of-art methods, including FVR [38], DCP [9], BCCR [11], ATM [39], RF [17], BPNN [40], RF [17] and CAP [18].

dehazenet의 구조를 증명하기 위해서, 우리는 수렴정도를 분석하고, 그것을 좋은 방식들(FVR, DCP, BCCR, ATM, RF, BPNN, RF and CAP라는 dehaze 기법들)과 비교한다.

Regarding the training data, 10,000 haze-free patches are sampled randomly from the images collected from the Internet. For each patch, we uniformly sample 10 random transmissions t ∈ (0, 1) to generate 10 hazy patches. 

학습 데이터를 고려했을 때, 만개의 안개가 없는 패치들은 랜덤으로 이미지로부터 추출된다.

Therefore, a total of 100,000 synthetic patches are generated for DehazeNet training. 

그러므로, 총 100000개의 합성된 패치들이 dehazenet 학습을 위해서 생성된다.

In DehazeNet, the filter weights of each layer are initialized by drawing randomly from a Gaussian distribution (with mean value µ = 0 and standard deviation σ = 0.001), and the biases are set to 0. 

dehazenet에서, 각 계층에서의 필터 가중치들은 가우시안 분포로부터 랜덤하게 그려지도록 초기화되고, 편향은 0으로 설정되었다.

(평균은 0 그리고 표준 편차는 0.001인 가우시안 분포)

The learning rate decreases by half from 0.005 to 3.125e-4 every 100,000 iterations. Based on the parameters above, DehazeNet is trained (in 500,000 iterations with a batch-size of 128) on a PC with Nvidia GeForce GTX 780 GPU. Based on the transmission estimated by DehazeNet and the atmospheric scattering model, haze-free images are restored as traditional methods. Because of the local extremum in the third layer, the blocking artifacts appear in the transmission map obtained from DehazeNet. To refine the transmission map, guided image filtering [15] is used to smooth the image. Referring to Equation (4), the boundary value of 0.1 percent intensity is chosen as t0 in the transmission map, and we select the highest intensity pixel in the corresponding hazy image I (x) among x ∈ {y|t(y) ≤ t0} as the atmospheric light α. Given the medium transmission t(x) and the atmospheric light α, the haze-free image J (x) is recovered easily. For convenience, Equation (1) is rewritten as follows: J (x) = I (x) − α (1 − t(x)) t(x) (15) Although DehazeNet is based on CNNs, the lightened network can effectively guarantee the realtime performance, and runs without GPUs. The entire dehazing framework is tested in MATLAB 2014A only with a CPU (Intel i7 3770, 3.4GHz), and it processes a 640 × 480 image with approximately 1.5 seconds. A. Model and performance In DehazeNet, there are two important layers with special design for transmission estimation, feature extraction F1 and non-linear regression F4. To proof the effectiveness of DehazeNet, two traditional CNNs (SRCNN [41] and CNN-L [23] with the same number of 3 layers are regarded as baseline models. The number of parameters of DehazeNet, SRCNN, and CNN-L is 8,240, 18,400, and 67,552 respectively. 1) Maxout unit in feature extraction F1: The activation unit in F1 is a non-linear dimension reduction to approximate traditional haze-relevant features extraction. In the field of image processing, low-dimensional mapping is a core procedure for discovering principal attributes and for reducing pattern noise. For example, PCA [42] and LDA [43] as classical linear lowdimensional mappings are widely used in computer vision and data mining. In [23], a non-linear sparse low-dimensional mapping with ReLU is used for high-resolution reconstruction. As an unusual low-dimensional mapping, Maxout unit maximizes feature maps to discover the prior knowledge of the hazy images. Therefore, the following experiment is designed to confirm the validity of Maxout unit. According to [23], linear unit maps a 16-dimensional vector into a 4-dimensional vector, which is equivalent to applying 4 filters with a size of 16×1×1. In addition, the sparse low-dimensional mapping is connecting ReLU to the linear unit. Fig. 6 presents the training process of DehazeNet with Maxout unit, compared with ReLU and linear unit. We observe in Fig. 6 that the speed of convergence for Maxout network is faster than that for ReLU and linear unit. In addition, the values in the bracket present the convergent result, and the performance of Maxout is improved by approximately 0.30e2 compared with ReLU and linear unit. The reason is that Maxout unit provides the equivalent function of almost all of haze-relevant features, and alleviates the disadvantage of the simple piecewise functions such as ReLU. 2) BReLU in non-linear regression F4: BReLU is a novel activation function that is useful for image restoration and reconstruction. Inspired by ReLU and Sigmoid, BReLU is designed with bilateral restraint and local linearity. The bilateral restraint applies a priori constraint to reduce the solution space scale; the local linearity overcomes the gradient vanishing to gain better precision. In the contrast experiment, ReLU and Sigmoid are used to take the place of BReLU in the nonlinear regression layer. For ReLU, F4 can be rewritten as F4 = max (0, W4 ∗ F3 + B4), and for Sigmoid, it can be rewritten as F4 = 1/(1 + exp (−W4 ∗ F3 − B4)). Fig. 7 shows the training process using different activation functions in F4. BReLU has a better convergence rate than ReLU and Sigmoid, especially during the first 50,000 iterations. The convergent precisions show that the performance of BReLU is improved approximately 0.05e-2 compared with ReLU and by 0.20e-2 compared with Sigmoid. Fig. 8 plots the predicted transmission versus the ground truth transmission on the test patches. Clearly, the predicted transmission centers around the 45 degree line in BReLU result. However, the predicted transmission of ReLU is always higher than the true transmission, and there are some predicted transmissions over the limit value tmax = 1. Due to the curvature of Sigmoid function, the predicted transmission is far away from the true transmission, closing to 0 and 1. The MSE on the test set of BReLU is 1.19e-2, and that of ReLU and Sigmoid are 1.28e-2 and 1.46e-2, respectively. B. Filter number and size To investigate the best trade-off between performance and parameter size, we progressively modify the parameters of DehazeNet. Based on the default settings of DehazeNet, two experiments are conducted: (1) one is with a larger filter number, and (2) the other is with a different filter size. Similar to Sec. III-C2, these models are trained on the same dataset and Table II shows the training/testing MSEs with the corresponding parameter settings. In general, the performance would improve when increasing the network width. It is clear that superior performance could be achieved by increasing the number of filter. However, if a fast dehazing speed is desired, a small network is preferred, which could still achieve better performance than other popular methods. In this paper, the lightened network is adopted in the following experiments. In addition, we examine the network sensitivity to different filter sizes. The default network setting, whose specifics are shown in Table I, is denoted as 5-M-7-6. We first analyze the effects of varying filter sizes in the second layer F2. Table II indicates that a reasonably larger filter size in F2 could grasp richer structural information, which in turn leads to better results. The multi-scale feature mapping with the filter sizes of 3/5/7 is also adopted in F2 of DehazeNet, which achieves similar testing MSE to that of the single-scale case of 7 × 7 filter. Moreover, we demonstrate in Section IV-D that the multiscale mapping is able to improve the scale robustness. We further examine networks with different filter sizes in the third and fourth layer. Keeping the same receptive field of network, the filter sizes in F3 and F4 are adjusted simultaneously. It is showed that the larger filter size of nonlinear regression F4 enhances the fitting effect, but may lead to over-fitting. The local extremum in F3 could improve the robustness on testing dataset. Therefore, we find the best filter setting of F3 and F4 as 5-M-7-6 in DehazeNet. C. Quantitative results on synthetic patches In recent years, there are three methods based on learning framework for haze removal. In [18], dehazing parameters are learned by a linear model, to estimate the scene depth under Color Attenuation Prior (CAP). A back propagation neural network (BPNN) [40] is used to mine the internal link between color and depth from the training samples. In [17], Random Forests (RF) are used to investigate haze-relevant features for haze-free image restoration. All of the above methods and DehazeNet are trained with the same method as RF. According to the testing measure of RF, 2000 image patches are randomly sampled from haze-free images with 10 random transmission t ∈ (0, 1) to generate 20,000 hazy patches for testing. We run DehazeNet and CAP on the same testing dataset to measure the mean squared error (MSE) between the predicted transmission and true transmission. DCP [9] is a classical dehazing method, which is used as a comparison baselines. Table III shows the MSE between predicted transmissions and truth transmissions on the testing patches. DehazeNet achieves the best state-of-the-art score, which is 1.19e-2; the MSE between our method and the next state-of-art result (RF [17]) in the literature is 0.07e-2. Because in [17], the feature values of patches are sorted to break the correlation between the haze-relevant features and the image content. However, the content information concerned by DehazeNet is useful for the transmission estimation of the sky region and white objects. Moreover, CAP [18] achieves satisfactory results in follow-on experiments but poor performance in this experiment, due to some outlier values (greater than 1 or less than 0) in the linear regression model. D. Quantitative results on synthetic images To verify the effectiveness on complete images, DehazeNet is tested on synthesized hazy images from stereo images with a known depth map d (x), and it is compared with DCP [9], FVR [38], BCCR [11], ATM [39], CAP 2 [18], and RF [17]. There are 12 pairs of stereo images collected in Middlebury Stereo Datasets (2001-2006) [44], [45], [46]. In Fig. 9, the hazy images are synthesized from the haze-free stereo images based on (1), and they are restored to haze-free images by DehazeNet. To quantitatively assess these methods, we use a series of evaluation criteria in terms of the difference between each pair of haze-free image and dehazing result. Apart from the widely used mean square error (MSE) and the structural similarity (SSIM) [47] indices, we used additional evaluation matrices, namely peak signal-to-noise ratio (PSNR) and weighted peak signal-to-noise ratio (WPSNR) [48]. We define one-pass evaluation (OPE) as the conventional method, which we run with standard parameters and report the average measure for the performance assessment. In Table IV, DehazeNet is compared with six state-of-the-art methods on all of the hazy images by OPE (hazy images are synthesized with the single scattering coefficient β = 1 and the pure-white atmospheric airlight α = 1). It is exciting that, although DehazeNet is optimized by the MSE loss function, it also achieves the best performance on the other types of evaluation matrices. The dehazing effectiveness is sensitive to the haze density, and the performance with a different scattering coefficient β could become much worse or better. Therefore, we propose an evaluation to analyze dehazing robustness to scattering coefficient β ∈ {0.75, 1.0, 1.25, 1.5}, which is called as coefficient robustness evaluation (CRE). As shown in Table V, CAP [18] achieve better performances on the mist (β = 0.75), but the dehazing performance reduces gradually when the amount of haze increases. The reason is that CAP estimates the medium transmission based on predicted scene depth and a assumed scattering coefficient (β = 1). In [17], 200 trees are used to build random forests for non-linear regression and shows greater coefficient robustness. However, the high-computation of random forests in every pixel constraints to its practicality. For DehazeNet, the medium transmission is estimated directly by a non-linear activation function (Maxout) in F1, resulting Fig. 10. Image enhancement for anti-halation by DehazeNet in excellent robustness to the scattering coefficient. Due to the color offset of haze particles and light sources, the atmosphere airlight is not a proper pure-white. An airlight robustness evaluation (ARE) is proposed to analyze the dehazing methods for different atmosphere airlight α. Although DehazeNet is trained from the samples generated by setting α = 1, it also achieves the greater robustness on the other values of atmosphere airlight. In particular, DehazeNet performs better than the other methods when sunlight haze is [1.0, 1.0, 0.9]. Therefore, DehazeNet could also be applied to remove halation, which is a bright ring surrounding a source of light as shown in Fig. 10. The view field transformation and image zoom occur often in real-world applications. The scale robustness evaluation (SRE) is used to analyze the influence from the scale variation. Compared with the same state-of-the-art methods in OPE, there are 4 scale coefficients s selected from 0.4 to 1.0 to generate different scale images for SER. In Table V, DehazeNet shows excellent robustness to the scale variation due to the multi-scale mapping in F2. The single scale used in CAP [18], DCP [9] and ATM [39] results in a different prediction accuracy on a different scale. When an image shrinks, an excessively large-scale processing neighborhood will lose the image’s details. Therefore, the multi-scale mapping in DehazeNet provides a variety of filters to merge multi-scale features, and it achieves the best scores under all of different scales. In most situations, noise is random produced by the sensor or camera circuitry, which will bring in estimation error. We also discuss the influences of varying degrees of image noise to our method. As a basic noise model, additive white Gaussian (AWG) noise with standard deviation σ ∈ {10, 15, 20, 25} is used for noise robustness evaluation (NRE). Benefiting from the Maxout suppression in F1 and the local extremum in F3, DehazeNet performs more robustly in NRE than the others do. RF [17] has a good performance in most of the evaluations but fails in NRE, because the feature values of patches are sorted to break the correlation between the medium transmission and the image content, which will also magnify the effect of outlier. E. Qualitative results on real-world images Fig. 11 shows the dehazing results and depth maps restored by DehazeNet, and more results and comparisons can be found at http://caibolun.github.io/DehazeNet/. Because all of the dehazing algorithms can obtain truly good results on general outdoor images, it is difficult to rank them visually. To compare them, this paper focuses on 5 identified challenging images in related studies [9], [17], [18]. These images have large white or gray regions that are hard to handle, because most existing dehazing algorithms are sensitive to the white color. Fig. 12 shows a qualitative comparison with six stateof-the-art dehazing algorithms on the challenging images. Fig. 12 (a) depicts the hazy images to be dehazed, and Fig. 12 (b-g) shows the results of ATM [39], BCCR [11], FVR [38], DCP [9], CAP [18] and RF [17], respectively. The results of DehazeNet are given in Fig. 12 (h). The sky region in a hazy image is a challenge of dehazing, because clouds and haze are similar natural phenomenons with the same atmospheric scattering model. As shown in the first three figures, most of the haze is removed in the (bd) results, and the details of the scenes and objects are well restored. However, the results significantly suffer from overenhancement in the sky region. Overall, the sky region of these images is much darker than it should be or is oversaturated and distorted. Haze generally exists only in the atmospheric surface layer, and thus the sky region almost does not require handling. Based on the learning framework, CAP and RF avoid color distortion in the sky, but non-sky regions are enhanced poorly because of the non-content regression model (for example, the rock-soil of the first image and the green flatlands in the third image). DehazeNet appears to be capable of finding the sky region to keep the color, and assures a good dehazing effect in other regions. The reason is that the patch attribute can be learned in the hidden layer of DehazeNet, and it contributes to the dehazing effects in the sky. Because transmission estimation based on priors are a type of statistics, which might not work for certain images. The fourth and fifth figures are determined to be failure cases in [9]. When the scene objects are inherently similar to the atmospheric light (such as the fair-skinned complexion in the fourth figure and the white marble in the fifth figure), the estimated transmission based on priors (DCP, BCCR, FVR) is not reliable. Because the dark channel has bright values near such objects, and FVR and BCCR are based on DCP which has an inherent problem of overestimating the transmission. CAP and RF learned from a regression model is free from oversaturation, but underestimates the haze degree in the distance (see the brown hair in the fourth image and the red pillar in the fifth image). Compared with the six algorithms, our results avoid image oversaturation and retain the dehazing validity due to the non-linear regression of DehazeNet. V. CONCLUSION In this paper, we have presented a novel deep learning approach for single image dehazing. Inspired by traditional haze-relevant features and dehazing methods, we show that medium transmission estimation can be reformulated into a trainable end-to-end system with special design, where the feature extraction layer and the non-linear regression layer are distinguished from classical CNNs. In the first layer F1, Maxout unit is proved similar to the priori methods, and it is more effective to learn haze-relevant features. In the last layer F4, a novel activation function called BReLU is instead of ReLU or Sigmoid to keep bilateral restraint and local linearity for image restoration. With this lightweight architecture, DehazeNet achieves dramatically high efficiency and outstanding dehazing effects than the state-of-the-art methods. Although we successfully applied a CNN for haze removal, there are still some extensibility researches to be carried out. That is, the atmospheric light α cannot be regarded as a global constant, which will be learned together with medium transmission in a unified network. Moreover, we think atmospheric scattering model can also be learned in a deeper neural network, in which an end-to-end mapping between haze and haze-free images can be optimized directly without the medium transmission estimation. We leave this problem for future research.


  1. 2019.01.16 15:04

    비밀댓글입니다

글을 쓰기 전에

인공지능이란, 사람처럼 행동하고 의사가 있는 것처럼 행동하는 장치를 말한다.

예전에는 단순한 if문, switch문 등의 조건 분기로 진행되는 것도 나름대로의 지능을 가지고 있다고 생각해서, 

인공지능이라고 부르던 시대가 있었지만, 시대가 발전하면서, 인공지능이라는 것은 

어느 방면에서 사람과 거의 비슷한 의사 결정을 하는 친구로 바뀌어 갔다.


튜링 테스트(-사람인지 기계인지를 판별하는 시험)를 통과한 장치의 경우 인공지능을 가지고 있다고 분류한다고 한다.


통계 기반 머신 러닝 

- 데이터를 분류하고 그 분류한 데이터를 이용해서 미래의 결과를 예측한다.

- 결과적으로 데이터에서 특징(feature)이 추출되어, 

추출된 특징을 이용해서 모델링을 진행하면 자동 처리에 이용될 수 있다.


분산 처리 기술

- map-reduce등의 기술은 미리 설정한 컴퓨터 자원을 사용하고, 네트워크로 자원을 관리하며, 자원을 늘리거나 줄인다.


신경망 연구

- 처음에는 단순한 퍼셉트론을 이용한 패턴 인식 알고리즘으로 시작했다.

- 점차 연구가 진행됨에 따라, 깊은 계층으로 구성된 신경망을 이용해서 딥러닝이라는 개념이 등장하게 된다.


규칙 기반의 모델

조건 분기를 이용해서 규칙을 정해 의사 결정을 하는 모델이다.


지식 기반의 모델

규칙이 늘어가 변하는 경우에, 프로그램을 변경하거나 다시 작성하는 일이 생겼는데, 

이러한 불편함을 줄이고자, 지식을 이용해서 규칙이 지정된 id를 이용해서 설정값을 읽고, 어떤 판단을 내린다.


추론 엔진 구성 예시의 경우

1) 술어 논리

1- 양상 논리

- 인식 논리

2- 시제 논리

2) 다치 논리

1- 퍼지 논리

이런 식으로 하나의 인공지능 프로그램을 만들기 위한 엔진은 여러 응답 수단이 적용된다.


추천 엔진의 경우, 각 키워드 간의 관련성(상관 계수)을 수치화하여, 가장 적합한 추천 키워드를 안내 받을 수 있도록 한다.


일단 통계 기반 머신 러닝의 경우,

데이터들이 뽑히는 형태가 어떤 그래프를 취하고 있는지를 분석해본다.

만약 파악가능한 모양으로 결과값이 도출된다면, 가장 정확도가 일치하는 형태로 그래프를 추론한다.

그리고 파악이 어려운 데이터의 경우, 데이터의 결과값이 어디서부터 영향을 받아왔는지에 대해서 서술한다.


직전의 데이터로부터 영향을 받은 경우, 은닉이 되어 확인할 수 없는 경우 등등 다양하게 존재하는데,

각종 상황에서의 데이터 값이 도출되는 환경, 네트워크 구성을 잘 파악하는 것이 좋겠다.


그리고 정답 정보가 없는 상태에서 자율적으로 학습해나가는 것을 자율 학습이라고 한다.

계산을 반복하면서 가중치를 수정해 모델이 되는 함수 분포에 접근해나가는 것을 말한다.


지도 학습의 경우에는 기존에 기준이 되는 정답을 제시해준다.

그래서 데이터 분포를 나누는 기준을 제시하여, 

그 분포가 기준이 되는 직선에 상대적으로 어떤 형태를 가지고 있는지 확인하면 된다.


그래서 내가 오늘 본격적으로 다뤄볼 내용의 경우에는 합성곱 신경망인데,

일단 합성곱이라는 것은 이미지를 평활화 하기도 하고, 언샤프 마스킹도 하면서 이것 저것 화소 값을 편집하는 과정이다.


이렇게 편집을 하고 나면, 처리된 내용을 정규화 하는 정규화 계층을 거친다.

그리고 정규화된 각종 특징값들의 대표값을 뽑아내는 풀링 계층을 거치고 나면, 결과적으로 이미지를 출력할 수 있다.



이론적으로는 거의 여기까지가 내가 이해할 수 있는 부분이다.


뒷 부분은 텐서플로를 이용해서 값을 추출해보고, 이미지 인식 등을 진행하는 실습과 같이 연관되어 있어, 

나중에 텐서플로로 예제를 실행해보면서 비교를 하는 과정에서 추가적으로 학습할 수 있는 내용들로 보인다.


다음 게시글에서는 내가 읽고 있는 논문에 대해서 적어보도록 하겠다.



  1. BlogIcon sparkling_ 2019.01.24 21:33 신고

    와우....

// 클래스 필드에 있는 static친구이기 때문에, 바로 선언할 수 있는 것이었다.

// 접근 제어자, 접근 제한자 : public은 한 프로젝트의 자바 파일 안에서 프로젝트를 기준으로, 언제 어디서든 접근할 수 있다.(접근 제한이 없다.)

// 프로젝트는 전체의 의이이다.

// private는 같은 클래스 내에서만 이용할 수 있다. 같은 클래스 멤버끼리 사용할 수 있다.

// 경고를 띄워주는 것은 바보같은 코딩을 했을 때 뜬다.

인스턴스 화를 해도 private한 데이터는 접근이 불가능하다.
private은 인스턴스화를 해도 접근이 되지 않는다.

메서드 자동 생성을 하면, private로 생성된다.

out이라는 참조 변수가 static 필드이기 때문에 인스턴스화 없이 바로 호출할 수 있다.
기울어지지 않은 글자체는 인스턴스 메서드이다.
기울어지면 클래스 메서드이다.


extend를 쓰면 상속을 진행할 수 있다.

자식은 부모의 모든 객체를 사용할 수 있는 것이다.
하지만, 반대로 , 부모는 자식의 그 어떠한 객체도 사용할 수 없다.

결과적으로 자식은 부모의 객체를 자신과 한 클래스처럼 사용할 수 있는 것이다.

자바에서 상속할 일은 단 1회도 없다.

.그렇지만 자바 스크립트에서는 상속을 정말 많이 한다.

인스턴스 화 없이 다른 클래스의 인자들을 바로 사용하고 싶다면 이렇게 하면 된다.

private는 부모 자식 관계도 없다.

다른 패키지로 옮기면 outt와 bumoD만 에러가 난다.

그 이유는 public이라는 접근 제한자가 있는 애는 에러가 안난다.

아무것도 안써져 있는 변수의 접근 제한자는 디폴트로 설정되는데, 

그 경우에는 같은 패키지상에서만 접근할 수 있게 한다.

자기 자신이 속해있는 클래스를 인스턴스화하면 인스턴스 메서드도 호출할 수 있겠다.


호출 메서드 한줄 위는 띄워놓는다.

++는 단항연산자라고 한다.

++는 단항 연산자이자, 변수 앞에 위치해 있어, 전위 연산자이다.

변수 뒤에 위치한 경우에는 후위 연산자라고 부른다.

+= 양 옆에 있는 숫자를 더해서 왼쪽에 대입한다.

1. number format exception 오류

2. null point exception 오류

3. array out-of-bound exception 오류


강제 형변환, 캐스트 연산자라고도 한다.

double 이라고 소수를 저장할 수 있는 타입의 변수를 선언한다.

int b에 소수를 넣기 위해 강제 형변환을 했다.


> ? true : false

조건 연산자이자, 삼항연산자라고 한다.


for문은 for문 자체로 어렵지 않다.

for문 한줄 위는 무조건 띄우는 것이다.

i에 후위 연산자이기 때문에 반복문을 돌리고 +1을 한다.

부울 표현식이 거짓이 되면, 구현부를 빠져 나온다.

< >를 관계 연산자라고 한다.

if문의 경우에는 안의 조건문이 true인 경우에 그 안에 있는 스코프를 실행한다.


여기에 노란색이 쓰이는 경우에는,

애초에 값이 정해진 친구기 때문에, if문을 거치지를 않을 것이다.


equals의 경우에는 자바에서, 문자열과 문자열을 비교할 때, 우리는 == 를 쓰곤 하는데,

정수는 ==이 맞지만, 문자열의 경우에는 이러면 안된다.

스택, 주소값을 비교한다는 얘기인데, 이거를 쓸 이유가 없다.

값 비교는 내가 비교하고 싶은 것과 비교하고 싶은 것을 적으면 힙을 비교한다.



for문과 if문의 경우에는 윗 줄을 띄운다.

그리고 컴퓨터 자체에 실행할 수 있도록 하는 호출 메서드의 경우에는 호출할 때 윗줄을 띄우지 않는다.

그리고 리턴문도 띄우지 않는다고 한다.



변수란, 대입 연산자 왼쪽에 있는 애.

변수: 값을 저장하거나, 보관하고, 대입하고, 추후에 추출하는 것을 변수라고 한다.

메서드란, 클래스 안에 있는 함수

메서드가 하는 일은 클래스의 일을 처리하는 블록

클래스는 블록으로 이루어져 있다.


String 이라는 타입의 jiyerk라는 이름의 변수를 선언하고,

jiyerk라는 이름의 변수를 "두줄로 썼어요:"라고 초기화한다.

노란 줄이 뜨는 이유는 jiyerk라는 변수가 그 이후에 사용되지 않기 때문이다. 


** 다른 개발자에게 설명할 때 말 잘하기 위해서 외우자.**


그래서 내가 선언한 변수를 사용하게 되는 순간 노란색 줄은 사라지게 되는 것이다.


그래서 여기를 보면 syso가 두개가 있다.**표준**

생긴게 다른 애들은 한줄을 띄우고, 비슷한 코드면 붙인다.

이렇게 하면 시원시원하고 깔끔해 보인다.


“”를 넣어버리면 문자열이 된다.



변수는 하나에 하나밖에 저장을 못하므로 여기서는 세줄로 썼어요로 출력되게 된다.


여기서 이 코딩은 잘못된 코딩이다.

Step 2에서 배우게 되더라도 기억을 해야 한다.


자바 스크립트이건, 자바이건, 변수가 초기화되어있지 않은 채 선언되는 경우는 표준 코딩이 아니다.

초반에 아무것도 넣을게 없다고 하면, “”를 넣는 것이 표준이다.


초반에 아무것도 넣을게 없다고 하면, “”를 넣는 것이 표준이다. (null로도 초기화 가능-String 같은 경우에는 null로도 초기화가 가능하다.)

String 타입의 앞글자를 소문자로 적는 실수는 하지 말아라.


여기서 인자, 인수, 매개변수, 파라미터, 즉 매개 변수 args는 main 메서드 꺼이다.


메서드 안에서 탄생된 jiyerk는 지역변수라고 부르고, 메서드 밖에서 탄생된 변수들은 필드라고 한다.

필드와 지역 변수는 다른 명칭이라는 것을 알아두자.


필드라고도 부르고, 이를 멤버 변수 라고도 한다. 객체 라고도 한다.


+는 결합 연산자라고 한다.

문자열과 문자열을 더할 때 쓴다.

이 결합 연산자를 쓸 때는 앞뒤로 한 칸 씩 띄우는 것이다.


 **표준 코딩이 경우에는, 변수를 여러 개 쓰면 오와 열을 맞추자.”

Tab을 이용하자.

이게 바로 맞는 것이다.

좀더 튀어나온 애가 먼저 tab으로 정렬된다.

그리고 = 오른쪽 부분은 굳이 정리하지 않아도 된다.


똑같은 타입의 변수를 선언하고 싶으면, 구분 자, (콤마)를 찍고 또 변수를 선언하는 것이다.


그리고 한 줄에 변수는 무조건 하나만 선언하는 것이다.


그리고 하나 더, 구분자는 앞쪽 문장에 붙는다.



표준 주석에 대해서 쓴다. 슬래쉬 두번 하면 한 칸 띄운다. 


주석까지 더해서 너무 문장이 길어지게 되면, 문장 오른쪽에 주석을 달면 안된다.

가로 휠을 돌리게 만드는 것은 살인 사유가 될 수 있다.


그러면 내가 길게 달고 싶은데, 길게 달고 싶은 경우에는 /**/을 이용한다.


/* 엔터를 누르면 자동으로 만들어지고,

주석이 첫줄 부터 쓰면 안되고, 두번 째 줄부터 쓰고, 각 줄 앞은 한 칸을 띄운다.


자바 스크립트에나 자바에서 주석을 사용할 때, 특수기호를 넣는 버릇을 들이면 안된다.

특수 기호를 넣게 되면, 어떤 경우에는 컴퓨터가 해석을 해버려서 주석 인데도 주석이 안될 수 있다.

초록색이기 때문에 오류 검출이 힘들 수 있다.



Int 타입에는 정수만 들어간다.

정수 타입을 더한 것이다.

아까 문자열을 더한 것은 결합 연산자라고 하지만,

숫자를 더할 때는 얘 +는 산술 연산자라고 한다.

그리고 산술연산자는 여러가지 종류가 있는데, 그 중에 이항 연산자에 속한다.


지금부터 int를 기본형이라고 하겠다.

String은 지금부터 참조형이라고 하겠다.


기본형과 참조형이 다른 것은

변수 명과 값이 다 stack에 있다.


참조형은 변수만 stack에 있다.

값은 다른 곳에 있다.

다른 곳 이라고만 알아 두자.


이게 기본형과 참조형의 차이이다.


Java 7이후에 나온 것인데, 자바는 세 자리씩 언더 스코어를 찍는다.

12_123_332 이런식으로 말이다.


출력할 때는 12123332라고 나오는데, 개발자는 가독성이 좋게 읽을 수 있다.


이 경우에는 가독성이 좋아서 다른 개발자들에게는 좋다.

실제로 출력하게 될 때는 언더 스코어는 나오지 않는다.



여기 보면 들여쓰기이다.

들여쓰기를 잘해야 할 수 있는 것이다.

사람이 마음이 급하다보면, 들여쓰기를 안할 수 있는데, 그 경우에는 괄호 열고 닫고 등의

문제가 생길 수 있다.


멤버, 객체, 필드, 멤버 변수라고도 부르는 이 부분을 속성이라고도 하겠다.


자바스크립트가 가장 어려운 언어라서, 동적 타입 언어라서!



앞자리를 대문자로 하는 애를 파스칼 케이스라고 한다.


클래스는 문장과 블록으로 이루어져 있다고 한다.


중괄호를 블록, 구현부라고 했는데, 스코프라는 명칭도 추가하겠다.




필드를 속성이라고 한다면, 메서드는 기능이다.


클래스는 속성과 기능으로 이루어졌다고 하면 되고, 문장과 블록, 

변수와 메서드로 이루어져 있다고 할 수도 있다.


그리고 프로젝트는 폴더로 구성되어 있다.


그리고 프로젝트의 최소 단위 객체는 클래스이다.



Main안에 있는 호출 메서드라고 한다.

괄호 안에 들어가 있는 애를 전달 인자라고 한다.


전달 인자의 타입과 개수가 맞아야 되는데, 그걸 메서드 오버로딩 이라고 한다.


호출 메서드 한줄 위는 띄우는 것이다.



지금 현재 빨간색으로 띄워지는 이유는 메서드가 없어서.


만들어지면 되겠다.



클릭을 하면, 메서드가 만들어진다.



그러면 콘솔에 출력해보자.


Main메서드 안에서 other메서드가 호출되고, 그래서 other메서드에서 syso가 출력되는 것이다.



클래스 로더란? 

자바 파일이 잘 돌아가는지, 검사하는 애


런타임 데이터 지역

스택이나 힙, 클래스 들이 저장되어 잇는 곳


익스 큐션 엔진

해석하는 애


참조형은 값이 힙에 있다.

변수는 스택에 있다. 메서드의 스택에,

근데 그게 변수의 힙에 잇다.

메서드의 스택에 변수가 있고, 그 변수의 힙에 참조형의 값이 담겨있다.



Other메서드는 호출 메서드이기 때문에, 주소값이 담긴다.

Other메서드 스택에 변수가 담긴다.

Other메서드 주소값은 oneS를 바라보고 있다.(가지고 간다)


그래서 다 읽는다. 일단 twoS 힙은 가비지 컬렉션이 지운다.

그리고 main의 스택에서도 twoS를 지운다.


이 abcd에 대한 힙이 생성되어, 그 힙에 한이 담긴다.

그래서 이 두 개는 완전 다르다.


Other메서드의 스택에서 syso가 abcd를 사용한다.

출력하면, 지워지고, 지워지고…..


메서드에 두개의 전달 인자를 넘길 수 있을 것이다.

두 개를 넘긴 것을 그림 그리는 것이 응용이다.



Static은 JVM이 클래스를 읽었을 때 제일 먼저 읽는 친구이다.


자바라는 공간은 클래스 공간에 static이 올라가는 순간에 static말고 아무것도 없다.


*** 그래서 static객체는 static 객체 밖에 호출을 하지 못한다.


Static객체에서는 static객체만 사용할 수 있다.


아주 간단한 시험을 보겠다.


Void는 반환 타입이라고 한다.


해당 메서드의 결과값을 이 메서드를 호출한 아이에게 주는 것이다.


메서드에서는 결과값을 주는 예약어가 딱 한 개밖에 없는데, 그게 return 이다.


빨간 색 줄이 뜨는 이유는 리턴 타입이 string인데, 

메서드를 선언할 때 반환 타입이 void로 선언되어 있기 때문이다.


패키지와 클래스 생성 조차도 두려워하시는 분들은

숙제를 낸다.


Static이 붙어 있는 메서드는 무슨 메서드라고?

클래스 메서드라고 한다.


Static이 클래스 저장공간 안에 들어간다.


객체, 멤버, 멤버 변수, 속성, 필드

Static 이 붙어 있으면 클래스 변수


Static 이 붙어 있으면 클래스 메서드


Static이 붙어있지 않은 객체들을 인스턴스라고 한다

인스턴스 필드, 인스턴스 변수, 인스턴스 메서드


클래스와 인스턴스의 차이점은 메모리에 있냐 없냐의 차이이다.


클래스 영역도 메모리이기 때문에 일리가 있다.



그러면 자바는 메모리에 있는 것만 사용할 수 있지 않을까? 그렇다.


Static이 static만 호출할 수 있는 이유는

Static이 올라가 있는 시점에 아무것도 없다.

Static을 제외한 인스턴스들은 없다.


메모리에 없으니까 못쓰는 것이다.

결국 메모리에 없는 것은 못쓴다.


Static은 자동으로 메모리에 올라온다.


같은 클래스 멤버, 객체만 static(클래스 메서드에서 사용할 수 있다.)


인스턴스를 강제적으로 메모리에 올릴 수 있는 방법이 있다.


근데 나는 더하기라는 메서드를 호출하고 싶다.


그러면 우리는 호출하는 법을 알아야 한다.


생성자라는 것이 있다.


클래스에는 나오지 않았더라도 생성자가 있다.

생성자에는 수식자(와 리턴 타입)가 없다.

그리고 클래스 명을 그대로 따온다.


생성자는 해당 클래스를 초기화하는 역할을 한다.

클래스를 읽을 때 가장 먼저 읽는 부분이다.


런타임 데이터 에어리어에 클래스를 올려 두는 것이다.


클래스를 일단 올려야 할 것이다.

그거를 객체를 생성했다는 것이다.


객체를 생성했다는 것은 메모리에 올렸다는 것이다.


Step1Two타입에는 Step1Two만 들어간다.


S1t를 인스턴스 변수, 레퍼런스 변수, 참조 변수라고 한다.

왼쪽꺼는 스택에, 오른쪽꺼는 힙에 저장되어 있다.

그래서  이 한줄을 인스턴스 화라고 한다.


인스턴스 멤버, 객체인 경우에만 인스턴스화를 할 수 있는 것이다.



고급언어/저급언어

고급 언어: java

저급 언어: 기계어 (어셈블리어 도)

 

플랫폼

OS가 윈도우인 경우 그냥 하면 되지만, 리눅스인 경우에는 두번 만들어야 한다.

 

자바는 os에 종속적이지 많고, 가상 머신이라는 것이 있어서, 자바는 항상 가상 머신에서 돌아간다.

자바의 가상 머신이 설치되어 있지 않은 컴퓨터에서의 자바는 절대 동작하지 않는다.

 

OS마다 한판씩 짜야하는 것은 OS마다 virtual machine이 있어야 한다.

 

COS마다 하나씩 있어야 하는데, 자바와 무슨 차이일까?

 

virtual machine을 우리가 만드는 것은 아니다.

C는 우리가 만든다.

자바는 어떤 사람이 만들 것이기 때문에 상관이 없는 것이다.

 

.java->.class(컴파일)

이 클래스 파일을 중간 코드, 바이트 코드라고 한다.

 

virtual machine은 클래스파일만 읽을 수 있다.

이 클래스 파일은 자바 virtual machine만 읽을 수 있다.

 

os 자체만으로는 절대 클래스 파일을 읽을 수 없다.

자바 virtual machine이 클래스 파일을 읽는 것이다.

 

JIT?

just in time

c는 코딩을 하면 바로 os에 전달을 한다.

 

자바는 컴파일을 두 번한다.

자바를 컴파일 해서 클래스 파일이 되면, 그 클래스 파일을 virtual machine이 읽어서 기계어로 전달을 해서 그걸 os가 컴파일 한다.

그래서 느리다고 까였다.

그래서 낸 기술이 just in time이다.

 

과거에는 내가 이미 나온 글자에 대해 컴파일하면, 이미 컴파일한 것을 다시 나타낸다.

그래서 JIT가 굉장히 빠르다.

60배로 올리겠다고 발표했으나, 20배 정도의 성능까지 냈다.

 

컴파일 하는 과정을 인터프리터 방식을 적용했다가 JIT로 바꾼다.

그래서 C와 별로 큰 차이가 느껴지지 않을 정도로 발전하였다.

 

JVM?

자바 가상 머신?

java virtual machine이라고 하는데, 이 자바 가상 머신과 컴파일러를 헷갈리면 안되는 것이다.

자바 파일을 클래스로 바꾸어 주는 아이라고 생각하면 안되는 것이다.

클래스 파일을 기계어로 바꾸어주는 아이가 java virtual machine이다.

 

원래 이클립스 설치하기 전에 설치하는 것은 JDK를 설치하면 된다.

그걸 C루트까지 넣는 것을 해야 한다.

JDK를 설치하게 하면 그 안에 들어가 있는데,

 

JDK, JRE가 있다.

JDK

브라우저가 자바를 설치하지 않는 경우에 보여줄 수 없는 애들이 있다.

그걸 JRE라고 한다.

JDK가 더 큰 것이다.

 

 

JDKJRE를 품고 있다.

JRE안에 java virtual machine이 들어가 있는 것이다.

자바 실행 환경이 들어가 있는 JRE.

 

.java .class

클래스 파일은 중간 코드와 바이트 코드

프로젝트라는 것을 만들어야 하는데, 이 프로젝트라는 것은 한 개 정도의 프로젝트가 있다.

그 프로젝트 안에 개발자, 퍼블리셔들이 있어서, 그 플젝을 완성해서 납품하는 것이다.

우리가 프로젝트를 실무에서 만들 일은 없다.

프로젝트를 만드는 사람은 AA라고 한다.

 

 

실무에서 절대 쓰지 않는

 

앞자리가 소문자이고, 단어를 합칠 때의 맨 앞자리는 대문자로 진행: 카멜 케이스

앞자리를 대문자로 쓰는 케이스: 파스칼 케이스

다 대문자인데, 단어와 단어를 이을 때 언더 스코어(언더바)를 쓰는 것: 스네이크 케이스

 

 

 

src폴더 안에 자바 파일이 들어가야 한다.

 

자바 파일을 만들 때는 무조건 파스칼케이스로 만들어야 한다.

 

package step1Start; // 첫줄이 패키지라는 예약어로 되어있는데,

// step1Start라는 폴더 안에 이 파일이 들어가 있다는 것을 알 수 있다.

// 이 파일은 이 폴더 안에 있구나 하면 된다.

 

//public만 수식자

public class Step1One {

// 퍼블릭이라는 예약어인데, 3주차 때를 기다리자.

// 클래스라는 예약어는 클래스를 만드는 예약어이다.

// 이 클래스 명이 Step1One 인 이유는 class 다음에 나온 단어가 얘이기 때문이다.

 

//void 앞까지 수식자라고 한다.

public static void main(String[] args) {

// TODO Auto-generated method stub

// static이라는 예약어는 2주차, void라는 예약어는 3주차 때 이야기한다.

// 배열의 경우에는 step2 9주차에 배운다.

// 이 함수는 현재 클래스 안에 들어가 있다.

// 클래스 안에 들어가 있는 함수의 경우, 메서드라고 한다.

// 지금 소괄호 안에 들어가 있는 아이들을 인수라고 한다.

 

}

 

}

// 클래스 블록은 여기서 닫혔다.

// 그래서 이 안이 클래스이다.

// system.out.println(“”);

// 에 대해서 이해하는 것이 이번 목표이다.

// 여는 소괄호 바로 앞에 있는 글자를 함수 명이라고 한다.

// 함수는 어떠한 처리를 기술하는 곳이다.

// 자동차가 있는데, 백미러, 사이드미러, 의자, 트렁크가 있어야 하듯이

// 자동차라는 클래스 안에 들어가 있어야 하는 애들은 함수가 아니다.

// 기어를 뒤로 놓으면 차가 앞으로 간다라는 것은 함수이다.

// 함수는 처리를 기술하는 곳이다.

// 자바는 함수가 없다.

// 클래스 밖에 있는 함수가 자바는 없다.

// 그래서 자바는 함수라는 것이 존재하지 않고, 다 메서드로 되어 있다.

// 자바는 클래스 없이 살 수 없다.

// 하지만, 자바 스크립트는 함수가 있다.

// 자바 스크립트는 메서드도, 클래스도 있다.

// step 1을 들으면, 스크립트가 조금 쉬워진다.

// 웹 개발자는 자바 스크립트 하나만 알게 되면, 다 알 수 있다.

 

 

 

자주색: 예약어 -

세미콜론: 마침표 -

마침표 앞에 있는 줄: 문장 -

중괄호: 블록(구현부) -

소괄호: 함수 -

클래스 안에 들어가 있는 함수: 메서드 -

소괄호 안에 들어가 있는 애들: 인수(인자, 매개 변수, 파라미터) -

= : 대입 연산자 -

 

자바는 문장과 블록으로 이루어져 있다.

이 클래스는 한 개의 문장과 두 개의 블록으로 이루어져 있다.

 

변수라는 거는 뭐냐면,

 

 

 

+ Recent posts

티스토리 툴바