Research Article

The Journal of the Acoustical Society of Korea. 31 January 2019. 106-113
https://doi.org/10.7776/ASK.2019.38.1.106

ABSTRACT


MAIN

  • I. 서 론

  • II. 비협동 양상태 소나 시스템

  • III. 콘볼루션 신경회로망을 이용한 능동펄스 식별 알고리즘

  • IV. 해상실험 데이터 결과

  • V. 결론 및 향후 연구

I. 서 론

수중에서 은밀하게 기동하는 잠수함을 탐지, 추적, 식별하기 위한 능동소나 시스템은 크게 단상태(mono-static)와 양상태(bi-static) 소나로 구분할 수 있다. 기존의 능동펄스는 송신기와 수신기가 동일한 플랫폼에서 운용되어 간단한 구조를 가지는 단상태 소나를 주로 사용하였으나, 최근 송신기와 수신기가 이격된 구조를 가지기 때문에 다양한 장점이 있는 양상태 소나에 대한 연구가 활발히 진행되고 있다.[1,2] 그러나 양상태 소나는 송신기와 수신기의 플랫폼이 이격되어 있는 특성상 송신기의 정보를 공유하기 위한 통신이 필수적이다. 이러한 정보 공유의 유무에 따라 협동(cooperative) 운용과 비협동(non-cooperative) 운용으로 구분할 수 있으며, 이후의 신호처리 방식이 완전히 달라진다.[3]

비협동으로 운용되는 양상태 소나 시스템은 송신된 펄스의 정보를 획득하기 위한 능동펄스 식별 알고리즘이 필수적이며 전체 시스템의 성능을 좌우한다. 이는 일반적으로 능동 소나에서 탐지를 위해 백색잡음(Additive White Gaussian Noise, AWGN)환경에서 최적의 탐지기인 정합필터(matched filter)가 사용되는데, 이때 레플리카(replica) 생성을 위해 송신 펄스의 정보가 사용되기 때문이다.

송신 펄스를 식별하는 것은 송신기로부터 직접적으로 수신되는 송신 직접파(direct blast)를 탐지하고 분석하는 것으로 구현될 수 있다. 일반적으로 능동 펄스의 특성은 시간에 따른 주파수의 변화로 표현될 수 있으며, 이를 위해서 단시간 푸리에 변환(Short Time Fourier Transform, STFT)이나 AR(autoregressive) 모델링 등을 이용하여 시간 주파수 이미지로 변환시키는 것이 일반적이다. 비협동 양상태 소나를 운용하는 경우에는 송신 플랫폼의 사전 행동을 알기 어렵기 때문에 운용자가 전시화면을 보고 직접 식별하는 것은 어려움이 따른다. 최근 Kim et al.은 모폴로지, 미디안 필터 등의 후처리 과정을 이용하여 펄스식별 과정을 자동화하는 알고리즘을 제안하였다.[4] 그러나 Kim et al.이 제안한 알고리즘은 후처리 과정에서 사용되는 여러 가지 알고리즘의 파라미터에 대해 적절한 튜닝 과정이 필요하며, 복잡한 해상환경에서 최적의 성능을 가지는 파라미터를 장담하기 어려운 단점이 존재한다.

본 논문에서는 콘볼루션 신경회로망(Convolutional Neural Networks, CNN)를 이용한 능동펄스 식별 알고리즘을 제안한다. 콘볼루션 신경회로망은 최근 영상처리 분야에서 최고의 성능을 보여주고 있는 알고리즘으로 시간 주파수 이미지를 식별해야하는 펄스 식별의 목적과 부합하는 알고리즘이다.[5,6] 현재 능동 소나에서 주로 사용되는 CW(Continuous Wave) 펄스와 LFM(Linear Frequency Modulated) 펄스는 시간 주파수 이미지에서 한 개의 직선으로 나타난다. 따라서 본 논문에서는 깊고 복잡한 네트워크를 사용하지 않고 2개의 콘볼루션 계층과 2개의 풀링 계층을 이용한 단순한 구조를 사용하였다. 또한 출력층은 데이터베이스를 사용하는 경우와 펄스의 식별인자를 직접적으로 추정하는 두 가지의 경우를 고려하여 설계하였다. 신경회로망의 학습은 실제 해상에서 획득한 3110개의 CW 펄스, LFM 펄스의 핑(ping)을 이용하였으며 학습에 유리하도록 데이터를 가공하여 약 10만개의 학습데이터와 2만 4천개의 테스트 데이터를 생성하였다. 또한 탐지 알고리즘의 오차로 인해 시간 축으로 천이(shift)될 경우를 고려하여 콘볼루션 신경망을 학습하였다. 학습된 콘볼루션 신경망을 이용하여 테스트를 한 결과 두 가지 설계 방식 모두 우수한 성능을 보이는 것을 확인할 수 있었다.

