이진 신호의 유형

마지막 업데이트: 2022년 1월 27일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
The Journal of the Acoustical Society of Korea. 31 March 2017. 136-143
https://doi.org/10.7776/ASK.2017.36.2.136

IMU 원신호 기반의 기계학습을 통한 충격전 낙상방향 분류


This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License(https://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract

As the elderly population gradually increases, the 이진 신호의 유형 risk of fatal fall accidents among the elderly is increasing. One way to cope with a fall accident is to determine the fall direction before impact using a wearable inertial measurement unit (IMU). In this context, a previous study proposed a method of classifying fall directions using a support vector machine with sensor velocity, acceleration, and tilt angle as input parameters. However, in this method, the IMU signals are processed through several processes, including a Kalman filter and the integration of acceleration, which involves a large amount of computation and error factors. Therefore, this paper proposes a machine learning-based method that classifies the fall direction before impact using IMU raw signals rather than processed data. In this study, we investigated the effects of the following two factors on the classification performance: (1) the usage of processed/raw signals and (2) the selection of machine learning techniques. First, as a result of comparing the processed/raw signals, the difference in sensitivities between the two methods was within 5%, indicating an equivalent level of classification performance. Second, as a result of comparing six machine learning techniques, K-nearest neighbor and naive Bayes exhibited excellent performance with a sensitivity of 86.0% and 84.1%, respectively.

Keywords:

Fall direction , Inertial measurement units , Raw signals , Machine learning , Fall detection before impact

1. 서 론

한국 사회는 2017년에 노인 인구가 14.2%를 차지하는 고령사회에 진입하였으며, 2021년 통계청에 따르면 2025년에 노인 인구가 20%인 초고령사회로 진입할 것으로 전망되고 있다. 이와 같이 노인인구가 증가함에 따라서 다양한 문제들이 발생하게 되는데, 그 중 하나로는 낙상 사고가 있다. 낙상은 신체 부위에 직접적인 충격을 가함으로써 골절과 같은 부상을 일으키며, 이에 따른 후유증 또한 유발하여 일상생활에 영향을 끼치기 때문에, 노인들에게 심각한 문제로 대두되고 있다 [1 - 3] .

이러한 낙상 사고의 피해를 최소화하기 위해 다양한 기술들이 개발되고 있으며, 가장 대표적인 방법은 신체에 착용된 관성 측정장치(inertial measurement units, 이하 IMU)를 통해 낙상을 감지하는 것이다 [4 - 7] . IMU는 원격 감지 가능한 소형 경량의 동작 센서로, 일상생활에서도 신체 활동을 실시간으로 모니터링할 수 있어, 낙상과 같은 상황을 감지하는 데에 유용하게 활용된다. 대표적인 예시로, IMU가 내장된 스마트 워치를 통해 낙상 사고를 감지하고 대처한 사례를 쉽게 볼 수 있다 [8 , 9] .

현재 활용되는 많은 낙상감지 기술은 착용자가 이미 쓰러지고 난 후에 수행되는 방식으로, 이후에 움직임이 감지되지 않으면 응급 서비스에 착용자의 위치와 상태를 알리는 등의 대응이 이뤄진다. 다만, 이는 충격 후 낙상을 감지하는 방식이기 때문에, 충격에 의한 신체적 손상 및 정신적 피해의 유발은 불가피하다. 이에 따라서 낙상의 충격 피해를 최소화하기 위해 인플레이터블 에어백(inflatable airbag)과 같은 충격완화 시스템이 개발되고 있으며 [10 - 12] , 이를 구현하기 위해서는 충격 전에 미리 낙상을 감지하고 어느 방향으로 넘어지는 지를 판별하는 기술이 요구된다 [13 - 15] . 이는 넘어지는 방향에 따라서 충격을 받고 손상될 수 있는 신체 부위를 파악하고, 충격완화 시스템이 해당 부위를 보호할 수 있도록 작동되어야 하기 때문이다.

Lee [16] 는 기계학습(machine learning) 기법 중 하나인 서포트 벡터 머신(support vector machine, 이하 SVM)을 통해 충격 전 낙상방향을 분류하는 방법을 제안한 바 있다. 여기서 낙상방향의 분류를 위한 입력 파라미터로는 센서의 기울기 각도(tilt)와 속도 및 가속도가 적용되었으며, 이 중 속도를 사용한 경우가 가장 우수한 분류 성능을 나타냈다. 다만 IMU는 이러한 물리량들을 직접적으로 제공하지 않기 때문에, 이를 추정하기 위한 신호처리 과정이 요구된다. 기울기 각도의 경우, 칼만필터(Kalman filter) 내에서 IMU 신호를 결합함으로써 추정된 기울기 자세로부터 추출되며 [17] , 센서 가속도는 기울기 자세를 사용하여 가속도계 신호에 중력 가속도 성분을 제거함으로써 얻어진다. 또한 센서의 속도는 위의 과정을 통해 얻어진 센서 가속도를 시간에 대해 적분함으로써 추정 가능하다. 이러한 과정은 복잡하고 많은 양의 계산을 필요로 한다.

본 논문은 충격전 낙상방향 감지를 대상으로 하므로 낙상에 대한 대응이 짧은 시간 내에 신속하게 이루어져야 한다는 제약과, 실운용시에는 일반적으로 소형 저가의 내장 프로세서가 IMU 신호 처리를 위해 이용된다는 점을 고려한다면, 낙상방향 감지를 위해 단순한 신호처리가 요구된다. 무엇보다 Lee [16] 의 방법은 속도계산을 위한 적분과정에서의 오차 누적이 발생할 수 있으며, 이 경우 낙상방향 감지의 성능에도 영향을 미칠 수 있다는 문제점을 지닌다.

이에 본 논문에서는 기존의 복잡한 가공 과정을 거치기보다, IMU의 원신호(raw signal)를 그대로 사용하여 충격 전 낙상방향을 분류하는 방법을 시도한다. 우선, 가공 과정의 유무에 따른 분류 성능의 변화를 확인하기 위하여, 제안방법을 가공된 데이터를 사용하는 기존 연구의 방법과 함께 비교하였다. 또한 제안방법에서 여러 기계학습 기법(SVM 외 5가지)을 적용하여, 그에 따른 분류 성능을 비교하였다.

2. 방법 및 시험 데이터

2.1 낙상방향 분류 방법

본 연구에서는 낙상방향을 분류하기 위해 3축 가속도계와 3축 자이로스코프로 구성된 6축 IMU를 활용한다. 이 중, 가속도계는 중력가속도를 포함한 선형 가속도를, 그리고 자이로스코프는 회전 각속도를 측정하며, 두 센서의 3축 신호는 각각 yA=[yA,x yA,y yA,z]와 yG=[yG,x yG,y yG,z]로 표현된다. 여기서 X축은 전진 방향을, Y축은 좌측 방향을, 그리고 Z축은 윗방향을 나타낸다( Fig. 1 참조). 이때, 이전연구 [16] 에서 높은 성능을 보인 센서의 부착 위치는 허리이므로, 본 연구에서는 허리에 부착한 센서를 사용한다.

Fig. 1.

Fall directions and a waist-attached IMU

낙상방향 분류 문제는 크게 전/후 또는 좌/우를 분류하는 이진 분류와 전/후/좌/우, 이 4가지 방향을 분류하는 다중 분류로 나누어 접근 가능하다. 이러한 낙상방향의 분류에 있어서 적절한 축 방향의 파라미터를 사용하는 것이 중요하다. 예로, 이전 연구에서는 전후방 분류를 위해 X축의 속도(또는 가속도)와 Y축의 각도(피치)를 사용하였으며, 좌우측 분류를 하는 데에 Y축의 속도와 X축의 각도(롤)를 사용하였다. 이때, 속도와 기울기 각도는 각각 가속도계 및 자이로스코프의 신호와 연관된다. 예로, X와 Y 축의 속도는 가속도계의 각 축 신호 (yA,x , yA,y)와 연관되고, X와 Y축의 회전 각도(롤, 피치)는 자이로스코프의 각 축 신호(yG,x , yG,y)와 연관된다. 이에 이진 분류에서는 분류하고자 하는 낙상방향과 연관된 축 방향의 신호를, 다중분류에서는 두 가지의 축 방향 신호를 모두 사용한다. Fig. 2 와 3 은 각각 네 가지 방향의 낙상에서 나타나는 가속도계와 자이로스코프 신호를 보여준다. 예로 전/후 방향의 경우, 가속도계 신호는 X축(파랑) 성분, 자이로스코프 신호는 Y축(주황) 성분과 연관되어 있음을 알 수 있다.

Fig. 2.

Accelerometer signals for each fall direction.

Fig. 3.

Gyroscope signals for each fall direction.

본 방법에서는 낙상방향을 분류하기 위하여, 센서의 원신호를 바탕으로 간단한 특징 파라미터를 추출하여, 기계학습의 입력 파라미터로 사용한다. 특징 파라미터로는 낙상으로 감지된 시점을 기준으로 그 이전의 특정시간 동안 측정된 센서 신호의 최대값(max), 총합(sum), 그리고 평균값(mean)이 적용되었다. 본 논문에서 특정시간은 0.3초로 설정하였다.

낙상방향을 분류하기 위한 기계학습 기법으로, 기존 연구에서 사용된 SVM과 함께 다음의 이진 신호의 유형 다섯가지 기법이 적용되었다: K-최근접 이웃(K-nearest neighbor, 이하 KNN), 의사결정 나무(decision tree, 이하 DT), 선형 판별 분석(linear discriminant analysis, 이하 LDA), 나이브 베이즈(naive bayes, 이하 NB), 신경망(neural networks, 이하 NN). 상기 기법들은 주로 분류 문제에 활용되는 지도학습 형식의 기계학습 기법에 해당하며, 모두 MATLAB에서 제공하는 함수들을 통해 학습 및 분류가 이뤄졌다.

2.2 시험 데이터 및 분석

본 연구에서 낙상방향의 분류 및 성능 평가를 위하여, 이전 연구 [16] 의 낙상 시험 데이터를 활용하였다. 시험은 건장한 성인 남성 11명을 대상으로 시행되었으며, 피험자마다 4가지 방향(전방, 후방, 좌측면, 우측면)의 낙상을 3가지 유형으로 2번씩 반복하여 수행되었다. 각 낙상 시험의 유형에 관한 설명은 참고문헌 [16] 에 자세히 명시되어 있다.

해당 시험에서는 가속도계와 자이로스코프가 내장된 MTw IMU(Xsens Technologies B. V., Netherlands)가 사용되었으며, 센서는 벨크로 밴드를 이용하여 배꼽아래 부근 허리에 부착되었다. 센서 신호는 100 Hz의 샘플링률로 측정되었다. 시험 데이터는 각 피험자에 대해 총 24개(4가지 방향 × 3가지 시험유형 × 2번의 시행)로 구성되며, 총 264개의 데이터가 활용되었다. 또한 제안방법에서 특징 파라미터를 추출하는 데에 필요한 낙상 감지 시점으로는, [16] 에서 수직속도 기반의 감지 기법 [7] 을 통하여 낙상으로 판별한 시점의 시간을 사용하였다.

기계학습의 분류 성능은 학습 및 검증 데이터의 선정에 따라 달라지므로, 데이터 선정에 따른 판별결과의 영향성을 최소화하기 위해 이분할 교차검증(two-fold cross validation)이 적용되었다. 피험자 11명의 데이터를 5명과 6명으로 나누어서 첫번째는 전자와 후자를 학습 및 검증 데이터로, 그 다음에는 후자와 전자를 바꾸어 적용하였다. 분류 성능은 이전 연구의 성능 지표와 동일하게 민감도(sensitivity)를 통해 검증되었다.

본 연구에서는 다음의 두 가지에 대하여 비교 분석하고자 한다: 첫째는 가공과정을 포함하는 이전 연구 [16] 의 방법과 IMU 원신호를 사용하는 제안방법 간의 분류 성능 비교, 그리고 두번째는 제안방법에서 기계학습 기법에 따른 분류성능 비교.

첫번째로 비교되는 대상인 이전 연구의 방법에서는 센서의 속도, 가속도, 그리고 틸트각을 입력 파라미터로 사용하여, SVM을 통해 낙상방향을 분류한다. 위의 세 가지 파라미터들 중, 속도와 틸트각을 사용한 경우가 성능이 우수하였기 때문에, 이 두 가지를 입력 파라미터로 사용한다. 두번째로 기계학습 기법 별 성능 비교에서는 2.1절에서 설명된 여섯 가지의 기계학습 기법을 사용하고 이에 따른 분류 성능을 비교 분석한다.

3. 낙상 방향 분류 결과

3.1 가공과정 유무에 따른 분류성능 비교

이번 절에서는 가공된 데이터를 사용하는 기존 연구의 방법(Conv.)과 IMU의 원신호를 사용하는 제안방법의 분류 성능을 비교 분석한다. 이때, 제안방법에서는 3가지 특징 파라미터(max, sum, mean)를 적용하였으며, 기계학습 기법으로는 [16] 의 방법과 동일하게 SVM을 적용하였다.

Table 1 은 전후방 및 좌우측에 대한 이진 분류의 성능 결과를 보여준다. 우선, 모든 파라미터에 대하여 비교하였을 때, 가공 데이터 중 하나인 속도를 사용한 경우의 민감도가 모든 방향에 대해서 100%로, 가장 우수한 분류 성능을 보여주었다. 또한 기울기 각도를 사용한 경우에는 전/후에 대해 80% 이상, 좌/우에 대해 90% 이상의 민감도를 나타냈다. IMU의 원신호를 사용하는 제안방법에서는 대체로 자이로스코프 신호를 사용한 경우가 가속도계에 비해 우수한 분류 성능을 보였다. 또한 특징별로 비교하였을 때, sum과 mean을 사용한 경우의 성능이 우수하였다. 이 두 가지의 특징 파라미터는 대부분의 결과에서 동등한 성능을 보였지만, yG,y를 사용하여 전후방을 분류하였을 때에는, mean의 성능이 더 우세한 것을 확인하였다. 자이로스코프 신호의 mean을 사용하는 제안방법과 속도를 사용하는 기존방법의 성능을 비교하였을 때, 좌/우에 대해서는 모두 동일하게 100%, 전/후에 대해서는 제안방법이 비교적 낮은 민감도를 보였지만, 그 차이는 5% 이내로 동등한 수준의 성능이 확인되었다.

Sensitivities (%) of binary classification: comparison of results from processed/raw signals.

Table 2 는 전/후/좌/우, 4가지 방향을 분류하는 다중 분류의 성능 결과를 보여준다. 파라미터 별로 분류 성능을 비교하였을 때, 이진분류의 경우와 마찬가지로 속도가 가장 우수한 분류 성능을 보였다(평균 77.8%). 제안방법에서는 특징 또는 센서 신호에 따라서 분류 성능이 매우 상이하게 나타나는 모습이 확인되었는데, 그 중 자이로스코프 신호에 mean과 max을 적용하였을 때의 민감도가 각각 76.5와 73.9%로, 속도를 사용한 경우에 비해서 약간은 낮지만 거의 동등한 수준의 성능을 나타냈다. 이를 통해 IMU의 원신호를 사용하여 낙상방향을 분류하였을 때, 동등한 수준으로 분류할 수 있음을 확인하였다.

Sensitivities (%) of multi-classification: comparison of results from processed/raw signals.

3.2 기계학습 기법별 분류성능 비교

3.1절에서는 가공된 데이터(속도 및 기울기 각도)를 사용하는 경우와 IMU의 원신호를 사용하는 경우의 분류 성능을 비교하고 있다. 3.1절의 결과는 모두 SVM을 적용한 결과이나, 기계학습 기법도 분류 성능에 영향을 미치는 요인 중 하나이기 때문에, 이에 따른 영향 또한 확인될 필요가 있다. 따라서 이번 절에서는 기계학습 기법에 따른 분류 성능을 비교한다. 이때 특징으로는 3.1절에서 가장 높은 성능을 보인 mean을 적용하였으며, IMU의 두 센서 신호를 조합하여 사용한 경우를 추가적으로 확인하였다.

Table 3 은 제안방법의 기계학습 기법별 이진 분류의 성능 결과를 보여준다. 우선, 모든 기법에 대하여 입력 파라미터 별로 분류 성능을 비교하였을 때, 3.1절의 결과와 마찬가지로, IMU의 두 센서 중 자이로스코프 신호를 사용한 경우의 성능이 더 우수하였으며, 특히 좌/우에 대해서는 모두 100%의 민감도를 나타냈다. 또한, 두 센서 신호를 조합한 경우에는 자이로스코프 신호를 사용한 경우와 거의 동등한 수준의 분류 성능을 나타냈다. 기계학습 기법별로 비교하였을 때, 기법에 따라서 민감도가상이하게 나타났지만, 그 차이는 매우 크지 않은 것으로 확인되었다. 예로, 전/후 분류를 위해 가속도계 신호를 사용한 경우에서 기법별 민감도의 편차가 가장 큰 수준으로 나타났지만, 최대 편차는 5.45%에 불과하였다. 또한, 좌/우 분류를 위해 자이로스코프 신호를 사용하는 경우에는 모든 기법이 동일하게 100%의 민감도를 보였다. 즉, 이진 분류에서는 기계학습 기법보다 입력 파라미터의 선정이 분류 성능에 더 큰 영향을 끼치는 것을 알 수 있다.

Sensitivities (%) of binary classification: comparison according to the selection of machine learning techniques.

Table 4 는 기계학습 기법별 다중 분류의 성능 결과를 보여준다. 우선 입력 파라미터로는, 가속도계(acc)보다 자이로스코프(gyro) 신호를 사용한 경우의 성능이 더 우세하였다. 또한, 두 센서 신호를 조합한 경우(gyro & acc)는 대부분의 모델에서 자이로스코프 신호만을 사용한 경우와 동등한 성능을 보였지만, DT와 NN에서는 오히려 민감도가 크게 저하되는 모습을 보였다. 즉, IMU의 두 센서 신호를 사용하기보다 자이로스코프 신호만을 사용하였을 때, 더 높은 분류 성능을 얻을 수 있음을 확인하였다. 또한 기계학습 기법별 성능을 비교하였을 때, 이진 분류에 비해서 기법 간의 성능 차이가 두드러졌으며, 자이로스코프 신호를 사용한 경우, KNN, NB, DT, NN, SVM, LDA 순으로 민감도가 높았다. 두 센서를 조합한 경우에도 여섯 가지의 기법 중에서 KNN과 NB, 이 두 가지 기법이 높은 수준의 민감도를 나타냈다(KNN: 86.0%, NB: 84.1%). 이를 통해 이진 분류보다 다중 분류에서 기계학습 기법의 선정이 분류 성능에 큰 영향을 끼친다는 것을 알 수 있으며, KNN과 NB를 적용하였을 때, 비교적 높은 성능으로 낙상방향을 분류할 수 있음을 확인하였다.

Sensitivities (%) of multi-classification: comparison according to the selection of machine learning techniques.

4. 고찰 및 결론

본 논문에서는 IMU의 원신호를 사용하여 충격전 낙상방향을 분류하는 기계학습 기반의 방법을 제안하였으며, 크게 두 가지 측면에 대한 결과를 확인하였다: (1) 낙상방향 분류를 위한 입력 파라미터로 IMU 신호로부터 가공 과정을 거친 데이터를 사용하는 경우와 센서의 원신호를 사용하는 경우의 분류 성능 비교, (2) 기계학습 기법의 선정에 따른 분류 성능 비교. 두 가지 모두 이진분류와 다중분류로 나누어 결과를 확인하였다.

1. 가공된 데이터로는 속도를, 그리고 센서의 원신호로는 자이로스코프 신호에 mean을 적용한 경우가 이진/다중분류에서 모두 우수한 성능을 보였다. 또한 이 두 가지 경우를 비교하였을 때, 속도를 사용하는 기존 방법의 민감도가 좀 더 높았지만, 그 차이는 매우 크지 않았다.

2. 이진 분류에서는, 기계학습 기법의 선정에 따른 영향이 입력 파라미터의 영향에 비해서 크지 않았던 반면에, 다중 분류에서는 기계학습 기법의 영향이 비교적 큰 것으로 확인되었다. 또한 여섯 가지 기계학습 기법의 성능을 비교한 결과, KNN과 그 다음으로는 NB를 사용하였을 때의 분류 성능이 우수하였음을 확인하였다.

첫번째의 결과에서는 제안방법의 분류 성능이 기존 방법에 비해 약간 떨어진다는 것이 확인되었으나, 제안방법은 가공된 데이터를 사용하는 기존 방법과 다르게, 가공과정을 거치지 않는 IMU의 원신호를 사용하였다는 점에서 그 의미가 크다. 기존 논문 [16] 의 방법에서는 기울기 자세 정보를 추정하기 위한 칼만필터와, 속도를 추정하기 위한 가속도의 적분 등 많은 양의 계산을 수반하는 신호처리 과정을 거치게 된다. 서론에서 언급되었듯이, 낙상에 대한 대응은 신속하게 이뤄져야 하지만, 이러한 가공 과정들은 시간의 지연을 유발하는, 즉, 낙상의 대응에 있어서 바람직하지 않은 요인에 해당한다. 또한 실운용시 장시간동안 신호처리가 이뤄져야 하지만, 가속도의 적분 과정은 시간에 따른 오차 누적에 취약하며, 이는 결과적으로 분류 성능에 악영향을 끼친다. 반면에 제안방법은 센서의 원신호를 사용하기 때문에, 계산량 문제나 시간의 영향과는 무관하다는 이점을 지닌다. 이에 따라서 제안방법이 보다 효용성이 높을 것으로 판단된다.

추가적으로, SVM 외의 다양한 기계학습 기법을 적용함으로써 보다 더 높은 분류 성능을 얻을 수 있음을 확인하였다. 다만, 본 논문에서는 센서 신호나 특징 파라미터를 다양한 방식으로 조합하기보다, 각각의 센서 신호에(또는 두 가지 센서 신호에) 한가지의 특징만을 적용하였다. 이에 따라서 본 논문에서 적용되지 않은 또다른 방식의 입력 파라미터를 적용함으로써, 분류 성능을 보다 향상시킬 수 있을 것으로 예상된다.

단, 본 연구에서는 충격전 낙상을 감지하는 데에 IMU 신호로부터 추정된 수직속도가 이용되었다는 점에서, 센서 신호의 가공과정이 완전히 배제되었다고 보기는 어렵다. 그럼에도, 본 연구의 핵심은 낙상방향을 분류함에 있어 IMU의 원신호를 사용하였다는 점에 있으며, 추후에는 충격전 낙상 감지 또한 센서의 원신호에 기반한 기법으로 충분히 대체 가능할 것으로 기대된다.

Acknowledgments

본 연구는 2018년도 정부(교육부)의 재원으로 한국연구재단 기초연구사업(No. 2018R1D1A1B07042791)의 지원을 받아 수행됨.

이진 트리 이해하기 1부

선형 데이터 구조인 배열, 연결 목록, 스택 및 큐와 달리 트리는 계층적 데이터 구조입니다. 트리는 비선형 데이터 구조를 나타내며 Nodes계층 구조를 시뮬레이션하기 위해 함께 ed. 즉, 트리는 계층적 트리 구조를 시뮬레이션하는 널리 사용되는 ADT(추상 데이터 유형)입니다.

중요 트리 용어집:

  • Root: 부모가 없는 노드. 트리의 최상위 노드
  • Children: 직계 계승 노드
  • Siblings: 같은 부모의 자녀
  • Leaf node: 자식이 없는 모든 노드
  • Internal Nodes: 하나 이상의 자식이 있는 모든 노드
  • Depth of Node x: 루트에서 노드 x까지의 경로 길이
  • Height of Node x: 노드 x에서 리프 노드까지의 가장 긴 경로의 가장자리 수
  • Height of tree: 트리의 높이는 루트의 높이입니다.
  • Level of node: 주어진 깊이에 있는 모든 노드의 집합을 트리의 수준이라고 합니다.

주요 속성:

  • 나무 N 노드는 N-1 가장자리
  • 루트 노드의 깊이는 0입니다.
  • 루트 노드는 레벨 0입니다.
  • 리프 노드의 높이는 0입니다.
  • 노드가 하나인 트리의 높이는 0입니다.
  • 루트를 제외한 모든 노드는 정확히 한 노드에서 다른 노드로 향하는 에지로 연결되며 방향은 부모 -> 자식입니다.

이제 트리의 기본 사항을 이해했으므로 이 일련의 이진 트리에 대해 알아보겠습니다.

요약hat Is a Binary Tree?

각 노드에 다음 중 하나가 있는 경우 트리를 이진 트리라고 합니다.

빈 트리도 유효한 이진 트리입니다.

루트와 루트의 왼쪽 및 오른쪽 하위 트리라고 하는 두 개의 분리된 이진 트리로 구성된 이진 트리를 시각화할 수 있습니다.

이진 트리 예제

이진 트리와 일반 트리의 차이점

Properties of Binary Tree

이진 트리의 최대 노드 수

이진 트리의 최소 노드 수

높이의 모든 이진 트리에 대해 h최대 노드 수 = 2 h+1 – 1
여기서 최대 노드 = n
따라서 n = 2 h+1 – 1

=>최대 바이너리의 높이 n 노드 => h = log(n+1) – 1

높이의 모든 이진 트리에 대해 h최소 노드 수 = h + 1

=>최소값을 갖는 바이너리의 높이 n 노드 => h = n-1

이진 트리의 유형

다음은 이진 트리의 일반적인 유형입니다.

전체/엄격한 이진 트리:

전체 이진 트리는 각 노드가 정확히 가지고 있는 이진 트리라고 합니다.

전체 이진 트리

Properties of full binary tree:

전체 이진 트리의 속성

높이의 모든 이진 트리에 대해 h최소 노드 수 = 2h + 1

=>최소값을 갖는 바이너리의 높이 n 노드 => h = (n-1)/2

완전한 이진 트리

마지막을 제외한 모든 레벨이 완전히 채워지고 마지막 레벨의 모든 노드가 가능한 한 남아 있으면 이진 트리를 완전한 이진 트리라고 합니다.

The Journal of the Acoustical Society of KoreaISSN:1225-4428(Print) 2287-3775(Online)한국음향학회

The Journal of the Acoustical Society of Korea. 31 March 2017. 136-143
https://doi.org/10.7776/ASK.2017.36.2.136

Restoration of damaged speech files using deep neural networks

ABSTRACT

본 논문에서는 심층 신경망을 이용하여 손상된 음성파일을 이진 신호의 유형 복원하는 방법을 제안한다. 본 논문에서 다루는 음성파일 복원은 기존의 파일 카빙(file carving) 기반의 복원과는 다른 개념으로, 기존 기법으로는 복원할 수 없었던 손실된 정보를 복원하는 것이 목적이다. 새로운 복원 기법을 수행하는 과정에서 필요한 작업이지만 사람이 직접 수행할 수 없거나 너무 많은 시간이 소요되는 작업을 심층 신경망을 활용해 자동화할 수 있는 방안을 제안하였으며 관련한 실험을 진행하였다. 실험 결과, 심층 신경망을 활용해 음성, 비음성 분류나 음성파일 부호화 방식의 식별이 가능해 기존 파일 카빙 기반 방법이 복원하지 못하는 파일을 복원할 수 있었다.

In this paper, we propose a method for restoring damaged audio files using deep neural network. It is different from the conventional file carving based restoration. The purpose of our method is to infer lost information which can not be restored by existing techniques such as the file carving. We have devised methods that can automate the tasks which are essential for the restoring but are inappropriate for humans. As a result of this study it has been shown that it is possible to restore the damaged files, which the conventional file carving method could not, by using tasks such as speech or nonspeech decision and speech encoder recognizer using a deep neural network.

3.1 음성, 비음성 분류를 통한 헤더 정보 유추

3.2 Long short term memory 기반음성파일 식별

3.3 제안한 인터페이스의 구현 결과

4.2 음성, 비음성 분류 실험 설계

4.3 음성파일 부호화 방식 식별 실험 설계

5.1 음성, 비음성 분류 실험 결과

5.2 음성파일 부호화 방식 식별 실험 결과

최근 스마트폰 등의 음성 녹음기기가 널리 보급 되면서 음성파일을 법정 증거물로 제출하는 사례 또한 증가하고 있다. 법정 증거물로 제출된 음성파일은 조사관의 청취에 의해 그 내용이 확인되고 위변조 여부 검사 등을 통해 법정 증거물로서의 효력을 인정받게 된다. 하지만 스마트폰 등의 디지털 매체를 통해 수집된 음성파일은 악의적인 목적이나 메모리 부족 등의 이유로 삭제될 수 있다. 증거물로서 유효한 내용을 담고 있는 음성파일이라고 하더라도 파일이 삭제된 경우에는 그 내용을 확인할 수 없기 때문에 삭제된 파일을 복원하는 과정이 필요하다. 삭제된 음성파일이 증거로서 인정받기 위해서는 음성파일이 삭제된 매체에서 음성파일을 복원하여 그 내용을 확인할 수 있도록 하는 과정이 필요하다.

일반적인 파일 복원은 파일 카빙(file carving) [1] 이라는 기법이 적용돼 수행되어 왔다. 파일 카빙은 파일 시스템 상에서 삭제된 파일을 복원하는 기법이다. 하지만 파일 카빙 기법을 적용하더라도 음성파일을 온전히 복원하지 못해 재생이 어려운 경우가 발생할 수 있다. 예를 들어, 파일 시스템에서 음성파일이 삭제된 뒤, 덮어쓰기가 발생하면 해당 구간의 정보가 손실돼 온전한 음성파일이 복원되지 않을 수 있다. 또한, 복원되지 못한 구간이 음성파일 재생에 필수적인 부분(웨이브 파일의 헤더 등)이라면 손상된 부분에 의해 음성파일이 재생되지 않을 수 있다. 이와 같이 손상된 음성파일을 복원하기 위해서는 기존의 파일 복원과 다른 개념의 새로운 복원 기법이 도입되어야 한다. 새로운 복원 기법은 파일의 손상되지 않은 부분을 토대로 손상된 부분의 정보를 유추하는 것이다. 이와 같은 복원 과정을 거치게 되면 기존의 복원 기법(파일 카빙)으로는 복원하지 못했었던 손실된 정보까지도 복원이 가능할 것이다. 본 논문에서는 새로운 복원 기법을 수행하는 과정에서 필요한 작업이지만 사람이 직접 수행하기에는 무리가 있는 작업을 심층 신경망(deep neural network)을 적용해 자동화시키는 연구를 진행하였다.

본 논문의 다음 장에서는 기존의 복원 기법인 파일 카빙에 대해서 설명하고 3장에서 심층 신경망의 활용 방안을 제안한다. 제안한 심층 신경망 기반의 활용 방안의 성능을 확인하는 실험을 4장과 5장에서 보이고 6장에서 결론을 맺는다.

기존의 파일 복원 기술들은 대부분 파일 카빙 기반의 기술들을 의미한다. 파일 카빙은 파일 시스템에서 삭제된 파일을 구조와 내용물을 기반으로 복원시키는 기술이다. [1] 파일 시스템은 사용자가 사용하는 모든 파일들을 관리하는 시스템이다. 사용자가 특정 파일을 저장하면, 파일 시스템은 파일이 물리적으로 저장된 위치, 생성한 시각 등의 정보가 담긴 메타데이터를 생성해 저장하고 파일이 저장된 위치에 다른 파일을 덮어씌울 수 없도록 한다[Fig. 1(a)]. 그 뒤, 사용자가 파일을 삭제하면, 파일 시스템은 앞서 생성한 메타데이터를 삭제하고 해당 파일이 저장된 위치에 다른 파일을 덮어씌울 수 있도록 설정을 변경한다[Fig. 1(b)]. 여기서 파일 카빙은 사용자가 파일을 삭제해 메타데이터가 삭제되었더라도, 메타데이터 없이 실제 파일이 저장된 위치를 탐색해 삭제된 파일을 읽어 들이는 것을 의미한다[Fig. 1(c)]. 따라서 파일 카빙은 손실된 정보를 복원하지 않고 파일 시스템 상에서 삭제돼 접근이 어렵던 파일을 다시 접근 가능하도록 복원하는 기술이라고 해석할 수 있다. Fig. 1은 앞서 설명한 파일 카빙 기반의 파일 복원 과정 보여준다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F1.jpg

Fig.1. The flow of file restoration based on file carving.

하지만 이와 같은 복원 방식으로는 파일이 삭제된 뒤에 덮어쓰기가 발생하지 않은 경우에만 온전하게 파일을 복원할 수 있다. 예를 들어 음성파일의 한 종류인 웨이브 파일이 삭제된 뒤 덮어쓰기가 발생해 음성 재생에 꼭 필요한 헤더 정보가 손실된 경우 파일 카빙 기법으로 웨이브 파일을 복원하더라도 정상적으로 음성을 재생하기 어렵다.

헤더가 손상돼 재생이 어려운 웨이브 파일은 헤더 이외의 부분(부호화된 신호)을 활용해 손상된 정보를 유추하는 새로운 개념의 복원 기법이 적용되어야 한다. 새로운 복원 과정은 기존의 파일 카빙을 통해 수행되었던 복원 과정과는 다르며, 파일 카빙을 통해서 복원하지 못했던 부분까지 복원할 수 있는 방법이다. 새로운 복원 과정에 필요한 작업들은 사람이 직접 수행하기에는 너무 많은 시간과 비용이 소요된다. 본 논문에서는 심층 신경망을 활용하여 이러한 작업들을 자동화하고, 새로운 복원 기법을 개발하는 두 가지 방안을 제안하였다.

3.1 음성, 비음성 분류를 통한 헤더 정보 유추

헤더가 손상된 음성파일은 다음과 같은 과정을 통해 복원될 수 있다. 먼저 손상된 음성파일에서 기존에 존재할 수 있는 헤더 정보를 생성한다. 예를 들어, 음성파일의 헤더에 양자화 지수 정보만이 저장된다고 하면, 음성파일에 사용될 수 있는 모든 양자화 지수에 해당하는 헤더 정보를 생성해야 한다. 그 뒤, 생성한 이진 신호의 유형 헤더 정보를 기반으로 음성파일을 복호화하고 복호화된 신호의 음성, 비음성 여부를 판별한다. 여기서의 음성 신호는 손상되기 이전의 헤더 정보가 제대로 복원돼 정상적인 음성을 확인할 수 있는 신호를 의미하며 비음성 신호는 임의로 생성한 헤더 정보가 손상되기 이전의 헤더 정보와 차이가 있어 잘못 복호화된 신호를 의미한다. 음성 신호를 부호화할 때 사용했던 헤더 정보가 아니면 정상적인 음성 신호가 복호화될 수 없기 때문에, 정상적인 음성 신호가 복호화될 때까지 헤더 정보를 임의로 생성하고 이를 사용해 음성 신호를 복호화하는 과정을 반복한다.

위의 과정을 통해 정상적인 음성 신호인 것으로 확인할 수 있는 경우, 실제 손실된 헤더 정보를 유추하였다고 할 수 있지만 이를 사람이 직접 수행하게 되면 손상된 음성파일에서 발생할 수 있는 다양한 경우의 수를 고려하여 모든 경우의 수를 대상으로 신호를 복호화하고 청취하여 음성, 비음성 여부를 확인하는 작업을 반복해 수행하여야 한다. 하지만 실제 음성파일의 부호화 방식을 고려하면 발생할 수 있는 경우의 수가 너무 많기 때문에 현실적인 시간 안에 음성파일을 복원하는 것이 불가능할 수 있다. 따라서 본 연구에서는 위의 과정에 심층 신경망을 적용해 음성, 비음성 여부를 자동으로 판별할 수 있도록 시스템을 구성하였다.

실제 사람의 음성이 포함된 음성 신호의 경우에는 주파수 대역에서 포만트와 같은 특성이 나타나고 비음성의 경우, 백색 잡음과 유사한 특성이 나타날 것이라고 가정하고 심층 신경망을 통한 음성, 비음성 분류가 가능할 것이라고 기대하였다. 심층 신경망은 가장 단순한 구조의 앞먹임 네트워크로 구성하였으며 구체적인 동작은 다음과 같다. 먼저 복호화한 신호를 작은 프레임 단위로 분할한 뒤, 각 프레임 별로 주파수 대역의 특성을 잘 나타낼 수 있는 특징을 추출하였다. 추출한 특징을 심층 신경망에 입력하기 위하여 다수의 프레임에서 추출한 특징을 연결하여 사용하였다. 심층 신경망은 입력된 특징에 대하여 이진 분류를 수행하여 입력된 신호가 음성 신호에 가까운지 비음성 신호에 가까운지 분류하게 된다. 각 프레임 단위의 식별 결과를 발성 단위로 취합하여 최종적으로 복호화된 신호가 음성인지 비음성인지를 판별하게 된다. 이와 같은 구조는 심층 신경망을 사용한 음성인식 시스템 [2] 을 참고해 구성하였으며 전체 적인 동작은 Fig. 2와 같다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F2.jpg

Fig. 2. The flow of speech or nonspeech decision.

3.2 Long short term memory 기반음성파일 식별

음성 신호는 음파를 수치화시킨 데이터이다. 따라서 음성 신호에 포함돼 있는 각 샘플들은 독립적으로 존재하지 않고 음파가 가지는 진폭이나 진동수와 같은 특성에 의해 그 값이 결정되며 각 샘플 간의 종속성이 생기게 된다. 음성 신호의 각 샘플들이 가지는 종속성은 다음과 같이 두 가지로 나눠서 생각할 수 있다. 먼저 짧은 범위 내의 있는 샘플들을 고려하면, 샘플 간의 변화폭이 어느 정도 제한돼 있으며 앞 뒤 샘플들을 참고해 특정 샘플을 예측하는 것도 가능하기 때문에 짧은 간격 종속성이 있다고 할 수 이진 신호의 유형 있다. 또한, 샘플 값이 긴 기간 동안 꾸준히 감소하거나 증가하지 않고 증가와 감소를 주기적으로 반복하기 때문에 긴 간격종속성이 있다고 할 수 있다. 이와 같은 특성을 가지고 있는 음성 신호를 부호화해 저장하는 경우, 부호화된 데이터도 음성 신호의 영향으로 데이터 간 종속성이나 특성을 보일 수 있다. 예를 들어, 음성 신호를 16 bit 방식으로 저장한 웨이브 파일에서는 2 bite 단위로 앞서 설명한 종속성이 나타나며, 8 bit 방식으로 저장한 웨이브 파일에서는 1 bite 단위로 종속성이 나타날 것이다.

따라서 LSTM(Long Short Term Memory) [3] 와 같이 짧은 간격 종속성과 긴 간격 종속성을 동시에 학습할 수 있는 심층 신경망을 활용하면 음성파일을 모델링할 수 있을 것이다. LSTM을 활용한 음성파일 모델링은 앞서 설명한 음성, 비음성 분류 실험과 다르게 음성 신호를 복호화하는 과정 없이 다음과 같이 진행된다. 먼저 부호화된 음성파일을 일정한 단위로 읽어 들인 뒤, 이를 이진 벡터로 표현하게 된다. 구체적으로 2 bite 단위로 음성파일을 읽어 들이면 16개의 이진값으로 구성된 벡터가 생성된다. 음성파일 별로 생성한 이진 벡터를 LSTM에 입력해 LSTM이 음성파일의 부호화 방식을 식별할 수 있도록 학습시킨다. 이후에 학습시킨 LSTM을 활용하면 음성파일에서 신호를 복호화하는 과정 없이 각 음성파일들을 식별하는 것이 가능하다.

앞에서 설명한 음성파일 식별 LSTM은 다음과 같이 음성파일 복원에 활용할 수 있다. 먼저 파일 카빙의 결과물로 생성되었거나 음성 녹음기의 저장매체에서 추출한 데이터 블록에 손상된 음성파일이 포함돼 있다고 가정한다. 데이터 블록에 포함된 음성파일을 복원하는 것이 목적이지만 헤더 정보가 손상돼 있기 때문에 데이터 블록에서 음성파일의 위치를 탐색하는 것이 어려울 것이다. 하지만 음성파일 식별 LSTM을 활용하면 데이터 블록을 일정 구간으로 분할하여 각 구간에서 미리 학습한 음성파일 특성이 나타나는지 확인해 음성파일의 위치와 복호화 방식을 동시에 알아내는 것이 가능하다. Fig. 3은 앞서 설명한 LSTM의 활용 방안을 보여준다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F3.jpg

Fig. 3. An example of file restoration using the LSTM.

본 논문에서는 제안한 심층 신경망의 활용 방안의 실현 가능성과 효율 등을 확인하기 위해 다음과 같이 실험을 설계해 진행 하였다. 본 논문에서 다루고 있는 실험은 기존의 파일 카빙 기반의 복원이 불가능한 상황을 가정하여 설계한 실험이기 때문에 기존의 복원 시스템은 고려하지 않고 실험을 진행하였다. 실험에 사용한 모든 심층 신경망은 Theano [4,5] 환경에서 구현하였다.

음성, 비음성 분류와 음성파일 식별 실험을 위해 동일한 음성 데이터베이스를 사용하였으며, 실험의 목적에 맞도록 데이터를 변환하였다. 한국전자통신 연구원에서 배포한 한국어 중가마이크 화자인식용 음성 데이터베이스를 학습용, 5~6세 아동을 위한 놀이동산 따라 말하기 선별 검사 데이터베이스를 평가용으로 사용해 실험을 진행하였다. 두 종류의 음성 데이터베이스를 사용해 데이터베이스를 구성하고 있는 화자의 연령대, 채널, 음소 정보 등을 완전히 분리시키고자 하였다.

4.2 음성, 비음성 분류 실험 설계

음성, 비음성 분류 실험은 웨이브 파일을 기준으로 잘못 복호화된 비음성 신호와 정상적으로 복호화된 음성 신호를 식별하는 것이 가능한지 확인하는 실험이다. 여기서 비음성 신호는 3.1 장에서 설명한 헤더 정보를 유추하는 과정에서 잘못된 헤더 정보를 웨이브 파일에 대입하는 경우를 가정한 것이다.

음성 신호 학습에 16 kHz, 16 bit, 모노 형식의 웨이브 파일을 정상적으로 복호화한 신호를 사용하였고 비음성 신호 학습에는 앞의 웨이브 파일을 8 bit 무부호 방식으로 잘못 복호화한 신호를 사용하였다. 음성 신호 평가에는 16 kHz, 16 bit, 모노 형식의 웨이브 파일을 정상적으로 복호화한 신호와 음성 신호에 백색 잡음을 10 dB과 0 dB SNR(Signal Noise Ratio, 신호대잡음비)으로 삽입한 신호를 사용하였다. 잡음이 없는 환경에서 수집한 음성 신호만을 학습한 심층 신경망이 백색 잡음이 포함된 음성 신호에 대해 얼마나 강인한 인식 성능을 보이는지 확인하기 위해, 평가에서만 백색 잡음을 삽입한 음성 신호를 사용하였다. 비음성 신호 평가에는 앞의 웨이브 파일을 8bit 무부호 방식, 16 bit big endian 방식, 8 bit μraw 방식, 8 bit A raw 방식으로 잘못 복호화한 신호를 사용하였다. 8 bit 무부호 방식으로 잘못 복호화한 비음성 신호만으로 학습한 심층 신경망이 다른 종류의 비음성 신호에 대해 어느 정도의 일반화 성능을 보이는 확인하기 위해 다양한 방식으로 비음성 신호를 생성해 사용하였다. 웨이브 파일에 정상적인 헤더 정보를 생성한 한 가지 경우에서만 음성 신호를 확인할 수 있기 때문에 한 종류의 음성 신호 부호화 방법 만을 가정하였다.

미리 생성한 음성, 비음성 신호를 심층 신경망 분류기에 학습시킨 뒤에, 5 s 단위의 신호를 심층 신경망에 입력해 음성, 비음성 여부를 판별하였다. 심층 신경망에 입력되는 신호에 25 ms 윈도우를 10 ms씩 이동시켜가며 40차 mel-filterbank 특징을 추출하였다. 11개 윈도우에서 추출한 특징을 연결하여 심층 신경망에 입력할 440차 특징을 생성하였다. 심층 신경망은 입력층과 세 개의 은닉층, 출력층으로 구성된 앞먹임 네트워크 형식으로 구성하였다. 세 개의 은닉층은 각각 1024개의 노드를 포함하고 있으며 각 노드는 ReLU(Rectified Linear Unit) [6] 함수에 의해 활성화 된다. 출력층의 두 노드는 각각 음성 신호와 비음성 신호를 의미하며 softmax 함수에 의해 활성화 된다. 출력층에서 계산한 NLL(Negative Log Likelihood) 값을 학습 데이터에 대해 최소화시키도록 심층 신경망을 반복 학습시켰다. 학습율은 0.1로 하고 drop-out 비율을 0.5로 적용하여 학습을 수행하였다. 음성, 비음성 분류 실험의 동작은 Fig. 4와 같다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F4.jpg

Fig. 4. The flow of speech or nonspeech decision.

4.3 음성파일 부호화 방식 식별 실험 설계

음성파일 부호화 방식 식별 실험을 위해 학습용 데이터베이스와 평가용 데이터베이스에서 16 bit big-endian, 16 bit little-endian, 8 bit mu-law, 8 bit A-law 방식으로 부호화된 웨이브 파일을 생성하였다. 학습용 데이터베이스에서 생성한 웨이브 파일을 사용해 네 종류의 웨이브 파일 특성을 LSTM에 학습시킨 뒤, 평가 데이터베이스의 네 종류 파일을 식별하여 식별 정확도를 측정하였다. 실험에 사용한 LSTM은 16개의 노드를 포함하는 입력층, 20개의 cell을 포함하는 2개의 은닉층, 4개의 노드를 포함하는 출력층으로 구성하였다. 학습율은 0.01로 하고 drop-out 비율을 0.5로 적용하여 학습을 수행하였다. 음성파일 분류 실험의 동작은 Fig. 5와 같다. 본 실험은 Fig. 3에서 설명하고 있는 LSTM을 활용한 파일 복원이 가능한지 확인하는 실험으로서 실제 복원과는 차이가 있을 수 있다. 실제 복원 과정을 가정하여 실험을 진행하는 경우에는 파일의 손상 유형나 크기, 데이터 블록에서의 위치 등 다양한 요소들을 고려해야하기 때문에 본 실험을 통해 간략히 그 가능성만을 확인하고자 하였다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F5.jpg

Fig. 5. The flow of audio file identification.

5.1 음성, 비음성 분류 실험 결과

심층 신경망을 활용한 음성, 비음성 분류 실험의 결과는 Table 1과 같다. Table 1은 헤더 정보가 손실된 웨이브 파일을 가정하였을 때, 임의로 생성한 헤더 정보가 기존의 헤더 정보와 일치하여 정상적인 음성 신호가 복호화된 경우(Matched)와 헤더 정보가 일치하지 않아 비음성 신호가 복호화된 경우(Un-matched), 각각의 식별 정확도를 보여준다. 실험 결과를 보면 잡음이 삽입되지 않은 음성 신호와 비음성 신호를 100 %의 정확도로 분류하는 것을 확인할 수 있다. 다만 백색 잡음이 삽입된 음성 신호에 대한 분류 정확도가 잡음의 크기에 비례해 급격히 감소하는 것을 확인하였다. 이는 잡음이 전혀 삽입되지 않은 음성 신호만을 사용해 심층 신경망을 학습시켰기 때문인 것으로 보인다.

Table. 1. The results of speech or nonspeech decision.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Table_ASK_36_02_07_T1.jpg

5.2 음성파일 부호화 방식 식별 실험 결과

Fig. 6을 보면 LSTM을 반복 학습시키며 진행한 웨이브 파일 식별 실험의 결과를 확인할 수 있다. 실험 결과를 보면 50회 이상 LSTM을 학습시키는 경우, 네 종류의 웨이브 파일을 90 % 이상의 정확도로 식별하는 것을 알 수 있다.

http://static.apub.kr/journalsite/sites/ask/2017-036-02/N0660360207/images/Figure_ASK_36_02_07_F6.jpg

Fig. 6. Identification accuracies for each epoch.

기존 파일 카빙 기반의 복원 기법은 손실된 정보를 유추할 수 없기 때문에 더욱 효과적인 파일 복원을 위해 손상된 정보까지 유추할 수 있는 새로운 복원 기법에 대한 연구가 필요하다. 본 논문에서는 차후 파일 복원 기법 개발에 도움이 될 수 있는 심층 신경망 활용 방안을 연구하였다. 음성파일에서 손실된 정보를 유추하기 위해 필요하지만 사람이 직접 수행할 수 없는 작업을 심층 신경망이 대신 수행할 수 있는지 확인하는 연구를 진행하였다.

본 논문에서는 음성파일 복원에 활용할 수 있는 두 가지 심층 신경망 활용 방안을 제안하였다. 첫 번째 활용 방안은 심층 신경망으로 음성, 비음성 분류를 자동으로 수행해 음성파일의 헤더 정보를 유추하여 손상된 음성 파일을 복원할 수 있도록 하는 것이다. 두 번째 활용 방안은 음성파일을 복호화하지 않은 상태로 식별할 수 있는 심층 신경망을 학습해 데이터블록에서 손상된 음성파일을 탐색할 수 있도록 하는 것이다. 제안한 두 활용 방안의 실현 가능성과 효율을 확인하는 실험을 웨이브 파일을 대상으로 설계해 진행하였다. 실험 결과, 심층 신경망이 기대한 것과 같이 동작하는 것을 확인해 차후에 완벽한 음성파일 복원 기법을 개발할 때, 활용할 수 있을 것으로 기대할 수 있다.

차후에는 제안한 심층 신경망 활용안을 적용해 파일 복원 기법을 개발하는 연구를 진행할 계획이다. 또한, 실험 결과로 확인할 수 있는 것과 같이 심층 신경망이 음성, 비음성 분류 시 백색 잡음에 취약한 약점을 보완할 수 있는 연구도 함께 진행할 계획이다.

References

P. Rainer, S. Tjoa, and P. Tavolato, “Advanced file carving approaches for multimedia files,” JoWUA 2, 42-58, (2011).

G. Alex, A. Mohamed, and G. E. Hinton, “Speech recognition with deep recurrent neural networks,” ICASSP, 6645-6649, (2013).

H. Sepp and J. Schmidhuber, “Long short-term memory,” Neural computation. 9, 1735-1780, (1997). 10.1162/neco.1997.9.8.1735

J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley, and Y. Bengio, “Theano: a cpu and gpu math expression compiler,” in Proc. Python for Scientific Computing Conference, 3-10, (2010).

V. Nair and G. E. Hinton, “Rectified linear units improve restricted boltzmann machines,” ICML, 807-814, (2010).

이진 신호의 유형

이전 버전의 애플리케이션을 사용하여 Kaspersky에 제공된 데이터에 대한 정보를 볼 수 있습니다:

사용자는 새로운/탐지하기 어려운 정보 보안 위협과 해당 출처 및 침입 위협을 검색하고, 컴퓨터를 사용하여 저장 및 처리하는 정보의 보안을 개선하기 위한 조치를 신속하게 취하고, 정보 보안 관련 정보 및 광고물을 수신하기 위해 아래에 나와 있는 정보를 자동으로 제공하는 데 동의합니다:

  • 애플리케이션에서 수락한 계약에 대한 정보:
    • 계약 ID
    • 계약 버전 ID
    • 계약 수락 여부를 나타내는 플래그
    • 계약 수락 여부를 나타내는 플래그를 수정한 시간
    • Wi-Fi 네트워크 SSID
    • Wi-Fi 액세스 포인트의 MAC 주소(BSSID)의 SHA256 해시
    • Wi-Fi 액세스 포인트의 MAC 주소(BSSID)의 MD5 해시
    • 기기의 연결 여부를 나타내는 플래그
    • DNS 이름을 이용할 수 있는지 여부를 나타내는 이진 신호의 유형 플래그
    • 기기 유형
    • 제품 버전
    • 제품 식별자
    • UID 및 BSSID의 해시
    • UID 및 SSID의 해시
    • UID, BSSID 및 SSID의 해시
    • 가용 Wi-Fi 액세스 포인트의 목록
    • 제품의 네트워크 보안 카테고리
    • 제품의 네트워크 홍보 카테고리
    • DHCP 설정
    • 신호 레벨
    • 로컬 IPv4 주소의 해시 합계
    • 로컬 IPv6 주소의 해시 합계
    • 사용자가 현재 Wi-Fi 네트워크를 사용자의 가정용 Wi-Fi 네트워크로 지정했는지를 나타내는 플래그
    • 종속 포털 URL
    • 연결이 시작된 현지 시간
    • 연결이 중단된 현지 시간
    • VPN 클라이언트 설정 상태
    • 액세스 포인트가 지원하는 연결 유형
    • 이 구성이 지원하는 인증 프로토콜 세트
    • 이 구성이 지원하는 그룹 암호 세트
    • 이 구성이 지원하는 키 관리 프로토콜 세트
    • 이 구성이 지원하는 WPA에 대한 쌍 암호 세트
    • 이 구성이 지원하는 보안 프로토콜 세트
    • WPA-EAP 연결에 사용되는 인증 프로토콜
    • 내부 인증 프로토콜
    • 프로덕션 제품 버전
    • 설치된 애플리케이션의 DEX 파일의 MD5 해시
    • 설치된 애플리케이션의 APK 파일의 MD5 해시
    • 애플리케이션이 시스템 카탈로그에 있는지 여부를 나타내는 플래그
    • 애플리케이션에 장치 관리자 권한이 있는지 여부를 나타내는 플래그
    • 애플리케이션이 기본 SMS 메신저인지 여부를 나타내는 플래그
    • 애플리케이션이 접근성 서비스를 사용하는지 여부를 나타내는 플래그
    • 애플리케이션에 동적으로 부여된 권한
    • 설치될 APK 파일의 이름
    • 설치될 APK 파일에 대한 경로
    • AndroidManifest.xml의 패키지 이름(또는 번들 이름)
    • 애플리케이션 버전
    • AndroidManifest.xml의 애플리케이션 버전
    • 설치된 애플리케이션의 DEX 파일의 MD5 해시 합계
    • 설치된 애플리케이션의 APK 파일의 MD5 해시 합계
    • APK 파일 서명에 사용된 인증서의 일련 번호
    • APK 파일 서명에 사용된 인증서의 발급자
    • APK 파일 서명에 사용된 공개 키
    • APK 파일 서명에 사용된 인증서의 해시
    • 파일 서명 일자
    • 인증서 발급 일자
    • 인증서 만료 일자
    • 애플리케이션 판정 상태
    • 애플리케이션 판정 입수에 사용된 방법
    • 운영 체제
    • 기기 모델
    • 사용자에게 표시될 빌드 ID
    • 펌웨어 지문
    • 펌웨어 식별자
    • 제품/하드웨어 제조업체
    • 전체 제품명
    • 빌드 유형(예: “user” 또는 “eng”)
    • 현 개발 코드명 또는 프로덕션 빌드에 대한 문자열 “REL”
    • 빌드 증분 번호
    • 기기의 루팅 여부를 나타내는 플래그
    • 사용자의 기기 식별자 해시
    • My Kaspersky의 사용자 식별자
    • 탐지된 개체의 MD5 해시 합계
    • 탐지된 개체의 크기
    • Kaspersky 분류에 따라 탐지된 개체의 이름
    • 판정 상태를 나타내는 플래그
    • 탐지된 개체(파일)의 이름
    • 탐지된 파일의 전체 경로
    • 경로 템플릿 코드
    • 판결의 근거가 되는 안티 바이러스 데이터베이스 레코드의 식별자
    • 데이터베이스 릴리스 시간
    • 레코드 유형, 레코드가 속한 안티 바이러스 데이터베이스의 식별자
    • 사용자 기기의 마지막 안티 바이러스 데이터베이스 업데이트 날짜 및 시간
    • 탐지된 파일이 이동식 실행(PE) 파일인지 여부에 대한 정보
    • 파일 형식 코드
    • 파일 형식 식별자
    • 탐지된 개체의 SHA2-256 해시 합계
    • 주소(현재 기기) ID: 고유한 My Kaspersky 계정 식별자, 고유한 기기 식별자, 앱에서 액세스하는 서비스의 식별자, 메시지를 전송할 서버 주소
    • 전반적인 제품 상태
    • 제품에 알려진 취약한 기기 설정에 대한 정보: 취약한 설정 식별자, 취약한 설정 심각도 수준, 지식 기반의 설명 링크, 취약한 설정이 현재 활성화되어 있는지 및 원격으로 수정할 수 있는지를 나타내는 플래그
    • 무시된 설정 수
    • 백분율로 표시되는 기기 배터리 충전 수준
    • 삭제버튼 앱에서 배터리 충전 레벨 제출이 켜져 있는지를 나타내는 플래그
    • Kaspersky 서비스의 애플리케이션 식별자
    • 제품 언어
    • 빌드를 릴리스한 파트너 식별자
    • 운영 체제 유형
    • 운영 체제 주 버전
    • 운영 체제 부 버전
    • 빌드 번호
    • 기기 유형, 기기 모델의 시스템 값
    • 최초 애플리케이션 출시 날짜 및 시간
    • 기기 식별자
    • 설치 식별자
    • VPN 설치 식별자
    • VPN 라이선스 상태
    • 애플리케이션 식별자
    • 애플리케이션 버전
    • 기기 식별자
    • 사용자 식별자
    • 제품 언어
    • 운영 체제
    • 애플리케이션 ID
    • 애플리케이션 설치 고유 식별자
    • 업데이트 작업 개시 고유 식별자
    • 전체 애플리케이션 버전
    • 링크 목적
    • 제품 언어
    • 제품군
    • 제품 버전
    • 운영 체제
    • 기기 식별자
    • 제품이 액세스하는 서비스의 식별자
    • 사용자 ID
    • 제품이 액세스하는 My Kaspersky 인프라
    • 임시 토큰
    • 대상 링크의 유형을 나타내는 플래그
    • 라이선스 ID
    • 파트너 이름
    • Wi-Fi 네트워크 SSID
    • Wi-Fi 액세스 포인트의 MAC 주소(BSSID)의 SHA256 해시 합계
    • Wi-Fi 액세스 포인트의 MAC 주소(BSSID)의 MD5 해시 합계
    • 인증 유형
    • 암호화 유형
    • 기기 ID 및 BSSID의 해시(SHA256)
    • 기기 ID 및 SSID의 해시(SHA256)
    • 기기 ID, SSID 및 BSSID의 해시(SHA256)
    • 신호 품질
    • 액세스 포인트가 지원하는 연결 유형
    • 가용 Wi-Fi 액세스 포인트의 목록
    • DHCP 및 DHCP IPv6 설정
    • 종속 포털 URL
    • WPS 기반 Wi-Fi 액세스 포인트에 대한 WPS 매개 변수 배열
    • 개인 정보가 삭제된 페이지의 URL 주소
    • URL 프로토콜
    • 포트 번호
    • 제품 유형
    • 사용자 식별자
    • 개인 정보가 삭제된 페이지의 상위 URL 주소
    • 웹사이트 URL
    • 웹사이트 IP 주소
    • 웹사이트 인증서 해시
    • 인증서 유형
    • 인증서 콘텐츠
    • 기기 식별자
    • 장치의 SHA-256 해시(MAC + My Kaspersky 사용자 ID)
    • 장치 이름
    • 기기 유형
    • 장치 제조업체
    • 운영 체제
    • 탐지 기술
    • 탐지 기술 버전
    • 장치의 SHA256 해시(MAC + My Kaspersky 사용자 ID)
    • 장치 이름
    • 기기 유형
    • 장치 제조업체
    • 기기 운영 체제
    • 탐지 기술
    • 탐지 기술 버전
    • 별칭 기기 이름
    • 별칭 유형
    • 로캘
    • 마지막 8바이트의 Ip주소
    • Wi-Fi BSSID의 SHA256

    사용자는 소프트웨어 품질 개선을 위해 아래에 나와 있는 정보를 자동으로 제공하는 데 동의합니다:

    • VPN 세션 매개 변수:
      • VPN 세션 지속시간(초 단위)
      • VPN 서버 가상 위치
      • 제품 작동 모드
      • VPN 세션 시작 사유
      • 들어오는 트래픽 양
      • 나가는 트래픽 양
      • 세션 중단 사유
      • KSN 서비스 식별자
      • 성공한 패킷에 대한 통계
      • 실패한 패킷에 대한 통계
      • 패킷 시간에 대한 통계
      • 패킷 수에 대한 통계
      • 캐시의 연결 수
      • 성공한 연결 수
      • 실패한 연결 수
      • 성공한 트랜잭션 수
      • 실패한 트랜잭션 수
      • 성공한 연결의 시간 분포
      • 실패한 연결의 시간 분포
      • 성공한 트랜잭션의 시간 분포
      • 실패한 트랜잭션의 시간 분포
      • 서비스 요청 식별자
      • 서비스 요청 횟수
      • 캐시의 서비스 요청 횟수
      • 네트워크 문제로 취소된 요청 횟수
      • 비활성 서비스로 인해 취소된 요청 횟수
      • 유효하지 않은 경로로 인해 취소된 요청 횟수
      • 성공한 요청의 시간 분포
      • 취소된 요청의 시간 분포
      • 시간이 초과된 요청의 시간 분포
      • 시간 히스토그램
      • 중첩 일자
      • 중첩 애플리케이션 정보: 애플리케이션 패키지 이름, APK 파일 이름, 파일 이름이 없는 APK 파일에 대한 경로, classes.dex 파일 MD5 해시, APK 파일 MD5 해시
      • 중첩된 애플리케이션 정보: 애플리케이션 패키지 이름(중첩된 애플리케이션의 경우: 빈 데스크톱에 광고가 나타나면, 그 값은 “launcher”여야 함), APK 파일 이름, 파일 이름이 없는 APK 파일에 대한 경로, classes.dex 파일 MD5 해시, APK 파일 MD5 해시
      • 중첩 보기의 폭
      • 중첩 보기의 높이
      • 장치 화면의 폭
      • 장치 화면의 높이

      소프트웨어 품질을 향상시키고 적응형 시나리오의 효과를 평가하기 위해 사용자는 아래에 나열된 정보를 자동으로 제공하는 데 동의합니다:

      • VPN 적응형 시나리오의 결과:
        • 적응형 시나리오 식별자
        • 적응형 시나리오가 활성화된 경우에 수행할 조치
        • 사용자의 조치
        • VPN 서버 가상 위치
        • 제품 작동 모드
        • 적응형 시나리오에 대한 트리거
        • VPN 설치 식별자 및 트리거의 SHA256 해시
        • 작업이 수행되는 취약한 설정에 대한 식별자
        • 감지된 취약한 설정에서 수행된 작업
        • 취약한 설정에서 작업을 수행하는 사용자의 권한
        • 취약한 설정을 감지한 검색 작업 유형
        • 작업 결과(숫자)
        • 기기의 MAC 주소 접두사(처음 5 바이트)
        • 기기 운영 체제
        • 기기 유형
        • 기기 이름의 문자 수
        • 기기 제조 업체
        • 인터셉트 된 DHCP 패키지 설정의 데이터
        • 평결이 제공된 날짜 및 시간
        • 현재 평결 값
        • 통계 데이터 수신 시작 날짜 및 시간
        • 통계 데이터의 수신 종료일 및 시간
        • 사용자에 대한 집계 정보:
          • 운영 체제의 사용자 이름
          • 소프트웨어 설치 식별자의 해시(CRC64)
          • 기본 키보드 레이아웃
          • 웹 사이트 방문 일자 및 시간
          • Kaspersky 분류에 따른 웹 사이트 카테고리
          • 웹 사이트 제목
          • 개인 정보가 삭제된 페이지의 URL 주소
          • 쿼리가 작성된 날짜와 시간
          • Kaspersky 분류에 따른 검색 쿼리 카테고리
          • 검색 쿼리 텍스트
          • 이벤트 날짜 및 시간
          • 앱 이벤트 날짜 및 시간
          • 앱 사용 시간
          • 고유한 프로세스 식별자
          • 앱 이름(패키지 이름)
          • Kaspersky 분류에 따른 앱 카테고리
          • 애플리케이션 파일의 MD5 해시
          • PEGI 또는 ESRB 앱 카테고리
          • 연령 제한이 적용된 앱을 사용할 수 있는 최소 허용 연령
          • 국가 식별자
          • 도시 식별자
          • OS 언어 식별자

          사용자는 가장 적절한 정보 및 광고 서비스를 생성할 수 있도록 다음 정보를 자동으로 제공하는 데 동의합니다:

          • 보안 뉴스 요청에 대한 정보:
            • 애플리케이션 식별자
            • 애플리케이션 버전
            • 기기 식별자
            • 사용자 식별자
            • 제품 언어
            • 운영 체제

            위에 나와 있는 모든 용도에 대해 사용자는 아래에 나와 있는 정보를 자동으로 제공하는 데 동의합니다:

            • 설치 관련 정보:
              • 제품 버전
              • 기기 ID
              • 설치 ID
              • 제품 유형
              • 애플리케이션을 구입한 매장의 이름
              • 소프트웨어 최초 실행 타임스탬프
              • 패키지 이름과 버전
              • Firebase 서비스의 애플리케이션 ID
              • 고유 Firebase 설치 ID
              • AppsFlyer 서비스의 애플리케이션 ID
              • 고유 AppsFlyer 설치 ID
              • 운영 체제 유형
              • 운영 체제 주 버전
              • 운영 체제 부 버전
              • 빌드 번호
              • 프로세서 유형

              권리 소유자는 수신된 데이터를 사용하여 정보 보안 위험에 대한 보고서를 생성할 수 있습니다.

              Kaspersky는 법률과 Kaspersky의 해당 규칙이 정하는 바에 따라 수신된 정보를 보호합니다. 정보는 암호화된 통신 채널을 통해 전송됩니다.

              본 소프트웨어 사용 시, 명시된 목적을 달성하기 위해 다음의 데이터가 정기적으로 AppsFlyer에 자동 전송됩니다.

              • 사용자 컴퓨터 정보: 기기의 브랜드, 모델, 유형, 공장 출하 시 이미지 이름, 플랫폼 확장, 국가 코드, 언어, 통화 코드. OS SDK 버전, CPU 아키텍처, CPU ABI 아키텍처, 기기 디스플레이, 배터리 충전 유형, 배터리 수준.
              • 센서 데이터: 가속도계, 자력계. 네트워크 유형 연결, 서비스 제공자, 이동 통신 사업자에 대한 정보.
              • 설치된 소프트웨어의 이름 및 버전, Google 설치 레퍼러, 제거 추적 사용 여부를 나타내는 플래그, GCM 토큰.
              • 데이터가 전송되는 이벤트의 날짜, 시간 및 이름, 실행 간 시간, 이벤트 매개 변수, 이벤트 카운터, AppsFlyer 거래 ID.
              • 광고주 ID에 대한 정보: 광고주 ID, 광고 ID 수집 방식을 나타내는 플래그, 광고주 ID 사용 여부를 나타내는 플래그.
              • 소프트웨어에 사용된 AppsFlyer에 대한 정보: AppsFlyer 키, AppsFlyer 이벤트 API 버전, 다른 AppsFlyer SDK의 존재 여부, AppsFlyer 고유 설치 ID, AppsFlyer SDK 버전, AppsFlyer가 기기에 사전 설치되었는지 여부를 나타내는 플래그, GCD 변환 데이터 타이밍.

              데이터는 보안 경로를 통해 AppsFlyer에 전달됩니다. AppsFlyer에서 데이터를 처리하는 방법에 관한 정보는 다음 사이트에 공개되어 있습니다. https://www.appsflyer.com/privacy-policy/

              본 소프트웨어 사용 시, 명시된 목적을 달성하기 위해 다음의 데이터가 정기적으로 BigQuery에 자동 전송됩니다:

              • 컴퓨터에 설치된 소프트웨어에 대한 정보:
                • 소프트웨어 버전
                • 애플리케이션을 가져온 스토어의 이름
                • 소프트웨어 최초 실행 타임스탬프
                • 패키지 이름과 버전
                • 익명의 앱 인스턴스 식별자
                • Firebase 서비스의 애플리케이션 ID
                • 애플리케이션 플랫폼 및 ID
                • 이벤트 유형 및 값
                • 컴퓨터 브랜드, 카테고리, 모델
                • 운영 체제의 언어(locale)에 대한 정보
                • 거주지 국가
                • 캠페인과 사용자를 유치한 채널 이름

                데이터는 보안 경로를 통해 BigQuery에 전달됩니다. BigQuery에서 데이터를 처리하는 방법에 관한 정보는 다음 사이트에 공개되어 있습니다: https://cloud.google.com/terms/data-processing-terms.

                소프트웨어 품질을 개선하고 사용자 만족도를 분석하기 위해 사용자는 Google Analytics으로 다음 정보를 자동으로 전송하는 데 동의합니다:

                • 애플리케이션 버전, Google 서비스의 애플리케이션 이름 및 Google 서비스의 애플리케이션 ID
                • 컴퓨터에 설치된 애플리케이션 인스턴스의 고유 ID 및 기기 언어 관련 정보
                • 컴퓨터 화면 해상도
                • 데이터 제출 시 활성화되는 컴퓨터 창 또는 대화 상자의 이름
                • 선택한 창 또는 대화 상자가 활성화된 기간의 시작 및 종료 타임스탬프
                • 창이 활성화된 세션의 지속시간
                • 프로세서 유형
                • Google Analytics 서비스에 데이터를 제출하는 데 사용되는 프로토콜 버전
                • 데이터가 제출된 이벤트의 ID
                • 애플리케이션 작동 ID 및 해당 작동 결과
                • Google 서비스의 사용자 고유 ID
                • 내부 시간 변수의 이름
                • 표준 시간대

                소프트웨어 품질을 개선하고 대상 사용자를 분석하기 위해 개인 정보를 제거하여 집계된 다음 정보를 Firebase 서비스에 자동으로 제공하는 데 동의합니다:

                • 컴퓨터에 설치된 소프트웨어에 대한 정보: 인스턴스 ID, 버전, 애플리케이션을 가져온 스토어 이름, 소프트웨어의 최초 출시 타임스탬프, 앱 전경 또는 백그라운드 상태, 앱 패키지 이름, 익명의 앱 인스턴스 식별자, 네트워크 및 다음과 같은 정보가 포함됩니다: 응답 코드, 페이로드 크기 (바이트), 응답 시간, 자동화된 추적의 지속 시간.
                • 소프트웨어 사용에 대한 정보: 이벤트 유형 및 값.
                • 소프트웨어가 설치된 사용자 컴퓨터에 대한 정보: 운영 체제의 컴퓨터 브랜드, 카테고리, 모델 및 방향, RAM 및 디스크 크기, 버전 및 언어 애플리케이션이 지난 7일 또는 7일 이전에 처음 열렸는지에 대한 정보.
                • 이동 통신사, 라디오/네트워크 정보, IP 주소, 지역, 언어/언어, 신호 강도, 기기의 탈옥 또는 루팅 상대, 배터리 수준 및 배터리 충전 상태.
                • 광고 ID, Android ID.
                • 사용자 관련 정보: 사용자의 연령 범주 및 성별, 거주 국가, 관심 목록.

                애플리케이션 성능을 향상시키려면 다음 데이터를 자동으로 Crashlytics 서비스에 제출하는 것에 동의하십시오:

                • 소프트웨어 비정상 종료(충돌) 정보: 고유한 이벤트 식별자, 소프트웨어 설치 및 이벤트 날짜 및 시간, 화면 방향을 나타내는 식별자, 오류 메시지 텍스트, 소프트웨어가 소프트웨어가 백그라운드에서 실행 중인지를 나타내는 플래그, 배터리 레벨 및 배터리 방전율; 치명적인 신호가 발생한 경우, 해당 신호의 이름과 정수 코드, 이벤트를 발생시킨 앱 화면 목록, 앱 상태를 나타내는 플래그 목록.
                • 컴퓨터에 설치된 소프트웨어에 대한 정보: 소프트웨어 번들 식별자 및 소프트웨어의 전체 버전 번호, 현재 실행 중인 모든 스레드의 모든 프레임에 대한 uint64 명령 포인터, 앱 실행 시간, 성공적인 네트워크 요청의 백분율, 네트워크 지연, 앱이 백그라운드에서 보낸 시간, 함수의 실행 시간 또는 문자열 식별자 또는 숫자 인덱스로 특징 지워지는 임의 코드 섹션.
                • 애플리케이션에 로드된 각 이진 이미지: 이름, UUID, 바이트 크기 및 RAM에로드된 uint64 기본 주소.
                • 컴퓨터에 대한 정보: OS 및 버전, 컴퓨터 모델, CPU 아키텍처, 총 RAM 용량 및 현재 사용 중인 용량, 총 디스크 공간, 컴퓨터가 루팅 중인지 여부를 나타내는 플래그.
                • 실행 시간 중 해당하는 경우, 각 명령 포인터가 포함된 일반 텍스트 메소드 또는 함수 이름, CPU의 각 레지스터의 uint64 값, 장치의 근접 센서가 트리거되었는지 여부를 나타내는 부울(Boolean).
                • 운영 체제 이름 및 버전.
                • Android ID 및 Android 광고 ID.

                데이터는 암호화된 채널을 통해 AppsFlyer, Google Analytics, Firebase 및 Crashlytics 서비스로 전송됩니다.

                정보 액세스 및 정보 보호에는 AppsFlyer, Google Analytics, Firebase 및 Crashlytics 서비스의 해당 사용 약관이 적용됩니다.

                소프트웨어의 핵심 기능을 제공하기 위해, 다음의 데이터가 정기적으로 Firebase Cloud Messaging에 자동 전송됩니다.

                • 고유 설치 ID(인스턴스 ID)
                • 발신인 식별자(메시지 전송용)
                • 애플리케이션 버전(버전 코드)
                • 애플리케이션 빌드 번호
                • 애플리케이션 버전 코드
                • 애플리케이션 패키지 이름
                • OS 버전
                • 버전 Google Play 서비스
                • 버전 코드 Google Play 서비스
                • 애플리케이션 ID
                • Firebase 서비스의 애플리케이션 ID
                • 프로토콜 버전

                권리자는 Firebase Cloud Messaging에 대한 Google Inc.의 사양/문서에 따라 Firebase Cloud Messaging 서비스를 메시지 전달만을 위해 이용합니다.

                귀하는 소프트웨어를 사용하는 동안 제 3자의 정보 시스템 사용의 합법성을 확인하기 위해 아래 나열된 정보를 자동으로 Anchorfree Inc.에 제공하는 데 동의합니다:


0 개 댓글

답장을 남겨주세요