II. 비협동 양상태 소나 시스템

비협동 양상태 소나 시스템의 신호처리 과정은 Fig. 1과 같이 나타낼 수 있다.[1,4] 먼저 음향센서로 수신된 신호는 빔형성 기법을 적용하여 방위별 빔신호로 변환된다. 그리고 각 방위의 빔신호마다 정합필터를 적용하여 수신된 에코의 시간지연을 추정한다. 이렇게 출력된 신호는 방위-거리-도플러의 정보를 가지고 있으며, 시스템의 목적과 사용자의 요구에 따라 적절한 규준화를 적용한 후 전시된다. 이때 정합필터를 수행하기 위한 레플리카가 필수적이며 이는 능동펄스 식별 알고리즘을 이용하여 획득한다. 능동펄스 식별 알고리즘을 수행하기 위해서는 먼저 송신 직접파를 탐지하는 탐지 알고리즘이 수행되어야한다.[4] 탐지 알고리즘은 송신 직접파의 수신시간을 대략적으로 추정하여 그 주위의 신호를 가져오는 역할을 수행하며, 이때 탐지된 신호를 펄스식별 알고리즘의 입력으로 사용한다. 따라서 탐지 알고리즘이 적절히 수행되었다면 송신 펄스의 정보를 충분히 포함하고 있다고 가정할 수 있으며, 높은 음압을 가지는 송신 직접파의 특성상 큰 문제없이 수행될 수 있다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F1.jpg
Fig. 1.

Non-cooperative bi-static sonar system.

III. 콘볼루션 신경회로망을 이용한 능동펄스 식별 알고리즘

콘볼루션 신경회로망은 생물의 뇌에 있는 시각 피질(visual cortex)의 동작과정을 모사한 신경회로망이다. 기존의 신경망은 2차원의 이미지를 단순히 벡터로 표현하여 입력층에 입력하였으나 콘볼루션 신경회로망은 특징 인자를 추출하는 특징 추출 신경망에 일반적인 구조를 가지는 분류 신경망이 연결된 구조를 가진다. 특징 추출 신경망에는 콘볼루션 필터를 이용하여 입력 이미지에서 고유한 특징을 부각시킨 이미지를 생성하는 콘볼루션 계층과 특정 영역의 픽셀을 묶어서 하나의 대표 값으로 축소하여 계산량을 줄이고 과적합을 방지하는 풀링(pooling) 계층이 있다. 이때 콘볼루션 필터의 계수는 학습을 통해 결정된다.[6]

Fig. 2에 제안하는 콘볼루션 신경회로망을 이용한 능동펄스 식별 알고리즘을 나타내었다. 먼저 탐지된 신호에 시간-주파수 분석을 적용하여 데이터를 시간-주파수 분석 이미지로 변환한다. 이때 콘볼루션 신경회로망의 입력층에 알맞게 이미지의 크기를 조절한다. 이렇게 만들어진 시간-주파수 분석 이미지는 X축이 시간, Y축이 주파수를 의미하게 되며 탐지 알고리즘이 적절히 수행되었다고 가정할 때 Fig. 2에서의 예시와 같이 펄스의 정보를 포함하고 있다. 제안하는 알고리즘은 콘볼루션 계층과 풀링 계층이 2개씩 포함되는 구조이다. 이때 풀링 계층은 최댓값을 선택하는 Max 풀링을 사용하였다. 특징 추출 신경망을 통과한 이미지는 분류 신경망에서 최종적으로 벡터로 만들어져 출력층의 노드와 전결합(fully-connected) 하는 구조를 가진다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F2.jpg
Fig. 2.

Proposed pulse classification algorithm using convolutional neural networks.

출력층의 구조는 두 가지로 설계하였다. 첫 번째는 송신 플랫폼에서 송신할 펄스의 데이터베이스를 수신 플랫폼에서 보유하고 있다고 가정하고 데이터베이스의 각 펄스를 출력층의 각 노드로 할당한 데이터베이스 기반의 구조이다. Fig. 3에 데이터베이스 기반 콘볼루션 신경회로망의 구조를 나타내었다. 콘볼루션 필터의 크기는 3×3이고, 계층을 통과하더라도 이미지의 크기는 유지된다. 또한 첫 번째 콘볼루션 계층을 통과하면 32개, 두 번째 콘볼루션 계층을 통과하면 64개의 채널이 생성된다. 풀링 필터는 2×2의 크기로 설정하였으며 풀링 계층을 통과하면 이미지의 크기가 2배씩 줄어든다. 최종적으로 출력층의 노드와 전결합하는 특징맵 벡터의 크기는 7×7×64이다. 이때 출력층은 N개의 노드로 구성되어 있으며 각 노드는 데이터베이스에 존재하는 N개의 능동펄스에 해당한다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F3.jpg
Fig. 3.

Database based output layer structure.

그러나 데이터베이스가 구축되어 있지 않거나 약속되지 않은 펄스가 송신된 경우, 심지어 적함에서 송신한 능동펄스를 식별해야하는 상황이 발생할 수 있다. 이 경우에는 펄스의 길이, 중심 주파수, 대역폭 등의 특징 인자를 직접 추정해야한다. 두 번째로 설계한 출력층의 구조는 이러한 상황을 가정하고 각 특징 인자의 범위를 이산화하여 각 노드에 할당한 특징인자 기반의 구조이다. Fig. 4에 특징인자 기반 콘볼루션 신경회로망의 구조를 나타내었다. Fig. 3의 데이터베이스 기반의 구조와 큰 차이가 없으나 입력 이미지의 픽셀 수가 많다, 이는 특징인자 기반의 구조의 경우 입력 이미지의 픽셀 해상도가 성능에 직접적인 영향을 주기 때문에 정밀도를 높이기 위한 것이다. 그러나 최종적인 특징맵 벡터의 크기는 동일하며, 이를 위해서 풀링 필터의 크기를 4×4로 설정하여 풀링 계층을 통과하면 이미지의 크기가 4배 줄어들도록 설계하였다. 이때 특징맵과 전결합되는 출력층은 입력 이미지의 픽셀을 고려하여 112개의 노드로 구성되어 있다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F4.jpg
Fig. 4.

Pulse feature based output layer structure.

Fig. 5에는 특징인자 기반 콘볼루션 신경회로망을 설계하기 위해 특징인자의 범위를 이산화하고 출력층에 할당하는 방법을 나타내었다. Fig. 5(a)는 CW 펄스에 대한 특징인자를 출력층에 학습시키는 구조를 나타내었으며, Fig. 5(b)는 LFM 펄스에 대한 특징인자에 대해서 나타내었다. CW 펄스의 경우 중심주파수와 시작 시간, 끝 시간을 출력층으로 설정하였으며, LFM 펄스의 경우에는 시작 시간, 끝 시간, 시작 주파수, 끝 주파수를 출력층으로 설정하였다. 이러한 특징인자를 추정하면 펄스를 식별할 수 있으며, 신경회로망에 적용하기 위해 펄스의 특징인자가 가질 수 있는 시간, 주파수 축을 이산화하여 출력층의 각 노드에 할당하였다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F5.jpg
Fig. 5.

Discretization of pulse features.

IV. 해상실험 데이터 결과

제안한 펄스식별 알고리즘의 성능을 분석하기 위해서 실제 해상실험을 통해 획득된 3110개의 CW 펄스, LFM 펄스의 데이터를 사용하였다. 펄스의 데이터는 펄스 길이, 중심주파수, 대역폭에 따라 다시 여러 개의 펄스로 분류할 수 있으나 데이터의 보안을 위해 자세한 값은 생략하였다. 그러나 시간 주파수 이미지 상으로 나타나는 펄스를 식별하는 본 논문의 알고리즘을 검증하는 것에 문제는 없을 것으로 판단한다. 다만 알고리즘의 분석을 위해 펄스 길이는 0.05 s, 0.3 s, 1.0 s인 것을 밝힌다. 해상 실험은 송신 플랫폼과 수신기가 5 km에서 10 km 사이의 거리를 두고 수신된 송신 직접파를 수집하였으며 사용된 수신기는 무지향성(omni-directional) 센서이다. 해역의 수심은 약 90 m의 천해환경이다. 본 시뮬레이션에서는 탐지 알고리즘으로 펄스의 에너지를 이용한 미디안 탐지기를 사용하였으며,[4] 시간-주파수 분석 알고리즘으로 단시간 퓨리에 변환을 사용하였다. Fig. 6에 탐지된 신호를 시간-주파수 분석 이미지의 예시를 나타내었다. 그림에서 저주파에 강한 잡음이 발생하고, 클리핑(clipping)으로 인한 하모닉 성분이 발생한 것을 확인할 수 있다. 그러나 이러한 잡음은 잡음 제거 필터 등을 이용하여 충분히 제거할 수 있기 때문에 능동펄스 식별 성능에 크게 영향을 주지 않는다. 그러나 그림에서 확인할 수 있듯이 다중경로로 인한 펄스의 잔향은 펄스의 길이를 길어 보이게 만들기 때문에 펄스식별을 어렵게 만드는 주요 요소이다. 본 논문에서는 저주파수의 잡음과 고주파에서 발생하는 클리핑 성분을 제거하기 위해 펄스 식별에 사용될 데이터의 주파수 대역을 제한하였다. 그림에서 네모 박스로 표현된 부분은 탐지된 전체 스펙트로그램에서 펄스 식별에 사용되는 데이터를 제한하는 예시를 나타낸 것으로 입력되는 데이터의 시간은 2 s이고 주파수는 샘플링 주파수 fs의 0.34배로 항상 동일한 크기를 가진다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F6.jpg
Fig. 6.

Example of sea experiments data.

먼저 데이터베이스 기반의 신경회로망을 학습시키고 테스트를 수행하였다. 이때 해상 실험을 통해 획득한 3110개의 데이터만으로 신경회로망을 학습하기에는 개수가 부족하다. 따라서 데이터를 가공하여 추가적인 데이터를 생성하였으며, 탐지 알고리즘의 오차를 고려한 시간 천이를 고려하였다. Fig. 7에 가공된 데이터의 예시를 몇 개 나타내었다. 그림에서 동일한 펄스이지만 시간축 상으로 천이되어 있는 여러 데이터를 확인할 수 있다. 학습에 사용된 데이터의 개수는 96,168개이고, 학습 방법으로는 크기 100의 미니배치를 사용하였다. 또한 에폭(epoch)은 15로 설정하였다. Fig. 8(a)에 데이터베이스 기반의 신경회로망을 학습하는 과정에서 에폭에 따른 비용함수의 값을 나타내었다. 매 에폭마다 비용함수의 값이 줄어드는 것을 확인할 수 있으며 따라서 신경회로망이 제대로 학습된 것을 알 수 있다. 학습된 신경회로망을 검증하기 위한 테스트 데이터의 개수는 24,357개이며, 그 결과를 Fig. 8 (b)의 오차행렬(confusion matrix)로 나타내었다. 그림에서 어떤 레이블에 편중됨 없이 모두 100 %에 근접하는 정확도를 가지는 것을 알 수 있다. 알고리즘의 정확도는 99.90 %이다. 따라서 데이터베이스 기반의 콘볼루션 신경회로망을 이용할 경우 큰 문제없이 능동펄스를 식별할 수 있는 것을 알 수 있다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F7.jpg
Fig. 7.

Examples of data argumentation.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F8.jpg
Fig. 8.

Training and test reysults of database based output layer structure.

두 번째로 특징인자 기반의 신경회로망을 학습시키고 테스트를 수행하였다. 본 시뮬레이션에서는 앞서 설명한 특징인자 중 시작 시간(strat time)과 끝 시간(end time)을 출력층으로 설계한 2가지 신경회로망에 대해서 검증을 수행하였다. 앞의 데이터베이스 기반의 신경회로망과 마찬가지로 학습 데이터를 생성하기 위해서 데이터를 가공하였다. 데이터를 가공할 때 앞의 경우와 마찬가지로 시간천이를 이용하여 데이터를 생성하였으며, 또한 동일한 레이블의 데이터에 대해서 다양한 길이의 펄스를 생성하기 위해 시간축으로 늘이거나 줄였다. Fig. 9(a), Fig. 10(a)에 각각 시작 시간과 끝 시간을 출력층으로 설정한 신경회로망을 학습할 때 에폭에 따른 비용함수의 값을 나타내었으며, 2 가지 구조 모두 학습이 제대로 수행되었음을 확인할 수 있다. Fig. 9(b)와 Fig. 10(b)에 각각 펄스의 시작시간과 끝시간을 학습한 구조를 이용하여 테스트를 수행한 결과를 오차 행렬로 나타내었다. 오차 행렬에서 대각선을 중심으로 99.9 %의 값이 모여 있는 데이터베이스 기반의 신경회로망에 대한 결과와 달리 특징인자 기반의 신경회로망을 테스트한 오차 행렬에서는 대각선을 중심으로 값이 다소 퍼져있는 것을 확인할 수 있다. 이는 학습 데이터를 생성할 때 데이터베이스에 정리되어 있는 펄스와 달리 시작 시간과 끝 시간에 대한 ground truth에는 모호한 점이 발생하기 때문으로 분석된다. 즉 해상환경과 다중경로에 따라 펄스의 시작과 끝 시간이 모호해져서 수작업으로 생성한 학습 데이터에 오차가 발생하기 때문이다. 따라서 픽셀의 오차를 허용하지 않고 각 레이블의 정확도를 계산하여 평균을 구해보면 각각 64.3 %와 49.4 %가 나온다. 그러나 ±1 픽셀의 오차를 허용할 경우 93.2 %와 88.7 %, ±2 픽셀의 오차를 허용할 경우 96.8 %와 95.4 %의 정확도를 보였다. 이때 1 픽셀의 오차는 0.05 s 펄스를 기준으로 펄스 길이의 33.4 %를 오차로 허용하는 것이기 때문에 식별 성능에 큰 영향을 줄 것으로 분석된다. 그러나 0.3 s와 1.0 s 펄스의 경우 5 % 정도의 오차를 허용하는 것이기 때문에 그 외의 펄스에는 큰 문제가 되지 않는다.

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F9.jpg
Fig. 9.

Training and test results of pulse feature based output layer structure (start time).

http://static.apub.kr/journalsite/sites/ask/2019-038-01/N0660380113/images/ASK_38_01_13_F10.jpg
Fig. 10.

Training and test results of pulse feature based output layer structure (end time).

이렇게 추정된 시작 시간과 끝 시간의 값을 차이가 펄스 길이가 되며 이를 이용해서 펄스 길이를 추정한 결과에 대한 오차율을 Table 1에 정리하였다. 예상과 같이 0.05 s 펄스의 경우 펄스 구분 없이 오차율이 50 %가 넘는 것을 확인할 수 있다. 그러나 그 외의 펄스의 경우 최대 8.3 % 이내의 오차로 추정이 가능한 것을 확인하며 최저 오차 1.6 %의 성능을 가지는 것을 알 수 있다.

Table 1. Error of pulse length estimation.

Active pulse Proposed Kim's
CW 1.0 s 1.6 % 8.2 %
CW 0.3 s 6.3 % 7.5 %
CW 0.05 s 60.0 % 50.0 %
LFM 1.0 s 2.5 % 11.0 %
LFM 0.3 s 8.3 % 7.9 %
LFM 0.05 s 58.0 % 78.4 %

기존의 알고리즘과 비교 분석하기 위해 서론에서 언급한 Kim et al.의 알고리즘[4]을 동일한 데이터에 적용하여 그 결과를 Table 1에 같이 나타내었다. 제안한 콘볼루션 신경회로망을 이용한 알고리즘의 경우 Kim et al.의 알고리즘과 비교할 때 0.05 s 펄스에 대한 성능은 비슷하지만 그 외의 펄스에서는 동등하거나 최대 8.5 %의 성능 개선이 있음을 확인할 수 있다. 또한 Kim et al.의 알고리즘은 후처리 과정에서 사용되는 알고리즘이 최적의 성능을 가지기 위해 미디안 필터나 모폴로지 기법 등에 대한 파라미터를 적절히 설정해야하는 문제가 있으나 제안하는 콘볼루션 신경회로망의 경우 학습이 되면 별도의 파라미터 설정 없이 견실한 성능을 가지는 장점이 있다. 그러나 현재 해상실험의 결과에서 0.05 s의 CW 펄스와 0.3 s의 LFM 펄스에 대한 식별 성능이 기존의 알고리즘과 비교해서 뚜렷한 개선이 없다. 이는 학습을 위해 생성한 ground truth가 오차를 가지기 때문으로 분석되며, 특히 짧은 펄스의 경우 현재 시간-주파수 분석 결과의 시간 해상도로는 정확한 시작 시간과 끝 시간을 확인하기 어려웠기 때문이다. 따라서 향후 시간-주파수 분석의 해상도를 향상시켜 ground truth의 오차를 줄일 수 있다면 짧은 길이의 펄스를 포함한 전반적인 식별 성능이 개선될 것으로 기대한다.

V. 결론 및 향후 연구

본 논문은 비협동 양상태 소나 시스템에서 송신된 능동펄스를 식별하기 위한 새로운 알고리즘을 제안하였다. 제안한 알고리즘은 최근 영상신호처리 분야에서 우수한 성능을 입증하고 있는 콘볼루션 신경회로망을 이용하였으며 컴퓨터 시뮬레이션을 통해 성능을 검증하였다. 향후에는 CW 펄스와 LFM 펄스와 같이 단순한 직선으로 나타나는 펄스 외에 능동 소나 시스템에서 사용되는 geometric comb 펄스, PTFM(Pulse Train Frequency Modulated) 펄스, SFM(Sinusoidal Frequency Modulated) 펄스, COSTAS 펄스 등의 다양한 펄스에 대한 식별을 시도할 예정이다. 또한 식별인자 기반 신경회로망의 성능을 개선하기 위해 시간-주파수 분석의 해상도를 높일 수 있는 개선방안과 정확한 ground truth를 확보할 수 있는 연구를 수행할 예정이다.

Acknowledgements

본 논문은 국방과학연구소의 지원으로 수행되었음(과제번호 : UD160004DD).

References

1
H. Cox, "Fundamentals of bistatic active sonar," in Handbook of Underwater acoustic data processing, edited by Chan Y. T. (Springer, Netherlands,1989).
2
D. H. Lee, T. J. Jung, K. K. Lee, and M. Hyun "Source information estimation using enemy's single-ping and geographic information in non-cooperative bistatic sonar," IEEE Sensor J. 12, 2784-2790 (2012).
10.1109/JSEN.2012.2203454
3
H. Schmidt-Schierhorn, A. Corsten, B. Strassner, S. Benen, and M. Meister, "The use of bistatic sonar functions on modern submarines," UDT EUROPE, 5-7 (2007).
4
G. H. Kim, K. S. Yoon, S. Kim, E. C. Jeong, and K. K. Lee. "A study on the automatic pulse classification method for non-cooperative Bi-static Sonar system" (in Korean), J. KIMST. 21, 158-165 (2018).
5
A. Krizhevsky, S. Ilya, and E. H. Geoffrey, "Imagenet classification with deep convolutional neural networks," Advances in neural information processing systems, 1097-1105 (2012).
6
J. Schmidhuber, "Deep learning in neural networks: An overview," Neural networks, 61, 85-117 (2015).
10.1016/j.neunet.2014.09.00325462637
페이지 상단으로 이동하기